Object oriented software engineering a use case driven approach (Addison-Wesley, 1994)