Software Evolution: Past, Present And Future

Read Complete Research Material



Software Evolution: Past, Present and Future

Software Evolution: Past, Present and Future

Software Evolution Definitions & Overview

Software evolution is concerned with modifying software once it is delivered to a customer. By that definition it forms a sub-area of the wider field of software engineering, which is defined as: the application of the systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is the application of engineering to software. McDermid's definition in the Software Engineer's Reference Book embodies the spirit of the engineering approach. He states that:

Software engineering is the science and art of specifying, designing, implementing and evolving with economy, time limits and elegance programs, documentation and operating procedures whereby computers can be made useful to man.

Software engineering is still a very young discipline and the term itself was only invented in 1968. Modern computing is only some 45 years old, yet within that time we have gained the ability to solve very difficult and large problems. Often these huge projects consume thousands of person-years or more of design. The rapid increase in the size of the systems which we tackle, from 100 line programs 45 years ago to multi-million line systems now, presents very many problems of dealing with scale. The underlying mathematics, computer science, and management techniques have found it difficult to keep up with six orders of magnitude change in scale.

Civil engineers are well able to design and build both a small footbridge over a stream and a major motorway bridge over an estuary. We would not simply scale one design up or down to solve both problems. Additionally, our software processes are barely equipped to cope and we have great difficulty in building large software systems, predictably and repeatedly, to meet the expectations of customers.

Much progress has been made over the past decade in improving our ability to construct high quality software which meets users' needs. Baber has identified three possible futures for software engineering: Failures of software systems are common, due to limited technical competence and developers. This is largely an extrapolation of the present situation. The use of computer systems is limited to those applications in which there is a minimal risk to the public. There is widespread scepticism about the safety of software based systems. There may be legislation covering the use of software in safety critical and safety related systems.

The professional competence and qualifications of software designers are developed to such a high level that even very challenging demands can be met reliably and safely. In this vision of the future, software systems would be delivered on time, fully meeting their requirements, and be applicable in safety critical systems.

Software Process

In case (a), software development is seen primarily as a craft activity. Option (b) is unrealistic; software is too important to be restricted in this way. Hence there is considerable interest within the software engineering field in addressing the issues raised by (c). Software is increasingly being used in important applications, and the consequences of failure can be very ...
Related Ads