A Comprehensive Process for Defining Software Architectures That Work A good software architecture is the foundation of any successful software system. Effective architecting requires a clear understanding of organizational roles, artifacts, activities performed, and the optimal sequence for performing those activities. With The Process of Software Architecting, Peter Eeles and Peter Cripps provide guidance on these challenges by covering all aspects of architecting a software system, introducing best-practice techniques that apply in every environment, whether based on Java EE, Microsoft .NET, or other technologies. Eeles and Cripps first illuminate concepts related to software architecture, including architecture documentation and reusable assets. Next, they present an accessible, task-focused guided tour through a typical project, focusing on the architect's role, with common issues illuminated and addressed throughout. Finally, they conclude with a set of best practices that can be applied to today's most complex systems.; You will come away from this book understanding *The role of the architect in a typical software development project *How to document a software architecture to satisfy the needs of different stakeholders *The applicability of reusable assets in the process of architecting *The role of the architect with respect to requirements definition *The derivation of an architecture based on a set of requirements *The relevance of architecting in creating complex systemsThe Process of Software Architecting will be an indispensable resource for every working and aspiring software architect--and for every project manager and other software professional who needs to understand how architecture influences their work.
Foreword xvii Preface xix Acknowledgments xxiii About the Authors xxv Chapter 1: Introduction 1 Applying the Process 2 The Process in Brief 2 Scope 8 Summary 8 Chapter 2: Architecture, Architect, Architecting 9 Architecture 9 Architect 21 The Benefits of Architecting 35 Summary 40 Chapter 3: Method Fundamentals 43 Key Concepts 43 Method Content 46 Process 50 Summary 59 Chapter 4: Documenting a Software Architecture 61 The End Game 62 Key Concepts 64 Viewpoints and Views 65 Models 72 Characteristics of an Architecture Description Framework 75 An Architecture Description Framework 81 The Software Architecture Document 87 Summary 88 Chapter 5: Reusable Architecture Assets 89 Sources of Architecture 89 An Architecture Asset Metamodel 90 Asset Types 94 Attributes of an Architecture Asset 103 Other Reuse Considerations 106 Summary 106 Chapter 6: Introduction to the Case Study 107 Applying the Process 107 Scope of the Case Study 110 Application Overview 115 The YourTour Vision 118 Summary 123 Chapter 7: Defining the Requirements 125 Relating Requirements to Architecture 128 Functional and Non-Functional Requirements 130 Techniques for Documenting Requirements 131 Applying the Process 132 Understanding the Task Descriptions 133 Define Requirements: Activity Overview 134 Task: Collect Stakeholder Requests 136 Task: Capture Common Vocabulary 141 Task: Define System Context 143 Task: Outline Functional Requirements 149 Task: Outline Non-Functional Requirements 156 Task: Prioritize Requirements 160 Task: Detail Functional Requirements 164 Task: Detail Non-Functional Requirements 171 Task: Update Software Architecture Document 174 Task: Review Requirements with Stakeholders 175 Summary 176 Chapter 8: Creating the Logical Architecture 179 Moving from Requirements to Solution 182 How Much Logical Architecture? 185 Applying the Process 188 Create Logical Architecture: Activity Overview 188 Task: Survey Architecture Assets 192 Task: Define Architecture Overview 194 Task: Document Architecture Decisions 200 Task: Outline Functional Elements 204 Task: Outline Deployment Elements 222 Task: Verify Architecture 228 Task: Build Architecture Proof-of-Concept 232 Task: Detail Functional Elements 234 Task: Detail Deployment Elements 245 Task: Validate Architecture 251 Task: Update Software Architecture Document 256 Task: Review Architecture with Stakeholders 258 Summary 260 Chapter 9: Creating the Physical Architecture 261 Moving from Logical to Physical Architecture 263 Applying the Process 265 Creating the Physical Architecture: Activity Overview 266 Task: Survey Architecture Assets 269 Task: Define Architecture Overview 270 Task: Document Architecture Decisions 273 Task: Outline Functional Elements 274 Task: Outline Deployment Elements 289 Task: Verify Architecture 292 Task: Build Architecture Proof-of-Concept 293 Task: Detail Functional Elements 294 Task: Detail Deployment Elements 296 Task: Validate Architecture 300 Task: Update Software Architecture Document 301 Task: Review Architecture with Stakeholders 301 Summary 302 Chapter 10: Beyond the Basics 303 The Architect and the Project Team 303 The Architect and External Influences 313 Architecting Complex Systems 318 Summary 330 In Conclusion: A Note from the Authors 331 Appendix A: Software Architecture Metamodel 333 Definition of Metamodel Terms 335 Appendix B: Viewpoint Catalog 339 Stakeholder Summary 340 Basic Viewpoints 341 Cross-Cutting Viewpoints 344 View Correspondence 347 Appendix C: Method Summary 351 Roles 351 Work Products 354 Activities 356 Tasks 356 Phases 362 Appendix D: Architectural Requirement Checklist 365 Functional Requirements 366 Usability Requirements 366 Reliability Requirements 367 Performance Requirements 367 Supportability Requirements 368 Constraints 368 Glossary 373 References 379 Index 385