Catalysis -- Objects, Components, and Frameworks with UML

Catalysis Book

Desmond D'Souza

Platinum

Alan Cameron Wills

Trireme International Ltd

Catalysis is the seminal method for component-based development created by Trireme's Alan Cameron Wills with Desmond D'Souza.

Using the UML notation, it provides a set of techniques for defining unambiguously what is expected of a component or individual object, despite variations in implementation; and for ensuring that all the implementations meet their specifications.

Catalysis fits with a wide variety of project management processes, especially modern incremental development cycles like RUP, XP, DSDM. Its rules and patterns prescribe relationships between architecture, high-level design, and code.

Catalysis is for large and rigorous projects. It supports:

Catalysis provides a clear set of design process patterns for:
  • Building software and business models from re-usable components
  • Integrating legacy components with new development work
  • Development or re-development from scratch
  • Business process re-engineering
  • Rigorous, robust design
  • Catalysis and the UML

    UML is the Object Management Group's standard modeling notation.

    Many of the features of the UML notation come from Catalysis, and UML continues to be strongly inflluenced by Catalysis through the work of D'Souza, Wills, and others with the Object Management Group.
     

    The Catalysis book is available from Amazon and other good bookstores.

    Catalysis has been developed over several years together with the authors' clients, including BNR, Sterling, Texas Instruments, Loral, Siemens, Olivetti, and many others. It is being adopted at a rapidly increasing number of their sites worldwide.

    Get Catalysis from source with training and consultancy from TriReme.

    Key principles Papers Catalysis training and consultancy

    Technical Overview presentation

    HTML version

    PDF version

    Object World presentation

    Key principles of Catalysis

    Catalysis gives you a clear way to document your designs, and to discuss them at the whiteboard. It's a development approach that helps you to stand above the detail, tackling the big issues early on. But getting the big picture doesn't mean painting a fuzzy picture: you can be as precise or as informal as you judge to be appropriate.

    Catalysis is about building componentware. It gives you clear ways to define components and plug them together, and is the perfect underpinning for a Rapid Application Development cycle. But we don't believe reuse stops at program code: all stages of design can be made generic enough to be used in many developments. A central issue in object-oriented design is how objects collaborate together to achieve a common goal: in Catalysis you can develop reusable collaboration schemes, and apply them to many designs.

    Patterns too are a feature of Catalysis, applied both in the design, and to the development process itself. We don't believe there is just one development process: there are many, that depend on where you are and where you want to go. The only sensible way to express this diversity is as a set of process patterns that can be used to craft and develop a project plan.

    Process patterns

    Catalysis does not specify a single straightjacket method for all projects. Instead, we acknowledge that different projects start in and are heading for different places; so they need different routes. Catalysis provides a set of process patterns that guide on when and how to apply its techniques.

    TriReme presentations on Catalysis

    by Alan Cameron Wills except where otherwise noted

    You'll need Adobe Acrobat to read some of these files (free download).

    Catalysis -- rigorous component-based development

    Desmond D'Souza and Alan Cameron Wills

    This paper outlines the key constructs from the Catalysis method, showing how they build upon each other to provide a basis for framework-based modeling and design.

    UML to Java

    Alan Cameron Wills

    Outlines a 'vanilla' process for system development, and introduces component-based development.

    CATALYSIS | eine geeignete Methode zum Entwurf CORBA-basierter Systeme?

    German description of Catalysis.

    Kathrin Gayer, Meikel Püss und Thomas Sandholm

    Abstraction and refinement

    When you gather around a whiteboard to discuss your design with your colleagues, the last thing you want write up there is program code. On that whiteboard, you want to show how your piece of the system works, and how it interacts with things outside it. And whether it's a single procedure or an entire planetwide distributed system, you want to fit it all on that board and convey useful things about it.

    A design is a set of decisions. Good management brings the most important decisions to the front of the design process and defers the less important ones.

    Abstract realism.

    First published in Object Expert Jan. 1996.

     

     

    Abstraction means standing back from the problem, to see the major issues instead of the detail. But that doesn't mean fuzzy: you can be just as precise as when coding, and that helps expose gaps and inconsistencies.

    Exercises in Abstraction
    A tutorial at OT96, Oxford, April 1996. Interactive web-style version.

     

     

    Try them! And let me know what you think.

    Models and Code: the connection

    To be published in the Handbook of Object Technology 1997.

     

     

    Describes the four main categories of refinement in Catalysis.

    Conform or die

    The notion of conformance is essential for understanding and using componentware. Object expert, Spring 1996

    Refinement in Fresco

    First published in Kevin Lano (ed) Case studies in object-oriented refinement Prentice-Hall 1992.

     

     

    Fresco is the rigorous OO precursor of Catalysis.

    Rigor

    What use is maths to an engineer?
    How to specify interfaces to individual objects or whole systems. Object Expert, November 1995

    Catalysis: practical rigour (slides)

    Component interfaces need to be documented unambiguously if they are to be much reused. Catalysis provides a clear way of doing that.

    Specification in Fresco

    Fresco was the rigorous precursor of Catalysis. The principles of abstract attributes are set out here. [in Susan Stepney (ed), Case studies in object-oriented specification. Addison-Wesley 1992]

    Application of Formal Methods to OO Programming

    Alan's PhD Thesis, 1992. The Catalysis rules for type conformance and version conformance were set out here.

    Frameworks

    The big decisions in object oriented design have always been about how to distribute the reponsibilities for a job between collaborating objects. So it makes sense that the reusable elements in a component library should not just be objects, but also generic collaborations --- defining the roles that each object in a collaboration can take. These papers and presentations show how to define collaborations and put them together into designs.

    Abstraction and frameworks in Catalysis

    Presented at Unicom Seminar on Patterns, London, October 1996. (Presentation with notes.)

    Frameworks

    Tutorial workshop at OT97, April 1997.

     

     

    There is a more interactive web-style version here. (Some people like it, others ...!)

    Frameworks

    Paper by Alan Wills, presented at OOIS'96 in London, December 1996.

    Catalysis Process

    Process patterns in Catalysis

    Some textbooks promote a single method of developing software. At Trireme we don't believe that works.

     

     

    Instead, Catalysis patterns provide a way to develop and steer a project plan to suit your situation, resources, and objectives.

    OverviewUnicom seminar on patterns, London October 1997.

    Components

    Designing Component Kits and Architectures

    in Software architectures: advances and applications ed Leonor Barroca, Springer 1999

    Components: Principles and Process

    Presented at Unicom seminar on CBD, London October 1997 and elsewhere (HTML Slides)

     

     

    Component Based Development, like every buzzphrase, means different things to different people. This presentation pulls apart some of the strands and issues, and exposes some of the things that need to be in place to use components successfully.

    Capsules and types in Fresco

    ECOOP 1991. Combining specified components so that they do not interfere.
    Java++
    Java makes an excellent distinction between classes and interfaces. Although the interfaces only deal with the parts the compiler can check, they are a useful syntactic hanger for more detailed specifications. This article is about rigorous OOD with Java. Object Expert May 1996. (There also is an excellent presentation prepared by the folks at Icon.)

    Training and Consultancy

    Get Catalysis from source --- TriReme International Ltd are the prime international consultants in Catalysis, based in Europe.
     
     
    Designing Components High-integrity design Object analysis and design

    Our consultants have worked throughout Europe and North America with companies in a wide variety of fields, including finance, telecoms, process control, and GIS. We offer

  • In-depth training in analysis and design
  • Mentoring and auditing
  • Technical reviews
  • Management seminars
  • Call us to talk components, objects, distributed architecture.

    +44 (0)161 225 3240

    Trireme