128 3 Conventional Product and Process Modelling
Other important techniques concern encapsulation and componentization,
complemented with conformity-conventions. These techniques reduce the due
complexity and are well suited not only to software and software models, but also
to parts of physical products or processes – we can view a gearbox, a suspension or
an engine as components for a car.
It is important to develop appropriate methods and tools that would allow us to:
22.
easily achieve encapsulation and componentization;
23.
divide complexity into levels, so that each level can be served, controlled
or managed by an average expert for that level;
24.
change temporarily/locally the due complexity for supporting the decision
taking;
25.
selectively view different subsets of components of the model or links
among them according to different criteria (aspect, level of detail, context,
etc.);
26.
visualize and manipulate software structures and other elements in a
number of different ways (graphs, flow-charts, class diagrams,
etc.)
27.
split entities or models down to such level that the complexity of the
respective sub-entities falls below the critical level;
28.
reduce new problems to well-known and well-solved problems, leading
thus to extended reuse of existing (part-) solutions and increased
profitability.
As shown in Table 3.5, the design, production and use of an artefact usually
have different and independent from one another complexities. This means that if
these activities are separated from one another, the due complexity, associated with
each of them will be distributed among different persons, respectively.
3.1.2.5 Complexity of Software Models
The complexity of software is a topic that is intensively elaborated by computer
scientists. Nevertheless, most of this work deals with complexity from the
viewpoint of a software developer or creator. Since the software does not age
physically, a reasonably written and error-free program could not only be used
forever, but also replicated and reused infinitely. If we consider the ratio between
the
number of times a given software is used and the number of times it is created,
or alternatively, the ratio
duration of use to duration of creation, it can be
discovered that the higher this ratio is, the higher is the appreciation of the
respective software. In such situations it becomes much more important to be able
to measure the software complexity from the user's rather than from the developer's
viewpoint. Since the use of any software is generally easier than its creation, the
increase of this ratio can be viewed as a way to a better use of human resources.
Consider for a moment a software program or model as a black box with a
specified number of inputs and specified number of outputs. Let us define the
purpose of any software as
producing a (data) result by means of processing some
input data
. Since the complexity of a software routine (or function, or procedure)
from the viewpoint of its user does not depend on the internal states or structure of
the model, and since by definition the output always depends in the same way on
the input (
i.e., for each combination of input variables there should exist exactly
one combination of output variables, independently from the number of input and
output variables) we can say that: