Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Is Software Development 100% successful?
 
 

 

In the first of his series of articles on Patterns and AntiPatterns in Software Development
Dr R Srinivasan
examines some of the parameters which would make software development 100% successful


EVER since the 60' s, we have been witnessing paradigm shifts in the area of Software Development. We kept moving from Assembly-level coding in 60's to Procedural Software in 70's into early 80's and then to Object Oriented Programming(OOP) since early 80's . In this new millennium, we are talking about Component-based Software Development. In Procedural Programming the basic unit has been the Subroutine which has been a unit of Invocation. In OOP the basic unit is the encapsulated data type and an Object is a unit of Instantiation. In the latest technique in programming, the basic unit is a deployable software module, a "Component", which is a unit of deployment and reuse. With the introduction of CASE tools, Software Development has taken the attributes of an Engineering Discipline.

All the above developments have definitely been towards improving the productivity of Software Development; however a basic question today is, "is the Software Development 100% successful". William Brown, et. Al in their book on," Antipatterns in Project Management" draw our attention saying, "based upon surveys of corporate software projects in US, the realities of Software Development are: 1) About one third of software projects are cancelled , 2) Average number of projects expand twice as much budget and schedule as initially planned, 3) After delivery majority of systems are considered unsuccessful because they have far fewer capabilities than expected, 4) Modifications and extensions of the systems are the most expensive cost drives and very likely to create new defects and 5) Overall, virtually all Application Software Projects produce, " stove pipe systems", brittle software architecture that under perform on requirements". In his article on "Creating Chaos", in the July 1995 issue of American Programmer, Johnny Johnson says that about five out of six software projects are considered unsuccessful. Supporting these comments, software experts like Raphael Malveau and Dr. Thomas Mowbray, in their recent book on Software Architecture Boot Camp(Prentice Hall PTR, 2001), say, "Software Technology is critically important to the world's business and human society. However, Software Engineering remains a chaotic and immature discipline unable to systematically deliver successful systems; what is missing is Software Architecture".

Looking at these comments, many software development organizations must be wondering and getting annoyed. Particularly in our country, which is recognized as the Mecca of Software Development, we have shown a phenomenal sustained annual growth rate of nearly 60% in software Development in recent years, these comments may look bewildering and rightly so. However it depends upon how you look at and gauge what do we mean by "success of Software Development". The goals to be met to achieve success are: solve the right problem, correctness, meet the performance criteria, stability of software, delivery on time without any schedule slippage, costs within budget, well recognized documentation, good maintainability and above all the social side, namely, developed by a team consisting of happy development staff. Success means every one of these parameters should be met with 100%. Brown et. Al are even content to limit to four parameters in order to consider the software to be successful, namely, 1) On time delivery, 2) Development and delivery within budget, 3) Delivering the expected software and 4) Happy development staff.

We are forced to wonder, with so many courses in Computer Science, Software Engineering Processes, Languages, etc from both formal and non formal education sectors and the software development houses having well-trained Project managers and Engineers, where is the chance of so many failures or instances of failures in Software development? The experts who made the comments given in earlier paragraphs point out that "no class, seminar or books can possibly define thousands of variables that exist for any given project at any given time. There is no steady state in Software Development. No professor, lecturer or author can possibly know what your specific environment is at the time you embark on your project". That is also the reason why, with existing practices, we do not and cannot have a textbook on "Software Development" which would help the developers.

As Kenichi Ohmae, business Strategy expert says, "Rowing harder does not help, if the boat is headed in the wrong direction". In many of the Software Development organizations, we continue doing things the same way we have been doing. Scott. W. Thomas, one of the authors of the book by Brown et. Al says, "If you keep doing what you have always done, you will keep getting what you have always got". These are the main quotes that lay the foundation for my article. We will proceed to look into these in greater detail and discuss how Patterns and AntiPatterns will help towards achieving better software development from next week onwards.

(The author is Chief Technology Officer, Internet Component Management Group, Bangalore and can be contacted at: r.srinivasan@iCMGworld.com)

 
     
Copyright © 2006 iCMG. All rights reserved.
Site Index | Contact Us | Legal & Privacy Policy