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