Software Development Productivity.
How about software development itself? I've been developing software myself
for forty years, so I have some perspective on the topic. I estimate the doubling time of software development
productivity to be approximately six years, which is slower than the doubling time for processor price-performance,
which is approximately one year today. However, software productivity is nonetheless growing exponentially. The
development tools, class libraries, and support systems available today are dramatically more effective than those of
decades ago. In my current projects teams of just three or four people achieve in a few months objectives that are
comparable to what twenty-five years ago required a team of a dozen or more people working for a year or more.
Software Complexity.
Twenty years ago software programs typically consisted of thousands to tens of thousands of
lines. Today, mainstream programs (for example, supply-channel control, factory automation, reservation systems,
biochemical simulation) are measured in millions of lines or more. Software for major defense systems such as the
Joint Strike Fighter contains tens of millions of lines.
Software to control software is itself rapidly increasing in complexity. IBM is pioneering the concept of
autonomic computing, in which routine information-technology support functions will be automated.
7
These systems
will be programmed with models of their own behavior and will be capable, according to IBM, of being "self-
configuring, self-healing, self-optimizing, and self-protecting." The software to support autonomic computing will be
measured in tens of millions of lines of code (with each line containing tens of bytes of information). So in terms of
information complexity, software already exceeds the tens of millions of bytes of usable information in the human
genome and its supporting molecules.
The amount of information contained in a program, however, is not the best measure of complexity. A software
program may be long but may be bloated with useless information. Of course, the same can be said for the genome,
which appears to be very inefficiently coded. Attempts have been made to formulate measures of software complexity-
for example, the Cyclomatic Complexity Metric, developed by computer scientists Arthur Watson and Thomas
McCabe at the National Institute of Standards and Technology.
8
This metric measures the complexity of program logic
and takes into account the structure of branching and decision points. The anecdotal evidence strongly suggests rapidly
increasing complexity if measured by these indexes, although there is insufficient data to track doubling times.
However, the key point is that the most complex software systems in use in industry today have higher levels of
complexity than software programs that are performing neuromorphic-based simulations of brain regions, as well as
biochemical simulations of individual neurons. We can already handle levels of software complexity that exceed what
is needed to model and simulate the parallel, self-organizing, fractal algorithms that we are discovering in the human
brain.
Do'stlaringiz bilan baham: