Modeling and Simulating Software Architectures

The Palladio Approach

by Reussner, Becker, Happe, Heinrich, Koziolek, Koziolek, Kramer, Krogmann

ISBN: 9780262336789 | Copyright 2016

Click here to preview

Instructor Requests

Digital Exam/Desk Copy Print Exam/Desk Copy Ancillaries

Too often, software designers lack an understanding of the effect of design decisions on such quality attributes as performance and reliability. This necessitates costly trial-and-error testing cycles, delaying or complicating rollout. This book presents a new, quantitative architecture simulation approach to software design, which allows software engineers to model quality of service in early design stages. It presents the first simulator for software architectures, Palladio, and shows students and professionals how to model reusable, parametrized components and configured, deployed systems in order to analyze service attributes.

The text details the key concepts of Palladio’s domain-specific modeling language for software architecture quality and presents the corresponding development stage. It describes how quality information can be used to calibrate architecture models from which detailed simulation models are automatically derived for quality predictions. Readers will learn how to approach systematically questions about scalability, hardware resources, and efficiency. The text features a running example to illustrate tasks and methods as well as three case studies from industry. Each chapter ends with exercises, suggestions for further reading, and “takeaways” that summarize the key points of the chapter. The simulator can be downloaded from a companion website, which offers additional material. The book can be used in graduate courses on software architecture, quality engineering, or performance engineering. It will also be an essential resource for software architects and software engineers and for practitioners who want to apply Palladio in industrial settings.

"As software architects, we experience a plethora of technical decisions heavily impacting a systems economy later down the road. Deciding based on best practices and educated guesses alone often feels unsatisfying. The Palladio approach comprehensively presented by this book offers reproducible simulations to measure specific quality attributes that will influence the success of projects."

Dr. Wolfgang Weck, Professor of Computer Science, University of Applied Sciences and Arts Northwestern Switzerland

"The use of models to describe, analyze, and validate designs is a common practice in mature engineering fields. Despite its industrial and social relevance, software engineering has not yet reached a comparable maturity level. This book is a major step in this direction. The comprehensive approach developed by the Palladio team and presented in this book sets the stage for mature, model-based software engineering and distills methods that can become standard practice in the software industry. Every student and professional should read it and learn from it."

Carlo Ghezzi, Professor and Chair of Software Engineering, Politecnico di Milano
Expand/Collapse All
Contents (pg. v)
Foreword (pg. ix)
Preface (pg. xi)
Another Book on Software Architecture? (pg. xi)
Who This Book Is For (pg. xi)
What This Book Is About (pg. xii)
How This Book Is Organized (pg. xiii)
Acknowledgments (pg. xv)
About the Editors (pg. xvii)
Part I An Engineering Approach to Software Architecture (pg. 1)
1 Introduction (pg. 3)
1.1 An Engineering Approach to Software Design (pg. 6)
1.2 The Role of Software Architecture (pg. 7)
1.3 The Role of Software Components (pg. 8)
1.4 The Palladio Approach (pg. 9)
1.5 Structure of the Book and Reading Paths (pg. 13)
2 Palladio in a Nutshell (pg. 17)
2.1 Media Store (pg. 17)
2.2 The Role of Palladio (pg. 22)
2.3 Simulation Result (pg. 25)
2.4 Capacity Planning (pg. 26)
2.5 Media Store: Design Alternatives (pg. 27)
2.6 Conclusion (pg. 34)
Part II Architectural Modeling (pg. 35)
3 Architectural Viewpoints (pg. 37)
3.1 Overview (pg. 37)
3.2 Models, Viewpoints, View Types, and Views (pg. 38)
3.3 Structural Viewpoint (pg. 44)
3.4 Behavioral Viewpoint (pg. 53)
3.5 Deployment Viewpoint (pg. 57)
3.6 Decision Viewpoint (pg. 59)
3.7 Questions and Exercises (pg. 70)
3.8 Further Reading (pg. 71)
3.9 Takeaways (pg. 73)
4 Architectural Reuse (pg. 75)
4.1 Terminology (pg. 75)
4.2 Component and Interface Reuse (pg. 77)
4.3 Architectural Style Reuse (pg. 81)
4.4 Architectural Pattern Reuse (pg. 83)
4.5 Reference Architecture Reuse (pg. 85)
4.6 Product-Line Architectures (pg. 85)
4.7 Questions and Exercises (pg. 88)
4.8 Further Reading (pg. 88)
4.9 Takeaways (pg. 89)
Part III Architectural Analysis (pg. 91)
5 Modeling Quality (pg. 93)
5.1 Quality Attributes (pg. 93)
5.2 Goal-Driven Approach (pg. 95)
5.3 Component Quality (pg. 99)
5.4 Usage Profiles and Their Propagation (pg. 103)
5.5 Execution Environments (pg. 107)
5.6 Domain-Specific Quality Modeling (pg. 110)
5.7 Putting the Pieces Together (pg. 111)
5.8 Questions and Exercises (pg. 113)
5.9 Further Reading (pg. 113)
5.10 Takeaways (pg. 114)
6 Getting the Data (pg. 115)
6.1 Overview (pg. 116)
6.2 Real User and Application Performance Monitoring (pg. 120)
6.3 Resource Demand Estimation (pg. 126)
6.4 Estimating Failure Probabilities (pg. 130)
6.5 Common Pitfalls (pg. 133)
6.6 Questions and Exercises (pg. 135)
6.7 Further Reading (pg. 137)
6.8 Takeaways (pg. 137)
7 Answering Design Questions (pg. 139)
7.1 Design Questions (pg. 139)
7.2 Understanding the Results (pg. 142)
7.3 Tactics for Improving Quality (pg. 156)
7.4 Automatically Searching for Better Architectures (pg. 157)
7.5 Questions and Exercises (pg. 164)
7.6 Further Reading (pg. 164)
7.7 Takeaways (pg. 165)
8 Under the Hood (pg. 167)
8.1 Quality Analysis Tools (pg. 167)
8.2 Performance Simulation of Palladio Models (pg. 169)
8.3 Performance Analysis Tools (pg. 180)
8.4 Reliability Analysis (pg. 185)
8.5 Cost Analysis (pg. 188)
8.6 Questions and Exercises (pg. 189)
8.7 Further Reading (pg. 190)
8.8 Takeaways (pg. 190)
Part IV Embedding into the Software Engineering Process (pg. 193)
9 Software Engineering Processes (pg. 195)
9.1 When (Not) to Use Model-Driven Quality Prediction (pg. 195)
9.2 A Quality-Aware, Component-Based Development Process (pg. 203)
9.3 Application in Development Processes (pg. 217)
9.4 Questions and Exercises (pg. 223)
9.5 Further Reading (pg. 223)
9.6 Takeaways (pg. 224)
10 Relation to Requirements Engineering (pg. 227)
10.1 Requirements Engineering Foundations (pg. 227)
10.2 Relation of Requirements and Architectural Activities (pg. 235)
10.3 Requirement Checks in Later Life-Cycle Stages (pg. 241)
10.4 Questions and Exercises (pg. 242)
10.5 Further Reading (pg. 243)
10.6 Takeaways (pg. 243)
11 Relation to Implementation (pg. 245)
11.1 Forward and Reverse Engineering Overview (pg. 246)
11.2 Forward Engineering (pg. 248)
11.3 Reverse Engineering (pg. 258)
11.4 Questions and Exercises (pg. 271)
11.5 Further Reading (pg. 272)
11.6 Takeaways (pg. 273)
Part V Case Studies (pg. 275)
12 Workload-Aware Monitoring of a 1&1 E-mail System (pg. 277)
12.1 Introduction (pg. 277)
12.2 Goals and Questions (pg. 278)
12.3 System Description (pg. 278)
12.4 Modeling (pg. 280)
12.5 Data Collection (pg. 282)
12.6 Analysis (pg. 282)
12.7 Evaluation (pg. 295)
12.8 Lessons Learned (pg. 298)
13 Design Trade-offs in IBM Storage Virtualization (pg. 301)
13.1 Goals and Questions (pg. 301)
13.2 System Architecture (pg. 302)
13.3 Structure and Behavior Modeling (pg. 305)
13.4 Data Collection (pg. 309)
13.5 Analysis and Evaluation (pg. 310)
13.6 Lessons Learned (pg. 313)
14 Design Space Exploration for an ABB ASP.NET Server (pg. 317)
14.1 System under Study (pg. 317)
14.2 Goals and Questions (pg. 319)
14.3 Modeling (pg. 319)
14.4 Data Collection (pg. 322)
14.5 Analysis (pg. 327)
14.6 Lessons Learned (pg. 336)
Future Trends (pg. 339)
Future Work on Limitations (pg. 339)
Future Topics (pg. 340)
Conclusion (pg. 343)
Epilogue: A Brief History of Palladio (pg. 347)
References (pg. 351)
Tools and Webpages (pg. 366)
Contributors (pg. 369)
Index (pg. 371)

Ralf H. Reussner

Ralf H. Reussner is Full Professor of software engineering, Chair of Software Design and Quality at the Karlsruhe Institute of Technology (KIT), Executive Director of the Research Center for Information Technologies (FZI).

Steffen Becker

Steffen Becker is Full Professor of software engineering at Chemnitz University of Technology (TU).

Jean Happe

Jens Happe is a Senior Researcher at SAP Research and co-founder of the software start-up avenyou.

Robert Heinrich

Robert Heinrich is Head of Quality-driven System Evolution Research Group at the Chair of Software Design and Quality, Karlsruhe Institute of Technology (KIT).

Anna Koziolek

Anne Koziolek is a Junior Professor of software engineering and head of the Architecture Driven Requirements Engineering Group at the Karlsruhe Institute of Technology (KIT).

Heiko Koziolek

Heiko Koziolek is a Principal Scientist and Global Research Area Coordinator at ABB Corporate Research.

Max Kramer

Max Kramer is a Scientist at the Chair of Software Design and Quality, Karlsruhe Institute of Technology (KIT).

Dr. -Ing. Klaus Krogmann

Dr.-Ing. Klaus Krogmann is the manager quality engineering platform with Citrix, GetGo.

Go paperless today! Available online anytime, nothing to download or install.