250 likes | 919 Views
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.
E N D
Software Maintenance “Taking care of the software” TCS2411 Software Engineering
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
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
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
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
Maintenance Effort Distribution TCS2411 Software Engineering
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
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
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
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
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
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
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
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
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
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
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
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
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