Agile Software Architecture

Book description

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.

  • Presents a consolidated view of the state-of-art and state-of-practice as well as the newest research findings
  • Identifies gaps in the requirements of applying architecture-centric approaches and principles of agile software development and demystifies the agile architecture paradox
  • Explains whether or not and how agile and architectural cultures can co-exist and support each other depending upon the context
  • Provides useful leads for future research in both architecture and agile to bridge such gaps by developing appropriate approaches, which incorporate architecturally sound practices in agile methods

Table of contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. Copyright
  5. Acknowledgments
  6. About the Editors
    1. Muhammed Ali Babar
    2. Alan W. Brown
    3. Ivan Mistrik
  7. List of Contributors
  8. Foreword by John Grundy: Architecture vs Agile: competition or cooperation?
    1. Software Architecture—the “Traditional” View
    2. Agile Methods—the “Traditional” View
    3. Software Architecture—Strengths and Weaknesses with Regard to Agility
    4. Agile—Strengths and Weaknesses with Regard to Software Architecture
    5. Bringing the Two Together—Agile Architecting or Architecting for Agile?
    6. Looking Ahead
    7. References
  9. Foreword by Rick Kazman
  10. Preface
    1. Part I: Fundamentals of agile architecting
    2. Part II: Managing software architecture in agile projects
    3. Part III: Agile architecting in specific domains
    4. Part IV: Industrial viewpoints on agile architecting
  11. Chapter 1. Making Software Architecture and Agile Approaches Work Together: Foundations and Approaches
    1. Abstract
    2. Acknowledgments
    3. 1.1 Introduction
    4. 1.2 Software Architecture
    5. 1.3 Agile Software Development and Architecture
    6. 1.4 Making Architectural and Agile Approaches Work
    7. References
  12. PART 1: Fundamentals of Agile Architecting
    1. Chapter 2. The DCI Paradigm: Taking Object Orientation into the Architecture World
      1. 2.1 Introduction
      2. 2.2 The Vision: What is Architecture?
      3. 2.3 Form and Function in Architectural History
      4. 2.4 What is Object Orientation? Achieving the Vision
      5. 2.5 Shortcomings of the Models
      6. 2.6 DCI as a New Paradigm
      7. 2.7 DCI and Architecture
      8. 2.8 Conclusion
      9. References
      10. Further Reading
    2. Chapter 3. Refactoring Software Architectures
      1. Abstract
      2. 3.1 Introduction
      3. 3.2 Dealing with Design Flaws
      4. 3.3 Evolution and Styles of Refactoring—Code Refactoring
      5. 3.4 Evolution and Styles of Refactoring—Refactoring to Patterns
      6. 3.5 The Motivation for Software Architecture Refactoring
      7. 3.6 Architectural Smells
      8. 3.7 A Real-World Example
      9. 3.8 Quality Improvement
      10. 3.9 The Process of Continuous Architecture Improvement
      11. 3.10 Shallow and Deep Refactoring
      12. 3.11 Additional Examples of Architecture Refactoring Patterns
      13. 3.12 Known Obstacles to Architecture Refactoring
      14. 3.13 Comparing Refactoring, Reengineering, and Rewriting
      15. 3.14 Summary
      16. References
    3. Chapter 4. Driving Architectural Design and Preservation from a Persona Perspective in Agile Projects
      1. Abstract
      2. Acknowledgments
      3. 4.1 Introduction
      4. 4.2 Personas in the Design Space
      5. 4.3 Discovering ASRs
      6. 4.4 Personas for Driving Architectural Design
      7. 4.5 Personas and Architectural Preservation
      8. 4.6 ASPs in Other Project Domains
      9. 4.7 Conclusions
      10. References
    4. Chapter 5. Architecture Decisions: Who, How, and When?
      1. Abstract
      2. 5.1 Introduction
      3. 5.2 Research Methodology
      4. 5.3 The Agile Architecture Axes Framework
      5. 5.4 Industrial Cases
      6. 5.5 Analysis
      7. 5.6 Reflection
      8. 5.7 Related and Future Work
      9. 5.8 Conclusions
      10. Appendix A Visual Representation of the Case Studies Mapped on the Triple-A Framework
      11. References
  13. PART 2: Managing Software Architecture in Agile Projects
    1. Chapter 6. Supporting Variability Through Agility to Achieve Adaptable Architectures
      1. Abstract
      2. Acknowledgments
      3. 6.1 Introduction
      4. 6.2 Background
      5. 6.3 Related Work
      6. 6.4 Challenges When Combining Variability and Agility
      7. 6.5 Arguments for Combining Variability and Agility
      8. 6.6 Agile-Inspired Variability Handling
      9. 6.7 Summary and Conclusions
      10. References
    2. Chapter 7. Continuous Software Architecture Analysis
      1. Abstract
      2. 7.1 Introduction
      3. 7.2 Software Architecture Analysis
      4. 7.3 Approaches to Software Architecture Analysis
      5. 7.4 Continuous Software Architecture Analysis
      6. 7.5 CSAA in Existing Approaches
      7. 7.6 CSAA and Analysis Goals
      8. 7.7 Experiences with an Approach to CSAA
      9. 7.8 Findings and Research Challenges
      10. 7.9 Conclusion
      11. References
    3. Chapter 8. Lightweight Architecture Knowledge Management for Agile Software Development
      1. Abstract
      2. Acknowledgments
      3. 8.1 Introduction
      4. 8.2 Challenges of Agile Architecture Documentation
      5. 8.3 Supporting Techniques for AKM in Agile Software Development
      6. 8.4 Architecture Practices in Agile Projects
      7. 8.5 Architectural Information Flow in Industry
      8. 8.6 AKM in Scrum
      9. 8.7 Related Work
      10. 8.8 Conclusions
      11. References
    4. Chapter 9. Bridging User Stories and Software Architecture: A Tailored Scrum for Agile Architecting
      1. Abstract
      2. Acknowledgments
      3. 9.1 Introduction
      4. 9.2 Agile Architecting
      5. 9.3 Case Study: Metering Management System in Electrical Power Networks
      6. 9.4 Agile Architecting Mechanisms
      7. 9.5 A Tailored Scrum for Agile Architecting
      8. 9.6 Agile Architecting in Practice
      9. 9.7 Findings About Agile Architecting
      10. References
  14. PART 3: Agile Architecting in Specific Domains
    1. Chapter 10. Architecture-Centric Testing for Security: An Agile Perspective
      1. Abstract
      2. 10.1 Introduction
      3. 10.2 Research motivation
      4. 10.3 Overview of limitations in current post-implementation methods
      5. 10.4 Introducing implied scenarios
      6. 10.5 Approach
      7. 10.6 The agility of the approach
      8. 10.7 Identity management case study
      9. 10.8 Further discussion
      10. 10.9 Agile development, architecture, and security testing
      11. 10.10 Related work
      12. 10.11 Conclusion
      13. References
    2. Chapter 11. Supporting Agile Software Development and Deployment in the Cloud: A Multitenant, Multitarget Architecture
      1. Abstract
      2. 11.1 Introduction
      3. 11.2 Cloud computing
      4. 11.3 Multitenancy architectures
      5. 11.4 Agility and multitenant architectures
      6. 11.5 Multitenancy monotarget: agility challenges
      7. 11.6 Supporting agility: multitenancy multitarget
      8. 11.7 Globalgest: A real MT2 system
      9. 11.8 Related work
      10. 11.9 Conclusions and future work
      11. References
  15. PART 4: Industrial Viewpoints on Agile Architecting
    1. Chapter 12. Agile Architecting: Enabling the Delivery of Complex Agile Systems Development Projects
      1. Abstract
      2. 12.1 Agile and complex systems development approaches need to merge and adapt
      3. 12.2 Identifying the right amount of architecture
      4. 12.3 Cost reduction through architecture
      5. 12.4 Minimize rework through architecture
      6. 12.5 Accelerate delivery through architecture
      7. 12.6 Conclusion
      8. References
    2. Chapter 13. Building a Platform for Innovation: Architecture and Agile as Key Enablers
      1. Abstract
      2. 13.1 Introduction
      3. 13.2 Worlds collide
      4. 13.3 An architecture heritage
      5. 13.4 Iterative development
      6. 13.5 Along came agile
      7. 13.6 Agile with discipline
      8. 13.7 Beyond architecture and agile
      9. 13.8 Summary
      10. References
    3. Chapter 14. Opportunities, Threats, and Limitations of Emergent Architecture
      1. Abstract
      2. 14.1 Introduction
      3. 14.2 Purpose, activities, and objectives of architecture
      4. 14.3 Analysis of emergent architecture
      5. 14.4 Discussion
      6. 14.5 Conclusion
      7. References
    4. Chapter 15. Architecture as a Key Driver for Agile Success: Experiences at Aviva UK
      1. Abstract
      2. 15.1 Introduction
      3. 15.2 Challenges to agile adoption at Aviva UK
      4. 15.3 The key role of architecture in driving agile success
      5. 15.4 Incremental agile and architecture transformation
      6. 15.5 Conclusions
      7. References
  16. Author Index
  17. Subject Index

Product information

  • Title: Agile Software Architecture
  • Author(s): Muhammad Ali Babar, Alan W. Brown, Ivan Mistrik
  • Release date: November 2013
  • Publisher(s): Morgan Kaufmann
  • ISBN: 9780124078857