Pages Menu
Chitu Okoli chitu.okoli.org

Trying to Structure the Chaos

Trying to Structure the Chaos

In the good old days when programmers where programmers, and you had to design your own processor just to write a computer program—or so the old timers would have us believe … computer science was a fledging young field, and computer programmers were increasingly extending the boundaries of problems that could be tackled with a computer. Software systems grew from the simple and intricate (the original UNIX operating system, for instance, was just about 1,000 lines of code) to the unwieldily monstrous (compare the estimated 27 million lines for Windows 2000 [Northern Virginia Chapter 1998]).

No surprise that as software has grown in size and complexity, it has become increasingly difficult to write and manage software systems that are bug-free. In fact, the expected pattern today for any major software product is that after the “final” release, in spite of the extensive pre-release testing, patches will quickly follow to plug up the holes that the developers and testers missed.

Over the years, computer scientists have developed programming models and methodologies to try and meet the challenge of managing huge software. The evolution of these methodologies has been directed by two significant problems that arise from the very nature of huge software systems. The first has been the need to confront the increasing complexity, as I have just described.

The second driving factor is closely related: After decades of writing elegant computer code, programmers have realized that a lot of the code they write for their particular software problems has already been written before by someone else somewhere else, sometimes even in the same organization. After overcoming the egotistical attitude that “My code is the best code”, computer programmers have increasingly realized that if only they could reuse the code that has already been developed, their lives would be a whole lot easier.

Post a Reply

Your email address will not be published. Required fields are marked *