Software entities are more complex for
their size than perhaps any other human construct, because no two parts are
alike (at least above the statement level). If they are, we make the two
similar parts into one, a(71 ), open or closed. In this respect software systems differ
profoundly from computers,buildings, or automobiles, where repeated elements
abound.
Digital computers are themselves more
complex than most things people build; they have very large numbers of states.
This makes conceiving, describing, and testing them hard. Software systems have
orders of magnitude more (72 )than computers do.
Likewise, a scaling-up of a software entity
is not merely a repetition of the same elements in larger size; it is necessarily an increase in
the number of different elements. In most cases, the elements interact with
each other in some( 73 )fashion,and
the complexity of the whole increases much more than linearly.
The complexity of software is a(an)(74 )property, not
an accidental one. Hence descriptions of a software entity that abstract away
its complexity often abstract away its essence.Mathematics and the physical
sciences made great strides for three centuries by constructing simplified
models of complex phenomena, deriving properties from the models, and verifying
those properties experimentally. This worked because the complexities(75 )in the models
were not the essential properties of the phenomena. It does not work when the
complexities are the essence.
Many of the classical problems of
developing software products derive from this essential complexity and its nonlinear increases with
size. Not only technical problems but management problems as well come from the complexity.
Afixed
Bincluded
Cignored
Dstabilized
相关试题
-
no two parts are alike (at least above the statement level). If they are, we make the two similar
-
owners and operators of large networks with the flexibility of control that they want in a standar
-
owners and operators of large networks with the flexibility of control that they want in a standar
-
to make small and large networks programmable in much the same way that individual computers are.
-
to make small and large networks programmable in much the same way that individual computers are.