It is a fact that all great software needs to have an architecture, but the most important thing is to know how that architecture is defined. Not many software development companies will ask you to join them on discussions before the project kicks off. It is vital that you are involved in the planning phase in order to establish a budget, resource plan and a high-level timeline that works for you and the development firm.
This stage presents its own challenges too. One of the toughest things to do is to convert the system requirements into a software architecture that resolves all requirements. To make things easier, a software architecture design can be split into simple steps:
Analyze the requirements:
The first step is to understand the system requirements. This appears to be simple, it sounds as simple as reading the requirements and understanding them. But the truth is this could be the most difficult step of the whole process. This is because software development projects can be victims of vague and unclear language. Therefore it is important to confirm that what you are requiring is exactly what the development company is interpreting.
Define use cases for the system:
Once the system specifications are available you need to develop system level use cases. All interactions between the users of the system and the system itself should be clearly documented.
Identify processor/modules to implement the use cases:
Once you have defined use cases for major scenarios, you are ready to move to the next step of identifying the modules and processors that would be required to handle the system’s features. The selection of the hardware components should depend on the experience the software development firm has in executing similar projects.
Select operating system and hardware platform:
A selection of the operating system and hardware platform should be based on the following items:
- Technical merits (performance, stability) of the hardware/software platform
- Special requirements from the platform (e.g. does the application require a platform that supports a real-time operating system or GPS functionality?)
- In-house experience with the hardware/software platform
Define sequence diagrams:
We consider this to be the final step in architecture design. Software architects must check whether the architecture handles all the system level use cases. During this step, system level use cases will give way to processor level sequence diagrams. An example of a use case that needs to be translated into a sequence diagram may be “A subscriber originates a call”.