PVK-HT062 Software change Software change is inevitable oNew requirements emerge when the software is used; oThe business environment changes; oErrors must be repaired; oNew computers and equipment is added to the system; oThe performance or reliability of the system may have to be improved. A key problem for organisations is implementing and managing change to their existing software systems.
PVK-HT063 Modifying a program after it has been put into use. Maintenance does not normally involve major changes to the system’s architecture. Changes are implemented by modifying existing components and adding new components to the system. Software maintenance
PVK-HT064 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-HT065 Ian Sommerville 1995 Software Engineering, 5th edition.
PVK-HT066 Maintenance to repair software faults oChanging a system to correct deficiencies in the way meets its requirements. Maintenance to adapt software to a different operating environment oChanging a system so that it operates in a different environment (computer, OS, etc.) from its initial implementation. Maintenance to add to or modify the system’s functionality oModifying the system to satisfy new requirements. Types of maintenance
PVK-HT068 Control complexity Data complexity Length of identifier names Program comments Coupling Cohesion Degree of user interaction Maintenance Metrics
PVK-HT069 New versions of software systems are created as they change oFor different machines/OS oOffering different functionality oTailored for particular user requirements Configuration management is concerned with managing evolving software systems oSystem change is a team activity oCM aims to control the costs and effort involved in making changes to a system Configuration Management
PVK-HT0610 Version An instance of a system which is functionally distinct in some way from other system instances. Release An instance of a system which is distributed to users outside of the development team. Versions /releases
PVK-HT0611 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 Storing Versions
PVK-HT0612 Tools for Version and Configuration Control General: oHistory- and log-files oHierarchical file systems o... Version Control: oModification tracking oControl of development branches oEfficient storage and retrieval oAccess control oMerging versions o... SCCS, RCS, CVS,... oFile comparators oPatch generators Configuration control: oDependency management and control oSystem creation oIntegration with version control o... Make, makefile generators,...
PVK-HT0613 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