This book discusses the discipline ofSSoftware Architecture using real-world case studies and posing pertinent questions that arouse objective thinking. It encourages the reader to think about the subject in the context of problems that software architects solve, the tools they use and the constraints under which they operate. To this end, a case study is provided at the beginning of most chapters, followed by an in-depth analysis that delves into the core issues and challenges of software architecture Cover......Page 1 A Case Based Approach......Page 4 Copyright......Page 5 Contents......Page 8 Foreword......Page 10 Preface......Page 12 Acknowledgements......Page 16 About the Author......Page 18 Software Architecture Primer......Page 19 The Rise and fall of Netscape (or the Browser War 1994–1999)......Page 20 The Growing Demands on Software Development......Page 21 What is software architecture?......Page 22 The Importance of Software Architecture......Page 23 Role of a Software Architect......Page 25 Some Important Terms used in Software Architecture......Page 27 Types of Architectures......Page 28 Software Architecture Frameworks......Page 33 Architectural Styles or Architectural Patterns......Page 41 Polya’s How to Solve It—A Problem-Solving Guide......Page 48 Systems Thinking Approach to Problem Solving......Page 50 Further Reading......Page 54 Where is the Architecture? Story of a Sick Health Insurance Application......Page 56 Background......Page 57 Case Study: Assure-Health—Story of a Sick Health InsuranceApplication......Page 58 Postmortem......Page 70 Why is Software Architecture Important?......Page 72 Role of Architecture in Software Development......Page 75 The use Case Analysis......Page 77 The Technical Process of Designing Architectures......Page 79 Case Analysis......Page 84 Conclusions......Page 93 Best Practices and Key Lessons from the Case Study......Page 94 Further Reading......Page 95 Refining and Re-factoring Architecture—Story of McCombbs Call Centre......Page 96 Background......Page 97 Case Study: Technical Architecture of McCombbs Call CentreSoftware......Page 98 Software Architecture Patterns and Anti-Patterns......Page 110 Performance Objectives......Page 113 Identifying Key Scenarios......Page 114 Identifying Problem Areas or Bottlenecks......Page 116 Refining the System......Page 121 Case Analysis......Page 122 Step 1: 4 + 1 View Model of the Proposed Architecture......Page 124 Step 3: Execute the Evaluation......Page 131 Conclusions......Page 135 Best Practices and Key Lessons from the Case Study......Page 136 Further Reading......Page 137 Architecture Evaluation—Developing a Futuristic Travel Search Engine......Page 139 What Is Architectural Evaluation?......Page 140 When to Evaluate and Review?......Page 141 Who Should Evaluate and Review?......Page 142 How to Review Architectures?......Page 143 Case Study: Evluating the Architecture of a Futuristic Traval Search Engine......Page 144 A Review Method for Architectural Description and Architecting Process......Page 156 Scenario-Based Review Methods......Page 158 Case Analysis......Page 160 Software Architecture Analysis Method......Page 161 Best Practices and Key Lessons from the Case Study......Page 169 Further Reading......Page 170 Moving from Software Architecture to Software Design—Building a Mobile Trading System......Page 172 What is Design?......Page 173 Design Notations......Page 174 Case Study: Mobile Trading System......Page 175 The Design Process......Page 185 Moving from Architecture to Design......Page 186 Step 3: Describing the Components and Connectors......Page 187 Characteristics of a Good Design......Page 188 Case Analysis......Page 189 Use Case Specification......Page 190 Sequence Diagrams......Page 196 Class Diagrams......Page 197 Conclusions......Page 198 Best Practices and Key Lessons from the Case Study......Page 199 Further Reading......Page 200 Component-based Development: Portal of Universal Bank......Page 201 Why Component-Based Development?......Page 202 Origin of CDB......Page 203 Some Examples of Cost of ‘From the Scratch’ Development......Page 204 Case Study: Component-Based Development for Universal Bank Portal......Page 205 Postmortem......Page 230 The Component-Based Development Approach......Page 231 Success Factors of CDB......Page 236 Challenges to Adopting CDB......Page 237 Conclusions......Page 239 Best Practices and Key Lessons from the Case Study......Page 240 Further Reading......Page 241 Emerging Trends in Software Architecture......Page 242 Software Architecture Discipline—Past,Present and Future......Page 243 Reusability and Reusable Services......Page 246 Service-Oriented Architecture......Page 249 Dimensions of Future Software Architecture......Page 257 Critical Software Architecture Elements......Page 258 Conclusions......Page 265 Further Reading......Page 266 References......Page 269 Index......Page 275