Tuesday May 21, 9:00am - 12:30pm
Location: XP2019 Conference in Montreal
The world is moving faster than ever, and our software development techniques are struggling to keep up. We feel we need to have an agile feature set, but without a well-defined and understandable architecture, we feel like everything is in chaos. How do we manage the balance between architecture and agility?
Some key questions that every agile team must face are:
How do we balance basic agile goals and practices with the objectives of an architecture-driven approach to systems development?
Agile development emphasizes a pragmatic coding-centric process: a process that results in the continuous creation of working software – by people working in small, self-organizing teams in an environment that encourages exploration and experimentation. Most agile development teams resist creating a “big design up front” – they prefer creating exploratory prototypes.
On the other hand, an architecture-centric approach puts a high value on models and documents. In a software system with a strong architecture, there is a modular structure with well-defined interfaces. The developers follow a systematic approach to evaluate critical system characteristics: performance, security, data integrity, and reliability. Development is never completely “free-form,” because the architectural models define some core design constraints that help minimize project risk.
This workshop will explore the differences between agile and architecture-centric philosophies, and some practical approaches for combining the two approaches.
Agility is important in application development – but in many domains, architecture is equally or more important. A blend of agile and architecture-driven approaches might be the best route to success, because both approaches are essential for discovering different kinds of potential problems early in the development cycle. For example, Agile development techniques are best for highlighting issues that are linked to the “uncertainties in customer requirements.” On the other hand, architecture practices can help surface some of the key “technical unknowns” in complex product development.
The goals of this workshop are to explore the issues and obstacles in doing agile development – with an eye on building and maintaining a sound architecture. We will also address how to keep the architecture process as lightweight as possible. We plan to delve into these subjects:
The following articles provide useful background to understand the costs and benefits of doing some architecture work in agile projects.
The following articles explain several useful techniques to use in order to build lightweight and flexible architectures: