Software Engineering - Old Questions

7. What are the activities of architectural design process? Discuss abstract machine model.

6 marks | Asked in 2076

Architectural design is a process for identifying the sub-systems making up a system and the framework for sub-system control and communication. The output of this design process is a description of the software architecture.  It represents the link between specification and design processes and is often carried out in parallel with some specification activities. The architectural design process is concerned with establishing a basic structural framework that identifies the major components of a system and the communications between these components.

Architectural design process includes following activities:

  • System structuring: The system is decomposed into major sub-systems and communication (e.g. data sharing) mechanisms are identified.
  • Control modelling: A model of the control relationships between the sub-systems is established.
  • Modular decomposition: The identified sub-systems are decomposed into lower-level modules (components, objects etc.).

Abstract Machine Model

Abstract machine model is used to model the interfacing of sub-systems. It organizes the system into layers with related functionality associated with each layer. A layer provides services to the layer above it so the lowest-level layers represent core services that are likely to be used throughout the system. This model supports the incremental development of sub-systems in different layers. When a layer interface changes, only the adjacent layer is affected. 

It is used when building new facilities on top of existing systems; when the development is spread across everal teams with each team responsibility for a layer of functionality; when there is a requirement for multi-level security.

Example: Simple abstract machine based version management system


Advantages:

  • Supports incremental development.
  • Allows replacement of entire layers so long as the interface is maintained.
  • Redundant facilities (e.g., authentication) can be provided in each layer to increase the dependability of the system.

Disadvantages:

  • In practice, providing a clean separation between layers is often difficult and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it.
  • Performance can be a problem because of multiple levels of interpretation of a service request as it is processed at each layer.