Tag: object-oriented analysis and design principles