Home
Home Services Training Our Method Events Free Stuff Customers
Articles White Papers Newsletters Speakers Links Reading List

The Menlo Briefs!

Privacy Policy


Recommended Classes

Those looking for ways to improve the way software projects are managed should take the following Menlo classes.

We offer the following classes at our location or yours. Follow the links for more details.

The Agile Object

Practical UML

Object Analysis and Design


 

 

21st Century Objects

Apply 19th century processes to software development in the 21st century

by: Thomas Meloche

 

Heading to Extremes

The transition from procedural development to object development is significant. Object technology, properly applied, offers a substantial opportunity for software development organizations to capitalize on existing software resources. Those of us involved in object-oriented software development believe it can produce tremendous benefits providing more features while saving time and money.

This paper provides a historical perspective on why we want to develop with objects. It is hoped that by viewing the benefits component technology has provided other industries, we may be able to draw some useful parallels to our own software development industry.

The Software Development Dilemma

Before going further it is important to note that the software development industry is in crisis. Over the past 30 years software has undergone a geometric increase in complexity. Ever faster personal computers, graphical user interfaces, networks, client server, distributed systems and the Internet have all worked together to significantly increase the complexity of software.

At the same time users of computers have also grown to be increasingly sophisticated. Having learned what computers are capable of, users now request more features, better user interfaces, better error handling and data recovery. And, while demand for software is growing, supply of programmers is not. Ironically, there are currently fewer students of Computer Science in our American universities now than there were in 1985.

Our current development processes and practices are not coping adequately with these dynamic forces - it is estimated that well over two-thirds of all software development projects experience major problems and a quarter of them fail outright.1 We must find better ways to develop software.

A Historical Perspective: 18th Century Muskets

In the 18th Century a typical American settler owned a musket, ostensibly for the purpose of hunting for food and self-defense. The musket, essential to the survival of the frontiersman, was custom made and handcrafted. There was no mass production. Each musket produced was unique; the work of a craftsman, an artisan, and its quality was a function of the artisan's personal ability. The quality of the musket was demonstrated only in its use - did it shoot straight? If the musket failed, it required custom repairs, again the work of the craftsman. All of this custom work, from the creation of the musket to the handcrafted repairs, were costly.

Fortunately for the artisans, the musket was considered essential, so people were willing to bear the financial burden of its manufacture and maintenance. Fortunately for everyone who needed muskets, the world of 18th Century manufacturing was soon to change.

19th Century Revolution

At the dawn of the 19th Century a series of inventors, including the notable Eli Whitney, experimented with revolutionary new manufacturing methods. At the core of the methods is the use of standardized and interchangeable parts. The concept is simple enough; carefully manufacture a set of parts built to pre-specified standards and test the parts against those standards. Any given complete set of these parts can be assembled to build the product. 

There were multiple benefits to this new process:

  1. Mass Production - A manufacturing process focused on effectively producing standardized and interchangeable parts enabled mass production of muskets.
  2. Improved Quality - The existence of standard part descriptions provides a basis of quality control. Quality can now be measured. It is a function of how closely a part conforms to the standard. Quality is no longer a function of an individual artisan's personal ability. Rather quality is a measure of the manufacturing process's ability to produce standard parts. Quality of the end product can be verified even before the final assembly of the product. This is because each part can be independently tested and verified as they are produced.
  3. Simplified Repairs - Repairs of the product are simplified because the parts are interchangeable, not customized. If a part is damaged it can be removed and replaced with another standardized part.
  4. Affordable - All of these benefits lead to the final and perhaps most significant benefit, items that are mass-produced become more readily affordable. The products are easier to produce and repair and those savings can be passed on to the consumer.

Move ahead 200 years. How does our understanding of 18th Century Muskets relate to 21st Century software? To see, we will start in the last century, the 20th century.

20th Century Software

In the 20th Century a typical American corporation owned software. This software, essential to the survival of the corporation, was often custom made and handcrafted. Each program produced was unique; the work of craftsmen, and its quality was a function of the artisans' personal abilities.

The quality of the software was verified by its use - did it produce the correct final result? A failure in the software required custom repairs, again the work of the artisans. All of this custom work, from the creation of the software to the handcrafted repairs, was costly. Fortunately for the artisans, software was considered essential, so people were willing to bear the financial burden of its construction and maintenance. Fortunately for everyone else who needed new software, the world of software development was soon to change.

21st Century Revolution

At the dawn of the 21st Century a series of inventors are experimenting with a revolutionary new software-manufacturing model. At the core of the model is the use of standardized and interchangeable parts. The concept is simple enough; carefully manufacture a set of parts built to pre-specified standards. Any given set of these parts can be assembled to build the software product. We call these standardized and interchangeable parts, object or components. Using component technology, we expect to see software production experience the same benefits achieved by 19th Century manufacturers such as:

  1. Mass Customization - With regard to software, the benefit isn't mass production since in the world of electrons, bits and bytes, making multiple copies of an existing software product is trivial. Software will benefit from mass customization; quickly making customized and new products from an existing set of parts.  
  2. Improved Quality - The existence of standard part descriptions provides a basis of quality control in the software development process. Quality can now be measured. It is a function of how closely a part conforms to the standard. Quality is no longer a function of an individual artisan's personal ability. Rather quality is a measure of the manufacturing processes' ability to produce standard parts. Quality of the end product can be controlled even before the final assembly of the program as each component can be separately tested and verified.
  3. Simplified Maintenance - Maintenance can also be greatly simplified in component systems. This is because the system has already been segmented along functional lines. New features can be added at the component level by rewriting and replacing individual software components without impacting the rest of the software system.
  4. Affordability - All of these benefits make component software development more affordable.

Extreme Programming

These benefits will be realized in the 21st Century. However, as the manufacturing processes of our ancestors had to change to embrace the industrial revolution, our software development processes must change to embrace the software revolution. Waterfall development practices must give way to iterative and incremental development practices. Test-at-the-end artisans must give way to test-first design disciplines. 

The mass production method of Eli Whitney must have seemed extreme in the 18th century just as Kent Beck's software practices seem extreme today. But the change will be made; efficiencies in the economy make it certain.

Do not expect to move effectively from one form of manufacturing to another without changing how the entire development organization operates. As we moved from hand crafted software to mass produced software the software artisan practices will be replaced by software factory practices. Having personally participated in the creation of an XP "Java Factory" and seen the benefits realized first hand, I know that I will never go back.

 

1 Standish Chaos Report [2001]

------------------------------------------------------

Interested in Learning More?

Rich Sheridan

Read Rich Sheridan's free white paper "Secrets of Software Success: Adapting Projects to an Accelerated Society." Yes, that really is him on the cover of Forbes Magazine. We founded Menlo Innovations to help software product companies like yours. And at Menlo, we practice what we preach - making products more valuable to your customers, more friendly to your users, and more profitable to you!

Tom, send me Rich's free white paper "Secrets of Software Success: Adapting Projects to an Accelerated Society"


Your Name:
Your E-Mail:
Your ZIP Code:
(Optional)

We will not resell your contact information.

We hate spam as much as you do.

Privacy Policy: No Resale Zone.  Spam Policy: No Spam Zone.



Copyright

Feel free to copy and distribute the articles for educational activities.

Please cite the
author(s) and source of all materials.

You may not charge for the use of these materials. 

Please keep the copyright intact on all materials.

 

Menlo Innovations
410 N 4th Avenue 
3rd Floor
Ann Arbor, MI 48104

(734) 665-1847

Located in
Historic
Kerrytown®

Articles | White Papers | Newsletters | Speakers | Links | Reading List

Menlo Innovations LLC (c) 2006