Abstract
For large-scale software-development endeavors, agility is enabled by architecture, and vice versa. The iterative, risk-driven life cycle inherent in agile approaches allows developers to focus early on key architectural decisions, spread these decisions over time, and validate architectural solutions early. Conversely, an early focus on architecture allows a large agile project to define an implementation structure that drives an organization into small teams, some focusing on common elements and their key relationships and some working more autonomously on features. Architects in agile software development typically work on three distinct but interdependent structures: architecture of the system, the structure of the development organization, and the production infrastructure. Architectural work supports the implementation of high-priority business features without risking excessive redesign later or requiring heavy coordination between teams. Architectural tactics provide a framework for identifying key concerns and guide the alignment of these three structures throughout the development life cycle.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
References
Kruchten, P.: Contextualizing Agile Software Development. J. Softw. Evol. Proc. 25, 351–361 (2013)
Highsmith, J.A.: Agile Software Development Ecosystems. Addison-Wesley, Boston (2002)
Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Merson, P., Nord, R., Stafford, J.: Documenting Software Architectures. Addison-Wesley, Upper Saddle River (2011)
Perry, D.E., Wolf, A.L.: Foundations for the Study of Software Architecture. ACM SIGSOFT 17(4), 40 (1992)
Meyer, B.: Agile! The Good, the Hype, and the Ugly. Springer, Zürich (2014)
McConnell, S.: Technical Debt, Software Best Practices (2007), http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
Cockburn, A.: Walking Skeleton (1996), http://alistair.cockburn.us/Walking+skeleton
Leffingwell, D.: Agile Software Requirements. Addison-Wesley, Boston (2011)
Brown, S.: Software Architecture for Developers. LeanPub., Vancouver (2014)
Bellomo, S., Nord, R.L., Ozkaya, I.: A Study of Enabling Factors for Rapid Fielding: Combined Practices to Balance Speed and Stability. In: 35th International Conference on Software Engineering, pp. 982–991. IEEE Press, Piscataway (2013)
Nord, R., Ozkaya, I., Sangwan, R.: Making Architecture Visible to Improve Flow Management in Lean Software Development. IEEE Software 29(5), 33–39 (2012)
Cataldo, M., Herbsleb, J.D., Carley, K.M.: Socio-Technical Congruence: A Framework for Assessing the Impact of Technical and Work Dependencies on Software Development. In: Second ACM-IEEE International Symposium on Empirical Software Engineering and Measurement, pp. 2–11. ACM, New York (2008)
Nord, R.L., Ozkaya, I., Kruchten, P., Gonzalez-Rojas, M.: In Search of a Metric for Managing Architectural Technical Debt. In: Joint Working IEEE/IFIP Conference on Software Architecture and European Conference on Software Architecture, pp. 91–100. IEEE Press, New York (2012)
Tamburri, D., Lago, P., Kruchten, P., van Vliet, H.: What Is Social Debt in Software Engineering? In: Sixth International Workshop on Cooperative and Human Aspects of Software Engineering, pp. 93–96. IEEE Press, San Francisco (2013)
Desbois, P.: Devops: A Software Revolution in the Making (Special Issue). Cutter IT J. 24, 8 (2011)
Shafer, A.C.: Infrastructure Debt: Revisiting the Foundation. Cutter IT J. 23, 36–41 (2010)
Bellomo, S., Kruchten, P., Nord, R.L., Ozkaya, I.: How to Agilely Architect an Agile Architecture? Cutter IT J. 27, 12–17 (2014)
Bachmann, F., Nord, R.L., Ozkaya, I.: Architectural Tactics to Support Rapid and Agile Stability. CrossTalk 25(3), 21–25 (2012)
Conway, M.E.: How Do Committees Invent? Datamation 14(4), 28–31 (1968)
Cataldo, M., Herbsleb, J.D.: Factors Leading to Integration Failures in Global Feature-Oriented Development: An Empirical Analysis. In: 33rd International Conference on Software Engineering, pp. 161–170. ACM, New York (2011)
Cataldo, M., Herbsleb, J.D.: Coordination Breakdowns and Their Impact on Development Productivity and Software Failures. IEEE T. Software Eng. 39, 343–360 (2013)
Leffingwell, D., Martens, R., Zamora, M.: Principles of Agile Architecture (2008), http://scalingsoftwareagilityblog.com/wpcontent/uploads/2008/08/principles_agile_architecture.pdf
Bellomo, S., Kazman, R., Ernst, N., Nord, R.: Toward Design Decisions to Enable Deployability: Empirical Study of Three Projects Reaching for the Continuous-Delivery Holy Grail. In: First International Workshop on Dependability and Security of System Operation, pp. 32–37. IEEE Press, New York (2014)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Nord, R.L., Ozkaya, I., Kruchten, P. (2014). Agile in Distress: Architecture to the Rescue. In: Dingsøyr, T., Moe, N.B., Tonelli, R., Counsell, S., Gencel, C., Petersen, K. (eds) Agile Methods. Large-Scale Development, Refactoring, Testing, and Estimation. XP 2014. Lecture Notes in Business Information Processing, vol 199. Springer, Cham. https://doi.org/10.1007/978-3-319-14358-3_5
Download citation
DOI: https://doi.org/10.1007/978-3-319-14358-3_5
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-14357-6
Online ISBN: 978-3-319-14358-3
eBook Packages: Computer ScienceComputer Science (R0)