Using UML: Software Engineering with Objects and Components (Addison-Wesley Object Technology)