Software maintenance is the process of modifying or update the software component after delivery to correct faults to enhance the performance or adapt to the latest changes in the environment. Software maintenance is concerned with modifying software once it is delivered to a customer. Major economic importance: 40 -90% of the total life cycle cost.
The root problem is complexity. The combination of complexity means that it is feasible for one person alone to understand the complete software system.
The important requirement of software maintenance for clients, changes are accomplished quickly and cost-effectively. Reliability should not degrade. Maintainability should not degrade maintenance that becomes increasingly more expensive and difficult to becomes known as a legacy system. The Legacy system may still be of essential importance to today's organization.
The problem of software maintenance
Software maintenance is resources consuming and no clear quantifiable benefit for the organization.
Software maintenance requests a number of additional activities not found in initial development. Impact analysis and regression tests on the software changes are crucial issues
How to construct software that is easy to comprehend is a major issue and the technology to do this is still not available.
Any changes made to the code, then maybe substantial consequential changes, not only in the code itself but within the documentation, design and test suites.
Organization aspect of software maintenance
Software maintenance is much closer to service and is related to quality. As opposed to initial software development which is product-oriented.
IEEE standard for software maintenance
Determines firm requirements of the modification identify the software involved and require a test strategy and implementation plan to be produced.
Technical The Ripple effect problem:
Ripple effect propagation is a phenomenon by which changes made to a software component along the software lifecycle tend to be felt in other components. Ripple Effects cannot be determined statically, and dynamic analysis must be used.
A degree to which a relationship can be established between two or more products of the development process, especially products having a predecessor successor or master subordinate relationship to one another. Traceability provides semantic links for impact analysis. Some types of traceability links are very hard to determine.
Types of software maintenance
Example of corrective maintenance request
The computations that ensue when the player changes the value of quality, are supposed to keep the total invariant, but they do not. For example, if the qualities are strength= 10, patience = 0.8, and the player adjusts strength to 11, then the result is strength = 11, patience = 0, and endurance = 0, which do not sum to 11.6.
Example of Perfective Maintenance request
Modify Encounter so that the game begins with areas and connections in a coordinated style. When t player achieves level 2 status, areas and connections are displayed in an enhanced coordinated style, which is special to level 2, etc. The art department will approve the acquired image.
Software quality assurance Software quality is described as conformance to explicitly state functional and performance requirements, explicitly documented standards and implicit features that are anticipated of all professionally developer software ... Read More
A tunnel establishes a virtual pipe for data packets between a tunnel entry and a tunnel endpoint. Packets entering a tunnel are forwarded inside the tunnel leave the tunnel unchanged. Tunneling, that is, sending a packet through a tunnel, is achieved by using encapsulation ... Read More
The overall structure of the software components and how the success provides a conceptual integrated file system. In other words, architecture is the hierarchical structure of program components, how these components interact, and the structure of data that are used by the components ... Read More
Real-time and distributed system design The real-time system is a software system the correct functioning of the system depends on the results produced by the system the time at which these results are produced ... Read More
Waterfall Model The waterfall model also called classic life cycle requirements is well defined and stable. It suggests a systematic, sequential approach to software development. It begins with customer specification of requirements and processes through planning, modeling, instruction, and deployment ... Read More
Software Design A software design is an essential engineering description of some software product that is to be established. A design can be determined to the customer's requirements and can be assessed for quality against predefined patterns ... Read More