Product Cover Image

Model-Based Development: Applications

By H.S. Lahman

Published by Addison-Wesley Professional

Published Date: Jun 14, 2011


A Proven Development Methodology That Delivers On the Promise of Model-Based Approaches

Software 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 includes

  • 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 describe basic application structure
  • 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 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.

Table of Contents

Preface           xiii

Acknowledgments          xix

About the Author         xxi

Introduction           xxiii


Part I: The Roots of Object-Oriented Development          1

Chapter 1: Historical Perspective          3

History     3

Structured Development     5

Technical Innovation    17


Chapter 2: Object Technology         29

Basic Philosophy  30

Breadth-First Processing (aka Peer-to-Peer Collaboration)   44


Chapter 3: Generalization, Inheritance, Genericity, and Polymorphism        53

Generalization    54

Inheritance     56

Polymorphism    57

Genericity    61


Chapter 4: MBD Road Map        63

Problem Space versus Computing Space    63

Maintainability    69


Chapter 5: Modeling Invariants         77

So Just What Is Modeling Invariants?     78

The Rewards    81

Examples   84


Chapter 6: Application Partitioning         105

Why Do We Care?    105

Basic Concepts of Application Partitioning    107

Identifying Subsystems     119

Bridges   122

Describing Subsystems    127

An Example: Pet Care Center   130

Processes   145


Part II: The Static Model          151

Chapter 7: Road Map to Part II         153

What Is the Static Model?     154

Knowledge versus Behavior    156

Practical Note   158


Chapter 8: Classes         161

Abstract Representation    161

Class Notation    167

Identifying Classes and Their Responsibilities    169

Examples   172

Using Sequence and Collaboration Diagrams    186


Chapter 9: Class Responsibilities         191

Attributes: What the Objects of a Class Should Know   191

Operations and Methods: What an Object Must Do    197

Process    207

Examples   209


Chapter 10: Associations         233

Definitions and Basics    234

Notation    239

The Nature of Logical Connections   242

Conditionality     250

Multiplicity     255

Constraints    261

Association Classes     264

Identifying Associations     269

Examples    273


Chapter 11: Referential and Knowledge Integrity             279

Knowledge Integrity     280

Referential Integrity     289


Chapter 12: Generalization Redux          299

Subclassing     300

Multi-directional Subclassing, Multiple Inheritance, and Composition     317

Alternatives to Generalization    328


Chapter 13: Identifying Knowledge           333

What Is the Nature of OO Knowledge?     334

Abstracting Aggregates    335

Picking the Right Abstraction    341

Does the Abstraction Need to Coalesce Entity Knowledge?    351


Part III: The Dynamic Model         355

Chapter 14: Road Map to Part III         357

Part III Road Map    357

Action Languages    373

Mealy versus Moore versus Harel     374

The Learning Curve    376


Chapter 15: The Finite State Machine           377

Basic Finite State Automata    378

Looking for State Machines    390

Some Examples    407


Chapter 16: States, Transitions, Events, and Actions          415

States    415

Transitions     421

Events     423

Actions     427

The Execution Model     430

Naming Conventions     433


Chapter 17: Developing State Models          437

Designing State Machines     437

Examples   . 450


Chapter 18: Abstract Action Languages          475

AALs and ADFDs     476

AAL Syntax    478

Examples    480


Glossary           489

Index        501


Model-Based Development: Applications

This publication is not currently for sale.