Software architecture design process passes two phases: Conceptual design and Technical design.
Conceptual design occurs earlier in the design process and it describes the idea and intention behind the architectural design. On the stage of the conceptual design we need to answer the questions “why” and “how”. The conceptual design preparation phase includes the following steps:
- Define the problem. On this step we must answer why the project is necessary. What is the goal of the project
- Research. On this step we must analyze other similar problem statements and their designs. Discover how other teams resolve it.
- Brainstorming On this step we apply all the knowledge from the previous steps and searching the problem resolution. The outcome is mesh of the abstractions, those abstractions are originated from the company, community, industry. The worst case is an understanding that we need to invent a wheel. In this case, we must to go on the step #2 and repeat the exercise.
- The last step is to prepare the visual concept. Here we could use graphical tools to create a sketch. Understandable sketch.
Technical design is the document aimed to address technical aspects of the system (feature, component, etc). The deep of the details vary from team to team, however there are minimal parts which every technical design should have.
- Requirements. Describes the features and functionalities of the target system.
- Overview. It is a high level overview of the functionality which is going to be implemented. Usually it contains the diagram which describes the idea in general. 3 Details. This section describes the important parts of the overview. It contains rich diagrams and explanations.
- Action items. List of the actions which we need to do. It should be at least 2 items here. Of cause, usually here are many items, but this list must exists. Must!
These are a basic steps to have an established architecture management process.