As a good architect, the right answer is ‘it depends’. But I have also seen too many perplexed and ‘that cannot be all’ face expressions to know, that it is also not the complete answer. There are roughly four mechanisms:
- The process of creation: The architect identifies and analyses a number of alternative solutions, derives a rationale and then guides the design process to its completion (i.e., code tested and released).
- The process of evolution: Repeated executions of the ‘process of creation’ in response to new or changed requirements, environment changes or other constraints imposed on existing systems.
- The process of guidance: The identification and specification of goals or references to guide and constrain both of the above processes.
- The process of collaboration: The identification and realisation of opportunities to collaborate and share software between two or more groups of people.
The process of creation is predominantly a planned process, but it is not uncommon for parts of the solution to emerge due to factors of the unknown risks, constraints or other factors with uncertain details. Project focused Solution Architects will typically work into this category. Solution Architects are responsible for the search for the optimal (or good enough) solution given a set of possible solutions (also known as the ‘design space’).
The process of evolution is a gradual process where the architecture emerges through a step by step planning process. Solution Architects involved in several releases or multiple projects with dependencies on a shared set of existing applications fall into this category. Here the architect is responsible for the gradual realisation of a solution (and interim solutions), or altering the solution in regards to what’s considered ‘optimal’ (changes in the design space).
The process of guidance ensures a suitable direction for the process of evolution and appropriate constraints for the process of creation. Enterprise Architects typically work within this category. The focus on goals is about ensuring the continuous alignment with the objectives, strategy and business goals of the organisation – the actual realisation belongs as part of the processes of creation and evolution – i.e., define the benchmarks for what’s considered ‘optimal’ and set the outer boundaries for the design (search) space. In this context, architecture within the enterprise context emerges from the combined set of projects executed over time.
The process of collaboration is primarily for scenarios where company goals can only be achieved through the collaboration between multiple units either within or external to the company. In this context, both the goals and solutions would emerge as a result of market forces.
So it really does depend….