HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This PDF will be accessible from your Account page after purchase and requires PDF reading software, such as Acrobat® Reader®.
The eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
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
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.
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