Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Software Maintenance PVK-HT05
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-HT05
Ian Sommerville 1995 Software Engineering, 5th edition.
Types of Maintenance Corrective: Focuses on fixing defects Adaptive: Includes all changes to meet the evolving needs of the user and the environment Perfective: perfecting existing functions Preventive: Preventing system performance from degrading to unacceptable levels PVK-HT05
Use of Maintenance Time *See [Schach 97]. **See [Somm 96]. ***See [Pfleeger 98]. PVK-HT05
Maintenance Metrics Control complexity Data complexity Length of identifier names Program comments Coupling Cohesion Degree of user interaction PVK-HT05
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-HT05
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-HT05
Storing Versions Naive: Separate files for each version Version handling by numbering schemes Double Maintenance Problem Solution: One original version plus deltas Shared Data Problem Simultaneous Update Problem Solution: Check-in/check-out mechanism Still a problem: Merging versions PVK-HT05
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-HT05
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-HT05