Techniques for reducing need of Software Maintenance
Software Maintenance is modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. Following are the three techniques the need of software maintenance as depicted in the following figure :
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
Pattern-based software Reengineering :
Pattern based software reengineering approach is primarily aimed at improving the maintainability of software legacy systems. Most of the systems were developed in imperative languages with traditional design approaches. Imperative programming languages have the following characteristics :
- Emphasis on data types, values and operators.
- Emphasis on executable statements.
- Emphasis on functions and subroutines.
Instead of continually maintaining these systems in their original architecture the idea is to engineer them using good design architecture in order to make them more understandable and easier to reuse and maintain.
One way of redesigning these systems is using design patterns. Design patterns are basically design techniques that combine successful and established design practices and the experience of experts into a set of components that exhibit known behavior with a better structure. Ab=n example is object-oriented technologies which are known to improve the cost saving and quality aspects of software development.
Maintenance oriented approach to software construction :
Here maintenance is performed not only a software product has been delivered to a client but also during the actual building of the product. In fact product requirements frequently change during development, hence calling for reconstruction of the artifacts that have been developed to date.
Consequently by adopting an approach that makes addition, deletion or modification of requirements and artifacts easy at any stage of the product life, cycle, one is actually improving the software maintainability.
Disposable Information System :
This refers to the use of COTS software. COTS describe any software acquired from elsewhere and usually delivered, in executable format, as opposed to source-code format i.e., the firm now buys a right to use the software systems instead of actually building it. There are several advantages of this technique such as :
- Productivity Gain –
Instant productivity gains, as effort is saved in testing and debugging thousands of lines of code.
- Time-to-market –
As a result of software being produced faster the firm is in a position to reach the market first and beat the competition.
- Cost –
Using COTS software as a means of programming is considerably cheaper than coding from scratch.
- Philosophy –
There is a belief that software systems should be built like hardware systems, i.e., from a set of components that can be selected and acquired from say, catalogers.