1.5 Summary

1.5 Summary

It has often been said, quite incorrectly, that the steam engine ushered in the age of industry. It did not. The ruler, precision measurement tools, and manufacturing processes governed by precise measurement made the steam engine possible. The basic principles of the steam engine were available to Aristotle and Michelangelo. They just could not have crafted the devices to the tolerances necessary to make them work very well. Up until beginning of the industrial age and the Industrial Revolution, all machines were hand-built by craftsmen. A gunsmith lovingly crafted each rifle. The parts of his rifle were built by hand to work together; they were not interchangeable with parts from any other rifle made by him or any other gunsmith. In fact, the entire rifle could be crafted without a single measurement tool. The Industrial Revolution began when parts made by many different individuals could work interchangeably and when there were precise specifications (designs) for these parts. The beginning of the industrial age was also the end of the age of the craftsman.

The overwhelming majority of software development projects are staffed by craftsmen. Each module of code is handcrafted by a software developer. We cannot measure his or her efforts. We typically do not have any real specifications for the module thus crafted. And, it would be next to impossible to integrate this module in a similar system being crafted by another "codesmith." We will soon enter the industrial age of computer software development. It will be driven by the same force as the Industrial Revolution: engineering principles based on measurement technology.

A criticism of the great industrial society that we have built is that we have been homogenized. Every rifle manufactured on a single assembly line looks just like every other one produced by that assembly line. If they are of high quality, there will be very little variation in their composition, for that is one the central attributes of quality. In the good old days — and there is some real dispute about how good they were — each rifle had its own character. You could learn how to shoot with your rifle and then it became part of you. The main problem with this world of yesteryear was that if you bought a rifle from a good craftsman, you had a good chance of getting a fine rifle. On the other hand, if you bought a rifle from bad craftsman, it could kill you outright. Our current software development practices are very similar to this world of yesteryear.

At the core of each software development organization is a group of practiced and disciplined software craftsmen. Each of these craftsmen sits at his or her shop (cubicle), handcrafting his or her part of the objet d'art. Periodically, these craftsmen gather in the commons (meeting room) to talk about how the pieces they are crafting will fit together (design reviews). When each craftsman has finished his or her piece of the system, the pieces will be cobbled together to see what happens when electricity is put through it (first build). Those pieces that seem to cause the system to break will be tossed back to the offending craftsman, who will pound on them, file them some more, and sand them a bit. The pieces are then put together a second time to see if they work any better after their rework (second build). This process is repeated until the system seems to work acceptably well.

Stagecoaches were built in this manner. Clipper ships were built this way. Castles were built this way. Cathedrals were built this way. Jet aircraft are not built this way but the avionics that control the jet aircraft are built this way. Nuclear reactors are not built this way but the control systems for these nuclear reactors are built this way. We build very complex systems, the hardware of which is designed according to best engineering practices and we power these systems with software control systems that are handcrafted like flintlock rifles. These systems are truly anachronisms. The time has come to incorporate best engineering practice into software development.



Software Engineering Measurement
Software Engineering Measurement
ISBN: 0849315034
EAN: 2147483647
Year: 2003
Pages: 139

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net