I4Agile – Software architecture
A proper architecture enables extensibility and maintainability of software.
Whole team approach for architecture is used
According to the agile principles, the best architecture emerges from self-organizing teams. To make the most use of this principle, all members of the team need to understand the architecture. Visibility of the architecture is therefore needed. Visibility alone is not enough, make sure to allow all people to provide input and comments on the architecture.
Proven software patterns applied
Over the years, a lot of patterns in software design have emerged. Design Patterns provide easy to recognize and use OOP solutions to common problems. They are inherently easy to maintain, because many people are familiar with them.
Pluggable, configurable software is flexible
Since the main purpose is to deliver software that meets the changing needs of the customer(s). It is wise to create pluggable, configurable software. This enables the product to be flexible and fitting for multiple purposes. Every customer might have different needs, which all can be addressed when the architecture focuses on pluggable components with low coupling.
Levels and check points for software architecture
The levels for Software architecture are typified as follows:
- Forming: Basic architectural design for the application(s) is defined
- Norming: Software patterns are applied
- Performing: Architecture enables modularity
Please find the checkpoints below.
|1. There is an overall architectural diagram
2. The architecture is known in the team
3. The whole team is involved in architectural changes
|1. Each module has a single responsibility
2. Business rules are unaware of the outside world (separation of concerns)
3. Clear separation between data and presentation
4. Standard frameworks are included in the architecture (e.g. logging, testing, …)
|1. The architecture enforces components that have high cohesion and low coupling
2. Features can be switched on or off
3. The architecture contains pluggable components