System Architectural Design
The architecture of a software system defines a number of critical aspects of the system's design. These are supported by modelling tools that implement the UML.
- The system is broken into functional units. Significant design aims are to define the units to simplify testing and to ensure that the functionality in a unit is as widely applicable as possible. This partitioning facilitates the development of a system whose components can be more readily reused in future developments.
- When the system is decomposed into its building blocks, the interfaces and functionality of each block has to be specified. This means that the implementation of the system may be able to progress independently in each of these units. The units may be able to be tested to a large degree independently of one another. When a model-driven approach is used the right tools enable testing of the basic structure ahead of undertaking any significant amount of hand coding.
- The designer also has to partition the design into its realisation units (or program modules in the traditional sense). This aspect is largely automated when model driven design is used. Relationships between the logical and physical design units must be established: again, model driven design assists by providing thorough checking of inter-dependencies of the units being built.
- Finally, in arriving at a system's architecture, the designer must consider for a complex design how the individual design components are to be deployed. This may mean that different activities take place in different code threads or perhaps run on different processors.
The above design techniques are particularly appropriate for embedded systems. The developed system model depends on an application framework, and the model may be tested during its development. It is then simple to test large parts of a system using the framework on a development computer before transferring the code to the target system. If necessary a simplified version of the framework may be deployed on the embedded computer, should its resources be constrained to prevent the use of a more comprehensive system.