cs 5380 software engineering chapter 9 software evolution
TRANSCRIPT
![Page 1: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/1.jpg)
S
CS 5380 Software Engineering
Chapter 9 Software Evolution
![Page 2: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/2.jpg)
Cost
Author: 80-90% of cost of organizational software is evolution
Chapter 7 - Design and Implementation2
![Page 3: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/3.jpg)
Software Lifetime
Large – military, government, infrastructure 30-40 years Air traffic control SCADA – pipeline, process control GIS Why?
Product 10-20 years What happens after this?
Embedded Life of the physical product (5-10) Printer, Car, Insulin Pump
Chapter 7 - Design and Implementation3
![Page 4: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/4.jpg)
(Software Lifetime)
Enterprise solutions (Custom) 20-30 years Y2K
Chapter 7 - Design and Implementation4
![Page 5: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/5.jpg)
Why Is Software Modified?
Defect fixes
Changing Environment Hardware Operating Systems External interfaces
Software Product - New Versions New Features Competitive Pressures New Market Sell upgrades
Dedicated Application Changing business model Changing environment Chapter 7 - Design and Implementation5
![Page 6: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/6.jpg)
Types of Change
Evolution – ongoing feature change Repetitive cycles of requirements, design,
development, test, delivery Very common with products
Maintenance – more related to bug fixing, environment change Sommerville: consequence of no transition from
development to subsequent phases
Chapter 7 - Design and Implementation6
![Page 7: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/7.jpg)
Cycle
Change requests
Evaluation, prioritization, release plan
Implementation
Release
Chapter 7 - Design and Implementation7
![Page 8: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/8.jpg)
Starting Point
Evolution team same as original development team Can proceed directly to evolution process
Evolution team not involved in original development team Understand architecture, design, from docs if plan-
based development Understand architecture, design from code, users if
not documented
Chapter 7 - Design and Implementation8
![Page 9: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/9.jpg)
Starting point challenges
Evolution team is separate, but development team was agile. Documentation, understanding
Evolution team is agile, but development team was plan based. Structure for refactoring, regression testing may be
weak/missing
Chapter 7 - Design and Implementation9
![Page 10: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/10.jpg)
Product Challenges
Downsizing of ongoing development team Need to retain core knowledge Temptation may be to remove highest paid people with
the most experience
Company takeover Continuation of development team is important
Chapter 7 - Design and Implementation10
![Page 11: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/11.jpg)
Custom Software
Original Development Contract with finite duration
Challenges Original developers not available Documentation not available Based on old technology (hardware, languages, databases, GUIs)
Result Modifications made by those who don’t know
Application Architecture Technologies
Potential of introduced bugs
Chapter 7 - Design and Implementation11
![Page 12: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/12.jpg)
Program Evolution Dynamics
Study of system change
Lehman and others
Lehman’s laws Apply to large, organizational systems
Chapter 7 - Design and Implementation12
![Page 13: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/13.jpg)
Lehman’s Laws
Chapter 7 - Design and Implementation13
Law Description
Continuing change A program that is used in a real-world environment must necessarily change, or else become progressively less useful in that environment.
Increasing complexity
As an evolving program changes, its structure tends to become more complex. Extra resources must be devoted to preserving and simplifying the structure.
Large program evolution
Program evolution is a self-regulating process. System attributes such as size, time between releases, and the number of reported errors is approximately invariant for each system release.
Organizational stability
Over a program’s lifetime, its rate of development is approximately constant and independent of the resources devoted to system development.
![Page 14: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/14.jpg)
(Lehman’s Laws)
Chapter 7 - Design and Implementation14
Law Description
Conservation of familiarity Over the lifetime of a system, the incremental change in each release is approximately constant.
Continuing growth The functionality offered by systems has to continually increase to maintain user satisfaction.
Declining quality The quality of systems will decline unless they are modified to reflect changes in their operational environment.
Feedback system Evolution processes incorporate multiagent, multiloop feedback systems and you have to treat them as feedback systems to achieve significant product improvement.
![Page 15: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/15.jpg)
Software Maintenance
3 types: Fault repair Environmental adaption Functionality addition
Chapter 7 - Design and Implementation15
![Page 16: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/16.jpg)
Features Added Later,by Second Team
Author: Team stability (knowledge) Poor development practice (if contracted out) Staff skills (old technologies, languages) Program age and structure
Chapter 7 - Design and Implementation16
![Page 17: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/17.jpg)
Software Reengineering
Why Reduce risk/cost Rearchitect for future
Figure 9.11 in text
Steps (some combination used) Source code translation Reverse engineer Program structure improvement Program modularization Data reengineering
Chapter 7 - Design and Implementation17
![Page 18: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/18.jpg)
Refactoring
Fowler – code smell Duplicate code (standardize) Long methods (break apart) Switch statements (duplication) Data clumping (encapsulate in objects) “Speculative” generality (eventually not needed)
Chapter 7 - Design and Implementation18
![Page 19: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/19.jpg)
Legacy Systems
Options Scrap the system (if not contributing) Leave in place Reengineer system Replace with new system
Chapter 7 - Design and Implementation19
![Page 20: CS 5380 Software Engineering Chapter 9 Software Evolution](https://reader035.vdocuments.site/reader035/viewer/2022081504/56649ec45503460f94bce397/html5/thumbnails/20.jpg)
Examples
Desktop Applications Microsoft Word Autodesk Visio
Web Applications Google Docs Facebook
Large System, Custom Air traffic Control System Custom Medical Records System
Chapter 7 - Design and Implementation20