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