Software entities are more complex for their size than perhaps any other humanconstruct, because no two parts are alike (at least above the statement level).If they are, we make the two similar parts into one, a (), open or closed.In this respect softwaresystems differ profoundly from computers, buildings, or automobiles, where repeatedelements abound.
Digital computers are themselves more complex than most things people build; theyhave very large numbers of states.This makes conceiving, describing, and testing them hard.Software systems have orders of magnitude more()than computers do.
Likewise, a scaling-up of a software entity is not merely a repetition of the sameelements in larger size; it is necessarily an increase in the number of different elements.Inmost cases, the elements interact with each other in some()fashion, and thecomplexity of the whole increases much more than linearly.
The complexity of software is a(an) ()property, not an accidental one.Hencedescriptions of a software entity that abstract away its complexity often abstract away itsessence.Mathematics and the physical sciences made great strides for three centuries byconstructing simplified models of complex phenomena, deriving, properties from the models,and verifying those properties experimentally.This worked because the complexities()in the models were not the essential properties of the phenomena.It does not work when thecomplexities are the essence.
Many of the classical problems of developing software products derive from thisessential complexity and its nonlinear increases with size.Not only technical problems butmanagement problems as well come from the complexity.
问题1选项