UML components : a simple process for specifying component-based software - Cheesman, John , 1962-; Daniels, John , 1956- (Addison-Wesley, 2001)