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.