Platinum
Catalysis is the seminal method for component-based development created by Trireme's Alan Cameron Wills with Desmond D'Souza.Trireme International Ltd
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:
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.
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.
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
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.
- 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.
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.
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.
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.)
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
Trireme