Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Software Maintenance Analysis Design Testing Coding Operation and Maintenance Installation Require- ments Requirements Specification Planning PVK-HT03 bella@cs.umu.se
Software Maintenance Process The most expensive part of the software lifecycle! Require- ments Change Request Impact Analysis Release Planning Change Design Implementation Test Release Change PVK-HT03 bella@cs.umu.se
Ian Sommerville 1995 Software Engineering, 5th edition.
Impact Analysis An Impact Analysis identifies all systems/system products affected by a change request developing an estimate of the resources needed to accomplish the change Steps: Evaluate Change Requests Estimate Resources PVK-HT03 bella@cs.umu.se
Types of Maintenance Corrective Adaptive Perfective Preventive PVK-HT03 bella@cs.umu.se
Corrective Maintenance Focuses on fixing defects Is a reactive process I.E. Defects generally need to be corrected either immediately or in the near future Defects Refer to the system not performing as originally intended or as specified in the requirements PVK-HT03 bella@cs.umu.se
Adaptive Maintenance Includes all work related to how the software functions I.E. Relates to enhancing software functionality Includes all changes to meet the evolving needs of the user and the environment I.E. System changes, additions, insertions, deletions, modifications, extensions and enhancements PVK-HT03 bella@cs.umu.se
Perfective Maintenance Includes all efforts to improve the quality of the software Includes restructuring code, creating and updating documentation, improving reliability or efficiency PVK-HT03 bella@cs.umu.se
Preventive Maintenance Preventing system performance from degrading to unacceptable levels “Occurs when software is changed to improve future supportability or reliability, or to provide the basis for future enhancements.” Maintenance work in the above categories is often performed concurrently Pressman, 1992 PVK-HT03 bella@cs.umu.se
Use of Maintenance Time *See [Schach 97]. **See [Somm 96]. ***See [Pfleeger 98]. PVK-HT03 bella@cs.umu.se
Maintenance Metrics Control complexity Data complexity Length of identifier names Program comments Coupling Cohesion Degree of user interaction PVK-HT03 bella@cs.umu.se
Software Maintenance Summary There are 4 categories of maintenance corrective, adaptive, perfective, preventative There is a defined maintenance process, which ensures the delivery of quality software A procedure with 7 steps. PVK-HT03 bella@cs.umu.se
Configuration Management New versions of software systems are created as they change For different machines/OS Offering different functionality Tailored for particular user requirements Configuration management is concerned with managing evolving software systems System change is a team activity CM aims to control the costs and effort involved in making changes to a system PVK-HT03 bella@cs.umu.se
Version and release management Invent identification scheme for system versions Plan when new system version is to be produced Ensure that version management procedures and tools are properly applied Plan and distribute new system releases PVK-HT03 bella@cs.umu.se
Storing Versions Naive: Separate files for each version Version handling by numbering schemes Double Maintenance Problem Solution: One original version plus deltas Forward deltas Backward deltas Forward and backward deltas Shared Data Problem Simultaneous Update Problem Solution: Check-in/check-out mechanism Still a problem: Merging versions PVK-HT03 bella@cs.umu.se
Tools for Version and Configuration Control General: History- and log-files Hierarchical file systems ... Version Control: Modification tracking Control of development branches Efficient storage and retrieval Access control Merging versions SCCS, RCS, CVS, ... File comparators Patch generators Configuration control: Dependency management and control System creation Integration with version control ... Make, makefile generators, ... PVK-HT03 bella@cs.umu.se
Software Rejuvenation Redocumentation: static analysis adds more information Restructuring: transform to improve code structure Reverse engineering: recreate design and specification information from the code Reengineering: reverse engineer and then make changes to specification and design to complete the logical model; then generate new system from revised specification and design PVK-HT03 bella@cs.umu.se