Concepts provide solutions to recurring problems.
We use the term “concept” for rules, principles or other decisions, guidelines, processes that influence one or more elements of the architecture.
- Decisions, or concepts that cannot adequatly be assigned to a single building block
- Decisions or rules that influence several:
- building blocks
- parts of the implementation
- runtime scenarios
- several developers
Other people like to call crosscutting aspects by different names. In practice we encountered the following terms:
- aspects: like in “aspect-oriented-programming”
- concepts: our favorite
- tactics: like in design tactics, a term coined in 2003 by the Software Engineering Institute. They define tactics as “architectural decisions that can be used to achieve desired quality attribute requirements”