Maintenance When the system is complete and deployed the system is operational. The work done on the operational system is called maintenance.

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

Test process essentials Riitta Viitamäki,
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Project What is a project A temporary endeavor undertaken to create a unique product, service or result.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Improving Process for Better Software. Who We Are An experiential learning program that provides technology solutions for our partners, and real- world.
1 / 24 CS 425/625 Software Engineering Software Evolution Based on Chapter 21 of the textbook [SE-8] Ian Sommerville, Software Engineering, 8 th Ed., Addison-Wesley,
Software Configuration Management
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Evolution Managing the processes of software system change
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
COMP8130 and 4130Adrian Marshall 8130 and 4130 Test Execution and Reporting Adrian Marshall.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Lecturer: Dr. AJ Bieszczad Chapter Lehman’s system types S-system: formally defined, derivable from a specification P-system: requirements based.
Software Development Problems Range of Intervention Theory Prevention, Treatment and Maintenance Planning, Development and Use Cost of Intervention.
Software Engineering CSE470: Requirements Analysis 1 Requirements Analysis Defining the WHAT.
Object-Oriented Analysis and Design Lecture 11 Maintenance (from Schach, “O-O and Classical Software Engineering”)
Software evolution.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 9 – Software Evolution and Maintenance
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
S/W Project Management
Extreme Programming Software Development Written by Sanjay Kumar.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Software Engineering Lecture 20 Software Maintenance.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Systems Development Life Cycle Phases and Activities in the SDLC Variations of the SDLC models.
Software Maintenance.
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
CH11: Maintaining the System maintenance process can be difficult * The Changing System * The Nature of Maintenance * Maintenance Problems * Measuring.
Identify steps for understanding and solving the
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Chapter 2: Software Maintenance Omar Meqdadi SE 3860 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Software Engineering Lecture 8: Quality Assurance.
Welcome to Software Project Management. CONVENTIONAL SOFTWARE MANAGEMENT The BEST and WORST thing about software is its flexibility. 1.Software development.
CS223: Software Engineering Lecture 32: Software Maintenance.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
Software Maintenance1 Software Maintenance.
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Tutorial 4 IT323.  Q1. As a software project manager in a company that specializes in the development of software for the offshore oil industry, you.
Advanced Software Engineering Dr. Cheng
Configuration Management
Software Configuration Management
8.4 Management of Postdelivery Maintenance
Environment Assessment
Chapter 18 Maintaining Information Systems
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance PPT By :Dr. R. Mall.
CS 425/625 Software Engineering Software Evolution
Chapter 9 – Software Evolution and Maintenance
Baisc Of Software Testing
Chapter 8 Software Evolution.
Presentation transcript:

Maintenance When the system is complete and deployed the system is operational. The work done on the operational system is called maintenance.

Types of Maintained Systems Real World Problem Requirements System Information Real World Problem Requirements System Information Problem Abstraction Requirements System Information Abstraction S-system: well- defined problem has an exact solution P-system: well- defined problem, approx. solution E-system: ill- defined / changing problem

Changes During the Life Cycle S-System: minimal changes, solution is fixed and stable. But it could be possible that we have solved the wrong problem. P-System: solution evolves as we identify changes, discrepancies and omissions. E-System: our understanding and / or nature of the problem changes, and so is the solution.

Planning a Maintainable System Is it possible to build the right system the first time? If not then identify system type and design it with the maintenance in mind (99% of all the cases). Alternatively one can plan on delivering a series of software systems in stages deploying new systems and retiring legacy ones. But this still does not eliminate maintenance on deployed systems! Development effort - 20%, maintenance 80%.

System Retiring Considerations Questions: Is the cost of software maintenance to high? Is the cost of hardware maintenance to high? Is the reliability too low? Is the change time too long (i.e. low maintainability )? Is the performance unacceptable? Why? We did not design the system with maintenance and expansion in mind. Refactoring degraded system quality. Original developers / analysts left and did not leave adequate documentation! Solution: Design a new system if the development & projected maintenance costs are lower than that for the current system in the long run.

Laws of Software Evolution 1.Software changes never stop. 2.Software complexity increases. 3.Work never stops and progresses at constant rate (do not fire your developers!) 4.The knowledge of the system stays at overall constant level (keep your experts!).

Types of Maintenance Corrective: bug fixes & regression testing. Adaptive: changes in one part of the system require changes in related components. Perfective: system performance, precision or other qualities are improved. Preventive: the failure has not yet occurred, but you are aware of conditions that may cause it.

Maintenance Activities 1.Alanizins & understanding the System! (always) 2.Locating info in system docs (always). 3.Keeping system docs up to date (always). 4.Extending system functions to accommodate new or changing requirements (occasionally). 5.Analyzing the impact of the changes (always). 6.Adding new functions (occasionally). 7.Finding the source of system failures or problems. 8.Correcting the faults (frequently). 9.Regression testing (always). 10.Refactoring code and design (sometimes). 11.Rewriting code and components (rarely). 12.Deleting unneeded functions (very rarely). 13.Keeping track of bugs, changes and maintenance.

Maintenance Problems Lack of Understanding -Complex System -Poorly written, unclear, non- standard, non-commented code -Poor / incomplete / incorrect / missing documentation -Design decisions not documented -Original developers & analysts left

Maintenance Problems, Cont’d Improper Management -Poor change tracking -Poor source / version control -Incomplete impact analysis -Poor / missing regression testing -Insufficient staffing -No QA environment / process

Maintenance Problems, Cont’d Improper Design -System not designed with maintenance in mind -System expandability is poor -Interdependencies galore -Complexity galore -Patchwork code, design -Major design or requirements errors (e.g. Y2K, 16-bit)

Object Oriented System Notes + Maintenance on a class is not likely to affect other classes directly, but… -Maintenance on a base class could have profound impact that is nearly impossible to track. -Inheritance makes dependencies difficult to trace. -Dynamic binding makes impact assessment extremely difficult. -Interface changes require much adaptive maintenance.

Application Type Impact -Real-time / critical software can be replaced only when it has been readied and tested in an equivalent environment from which a switch- over can occur -Enterprise software requires a series of regression testing of all corroborating components and a copy of production environment -High profile / cost software requires beta testing of major releases

Other Maintenance Issues System novelty (technologically or process-wise) severely downweights prior experience. Personnel turnover decreases maintainability. Long lifespan systems require more maintenance (proportionally to service time). Environment changes for E-systems and problem changes for P-systems are uncontrollable. Hardware maintenance & upgrades trigger software maintenance & upgrades. Component interdependency & poor design cause side-effects that even when caught by regression testing could be hard to fix. Documentation needs to updated and maintained!

Maintenance Time + Fault report & administrative delay + Fault analysis + Test case analysis + Fault reproduction + Code analysis + Code correction + Unit testing + Regression testing + Source & version control + Fault & fix documentation (for support) + System documentation update (for changes)

Attributes Affecting Maintainability Cyclomatic number: metric capturing the complexity of the code that corresponds to the number of independent paths through the code. The lower the better! Readibility / Fog Index: F = 0.4*words/sentences + % of words with 3+ syllables

Cyclomatic Number Example C = 3

Bug Fix / Change Process 1)Tech support receives a fault report and documents the fault scenario. 2)Tech support attempt to reproduce the fault in lab conditions. 3)Manager assigns analyst / developer to work out a solution. 4)Analysts reports the solution and its impact back to manager. 5)Depending on the impact & cost manager makes a decision either to fix or come up with a work-around. 6)For a fix manager makes a decision to issue a patch (critical) or implement the fix in the next release (non-critical), assigns developer to the task. 7)Developer checks out the code for the software version to which the patch applies or implements the fix in the new release project. 8)Developer conducts unit testing, passes the code to the test team. 9)Testers conduct system and regression testing, notify the developer of the uncovered issues. 10)Upon successful test developer communicates changes to tech writers. 11)Tech writers update the documentation. 12)Tech support updates the bug knowledge base documenting the solution. 13)Manager closes the bug report.

Impact Analysis Evaluation of many risks associated with the change, including estimates of effects on dependent components, resources, effort, and schedule. Vertical traceability expresses the relationships among the workproducts (e.g. process steps). Horizontal traceability expresses the relationships among the components within the work products (i.e. workproduct interdependency).

Software Rejuvenation -Rewriting to improve maintainability, readibility, performance -Rewriting using newer technologies -Rewriting to provide better interface -Redesigning / reengineering to improve maintainability, expandability, performance -Reverse engineering to obtain knowledge -Redocument the system via conducting static & dynamic analysis of the code and system operation

Final Advice 1)If it ain’t broke ain’t fix it! 2)Simplicity is the key. 3)Design with expandability in mind (i.e. know the limitations!) 4)Every change requires testing. 5)Delegate decision making to management but provide information needed to make a decision. 6)Do not rewrite for the sake of technology. 7)Document everything, especially the changes!

Read Chapter 11 from the white book.