Manifesto for Agile Software Development
Values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Therefore, key agile principles became:
- Deliver working software frequently
- Working software is the primary measure of progress
- The best architectures emerge from self-organizing teams
- At regular intervals, the team reflects and adjusts
Design and architecture is a continuous activity that evolves with software.
Agile and CI enabled a new way to think about architecture.
Previously there were big, upfront, decisions:
- Architects design the systems
- Specs are handed off to developers
- Architecture is frozen early
- Changes and expensive Now:
- Architecture emerged from development
- Development is validated continuously by tests
- Small changes are made and are frequently integrated
- Architecture decisions can be revisited