Software maintenance is widely accepted part of SDLC now a days. It stands for all the modifications and updations done after the delivery of software product. There are number of reasons, why modifications are required, some of them are briefly mentioned below: Show
Types of maintenanceIn a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature. Following are some types of maintenance based on their characteristics:
Cost of MaintenanceReports suggest that the cost of maintenance is high. A study on estimating software maintenance found that the cost of maintenance is as high as 67% of the cost of entire software process cycle. On an average, the cost of software maintenance is more than 50% of all SDLC phases. There are various factors, which trigger maintenance cost go high, such as: Real-world factors affecting Maintenance Cost
Software-end factors affecting Maintenance Cost
Maintenance ActivitiesIEEE provides a framework for sequential maintenance process activities. It can be used in iterative manner and can be extended so that customized items and processes can be included. These activities go hand-in-hand with each of the following phase:
Software Re-engineeringWhen we need to update the software to keep it to the current market, without impacting its functionality, it is called software re-engineering. It is a thorough process where the design of software is changed and programs are re-written. Legacy software cannot keep tuning with the latest technology available in the market. As the hardware become obsolete, updating of software becomes a headache. Even if software grows old with time, its functionality does not. For example, initially Unix was developed in assembly language. When language C came into existence, Unix was re-engineered in C, because working in assembly language was difficult. Other than this, sometimes programmers notice that few parts of software need more maintenance than others and they also need re-engineering. Re-Engineering Process
There are few important terms used in Software re-engineering Reverse EngineeringIt is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level by analyzing lower abstraction levels. An existing system is previously implemented design, about which we know nothing. Designers then do reverse engineering by looking at the code and try to get the design. With design in hand, they try to conclude the specifications. Thus, going in reverse from code to system specification. Program RestructuringIt is a process to re-structure and re-construct the existing software. It is all about re-arranging the source code, either in same programming language or from one programming language to a different one. Restructuring can have either source code-restructuring and data-restructuring or both. Re-structuring does not impact the functionality of the software but enhance reliability and maintainability. Program components, which cause errors very frequently can be changed, or updated with re-structuring. The dependability of software on obsolete hardware platform can be removed via re-structuring. Forward EngineeringForward engineering is a process of obtaining desired software from the specifications in hand which were brought down by means of reverse engineering. It assumes that there was some software engineering already done in the past. Forward engineering is same as software engineering process with only one difference – it is carried out always after reverse engineering. Component reusabilityA component is a part of software program code, which executes an independent task in the system. It can be a small module or sub-system itself. ExampleThe login procedures used on the web can be considered as components, printing system in software can be seen as a component of the software. Components have high cohesion of functionality and lower rate of coupling, i.e. they work independently and can perform tasks without depending on other modules. In OOP, the objects are designed are very specific to their concern and have fewer chances to be used in some other software. In modular programming, the modules are coded to perform specific tasks which can be used across number of other software programs. There is a whole new vertical, which is based on re-use of software component, and is known as Component Based Software Engineering (CBSE). Re-use can be done at various levels
Reuse ProcessTwo kinds of method can be adopted: either by keeping requirements same and adjusting components or by keeping components same and modifying requirements.
Which type of maintenance involves changing an operational system to make it more efficient reliable or maintainable?Perfective maintenance refers to changes made to an information system in order to add new features or to improve the processing performance. It's involves changing an operational system to make it more efficient, effective and reliable.
Which maintenance involves changes made to a system to reduce the chance of future system failure?In corrective maintenance, changes are made to a system to evolve its functionality to changing business needs or technologies.
Which SDLC phase is analogous to the maintenance process of obtaining a maintenance request?The systems analysis SDLC phase is analogous to the maintenance process of obtaining maintenance requests.
What are the four major activities that occur within maintenance?Four major activities occur within maintenance: obtaining maintenance requests, transforming requests into changes, designing changes, and implementing changes.
|