Information Technology Reference
In-Depth Information
an unacceptably low quality or was being cancelled altogether due to an inability
to meet initial requirements. The study group concluded that the application of
established practices from the various fields of engineering could result in a more
efficient and productive software development process (Schach 2008 ). In the
earliest years of software development, programs were limited in both size and
scope. As the technology spread, the need to develop larger, more diverse software
systems led to the substandard practices that NATO came to refer to as the soft-
ware crisis. In turn, the solution that was recommended initiated a new industry
that focused not on programming the desired solution, but on the entirety of the
development process that would deliver that solution.
1.1.2 Success Rate of Software
The advent of software engineering had an enormous impact on the software
development industry, and completely revolutionized the development process.
The modern day picture, however, is still far from perfect. A recent study by the
Standish Group found that as late as 2004, only 28 % of software projects could be
properly termed a success, while an astounding 51 % came in ''seriously late, over
budget and lacking expected features.'' The remaining 18 % were cancelled out-
right (Hayes 2004 ). All of this points to the need for even greater emphasis on
software engineering.
1.1.3 The Complexity of Software
Yet another argument for the software engineering paradigm is the constantly
increasing complexity of modern software. The size and scope of software systems
has grown steadily since the early days of computer science. Software of the past
was typically designed to do one task on a specific computer. Modern software
systems, however, can do an abundance of tasks in many different situations, and
on many different platforms. This escalation in functionality and portability means
these larger systems will be developed by more people across ever diversifying
fields of study. The demand for a unified development plan and crystal-clear
project management and communication methods has never been greater (Stiller
and LeBlanc 2002 ). No matter how good the tools, a developer must have a sound
understanding of the entire software engineering process. A full understanding of
the complexity of a software solution is critical in ensuring the delivery of a
successful product. Complexity measures can be used to predict critical infor-
mation about the reliability and maintainability of software systems from an
automatic analysis of the source code. They can also provide continuous feedback
during a software project to help control the development process. Even during
testing and maintenance, complexity measures provide detailed information about
Search WWH ::




Custom Search