© keith vander linden, 2011 1 dilbert © united feature syndicate, inc

23
© Keith Vander Linden, 2011 2 Software Evolution The Transition Phase The show hits the road: Deployment Maintenance Re-engineering A final word… An airplane is nothing more than a collection of parts having an inherent tendency to fall to earth, and requiring constant effort and supervision to stave off that outcome. – K. Gorlen UNIX System V

Upload: anis-cummings

Post on 24-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

2

Software Evolution

● The Transition Phase● The show hits the road:

– Deployment– Maintenance– Re-engineering

● A final word…

An airplane is nothing more than a collection of parts having an inherent tendency to fall to earth, and requiring constant effort and supervision to stave off that outcome. – K. Gorlen UNIX System V

Page 2: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

3

The Transition Phase

● In the UP transition phase, the system is transferred to the user community.

● It’s activities include:– Deployment– Technical support and training– Maintenance

● Software Systems evolve over time.

Page 3: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

4

Analysis7% Design

6%

Implementation13%

Testing7%Maintenance

67%

Relative Effort: Phases

data from Schach, 2002

Page 4: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

5

System Deployment

● Deployment is not the end of the road.– Packaging/distribution– Installation

● Systems are deployed as an architecture of physical devices and software environments.

Page 5: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

6

Deployment Diagrams

● Their physical architectures have the following elements:– Physical devices– Software execution environments– Software artifacts– Communication lines

● UML Deployment Diagrams can be used to communicate these architectures.

Page 6: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

7

Example: Deployment Diagram

Example adapted from Fowler, 2003

GenericPC<<client>>

DatabaseServer<<server>>

Web Server<<server>>

apache<<webserver>>

tomcat<<container>>

geekServlet<<artifact>>

Postgres<<dbms>>

geekDB<<artifact>>

JDBC

Chrome<<browser>> HTTP

Page 7: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

8

Outline

● Deployment Diagrams– Nodes– Artifacts– Associations

● Using Deployment Diagrams

Page 8: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

9

Nodes

● Deployment diagram nodes can represent:– Physical devices– Software execution environments

● These stereotypes are helpful, but are not standardized. Web Server

<<server>>

apache<<webserver>>

tomcat<<container>>

geekServlet<<artifact>>

Page 9: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

10

Artifacts

● Artifacts are the physical manifestations of software components.

● They are stored on/in nodes.

geekDB<<artifact>>

Page 10: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

11

Assocations

● Associations represent communication paths and protocols.

apache<<webserver>>

Chrome<<browser>> HTTP

Page 11: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

12

Using Deployment Diagrams

● Use deployment diagrams to show:– what is deployed where;– how the communication flows.

● Any non-trivial deployment can benefit from their use.

Page 12: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

13

Legacy Systems

● Systems can eventually become legacy systems.

● Legacy systems:– are entrenched;– have ceased to evolve;– continue to be used because their

replacement cost is too high.

Page 13: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

14

System Maintenance

● Maintenance sustains a software system throughout its life-cycle.

● Software deteriorates as it evolves.● Reasons for post-delivery modification:

– Corrective maintenance

– Perfective maintenance

– Adaptive maintenance

Page 14: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

15

Relative Effort: Maintenance Types

data from: Schach et al, 2003

Corrective57%

Perfective39%

Adaptive2%

other2%

Page 15: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

16

The Joy of Maintenance

● Maintenance is seen as– an after-the-fact activity– unrelated to the software development

● Problems:– Users are usually dissatisfied.

– Problems are frequently caused by someone else.

– You’re on the bottom rung of the life-cycle food-chain.

– There are limited support tools.

Page 16: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

17

Change Management Tools

● Managing defects

● Fixing defects

● Testing fixes

Page 17: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

18

Regression Testing

re·gres·sion  (re -greh shun) n. Relapse to a less perfect or developed state.

● Changing software tends to break things.● Regression testing checks that the system

still operates properly after change.

Page 18: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

19

Engineering for Evolution● Good software engineering should

anticipate evolution.● Silver bullets?

– “Heavy” software engineering?

– Object-Oriented design?

– Agile development?

Page 19: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

20

Re-Engineering

● Re-implementing an existing system, with minimal analysis and design, e.g.:– Re-documenting a system– Re-structuring a system– Translating a system code to a newer

language– Porting a system to a new platform

● This can be cheaper than developing a new system or fixing an old one.

Page 20: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

21

Reasons to Re-Engineer

● To support a more modern platform● To move to a better supported language● To improve efficiency● To make the system more understandable

in order to support maintenance

Page 21: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

22

Types of Re-Engineering

Cheap Expensive

Automated Code conversion

Manual architectural restructuring

Automated Program restructuring

Manual program/data restructuring

from: Sommerville, 2001

Page 22: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

23

Reverse Engineering

● The process of deriving abstract formal specifications from the source code of a legacy system

● This is used to support:– System re-engineering– System replacement

Page 23: © Keith Vander Linden, 2011 1 Dilbert © United Feature Syndicate, Inc

© Keith Vander Linden, 2011

24

image from: http://www.unc.edu/

Fredrick P. Brooks (1931- )

The Mythical Man-Month

● Brooks considered evolution to be one of the essential characteristics of software systems.

● He gives the following advice to young managers:

Numquam incertus; semper apertus

What’s theBig Idea