Skip to main content

How to Engineer Software: A Model-Based Approach




How to Engineer Software: A Model-Based Approach

Steve Tockey

ISBN: 978-1-119-54667-2 September 2019 Wiley-IEEE Computer Society Pr 1168 Pages

Download Product Flyer

Download Product Flyer

Download Product Flyer is to download PDF in new tab. This is a dummy description. Download Product Flyer is to download PDF in new tab. This is a dummy description. Download Product Flyer is to download PDF in new tab. This is a dummy description. Download Product Flyer is to download PDF in new tab. This is a dummy description.


A guide to the application of the theory and practice of computing to develop and maintain software that economically solves real-world problem 

How to Engineer Software is a practical, how-to guide that explores the concepts and techniques of model-based software engineering using the Unified Modeling Language. The author—a noted expert on the topic—demonstrates how software can be developed and maintained under a true engineering discipline. He describes the relevant software engineering practices that are grounded in Computer Science and Discrete Mathematics.

Model-based software engineering uses semantic modeling to reveal as many precise requirements as possible. This approach separates business complexities from technology complexities, and gives developers the most freedom in finding optimal designs and code. The book promotes development scalability through domain partitioning and subdomain partitioning. It also explores software documentation that specifically and intentionally adds value for development and maintenance. This important book:

  • Contains many illustrative examples of model-based software engineering, from semantic model all the way to executable code
  • Explains how to derive verification (acceptance) test cases from a semantic model
  • Describes project estimation, along with alternative software development and maintenance processes
  • Shows how to develop and maintain cost-effective software that solves real-world problems

Written for graduate and undergraduate students in software engineering and professionals in the field, How to Engineer Software offers an introduction to applying the theory of computing with practice and judgment in order to economically develop and maintain software.  

Foreword xi

Preface xvii

Acknowledgments xxv

Online Resources xxvii

Part I Introduction and Foundations 1

1 Introduction 3

2 The Nature of Code 39

3 Fundamental Principles 67

4 Functional and Nonfunctional Requirements 91

5 UML Overview 115

6 Partitioning Systems into Domains 125

Part II Semantic Modeling: Model-Based Functional Requirements 151

7 Use Case Diagrams: Scope and Context 153

8 Class Models: Policies to Enforce 183

9 Interaction Diagrams: Process at a Mid-Level 237

10 State Models: Process at a Fine-Grained Level 261

11 Partitioning Domains into Subdomains 305

12 Wrapping Up Semantic Modeling 323

Part III Model-Based Design and Code 369

13 Introduction to Design and Code 371

14 Designing Interfaces: Specifying Real-World Interaction 379

15 High-Level Design: Classes and Operations 407

16 High-Level Design: Contracts and Signatures 447

17 Detailed Design and Code 503

18 Formal Disciplines of Design and Code 539

19 Optimization 583

20 Model Compilation 633

21 Advanced Open Model Compilation 675

22 Wrapping Up Model-Based Design and Code 705

Part IV Related Topics 723

23 Estimation 725

24 Development and Maintenance Processes 759

25 Economics of Error Handling 787

26 Arguments Against Model-Based Software Engineering 815

Part V Summary 827

27 Closing Remarks 829

Part VI Appendices 843

Appendix A: Documentation Principles 845

Appendix B: WebBooks 2.0 Background 849

Appendix C: WebBooks 2.0 Domains 853

Appendix D: Semantic Model for Order fulfillment 857

Appendix E: (Pro Forma) Order fulfillment Design 885

Appendix F: Semantic Model for Payment 905

Appendix G: (Pro Forma) Payment Design 927

Appendix H: Semantic Model for Scalability 943

Appendix I: (Pro Forma) Scalability Design 969

Appendix J: Semantic Model for High availability 985

Appendix K: (Pro Forma) High availability Design 1001

Appendix L: Semantics of Semantic Modeling 1011

Appendix M: Sample Production Rules 1049

Appendix N: Software Structural Complexity Metrics 1061

References 1081

Index 1091