Foreword xiPreface xviiAcknowledgments xxvOnline Resources xxviiPart I Introduction and Foundations 11 Introduction 32 The Nature of Code 393 Fundamental Principles 674 Functional and Nonfunctional Requirements 915 UML Overview 1156 Partitioning Systems into Domains 125Part II Semantic Modeling: Model-Based Functional Requirements 1517 Use Case Diagrams: Scope and Context 1538 Class Models: Policies to Enforce 1839 Interaction Diagrams: Process at a Mid-Level 23710 State Models: Process at a Fine-Grained Level 26111 Partitioning Domains into Subdomains 30512 Wrapping Up Semantic Modeling 323Part III Model-Based Design and Code 36913 Introduction to Design and Code 37114 Designing Interfaces: Specifying Real-World Interaction 37915 High-Level Design: Classes and Operations 40716 High-Level Design: Contracts and Signatures 44717 Detailed Design and Code 50318 Formal Disciplines of Design and Code 53919 Optimization 58320 Model Compilation 63321 Advanced Open Model Compilation 67522 Wrapping Up Model-Based Design and Code 705Part IV Related Topics 72323 Estimation 72524 Development and Maintenance Processes 75925 Economics of Error Handling 78726 Arguments Against Model-Based Software Engineering 815Part V Summary 82727 Closing Remarks 829Part VI Appendices 843Appendix A: Documentation Principles 845Appendix B: WebBooks 2.0 Background 849Appendix C: WebBooks 2.0 Domains 853Appendix D: Semantic Model for Order fulfillment 857Appendix E: (Pro Forma) Order fulfillment Design 885Appendix F: Semantic Model for Payment 905Appendix G: (Pro Forma) Payment Design 927Appendix H: Semantic Model for Scalability 943Appendix I: (Pro Forma) Scalability Design 969Appendix J: Semantic Model for High availability 985Appendix K: (Pro Forma) High availability Design 1001Appendix L: Semantics of Semantic Modeling 1011Appendix M: Sample Production Rules 1049Appendix N: Software Structural Complexity Metrics 1061References 1081Index 1091
STEVE TOCKEY is Principal Consultant at Construx. Steve is an expert in software engineering practices including object-oriented development, distributed object computing, software project management, and software quality. He earned a Masters of Software Engineering degree from Seattle University and has served as an adjunct faculty member for the program. Prior to joining Construx, Tockey worked at Lawrence Livermore National Laboratory, Boeing, and Rockwell Collins.