1 / 66

Software maintenance

Software maintenance. t s pradeepkumar scs, vit. overview. Introduction to Software Maintenance Why Maintenance is necessary Types of Software Maintenance Importance of categorising Software changes A Comparison between development and Maintenance Cost of Maintenance

acharlene
Télécharger la présentation

Software maintenance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software maintenance t s pradeepkumar scs, vit

  2. overview • Introduction to Software Maintenance • Why Maintenance is necessary • Types of Software Maintenance • Importance of categorising Software changes • A Comparison between development and Maintenance • Cost of Maintenance • Software Maintenance Framework • Solution to Maintenance Problem

  3. Introduction • Software Maintenance • Unpleasant • Time consuming • Expensive • Unrewarding occupation • It is carried out at the end of the development phase only when absolutely necessary. • Budgets do not allow for it (or allow too little) • Programmers are given a choice to carry out maintenance over developmental work

  4. Introduction • Software maintenance suffers from an “Image Problem” that • Number of books published in software maintenance is less • Few universities only had these courses in their curriculum • Academic community also publishes a little amount of papers in this area • Developers had a confusion that when maintenance begins, ends and how it relates to development

  5. What is software maintenance • In order to define software maintenance • We need to define exactly what is meant by software. • It is a common misconception to believe that software is programs and that maintenance activities are carried out exclusively on programs. • This is because many software maintainers are more familiar with, or rather are more exposed to programs than other components of a software system – usually it is the program code that attracts most attention

  6. Definition of a software • According to McDermid Software consists of the components • Programs • Source Code • Object Code • Documentation • Analysis/Specification • Design • Implementation • Testing • Operating procedures • Instructions to set up and use the software system • Instructions on how to react to system failures

  7. Definition of maintenance • To describe activities undertaken on software systems after delivery to capture the failure • Maintenance has traditionally meant the upkeep of an artifact in response to the gradual deterioration of parts due to extended use, which is simply corrective maintenance. • Ex: “replacing the brakes in a Car is maintenance” whereas “fitting a sun roof to a car is an improvement”

  8. Definitions of Software Maintenance • According to Martin and McClure, software maintenance must be performed in order to • Correct errors • Correct design flaws • Interface with other systems • Make enhancements • Make necessary changes to the system • Make changes in files or databases • Improve the design • Convert programs so that different hardware, software, system features, and telecommunications facilities can be used

  9. Definitions of Software Maintenance • Martin and McClure says, changes that have to be made to computer programs after they have been delivered to the customer or user." • Von Mayrhauser says, "Maintenance covers the life of a software system from the time it is installed until it is phased out.“

  10. Perspectives of Software Maintenance • ‘After- the-fact’ activity • The ‘bug-fixing’ view which considers software maintenance as an activity involving the detection and correction of errors found in programs, • The ‘need-to-adapt’ view which sees maintenance as a activity which entails changing the software when its operational environment or original requirement changes. • the ‘support’ to users view where maintenance of software is seen as providing a service to users of the system.

  11. IEEE on Software Maintenance • 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 • Maintenance is the activity associated with keeping operational computer systems continuously in tune with requirements of users & data processing operation. • Software Maintenance is any work done to a computer program after its first installation and implementation in an operational environment

  12. Software Maintenance • Software Maintenance is motivated by the following factors • To provide continuity of service • This entails fixing bugs, recovering from failures, and accommodating changes in the operating system and hardware, • To support mandatory upgrades • These are usually caused by changes in government regulations, and also by attempts to maintain a competitive edge over rival products. • To support user requests for improvements • Examples include enhancement of functionality, better performance and customization to local working patterns. • To facilitate future maintenance work • This usually involves code and database restructuring, and updating documentation.

  13. Why software maintenance?

  14. Why software maintenance? • The users operate the system and may find things wrong with it, or identify things they would like to see added to it. • Via management feedback the maintainer makes the approved corrections or improvements and the improved system is delivered to the users. • The cycle then repeats itself, thus perpetuating the loop of maintenance and extending the life of the product. • In most cases the maintenance phase ends up being the longest process of the entire life cycle, and so far outweighs the development phase in terms of time and cost.

  15. Why software maintenance? • Lehman's (1980) first two laws of software evolution help explain why the Operations and Maintenance phase can be the longest of the life-cycle processes. • His first law is the • Law of Continuing Change, which states that a system needs to change in order to be useful. • The second law is the Law of Increasing Complexity, which states that the structure of a program deteriorates as it evolves.

  16. Types of Software maintenance

  17. Types of software maintenance • Corrective Maintenance • Adaptive Maintenance • Perfective Maintenance • Preventive Maintenance • Maintenance as ongoing support

  18. Corrective Maintenance • Changes necessitated by actual errors (defects or residual "bugs") in a system are termed corrective maintenance • These defects manifest themselves when the system does not operate as it was designed or advertised to do.

  19. Corrective Maintenance • A Bug can occur from • Logical error • Logic errors result from invalid tests and conclusions, incorrect implementation of design specification, faulty logic flow or incomplete test data. • Design error • Design errors occur when for example changes made to the software are incorrect, incomplete, wrongly communicated or the change request misunderstood. • Coding Errors • Coding errors are caused by incorrect implementation of detailed logic design and incorrect use of the source code logic. • Defects are also caused by data processing errors and system performance errors. • All these errors, sometimes called “residual errors” or “bugs” prevent the software from conforming to its agreed specification.

  20. Corrective Maintenance • In the event of a system failure due to an error, actions are taken to restore operation of the software system. • The approach here is to locate the original specifications in order to determine what the system was originally designed to do. • However, due to pressure from management, maintenance personnel sometimes resort to emergency fixes known as “patching”. • The ad hoc nature of this approach often gives rise to a range of problems that include increased program complexity and unforeseen ripple effects.

  21. Corrective Maintenance • Corrective maintenance has been estimated to account for 20% of all maintenance activities.

  22. Adaptive Maintenance • Any effort that is initiated as a result of changes in the environment in which a software system must operate is termed adaptive change. • Adaptive change is a change driven by the need to accommodate modifications in the environment of the software system, without which the system would become increasingly less useful until it became obsolete.

  23. Adaptive Maintenance • The term environment in this context refers to all the conditions and influences which act from outside upon the system, for example business rules, government policies, work patterns, software and hardware operating platforms. • A change to the whole or part of this environment will warrant a corresponding modification of the software. • Unfortunately, with this type of maintenance the user does not see a direct change in the operation of the system.

  24. Adaptive Maintenance • This task is estimated to consume about 25% of the total maintenance activity.

  25. Perfective Maintenance • This is actually the most common type of maintenance encompassing enhancements both to the function and the efficiency of the code and includes all changes, insertions, deletions, modifications, extensions, and enhancements made to a system to meet the evolving and/or expanding needs of the user. • A successful piece of software tends to be subjected to a succession of changes resulting in an increase in its requirements.

  26. Perfective Maintenance • This is based on the premise that as the software becomes useful, the users tend to experiment with new cases beyond the scope for which it was initially developed. • Expansion in requirements can take the form of enhancement of existing system functionality or improvement in computational efficiency.

  27. Perfective Maintenance • As the program continues to grow with each enhancement the system evolves from an average-sized program of average maintainability to a very large program that offers great resistance to modification. • Perfective maintenance is by far the largest consumer of maintenance resources, estimates of around 50%. • The categories of maintenance above were further defined in the 1993 IEEE Standard on Software Maintenance (IEEE 1219 1993) which goes on to define a fourth category.

  28. Preventive Maintenance • The IEEE defined preventative maintenance as "maintenance performed for the purpose of preventing problems before they occur" (IEEE 1219 1993). • This is the process of changing software to improve its future maintainability or to provide a better basis for future enhancements.

  29. Preventive Maintenance • The preventative change is usually initiated from within the maintenance organisation with the intention of making programs easier to understand and hence facilitate future maintenance work. • Preventive change does not usually give rise to a substantial increase in the baseline functionality.

  30. Preventive Maintenance • Preventive maintenance is rare (only about 5%) the reason being that other pressures tend to push it to the end of the queue. • For instance, a demand may come to develop a new system that will improve the organisation’s competitiveness in the market. • This will likely be seen as more desirable than spending time and money on a project that delivers no new function.

  31. Types of Maintenance

  32. Maintenance as Ongoing Support • This category of maintenance work refers to the service provided to satisfy non-programming related work requests. • Ongoing support, although not a change in itself, is essential for successful communication of desired changes. • The objectives of ongoing support include effective communication between maintenance and end user personnel, training of end-users and providing business information to users and their organisation to aid decision making.

  33. Maintenance as Ongoing Support • Effective communication is essential as maintenance is probably the most customer-intensive part of the software life cycle, since a greater proportion of maintenance effort is spent providing enhancements requested by customers than is spent on other types of system change. • Good customer relations are important for several reasons and can lead to a reduction in the misinterpretation of users change requests, a better understanding of users' business needs and increased user involvement in the maintenance process. • Failure to achieve the required level of communication between the maintenance organisation and those affected by the software changes may eventually lead to software failure.

  34. Maintenance as Ongoing Support • Training of end users - typical services provided by the maintenance organisation include manuals, telephone support , help desk, on-site visits, informal short courses, and user groups. • Business information - users need various types of timely and accurate business information (for example, time, cost, resource estimates) to enable them take strategic business decisions. Questions such as “should we enhance the existing system or replace it completely” may need to be considered.

  35. The Importance of Categorising Software Changes

  36. The Importance of Categorising Software Changes • For example, • in the course of modifying a program due to the introduction of a new operating system (adaptive change), obscure 'bugs' may be introduced. • The bugs have to be traced and dealt with (corrective maintenance). • Similarly, the introduction of a more efficient sorting algorithm into a data processing package (perfective maintenance) may require that the existing program code be restructured (preventive maintenance).

  37. The Importance of Categorising Software Changes

  38. Software Changes • there are several reasons why a good understanding of the distinction between the them is important. • Some software changes require faster response time than others • Limitations for software changes. • Ideally changes are implemented as the need for them arises • Practically, this is always not possible for several reasons • Resource Limitations • Quality of the existing systems – ripple effects in old systems • Organisational Strategy – on par with the Rivals • Inertia - The resistance to change by users may prevent modification to a software product

  39. Software Changes • Software is often subject to incremental release where changes made to a software product are not always done all together. • The changes take place incrementally, with minor changes usually implemented while a system is in operation. • Major enhancements are usually planned and incorporated, together with other minor changes, in a new release or upgrade.

  40. Software changes • By studying the types of maintenance activities above it is clear that regardless of which tools and development model is used, maintenance is needed. • The categories clearly indicate that maintenance is more than fixing bugs.

  41. A Comparison between Development and Maintenance

  42. A Comparison between Development and Maintenance • Although maintenance could be regarded as a continuation of development, there is a fundamental difference between the two activities. • The constraints that the existing system imposes on maintenance gives rise to this difference.

  43. A Comparison between Development and Maintenance • For example, in the course of designing an enhancement, the designer needs to investigate the current system to abstract the architectural and the low-level designs. This information is then used to • ascertain how the change can be accommodated • predict the potential ripple effect of the change • determine the skills and knowledge required to do the job

  44. A Comparison between Development and Maintenance • To explain the difference between new development and software maintenance further, Jones (1986) provides an interesting analogy: • “The task of adding functional requirements to existing systems can be likened to the architectural work of adding a new room to an existing building. The design will be severely constrained by the existing structure, and both the architect and the builders must take care not to weaken the existing structure when additions are made. Although the costs of the new room usually will he lower than the costs of constructing an entirely new building, the costs per square foot may be much higher because of the need to remove existing walls, reroute plumbing and electrical circuits and take special care to avoid disrupting the current site”,

  45. The Cost of Maintenance

  46. Maintenance Costs as a Percentage of Total Software Life-cycle Costs

  47. Cost of maintenance • The Percentage of Software life-cycle costs devoted to maintenance.

  48. Software engineering framework

  49. A Software Maintenance Framework • A Software Maintenance Framework will be used to discuss some of the factors that contribute to the maintenance challenge. • The elements of this framework are the user requirements, organisational and operational environments, maintenance process, maintenance personnel, and the software product.

  50. Software maintenance framework

More Related