Objects, Components, and Frameworks with UML: The Catalysis(sm) Approach