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