amdhal, moore, brooke and 90-90 - empirical laws of computers

Amdhal’s Law

Amdahl‘s law says a program can run on faster than the time required to execute its sequential sections. The Law is cast in the form of an equation that accounts for the time spent in the parallel (or vectorizable) and sequential parts of the code. The validity of this concept is easy to grasp. If a program is 80% parallelizable and 20% must be executed sequentially, the maximum reductionin execution time is by a factor of five (if the parallelizable code were run in zero time). Amdahl’s Law was thou

ght to provide a practical limit to the number of processors that could beused profitably in a parallel computer system, estimated at around 100 processors. However, this analysis did not account for the fact that for many scientific applications, as the size of the problem being tackled increases, the sequential fraction of the work tends to decrease. Since the speed and memory of the processors in a parallel system enable a user to tac

kle bigger problems, Amdahl’s Law does not apply in these applications.


Moore’s Law

Moore’s Law, coined by Intel founder Gordon Moore, predicts that microprocessor performance will double approximately every 18 months’a calculation that has been true for 30 years but is expected to continue for only a few more years. Moore himself frequently warns that as physical limits are reached in the feature sizes and in the manufacturing techniques used for semiconductor components, it is not clear how to make faster components with today’s dominant technology. The current estimate is that these limits will be reached within 10 years.


Brooke’s Law

Brooks’s law is a principle in software development which says that “adding manpower to a late software project makes it later”. It was coined by Fred Brooks in his 1975 book The Mythical Man-Month. The corollary of Brooks’s Law is that there is an incremental person who, when added to a project, makes it take more, not less time. Brooks adds that “Nine women can’t make a baby in one month”.


90-90 Rule

In computer programming and software engineering, the 90-90 Rule is a humorous aphorism that states:

“The first 90 percent of the code accounts for the first 10 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”[1]
—Tom Cargill, Bell Labs

That the total development time sums to 180% is a wry allusion to the notorious tendency of software development projects to significantly overrun their original schedules. It expresses both the rough allocation of time to easy and hard portions of a programming project and the cause of the lateness of many projects (that is, failure to anticipate the hard parts). In other words, it takes both more time and more coding than expected to make a project work.

The rule is attributed to Tom Cargill of Bell Labs and was made popular by Jon Bentley’s September 1985 “Programming Pearls” column in Communications of the ACM, in which it was titled the “Rule of Credibility”.