SUSTAINABLE DEVELOPMENT
Innovate. Sustain. Transform.
Save up to 30% on top Physical Sciences & Engineering titles!

Agile software development approaches have had significant impact on industrial software development practices. Today, agile software development has penetrated to most IT co… Read more
SUSTAINABLE DEVELOPMENT
Save up to 30% on top Physical Sciences & Engineering titles!
Agile software development approaches have had significant impact on industrial software development practices. Today, agile software development has penetrated to most IT companies across the globe, with an intention to increase quality, productivity, and profitability. Comprehensive knowledge is needed to understand the architectural challenges involved in adopting and using agile approaches and industrial practices to deal with the development of large, architecturally challenging systems in an agile way.
Agile Software Architecture focuses on gaps in the requirements of applying architecture-centric approaches and principles of agile software development and demystifies the agile architecture paradox. Readers will learn how agile and architectural cultures can co-exist and support each other according to the context. Moreover, this book will also provide useful leads for future research in architecture and agile to bridge such gaps by developing appropriate approaches that incorporate architecturally sound practices in agile methods.
researchers, practitioners, and graduate students of software engineering and software architectures, people working in architecturally sensitive industries (e.g. safety critical systems) and industries migrating to agile
Acknowledgments
About the Editors
Muhammed Ali Babar
Alan W. Brown
Ivan Mistrik
List of Contributors
Foreword by John Grundy: Architecture vs Agile: competition or cooperation?
Software Architecture—the “Traditional” View
Agile Methods—the “Traditional” View
Software Architecture—Strengths and Weaknesses with Regard to Agility
Agile—Strengths and Weaknesses with Regard to Software Architecture
Bringing the Two Together—Agile Architecting or Architecting for Agile?
Looking Ahead
References
Foreword by Rick Kazman
Preface
Part I: Fundamentals of agile architecting
Part II: Managing software architecture in agile projects
Part III: Agile architecting in specific domains
Part IV: Industrial viewpoints on agile architecting
Chapter 1. Making Software Architecture and Agile Approaches Work Together: Foundations and Approaches
Abstract
Acknowledgments
1.1 Introduction
1.2 Software Architecture
1.3 Agile Software Development and Architecture
1.4 Making Architectural and Agile Approaches Work
References
PART 1: Fundamentals of Agile Architecting
Chapter 2. The DCI Paradigm: Taking Object Orientation into the Architecture World
2.1 Introduction
2.2 The Vision: What is Architecture?
2.3 Form and Function in Architectural History
2.4 What is Object Orientation? Achieving the Vision
2.5 Shortcomings of the Models
2.6 DCI as a New Paradigm
2.7 DCI and Architecture
2.8 Conclusion
References
Further Reading
Chapter 3. Refactoring Software Architectures
Abstract
3.1 Introduction
3.2 Dealing with Design Flaws
3.3 Evolution and Styles of Refactoring—Code Refactoring
3.4 Evolution and Styles of Refactoring—Refactoring to Patterns
3.5 The Motivation for Software Architecture Refactoring
3.6 Architectural Smells
3.7 A Real-World Example
3.8 Quality Improvement
3.9 The Process of Continuous Architecture Improvement
3.10 Shallow and Deep Refactoring
3.11 Additional Examples of Architecture Refactoring Patterns
3.12 Known Obstacles to Architecture Refactoring
3.13 Comparing Refactoring, Reengineering, and Rewriting
3.14 Summary
References
Chapter 4. Driving Architectural Design and Preservation from a Persona Perspective in Agile Projects
Abstract
Acknowledgments
4.1 Introduction
4.2 Personas in the Design Space
4.3 Discovering ASRs
4.4 Personas for Driving Architectural Design
4.5 Personas and Architectural Preservation
4.6 ASPs in Other Project Domains
4.7 Conclusions
References
Chapter 5. Architecture Decisions: Who, How, and When?
Abstract
5.1 Introduction
5.2 Research Methodology
5.3 The Agile Architecture Axes Framework
5.4 Industrial Cases
5.5 Analysis
5.6 Reflection
5.7 Related and Future Work
5.8 Conclusions
Appendix A Visual Representation of the Case Studies Mapped on the Triple-A Framework
References
PART 2: Managing Software Architecture in Agile Projects
Chapter 6. Supporting Variability Through Agility to Achieve Adaptable Architectures
Abstract
Acknowledgments
6.1 Introduction
6.2 Background
6.3 Related Work
6.4 Challenges When Combining Variability and Agility
6.5 Arguments for Combining Variability and Agility
6.6 Agile-Inspired Variability Handling
6.7 Summary and Conclusions
References
Chapter 7. Continuous Software Architecture Analysis
Abstract
7.1 Introduction
7.2 Software Architecture Analysis
7.3 Approaches to Software Architecture Analysis
7.4 Continuous Software Architecture Analysis
7.5 CSAA in Existing Approaches
7.6 CSAA and Analysis Goals
7.7 Experiences with an Approach to CSAA
7.8 Findings and Research Challenges
7.9 Conclusion
References
Chapter 8. Lightweight Architecture Knowledge Management for Agile Software Development
Abstract
Acknowledgments
8.1 Introduction
8.2 Challenges of Agile Architecture Documentation
8.3 Supporting Techniques for AKM in Agile Software Development
8.4 Architecture Practices in Agile Projects
8.5 Architectural Information Flow in Industry
8.6 AKM in Scrum
8.7 Related Work
8.8 Conclusions
References
Chapter 9. Bridging User Stories and Software Architecture: A Tailored Scrum for Agile Architecting
Abstract
Acknowledgments
9.1 Introduction
9.2 Agile Architecting
9.3 Case Study: Metering Management System in Electrical Power Networks
9.4 Agile Architecting Mechanisms
9.5 A Tailored Scrum for Agile Architecting
9.6 Agile Architecting in Practice
9.7 Findings About Agile Architecting
References
PART 3: Agile Architecting in Specific Domains
Chapter 10. Architecture-Centric Testing for Security: An Agile Perspective
Abstract
10.1 Introduction
10.2 Research motivation
10.3 Overview of limitations in current post-implementation methods
10.4 Introducing implied scenarios
10.5 Approach
10.6 The agility of the approach
10.7 Identity management case study
10.8 Further discussion
10.9 Agile development, architecture, and security testing
10.10 Related work
10.11 Conclusion
References
Chapter 11. Supporting Agile Software Development and Deployment in the Cloud: A Multitenant, Multitarget Architecture
Abstract
11.1 Introduction
11.2 Cloud computing
11.3 Multitenancy architectures
11.4 Agility and multitenant architectures
11.5 Multitenancy monotarget: agility challenges
11.6 Supporting agility: multitenancy multitarget
11.7 Globalgest: A real MT2 system
11.8 Related work
11.9 Conclusions and future work
References
PART 4: Industrial Viewpoints on Agile Architecting
Chapter 12. Agile Architecting: Enabling the Delivery of Complex Agile Systems Development Projects
Abstract
12.1 Agile and complex systems development approaches need to merge and adapt
12.2 Identifying the right amount of architecture
12.3 Cost reduction through architecture
12.4 Minimize rework through architecture
12.5 Accelerate delivery through architecture
12.6 Conclusion
References
Chapter 13. Building a Platform for Innovation: Architecture and Agile as Key Enablers
Abstract
13.1 Introduction
13.2 Worlds collide
13.3 An architecture heritage
13.4 Iterative development
13.5 Along came agile
13.6 Agile with discipline
13.7 Beyond architecture and agile
13.8 Summary
References
Chapter 14. Opportunities, Threats, and Limitations of Emergent Architecture
Abstract
14.1 Introduction
14.2 Purpose, activities, and objectives of architecture
14.3 Analysis of emergent architecture
14.4 Discussion
14.5 Conclusion
References
Chapter 15. Architecture as a Key Driver for Agile Success: Experiences at Aviva UK
Abstract
15.1 Introduction
15.2 Challenges to agile adoption at Aviva UK
15.3 The key role of architecture in driving agile success
15.4 Incremental agile and architecture transformation
15.5 Conclusions
References
Author Index
Subject Index
MB
AB
IM
Ivan Mistrik is a computer scientist who is interested in system and software engineering (SE/SWE) and in system and software architecture (SA/SWA), in particular: life cycle system/software engineering, requirements engineering, relating software requirements and architectures, knowledge management in software development, rationale-based software development, aligning enterprise/system/software architectures, and collaborative system/software engineering. He has more than forty years’ experience in the field of computer systems engineering as an information systems developer, R&D leader, SE/SA research analyst, educator in computer sciences, and ICT management consultant.
In the past 40 years, he has been primarily working at various R&D institutions and has done consulting on a variety of large international projects sponsored by ESA, EU, NASA, NATO, and UN. He has also taught university-level computer sciences courses in software engineering, software architecture, distributed information systems, and human-computer interaction. He is the author or co-author of more than 80 articles and papers in international journals, conferences, books and workshops, most recently a chapter Capture of Software Requirements and Rationale through Collaborative Software Development, a paper Knowledge Management in the Global Software Engineering Environment, and a paper Architectural Knowledge Management in Global Software Development.
He has written a number of editorials and prefaces, most recently for the book on Aligning Enterprise, System, and Software Architecture and the book on Agile Software Architecture. He has also written over 120 technical reports and presented over 70 scientific/technical talks. He has served in many program committees and panels of reputable international conferences and organized a number of scientific workshops, most recently two workshops on Knowledge Engineering in Global Software and Development at International Conference on Global Software Engineering 2009 and 2010 and IEEE International Workshop on the Future of Software Engineering for/in the Cloud (FoSEC) held in conjunction with IEEE Cloud 2011.He has been the guest-editor of IEE Proceedings Software: A special Issue on Relating Software Requirements and Architectures published by IEE in 2005 and the lead-editor of the book Rationale Management in Software Engineering published by Springer in 2006. He has been the co-author of the book Rationale-Based Software Engineering published by Springer in May 2008. He has been the lead-editor of the book Collaborative Software Engineering published by Springer in 2010, the book on Relating Software Requirements and Architectures published by Springer in 2011 and the lead-editor of the book on Aligning Enterprise, System, and Software Architectures published by IGI Global in 2012. He was the lead-editor of the Expert Systems Special Issue on Knowledge Engineering in Global Software Development and the co-editor of the JSS Special Issue on the Future of Software Engineering for/in the Cloud, both published in 2013. He was the co-editor for the book on Agile Software Architecture published in 2013. Currently, he is the lead-editor for the book on Economics-driven Software Architecture to be published in 2014.