Today, software touches almost every aspect of our lives. From the business critical enterprise applications in the glasshouse data centers of Fortune 500 corporations, to the real-time software in your car's anti-lock brake system, to the web browser on your home PC, software is everywhere. Given the complexity of traditional software development, it is not surprising that estimates show over half of all code in use today was originally designed at least five years ago. Since 1995, however, the widespread use of Internet technologies and the Java platform have fundamentally changed the nature of software development. In the year 2000, besides many never-fixed Y2K bugs , software engineers will be writing code for everything from Enterprise JavaBeans powered application servers to consumer devices capable of spontaneous networking with Jini technology.
There is no doubt companies like Intel and others will be able to continue developing increasingly powerful microprocessors to execute all this new code. Moore's law, stating integrated circuit processing power doubles every twelve to eighteen months, has held true for over thirty years since Intel's co-founder Gordon Moore made his now famous observation in 1965. Many experts, including Moore himself, believe this trend will hold true for at least another two decades. Unfortunately , no such trends have consistently held true for software development.
One of the first authors to write about the difficulty of developing software was Frederick Brooks, whose 1975 book The Mythical Man Month describes why adding more people to a software project that is already behind schedule will only make it later. Twelve years later, in his IEEE Computer article No Silver Bullet: Essence and Accidents of Software Engineering, Brooks made famous the classic line, "There is no silver bullet in software engineering." In fact, many software projects are modestly successful only because after development delays, hardware speeds increase sufficiently to mask performance problems caused by poor software design. Many other software projects, unfortunately, fail completely because of the lack of mature development processes. In many corporations, software is still for the most part written one line at a time by engineers using text editors and compilers similar to those available twenty years ago. Sure, there are a number of graphical development tools a novice programmer can use to create a simple program. Much more than a fancy development tool, however, will be needed if you are going to successfully complete a major software project.
The most successful software projects are the result of skilled programmers, architects , and other specialists following disciplined processes and aided by modern technology to deliver results on time and under budget. Yet despite the hundreds of books available on the subject of software development, estimates show as many as eighty percent of software projects do not successfully meet their original schedule and budget. The reason for this is that having skilled programmers or powerful development tools, by themselves , does not guarantee successful software development. Software Development will concentrate on the attributes of the people, processes, and technology that make the other twenty percent of software projects successful.