A Proven Development Methodology That Delivers On the Promise of Model-Based ApproachesSoftware continues to become more and more complex, while software consumers' expectations for performance, reliability, functionality, and speed-to-market are also growing exponentially. H. S. Lahman shows how to address all these challenges by integrating proven object-oriented techniques with a powerful new methodology. 'Model-Based Development' represents Lahman's half century of experience as a pioneering software innovator. Building on Shlaer-Mellor's work, Lahman's unique approach fully delivers on the promise of models and is firmly grounded in the realities of contemporary development, design, and architecture.The book introduces the methodology's core principles, showing how it separates each of a project's concerns, enabling practitioners to optimize each domain for its unique needs and characteristics. Next, it demonstrates how to perform more effective object-oriented analysis, emphasizing abstraction, disciplined partitioning, modeling invariants, finite state machines, and efficient communications among program units. Coverage includesHow we got here: a historical perspective and pragmatic review of object principles Problem space versus computing space: reflecting crucial distinctions between customer and computer environments in your designsApplication partitioning: why it matters and how do it wellBuilding static models that describe basic application structureModeling classes, class responsibilities, associations, and both referential and knowledge integrityCreating dynamic models that describe behavior via finite state machinesSuccessfully using abstract action languages (AALs) and action data flow diagrams (ADFDs) Throughout, Lahman illuminates theoretical issues in practical terms, explaining why things are done as they are, without demanding rigorous math. His focus is on creating implementation-independent models that resolve functional requirements completely, precisely, and unambiguously. Whether you're a developer, team leader, architect, or designer, Lahman's techniques will help you build software that's more robust, easier to maintain, supports larger-scale reuse, and whose specification is rigorous enough to enable full-scale automatic code generation.