A Proven Development Methodology That Delivers On the Promise of Model-Based Approaches
Software continues to grow increasingly 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 object-oriented techniques with a powerful new methodology, Model-Based Software Engineering (MBSE).
Model-Based Development represents Lahman’s half-century of experience as a pioneering software innovator. Building on Shlaer-Mellor’s work, MBSE fully delivers on the promise of models, and is firmly grounded in the realities of contemporary development, design, and architecture.
Lahman 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, he demonstrates how to perform more effective object-oriented analysis, emphasizing abstraction, disciplined partitioning, modeling invariants, finite state machines, and efficient communications among program units.
How 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 designs
Application partitioning: why it matters and how do it well
Building static models that distinguish knowledge from behavior
Modeling classes, class responsibilities, associations, and both referential and knowledge integrity
Creating dynamic models that describe behavior via finite state machines
Successfully 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 specify 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, and supports larger-scale reuse.