Principles of Object Oriented Analysis Modeling and Design