Watts Humphrey – inspirational software engineer – 1927 to 2010

by Prof Barry Dwolatzky

Watts Humphrey

I’ve just received the really sad news that Watts Humphrey died today (Thursday 28th October) aged 83 years old. 

Watts Humphrey was one of the world’s most influential figures in the field of software engineering. In 1986, after retiring as the head of software at IBM, Humphrey joined the Software Engineering Institute (SEI) at Carnegie Mellon University in Pittsburgh USA. For the next 24 years he drove the development of the Capability Maturity Model (CMM), the Personal Software Process (PSP) and the Team Software Process (TSP). His work brought the concepts of process, measurement and continuing improvement to the software development industry. 

Watts Humphrey’s death came a few days after I unveiled my ambitious strategy to create 1,000’s of new jobs in the South African software sector. This strategy is largely based on Humphrey’s contributions to software engineering. The strategy began to take shape when I first met Watts in Mexico City in 2008, where I was leading a delegation from South Africa investigating TSP adoption. He was keenly interested in the South African software sector and its future prospects. 

Anyone who met Watts Humphrey could not fail to be inspired by his clear vision and boundless energy. His books are wonderful to read – they’re filled with the wisdom of his decades of experience and lots of common sense. 

I will always be inspired by Watts Humphrey. I remain determined to build, here in South Africa, on his wonderful work. I see his work as a tool and inspiration that will change the lives of those in our country who develop and use software.

Testing quality into software costs us dearly – is there a better way?

by Prof Barry Dwolatzky

sw_testing

A certain company in Johannesburg has, over the past few years, been outsourcing its software testing to a large Indian company. The value of this contract is R400 million per annum. The Johannesburg company employs several hundred software developers who write applications that support its business operations. It is these applications that are tested in India. 

The major aim of software testing is to expose “defects”. These defects are errors made by analysts, architects, designers and programmers during the software development lifecycle. Various international studies suggest that a piece of software going into system test contains more than 25 defects per thousand-lines-of-code [KLOC]. Data collected by Xerox in the USA concluded that the average time required to remove each defect found in system testing is 1405 minutes (or 23.4 hours). This time includes the time required to find the symptoms of the defect in testing … and then the re-work to be done by the original developer in locating and fixing the error. 

Defects are therefore costing the Johannesburg company mentioned above much more than the cost of the R400 million outsourced testing contract. There is also the large amount of wasted time spent by their in-house developers on re-work and debugging. At 25 defects/KLOC the company is shipping many thousands of defects to India. Some of these (but certainly not all) are then reported back to Johannesburg where tens of programmer-hours are required to fix each one. 

The waste in effort and money is almost mindboggling!! Surely there is a better way?

 I believe that the answer lies in putting higher quality code into system testing. It is obvious that if a way could be found to reduce the number of defects per KLOC from 25 to (say) 10 the saving would be tremendous. Not only that – we would also make software development projects more predictable. 

The reason for this is that the time it takes to find and fix a defect is very unpredictable. Simple defects are found and cleared in minutes. Others may take days or even weeks to resolve. It is therefore obvious that the fewer defects found in testing the more predictable software development projects would become. 

Another key issue about finding defects in system test is that because it is extremely time-consuming and unpredictable the project usually runs out of time and budget before all defects are found. The development team knows that if more tests are run more defects will be found … but who will pay for this extra testing effort? 

There is a proven way of dramatically reducing the number of defects in software before system testing starts. It lies at the heart of the “Team Software Process” (TSP) that is now being used with great success by companies in the USA, Mexico and elsewhere.  We at the JCSE have just run a year long TSP pilot at Nedbank. The results in terms of quality have been extremely encouraging. 

On Tuesday I will be unveiling the JCSE’s “Thousand Job Strategy” which aims to make a significant impact on the South African software development sector. TSP as a way of improving the quality and predictability of software development projects is a central element of the strategy. 

If you are interested in hearing more and debating this strategy with me, please join us at the JCSE’s Annual Process Improvement Symposium on the morning of Tuesday 26th October 2010 (see www.jcse.org.za for more details). If you can’t join us then hopefully the debate will continue on this blog where I will post more details of the strategy after its launch on Tuesday.

My “Thousand Job Strategy” to be launched at JCSE’s Process Improvement Symposium

by Prof Barry Dwolatzky

Barry Fifa

So why do I write this blog? The answer is simple … I’m on a crusade. The sub-title of my blog makes it clear what this crusade is (broadly) about. It says I’m “passionate about the SA software industry”. My focus, however, is much sharper than that. Put quite simply … I’m on a crusade to ensure that the SA software sector grows in size and international reputation over the next 5 years. Furthermore I need to be able to accurately monitor and measure this growth. 

Is this a pointless crusade? Am I a Don Quixote figure tilting at windmills? 

Obviously I believe strongly that my mission is achievable. I also don’t, for one moment, underestimate the difficulties I face. 

So – let me lay it down in front of you!  Here is my action plan: 

1.  My first step is to clearly define what I mean by the “SA software development industry”.

2.  Having agreed what the “industry” is I need to measure its current performance. After considerable thought I’ve decided that the performance of the industry will be determined by collecting a set of 5 numbers from as many software development projects as possible. These numbers are:

  • Size: Number of people in the team.
  • Schedule Performance: What was the difference (in days) between the promised completion date and the actual completion date?
  • Cost performance:  What was the difference (in Rands) between the promised budget and the actual cost?
  • Project size/complexity: How big and how complex was the application developed in the project?
  • Quality: How many defects (or “bugs”) were discovered during system testing?

These – per project – measures will then be averaged to give a measure of the state of software development in South Africa.

3.  I will then implement a strategy (see below) to improve the performance of the industry. My strategy also aims to increase the number of people employed in developing software in South Africa.

4.  On an ongoing basis the measures listed above will be collected and reported on.

5.   If my crusade is to be a success, I would want to see improvements in both performance and the number of jobs.

Before you say that this is “pie-in-the-sky”, or “mission impossible”, let me ask what else we should do to sustain and grow our local software industry?  We need to have ambitious plans, and (I believe) we need to monitor progress. I accept that it’s going to be difficult, but I’m ready to try! 

I’ve developed a strategy (see point 3 above) that aims to achieve my mission. I call it the JCSE’s “Thousand Job Strategy”. It aims to create 1,000 new software development jobs in South Africa over the next 3 years. It also aims to achieve a significant and quantifiable improvement in the performance of local software development teams. 

Are you interested in finding out more about the “Thousand Job Strategy”? It will be unveiled at the annual JCSE Process Improvement Symposium on 26th October 2010 from 8:45 to 12:45 at the Sunnyside Park Hotel, Johannesburg.  I will be inviting comments, both supportive and critical. 

The Symposium will also be addressed by the eminent international software engineer, Prof. Dr.-Ing. Manfred Nagl, Emeritus Professor of Software Engineering, RWTH Aachen University, Germany. 

Visit www.jcse.org.za to find out more about the Symposium. Documents describing the “Thousand Job Strategy” will be posted on this blog after the Symposium.