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.
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.
Review By: C. David Moye
Model-Based Development—Applications by H. S. Lahman is, according to one of the footnotes, "a book that must be written ... but I wouldn't want to read it." On the contrary, I actually enjoyed reading the book. It must, however, be taken in the proper context. This book appeals less to the working software developer and more to the academic arena. It would make a wonderful textbook for a college course on model-based development. It provides an excellently detailed historical overview and lays out the purpose and approach to the development strategy in such a way that a student could go from beginner to knowledgeable practitioner over a one- or two-semester period.
This is not to say that working software developers should steer clear of the book. If you are used to working on an older-style application codebase (e.g., mainframe, non-OO Visual Basic application, or other similar legacy system) and you are transitioning to a more modern, object-oriented approach, you most certainly should read this book. You will be much more prepared for the transition into modern development principles if you can read, absorb and practice the lessons outlined. Also, the extensive treatment given to the historical background should be easily identifiable for those working on older, legacy systems.
The book is written in a very factual, heavily bulleted, and figure-based style peppered with light, in-stride language. This approach makes the topic a bit more accessible, but it reads as somewhat of an afterthought—like the editor took a look at the manuscript and said, "Lighten it up some." Given the textbook style of the book, it will have a very long relevance. Computer Science departments will be able to use this text to teach their sophomore- to junior-level students for quite some time.
Overall, as a software development manager and practitioner, I would not recommend this book to my immediate colleagues and will not be picking up copies for my team. However, if I were a professor, or a manager of a team making a difficult transition to an object-oriented design for the first time, I would pick it up and study it thoroughly.