Lecture 12 Maintenance CSCI – 3350 Software Engineering II Fall 2014 Bill Pine.

Slides:



Advertisements
Similar presentations
2003 Mateusz Żochowski, Marcin Borzymek Software Life Cycle Analysis.
Advertisements

Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
Software Configuration Management
Agile Software Development. Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Engineering.
The Waterfall Model A Case Study
Object-Oriented Analysis and Design Lecture 11 Maintenance (from Schach, “O-O and Classical Software Engineering”)
Maintenance = Software Evolution Any changes after the client has accepted the product is considered maintenance. n Any Changes? n What might these be?
Software Quality Assurance
Maintenance When the system is complete and deployed the system is operational. The work done on the operational system is called maintenance.
Chapter 9 – Software Evolution and Maintenance
Lecture # 22 Software Evolution
CSC 395 – Software Engineering Lecture 34: Post-delivery Maintenance -or- What’s Worse than Being a Code Monkey?
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
Agile Software Development Chapter 3 – Lecture 1 Adrián Susinos.
SE-280 Dr. Mark L. Hornick 1 Process Adaptations.
Project Management : Techniques and Tools (60-499) Fall 2014 / Winter 2015.
Software Engineering Lecture 20 Software Maintenance.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Teaching material for a course in Software Project Management & Software Engineering – part II.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
INFO 636 Software Engineering Process I Prof. Glenn Booker Week 9 – Quality Management 1INFO636 Week 9.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
SOFTWARE ENGINEERING MCS-2 LECTURE # 4. PROTOTYPING PROCESS MODEL  A prototype is an early sample, model or release of a product built to test a concept.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
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.
Software Engineering for Capstone Courses Richard Anderson CSE 481b Winter 2007.
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
CS451 Software Maintenance Yugi Lee STB #555 (816) Note: This lecture was designed based on Stephen Schach’s.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Software Engineering Lecture 8: Quality Assurance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
Software Maintenance1 Software Maintenance.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Advanced Software Engineering Dr. Cheng
Software Configuration Management
Overview Software Maintenance and Evolution Definitions
Maintenance Issues in Software Engineering
8.4 Management of Postdelivery Maintenance
Chapter 18 Maintaining Information Systems
Software Engineering (CSI 321)
Teaching slides Chapter 1.
Software Testing and Maintenance Maintenance and Evolution Overview
Chapter 9 – Software Evolution and Maintenance
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Test Cases, Test Suites and Test Case management systems
Presentation transcript:

Lecture 12 Maintenance CSCI – 3350 Software Engineering II Fall 2014 Bill Pine

CSCI 3350Lecture Overview Why worry about maintenance? Issues for maintenance programmers Maintenance skills vs. development skills Reverse engineering Testing issues during maintenance Summary

CSCI 3350Lecture Why Worry about Maintenance? What is maintenance? – Any change to a product that has passed acceptance testing Why worry? –Maintenance is the largest percentage of total system cost - 2X to 3X development cost –Cost to find and fix a fault in maintenance is by far the greatest of all workflows Main challenge for maintenance team –How to maintain, without destroying the product

Horror Story City of Toronto lost nearly $700,000 in pet fees when nearly one-half of pet owners were not billed –Early 2000, layoffs in the city’s computer support staff resulted in the dismissal of the only maintenance programmers experienced in the application –A major crash left the city with no one who could quickly restore operations CSCI 3350Lecture

CSCI 3350Lecture Four Categories of Maintenance Corrective –Find and fix any remaining faults Perfective –Business environment is constantly changing Additional functionality Adaptive New platform - e.g. Move to new version of OS; Non business change - tax code, ZIP + 4

Categories of Maintenance (cont) Preventative –Activities designed to increase the maintainability of the system – refactoring, updating documentation (external and internal) The first three categories increase the complexity of the product; the fourth attempts to reduce complexity CSCI 3350Lecture

CSCI 3350Lecture Constraints on Maintenance Despite –Fraction of total product cost, resulting in maintenance being a major revenue source –The difficulty of maintenance Incorporates all the other workflows Historically (still true today) maintenance is –The home of “newbie” –Elephant burial ground Less competent programmers

Recall Error, Failure Fault Error - A discrepancy between an actual value and a expected value Failure - Inability for the system to perform according to specifications Fault - A condition that causes the system to fail If an error is observed, then a failure must have occurred If a failure has occurred, then there must be a fault in the system CSCI 3350Lecture

CSCI 3350Lecture A Typical Maintenance Scenario Maintenance programmer (MP) is given a defect report –Defect = “Sumthin ain’t right” How does the MP proceed? –MP needs to reproduce the error –Determine wherein the problem lies Documentation - requirements, design, user manual, reference manual, … Code Maybe no problem at all

CSCI 3350Lecture Scenario (cont) What “resources” does the MP have? –The defect report Often incomplete or inaccurate –Test suite Probably no existing tests to pinpoint the problem –Will have to write some tests to reproduce the defect –Documentation Out of date, incomplete, inaccurate –The source code Structurally “mutilated”

CSCI 3350Lecture Scenario (cont) To find the fault –The MP must be a superb diagnostician Fault could be anywhere –Requirements -> implementation –How likely, given the talent pool?

CSCI 3350Lecture Scenario (cont) Eventually our MP finds the fault A huge problem remains –How to fix the fault, without breaking something else If the documentation were “good” –Consult it prior to generating a “fix” But it won’t be –The MP has only the source code upon which to rely

CSCI 3350Lecture Scenario (cont) So, with great trepidation, our MP –Reads and tries to understand the code –Makes some changes to the source code Tests with the tests that he used to reproduce the error –Hopefully, the defect is gone Reruns the entire regression test suite –You know that there will be problems

CSCI 3350Lecture Scenario (cont) Add the additional tests to the test suite Documents all changes –Changes to the requirements documents –Changes to the design documents –Adds comments to the source code Before moving on to the next, and always more critical defect report –Yeah, right - I have some prime ocean-side property in Kansas for you

CSCI 3350Lecture Scenario (cont) To achieve this, our MP must –Be a Dr. House class diagnostician –Be a coder extraordinaire –Have excellent testing skills –Have great documentation skills Dare I mention the talent pool again? What lifecycle model does this process most closely resemble?

Summary of Process The MP must devise a test to induce the failure in the system, which reproduces the fault Uncover the fault which lead to the failure Repair the fault Rerun complete regression test suite CSCI 3350Lecture

CSCI 3350Lecture Change Orders Similar process must occur when the maintenance programmer gets a change order for –Adaptive maintenance –Perfective maintenance When the product was developed, specialists produced –Specification –Design –Implementation

CSCI 3350Lecture Change Orders (cont) However, our MP –Must do all of the above Plus –Testing SQA representative may (should) be involved –Documentation Is maintenance a good place for the “newbies” and the less competent?

CSCI 3350Lecture Where Have All the Flowers Gone? The MP’s life is not a joyous one –MP deals with unhappy users –Problems (initially) traceable to developers not MP –The code may be poorly written (or have been degraded) –High stress Poor maintenance -> no repeat business –Most developers hate maintenance

CSCI 3350Lecture Flowers (cont) In brief, –Maintenance is the hardest and least rewarding aspect of software engineering

CSCI 3350Lecture Product Quality The more changes there are –The more the product deviates from its original design –The more difficult further changes become –Documentation becomes even less reliable –A major rework of some portion may be needed –Regression testing files may not be current But should strive to keep code maintainability high for the future

CSCI 3350Lecture The Odious Customer The customer / user will generate lots of –Defect reports –Change requests Change is more difficult to handle than during the requirements workflow The required response time is always short Remember the customer is paying “big bucks” for maintenance –Customer expects service –Customer is the 1200 pound gorilla

CSCI 3350Lecture Reverse Engineering If you have only the source code, or the documentation is hopelessly out of date Reverse engineering the design (or requirements) is the only solution –Start with the source code –Recreate the design No terribly difficult, but time consuming –Recreate the specifications Extremely difficult Only have the executable?

CSCI 3350Lecture Testing During Maintenance Regression testing is mandatory –Complete test suite in electronic form Tests Expected results –Test suite must be maintained

A Maintenance Process SCRUM – an agile process An iterative method applied to each change Four phases –Planning – define change, estimate cost, schedule –Architecture – adapt the design to accommodate the changes –Development sprints – implement the changes –Closure – plan for release of iteration CSCI 3350Lecture

CSCI 3350Lecture Summary Maintenance is at least as demanding as development –But probably harder since MP must have all the skills of the “experts” used during development But, developers are –More highly respected –Better paid