1 / 19

Software Maintenance

Software Maintenance . “Taking care of the software”. Lecture Objectives. To understand the activities in software maintenance To identify the factors that affect the effectiveness of maintenance activities To describe the different types of maintenance activities. A Few Questions.

eulalie
Download Presentation

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 “Taking care of the software” TCS2411 Software Engineering

  2. Lecture Objectives • To understand the activities in software maintenance • To identify the factors that affect the effectiveness of maintenance activities • To describe the different types of maintenance activities TCS2411 Software Engineering

  3. A Few Questions • “Have you tried to modify someone else’s program?” • “Would you like someone else to modify your program?” • “How easy is it to update your program?” • “Have you looked at a program that you have completed a few months ago and tried to make changes to it?” TCS2411 Software Engineering

  4. Software Maintenance • Process of changing a system after it has been delivered and is in use • Last phase in software engineering process • Evolution of software - changing it to maintain its ability to survive • Goal of software engineering - to ease the maintenance process & reduce costs TCS2411 Software Engineering

  5. Maintenance Activities • Corrective Maintenance - diagnosis and correction of reported errors • Adaptive Maintenance - modifications to properly interface with changing environments new hardware, OS, devices • Perfective Maintenance - implementing new system requirements after system is successful TCS2411 Software Engineering

  6. Maintenance Effort Distribution TCS2411 Software Engineering

  7. The ease with which software can be understood, corrected, adapted and/or enhanced Key goal that guides the SE process Important quality to be considered in all activities including design, coding and testing Maintainability TCS2411 Software Engineering

  8. Difficult or impossible to trace evolution of software through many versions/releases Difficult or impossible to trace the process through which software was created Difficult to understand “someone else’s” program “Someone else” is often not around to explain Classic Maintenance Problems TCS2411 Software Engineering

  9. Documentation doesn’t exist or is awful Most software is not designed for change Maintenance has not been viewed as glamorous work Classic Maintenance Problems (Continued) TCS2411 Software Engineering

  10. Non-technical factors Application domain Staff stability Program age External environment Hardware stability Technical factors Module independence Programming language Programming style Program Validation Documentation Configuration Management Maintenance Cost Factors TCS2411 Software Engineering

  11. Structured vs Unstructured Maintenance Maintenance request Configuration? Code Software Evaluate design Evaluate code Plan approach ? Modify design Evaluate design Recode Review Review Test and release TCS2411 Software Engineering

  12. Structured Maintenance • Software configuration exists • Tasks include evaluation of design documentation, assessment of change impact, modify design, review, & coding • Regression tests conducted before release • Can be done due to earlier SE approach • Amount of wasted effort reduced, overall quality of change/correction is enhanced TCS2411 Software Engineering

  13. Unstructured Maintenance • Only source code available • Tasks include evaluation of code, make changes, review • Impact of changes difficult to assess • Regression testing cannot be done because no records of previous testing • Difficulties due to development without well-defined methodology TCS2411 Software Engineering

  14. Preventive Maintenance • Software is changed to improve future maintainability or reliability • More common term in maintenance of hardware and other physical systems • Characterised by • reverse engineering • re-engineering TCS2411 Software Engineering

  15. Software Reverse Engineering • Originally a process in hardware - disassemble a hardware product to understand the design and specifications • In software, it’s the process of analysing a program to create a representation at a higher level of abstraction • Usually from the source code or executable code, create the design and specifications of a software TCS2411 Software Engineering

  16. Reverse Engineering Process System information store Program structured diagrams Automated analysis System to be re-engineered Document generation Data structured diagrams Manual annotation Traceability materials TCS2411 Software Engineering

  17. Software Re-engineering • Takes information of an existing system and restructures the system to achieve higher quality • Usually takes the result of reverse engineering as starting point • Makes the system more maintainable - improve the structure, create new documentation, and easier to understand TCS2411 Software Engineering

  18. Re-engineering Activities • Source code translation • Language upgrade, new platform, new language • Program restructuring • Structure corrupted in maintenance, improve logic, program modularisation • Data re-engineering • Clean up data problems and inconsistencies, database migration TCS2411 Software Engineering

  19. References • “Software Engineering: A Practitioner’s Approach” 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 • “Software Engineering” by Ian Sommerville, Addison-Wesley, 2001 TCS2411 Software Engineering

More Related