ContentsForewordPrefaceAcknowledgements1 Software and software engineering2 Review of object orientation3 Basing software development on reusable technology4 Developing Requirements5 Modeling with classes6 Using design patterns7 Focusing on users and their tasks8 Modeling interactions and behaviors9 Architecting and designing software10 Testing and inspecting to ensure high quality11 Managing the software process12 ReviewAPPENDIX A Summary of the ULM notation used in this bookAPPENDIX B Summary of the documentation types recommended in this book APPENDIX C System descriptionsGlossaryIndex