Page 166 -
P. 166
Chapter 6 Architectural design 149
Vision
System
Object
Identification Arm Gripper
System Controller Controller
Packaging
Selection
System
Packing
Figure 6.1 The System Conveyor
architecture of a packing Controller
robot control system
Software architecture is important because it affects the performance, robustness,
distributability, and maintainability of a system (Bosch, 2000). As Bosch discusses,
individual components implement the functional system requirements. The non-
functional requirements depend on the system architecture—the way in which these
components are organized and communicate. In many systems, non-functional
requirements are also influenced by individual components, but there is no doubt
that the architecture of the system is the dominant influence.
Bass et al. (2003) discuss three advantages of explicitly designing and document-
ing software architecture:
1. Stakeholder communication The architecture is a high-level presentation of the sys-
tem that may be used as a focus for discussion by a range of different stakeholders.
2. System analysis Making the system architecture explicit at an early stage in the
system development requires some analysis. Architectural design decisions
have a profound effect on whether or not the system can meet critical require-
ments such as performance, reliability, and maintainability.
3. Large-scale reuse A model of a system architecture is a compact, manageable
description of how a system is organized and how the components interoperate.
The system architecture is often the same for systems with similar requirements
and so can support large-scale software reuse. As I explain in Chapter 16, it may
be possible to develop product-line architectures where the same architecture is
reused across a range of related systems.