TCS2411 Software Engineering1 Software Maintenance “Taking care of the software”
TCS2411 Software Engineering2 Lecture Objectives zTo understand the activities in software maintenance zTo identify the factors that affect the effectiveness of maintenance activities zTo describe the different types of maintenance activities
TCS2411 Software Engineering3 A Few Questions z“Have you tried to modify someone else’s program?” z“Would you like someone else to modify your program?” z“How easy is it to update your program?” z“Have you looked at a program that you have completed a few months ago and tried to make changes to it?”
TCS2411 Software Engineering4 Software Maintenance zProcess of changing a system after it has been delivered and is in use zLast phase in software engineering process zEvolution of software - changing it to maintain its ability to survive zGoal of software engineering - to ease the maintenance process & reduce costs
TCS2411 Software Engineering5 Maintenance Activities zCorrective Maintenance - diagnosis and correction of reported errors zAdaptive Maintenance - modifications to properly interface with changing environments new hardware, OS, devices zPerfective Maintenance - implementing new system requirements after system is successful
TCS2411 Software Engineering6 Maintenance Effort Distribution
TCS2411 Software Engineering7 Maintainability zThe ease with which software can be understood, corrected, adapted and/or enhanced zKey goal that guides the SE process zImportant quality to be considered in all activities including design, coding and testing
TCS2411 Software Engineering8 Classic Maintenance Problems zDifficult or impossible to trace evolution of software through many versions/releases zDifficult or impossible to trace the process through which software was created zDifficult to understand “someone else’s” program z“Someone else” is often not around to explain
TCS2411 Software Engineering9 Classic Maintenance Problems (Continued) zDocumentation doesn’t exist or is awful zMost software is not designed for change zMaintenance has not been viewed as glamorous work
TCS2411 Software Engineering10 Maintenance Cost Factors zNon-technical factors yApplication domain yStaff stability yProgram age yExternal environment yHardware stability zTechnical factors yModule independence yProgramming language yProgramming style yProgram Validation yDocumentation yConfiguration Management
TCS2411 Software Engineering11 Structured vs Unstructured Maintenance Configuration? Evaluate design Plan approach Modify design Recode Evaluate design Evaluate code Maintenance request ? Review Test and release Software Code
TCS2411 Software Engineering12 Structured Maintenance zSoftware configuration exists zTasks include evaluation of design documentation, assessment of change impact, modify design, review, & coding zRegression tests conducted before release zCan be done due to earlier SE approach zAmount of wasted effort reduced, overall quality of change/correction is enhanced
TCS2411 Software Engineering13 Unstructured Maintenance zOnly source code available zTasks include evaluation of code, make changes, review zImpact of changes difficult to assess zRegression testing cannot be done because no records of previous testing zDifficulties due to development without well-defined methodology
TCS2411 Software Engineering14 Preventive Maintenance zSoftware is changed to improve future maintainability or reliability zMore common term in maintenance of hardware and other physical systems zCharacterised by yreverse engineering yre-engineering
TCS2411 Software Engineering15 Software Reverse Engineering zOriginally a process in hardware - disassemble a hardware product to understand the design and specifications zIn software, it’s the process of analysing a program to create a representation at a higher level of abstraction zUsually from the source code or executable code, create the design and specifications of a software
TCS2411 Software Engineering16 Reverse Engineering Process System to be re-engineered System information store Traceability materials Data structured diagrams Program structured diagrams Automated analysis Manual annotation Document generation
TCS2411 Software Engineering17 Software Re- engineering zTakes information of an existing system and restructures the system to achieve higher quality zUsually takes the result of reverse engineering as starting point zMakes the system more maintainable - improve the structure, create new documentation, and easier to understand
TCS2411 Software Engineering18 Re-engineering Activities zSource code translation yLanguage upgrade, new platform, new language zProgram restructuring yStructure corrupted in maintenance, improve logic, program modularisation zData re-engineering yClean up data problems and inconsistencies, database migration
TCS2411 Software Engineering19 References z“Software Engineering: A Practitioner’s Approach” 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 z“Software Engineering” by Ian Sommerville, Addison-Wesley, 2001