Today’s AgendaQuick ReviewAdvanced Testing TechniquesSoftware MaintenanceSlide 5Software vs ProgramsMaintenance vs DevelopmentWhy Maintenance?A Maintenance FrameworkLehman’s LawsSoftware ChangeInterplay of changesExpenditure on Different ChangesMajor ActivitiesSlide 15Development ModelsQuick-Fix ModelBoehm’s ModelOsborne’s ModelIterative Enhancement ModelMaintenance Effort (1)Maintenance Effort (2)Slide 23What to understandComprehension Process (1)Comprehension Process (2)Comprehension StrategiesFactors affecting understandingReverse EngineeringWhy RE?Levels of RESlide 32Why CM?Major activitiesThe Big PictureVersion Control (1)Version Control (2)BuildingChange ControlChange Request FormDocumentationProducing Quality DocumentationSlide 43ResponsibilitiesMotivating the TeamEducation and TrainingModule OwnershipChange OwnershipSlide 49ConclusionToday’s AgendaHW #6Software MaintenanceSoftware Testing and Maintenance 1Quick ReviewWhat is the fundamental difference between software development and maintenance?Software Testing and Maintenance 2Advanced Testing TechniquesAutomatic test data generationSymbolic/concolic execution, constraint solvingTesting of interactive systems, e.g. GUI, web applicationsHow to generate test sequences?Object-oriented testingHow to take into account OO features like inheritance and polymorphism?Concurrency/real-time testingHow to control non-deterministic behavior? How to verify synchronization/timing requirements?Software Testing and Maintenance 3Software Testing and Maintenance 4Software Maintenance Introduction Process Models Program Understanding Configuration Management Management Issues ConclusionSoftware Testing and Maintenance 5Software Maintenance Management and control of changes to a software product after deliveryBug fix, new features, environment adaptation, performance improvement Often accounts for 40-70% of the cost of the entire life-cycle of a software productThe more successful a software product is, the more time it spends on maintenanceSoftware Testing and Maintenance 6Software vs ProgramsSoftware Components ExamplesProgram 1. Source code 2. Object code 1. Analysis/Specification (a) Formal specification (b) Data flow diagrams 2. Design (a) High-level design (b) Low-level design (b) Data modelDocumentation 3. Implementation (a) Source code (b) Comments 4. Testing (a) Test design (b) Test resultsOperating Procedures 1. Installation manual 2. User manualSoftware Testing and Maintenance 7Maintenance vs Development Maintenance must work within the parameters and constraints of an existing systemThe addition of a new room to an existing building can be more costly than adding the room in the first place An existing system must be understood prior to a change to the systemHow to accommodate the change?What is the potential ripple effect?What skills and knowledge are required?Software Testing and Maintenance 8Why Maintenance? To provide continuity of serviceBug fixing, recover from failure, accommodating changes in the environment To support mandatory upgradesGovernment regulations, maintaining competitive edges To support user requests for improvementsNew features, performance improvements, customization for new users To facilitate future maintenance workRe-factoring, document updatingSoftware Testing and Maintenance 9A Maintenance Framework User RequirementsError correction, new features EnvironmentOperational: Innovations in hardware and softwareOrganizational: Policy changes, competition Maintenance ProcessDifferent maintenance process models SoftwareMaintainability, complexity, quality of documentation Maintenance PersonnelStaff turnover, domain expertiseSoftware Testing and Maintenance 10Lehman’s Laws Law of continuing change: systems must be continually adapted Law of increasing complexity: as a system evolves, its complexity increases unless work is done to maintain or reduce it Law of continuing growth: functionality must be increased continually to maintain user satisfaction Law of declining quality: system quality will appear to decline unless rigorously adaptedSoftware Testing and Maintenance 11Software Change Corrective change: triggered by defects in the softwareResidual errors in design and/or coding Adaptive change: driven by the need to accommodate modifications in the environmentInnovations in hardware/software, changes in business rules Perfective change: undertaken to expand the existing requirementsEnhancement of functionality, improvement in computational efficiency Preventive change: undertaken to prevent malfunctions or to improve maintainabilityCode restructuring, optimization and documentation updatingSoftware Testing and Maintenance 12Interplay of changesAdaptive changePerfective changeCorrective changePreventive changeLeads toSoftware Testing and Maintenance 13Expenditure on Different ChangesCorrectiveAdaptive Perfective Others102030405060Percentageof MaintenanceeffortChange30 : 70Devel : maintenanceSoftware Testing and Maintenance 14Major Activities Change identificationWhat to change, why to change Program understandingHow to make the change, what is the ripple effect Carrying out the change and testingHow to actually implement the change and ensure its correctness Configuration managementHow to manage and control the changes Management issuesHow to build a teamSoftware Testing and Maintenance 15Software Maintenance Introduction Process Models Program Understanding Configuration Management Management Issues ConclusionSoftware Testing and Maintenance 16Development Models Code-and-FixAd-hoc, not well-defined WaterfallSequential, does not capture the evolutionary nature of software SpiralHeavily relies on risk assessment IterativeIncremental, but constant changes may erode system architectureSoftware Testing and Maintenance 17Quick-Fix ModelProblem FoundFix itSoftware Testing and Maintenance 18Boehm’s ModelManagement decisionSoftware in useChangeImplementedEvaluationApproved changesNew versionResultsProposed
View Full Document