Being agile, with its attention to extensive testing, frequent integration, and focusing on important product features, has proven invaluable to many software teams. When building complex systems, it can be all too easy to focus primarily on features and overlook software qualities, specifically those related to the architecture. Some believe that by simply following agile practices—starting as fast as possible, keeping code clean, and having lots of tests—a good architecture will magically emerge. While an architecture will emerge, if there is not enough attention paid to it and the code, technical debt and design problems will creep in until it becomes muddy, making it hard to deliver new features quickly and reliably.
It is essential to have a sustainable architecture that can evolve through the project lifecycle. Sustainable architecture requires ongoing attention, especially when there are evolving priorities, a lot of technical risk, and many dependencies. This talk presents a set of patterns that focus on practices for creating and evolving a software architecture while being agile. These practices include a set of tools that allow teams to define “enough” architecture in the beginning of the project and to manage the state and the evolution of the architecture as the project evolves.
See the slides.Watch the video.