1.1 Designing Complex Systems 13
1.1.2 System Requirements
In a system design project, system specification is the main source of information about
the expectations on the system under design. This system is described by a collection of
requirements that represent desired properties of the final product. Requirements are extracted
from system specification and can be classified in two categories:
1.
Functional requirements concern the functionality of the system and indicate what the
system should do. These requirements include the expected calculations, data processing
and technical details about the system components.
2.
Extra-functional requirements concern how the system behaves when fulfilling its function.
They are described with respect to a (quantitative) metric that permits to judge the
operation of the system. These requirements include performance aspects such as com-
putation time, communication latency, energy consumption, temperature and memory
usage. They also embody sensitive aspects such as security and safety.
Requirements are often expressed in natural language as part of the system specification
document. This latter often uses terminologies that are specific to the client’s business domain,
which sometimes introduce some incomprehension and ambiguity to non-experts in that domain.
In model-based design, requirements are also modeled to facilitate their comprehension and
avoid ambiguity. When formally described using property specification languages, they enable
advanced capabilities such as monitor synthesis and automated verification.
1.1.3 System Model Characteristics
With the growing complexity of systems, building faithful system models becomes a challenge.
Several factors impact the system complexity, such as the desired functionality and performance,
environmental aspects and the nature of the involved components. As a matter of fact, recent
systems tend to make hardware and software components of different nature coexist together.
The designer has to cautiously study the different interactions, communications and data flow
to ensure some compatibility in such heterogeneous systems.
The appeal for recent industrial and research activities, such as exploration of outer space,
has created a new era of systems that carry out extremely advanced and elaborate tasks where
time plays a major role. These complex systems have to independently operate in very hostile
and unpredictable environment. To enable an accurate description of such systems, several
key features are required from the modeling languages to manage complexity, describe time
evolution and account for uncertainty.
Decomposition to handle complexity.
A simple yet efficient way to comprehend system
complexity is to model systems as the composition of less complex elements. Following this
divide-and-conquer vision, the design of a system boils down to the design of its components and