Overview Software Maintenance and Evolution Definitions

Slides:



Advertisements
Similar presentations
Chapter 27 Software Change.
Advertisements

Chapter 27 Software Change.
Chapter 11 Software Evolution
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
Software Evolution Managing the processes of software system change
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software evolution.
Software evolution.
Software maintenance Managing the processes of system change.
 2004 by SEC Chapter 9 Software Maintenance. 2  2004 by SEC 9.1 Software Evolution.
Chapter 9 – Software Evolution Lecture 1 1Chapter 9 Software evolution.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Chapter 9 – Software Evolution and Maintenance
Lecture # 22 Software Evolution
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 change  Managing the processes of software system change.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
Software Engineering Lecture 20 Software Maintenance.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution CS 425 November 12, 2013 Ian Sommerville, Software Engineering, 9 th Edition Pearson Education,
Software Maintenance.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing.
Lecture 1 Chapter 9 Software evolution1. Topics covered Evolution processes Change processes for software systems Program evolution dynamics Understanding.
Figures – Chapter 9. Figure 9.1 A spiral model of development and evolution.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
Software Evolution Program evolution dynamics Software maintenance Complexity and Process metrics Evolution processes 1.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Chapter 9 – Software Evolution Lecture 1 Chapter 9 Software evolution1.
Chapter 2: Software Maintenance Omar Meqdadi SE 3860 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution CS 425 November 12, 2012 Ian Sommerville, Software Engineering, 9 th Edition Pearson Education,
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software change Software change is inevitable –New requirements emerge when the software is used –The business environment changes –Errors must be repaired.
CS223: Software Engineering Lecture 32: Software Maintenance.
1 / 14 CS 425/625 Software Engineering Software Change Based on Chapter 27 of the textbook [SE-6] Ian Sommerville, Software Engineering, 6 th Ed., Addison-Wesley,
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVI. Software Evolution.
Software Configuration Management
Chapter 9 – Software Evolution
Chapter 18 Maintaining Information Systems
Introduction to Software Evolution and Maintenance
Chapter 9 – Software Evolution
Software Engineering Unit- 6 Engineered for Tomorrow CSE, MVJCE.
Software Engineering (CSI 321)
Chapter 9 – Software Evolution
CS 425/625 Software Engineering Software Evolution
For University Use Only
Software Testing and Maintenance Maintenance and Evolution Overview
Chapter 9 – Software Evolution and Maintenance
Chapter 9 Software Maintenance
IS301 – Software Engineering V:
Chapter 27 Software Change.
Chapter 9 – Software Evolution
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
Software Engineering I Session 8
Chapter 9 – Software Evolution
Chapter 9 – Software Evolution
Introduction Software maintenance:
Presentation transcript:

ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Lecture 25 Instructor Paulo Alencar

Overview Software Maintenance and Evolution Definitions Evolution Dynamics Software Maintenance

Terminology Software Evolution Software Maintenance a continuous change from a lesser, simpler, or worse state to a higher or better state. Software Maintenance consists of the activities required to keep a software system operational and responsive after it is accepted and placed into production.

Objective To explain why change is inevitable if software systems are to remain useful To discuss software maintenance and maintenance cost factors To describe the processes involved in software evolution To discuss an approach to assessing evolution strategies for legacy systems

Software Change Software change is inevitable New requirements emerge when the software is used; The business environment changes; Errors must be repaired; New computers and equipment is added to the system; The 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.

Importance of Evolution Organizations have huge investments in their software systems - they are critical business assets. To maintain the value of these assets to the business, they must be changed and updated. The majority of the software budget in large companies is devoted to evolving existing software rather than developing new software.

Spiral Model of Evolution

Evolution Dynamics Program evolution dynamics is the study of the processes of system change. After major empirical studies, Lehman and Belady proposed that there were a number of ‘laws’ which applied to all systems as they evolved. There are sensible observations rather than laws. They are applicable to large systems developed by large organisations. Perhaps less applicable in other cases.

Lehman’s Laws The Law of Continuing Change (1974) The Law of Increasing Complexity (1974) The Law of Self Regulation (1974) The Law of Conservation of Organizational Stability (1980) The Law of Conservation of Familiarity (1980) The Law of Continuing Growth (1980) The Law of Declining Quality (1996) The Feedback System Law (1996) Source: Lehman, M., et al, “Metrics and Laws of Software Evolution—The Nineties View,” Proceedings of the 4th International Software Metrics Symposium (METRICS '97), IEEE, 1997.

Lehman’s Laws Law Description Continuing change Increasing complexity A program must change or become progressively less useful Increasing complexity As program changes, its structure becomes more complex Extra resources are required. Large program evolution System attributes, (eg, size, time between releases) is ~invariant for each system release. Organizational stability A program’s rate of development is ~constant. Conservation of familiarity The incremental change in each release is ~constant. Continuing growth The functionality has to continually increase to maintain user satisfaction. Declining quality Quality of systems appear to be declining unless adapted to changing environments Feedback system Evolution processes involve feedback systems for product improvement

Applicability of Lehman’s Laws Lehman’s laws seem to be generally applicable to large, tailored systems developed by large organisations. Confirmed in more recent work by Lehman on the FEAST project It is not clear how they should be modified for Shrink-wrapped software products; Systems that incorporate a significant number of COTS components; Small organisations; Medium sized systems.

Software Maintenance ‘When the transition from development to evolution is not seamless, the process of changing the software after delivery is often called software maintenance’. (Sommerville, 2004) Maintenance involves extra process activities: Program understanding

Software Maintenance 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.

Maintenance is Inevitable The system requirements are likely to change while the system is being developed because the environment is changing. Therefore a delivered system won't meet its requirements! Systems are tightly coupled with their environment. When a system is installed in an environment it changes that environment and therefore changes the system requirements. Systems MUST be maintained therefore if they are to remain useful in an environment.

Types of Maintenance Maintenance to repair software faults Changing a system to correct deficiencies in the way meets its requirements. Maintenance to adapt software to a different operating environment Changing 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 Modifying the system to satisfy new requirements. Maintenance to detect and correct latent faults before they become effective (preventive).

Types of Maintenance Corrective Maintenance Adaptive Maintenance Perfective Maintenance (Preventative Maintenance - Pressman) Sommerville (2004) avoids the use of these names because their definitions are uncertain We will work with the following definitions

Corrective Maintenance Focuses on fixing defects, ie, fault repair It is a reactive process i.e. defects generally need to be corrected either immediately or in the near future Defects refer to the system not performing as originally intended or as specified in the requirements 17% of maintenance is correcting faults

Adaptive Maintenance It includes all changes to meet the evolving needs of the user and the environment i.e. modifications to a system to cope with a changing environment, eg changed hardware, operating system 18% of maintenance is change to adapt to a new environment It includes work to enhance a system’s functionality i.e. relates to changing a system when requirements change due to organisational or business changes The scale of this maintenance is often greater than for other types of maintenance 65% of maintenance is new requirements

Perfective Maintenance It includes all efforts to improve the quality of the software It includes restructuring code, creating and updating documentation, improving reliability or efficiency, improving performance Maintenance work in the above categories is often performed concurrently

Differences: S/W Development and Maintenance Constraints of an existing system Changes must conform or be compatible with an existing architecture, design and code constraints Shorter time frames Development spans 1 or more years Maintenance spans hours or up to 6 months Available test data Development creates all test data from scratch Maintenance uses existing test data with regression testing creating new data for the changes

Distribution of Maintenance Effort

Relative Costs of Maintenance 3% Requirements definition 3% Preliminary design 5% Detailed design 7% Implementation 15% Testing 67% Operations and Maintenance The majority of a software budget in large companies is devoted to maintaining systems Sommerville (2004) states that 90% of software costs are evolution costs

Maintenance Costs Usually greater than development costs (2* to 100* depending on the application). Affected by both technical and non-technical factors. Increases as software is maintained. Maintenance corrupts the software structure so makes further maintenance more difficult. Ageing software can have high support costs (e.g. old languages, compilers etc.).

Development/Maintenance Costs

Maintenance Cost Factors Team stability Maintenance costs are reduced if the same staff are involved with them for some time. Contractual responsibility The developers of a system may have no contractual responsibility for maintenance so there is no incentive to design for future change. Staff skills Maintenance staff are often inexperienced and have limited domain knowledge. Program age and structure As programs age, their structure is degraded and they become harder to understand and change.

Maintenance Prediction Maintenance prediction is concerned with assessing which parts of the system may cause problems and have high maintenance costs Change acceptance depends on the maintainability of the components affected by the change; Implementing changes degrades the system and reduces its maintainability; Maintenance costs depend on the number of changes and costs of change depend on maintainability.

Maintenance Prediction

Change Prediction Predicting the number of changes requires an understanding of the relationships between a system and its environment. Tightly coupled systems require changes whenever the environment is changed. Factors influencing this relationship are Number and complexity of system interfaces; Number of inherently volatile system requirements; The business processes where the system is used.

Complexity Metrics Predictions of maintainability can be made by assessing the complexity of system components. Studies have shown that most maintenance effort is spent on a relatively small number of system components. Complexity depends on Complexity of control structures; Complexity of data structures; Object, method (procedure) and module size.

Process Metrics Process measurements may be used to assess maintainability Number of requests for corrective maintenance; Average time required for impact analysis; Average time taken to implement a change request; Number of outstanding change requests. If any or all of these is increasing, this may indicate a decline in maintainability.