Practice: Evolutionary Architecture |  |
Analyze the major technical concerns that affect the solution and capture those architectural decisions to ensure that those decisions are assessed and communicated.
Relationships
Relationships | How to Adopt the Evolutionary Architecture Practice Key Concepts Software Architecture Architectural Mechanisms Architectural Views and Viewpoints Architecture Notebook Outline the Architecture Refine the Architecture Guidance Practice: Evolutionary Architecture Guidelines Abstract Away Complexity Modeling the Architecture Software Reuse
Inputs | [Software Design] [Software Implementation] [Technical Specification]
Description
Purpose | The Evolutionary Architecture practice describes how to incrementally build and improve the software architecture while uncovering and addressing architectural issues during software development. This reduces technical risk without requiring significant up-front architectural effort. This practice: Improves quality and productivity by reducing the need to make time consuming error prone fixes to late detected problems that result from architectural flaws. This is possible because the architecture is validated early and key architectural problems are corrected before the majority of development is done. Reduces time to market by focusing on reuse. It improves the consistency and maintainability of the system by incorporating lessons learned from development back into the architecture and applying those lessons to the rest of development. Improves predictability by identifying and implementing the highest risk technical areas first. It improves the team’s responsiveness to change by shortening the architecture cycle and minimizing time wasted in architecture scrap and rework when changes arise.
Main Description | ### The Essence of Evolutionary Architecture In the Evolutionary Architecture practice, you analyze the major technical concerns that affect the solution and document architectural decisions to ensure that you have assessed and communicated those decisions. ### The key principles of the Evolutionary Architecture practice are: Perform architecture work "just in time" with all other work. When planning your project, identify and discuss architectural issues with your team, then prioritize architecture work with any other work. Base your priorities on mitigating technical risk rather than creating value. Deferring architectural issues to handle “just in time” causes the architecture to evolve over time. Document key architectural decisions and outstanding issues. The Architecture Notebook maintains a list of the architectural issues to make it easy to understand which architectural decisions you’ve made and which you’ve not yet addressed. Implement and test key capabilities as a means to address architectural issues. Resolving architectural issues typically requires not only architectural brainstorming, but also associated prototyping. In other words, implement enough code to validate the assumptions behind the architecture. The code becomes production code, except for anything thrown away because it proves the architecture invalid.
How to read this practice | ### How to Read this Practice The best way to read this practice is to first familiarize yourself with its overall structure -- what it is in it and how it is organized. Next, review the key concepts for the practice. An especially important concept is Concept: Software Architecture. Once you understand what architecture is, turn your attention to the Architecture Notebook. Then review the tasks, accessing guidelines and tool mentors associated with each task as needed. You can also access the guidance provided by the practice directly, via the guidance folder. Be sure to take a look at the list of enablement materials for additional sources of information. See the "Additional Information" section of this page. For step-by-step instructions on how to adopt this practice, see Roadmap: How to Adopt the Evolutionary Architecture Practice.
Additional Information | ### Additional Resources For more information on the evolutionary architecture approach, see the following: Agile Architecture: Strategies for Scaling Agile Development Architectural Envisioning Agile Enterprise Architecture
This program and the accompanying materials are made available under the Eclipse Public License v1.0 which accompanies this distribution. OpenUP Copyright.