51
Software Evolution Nicolas Anquetil RMod team rmod.lille.inria.fr

Software evolution evangelisation

Embed Size (px)

DESCRIPTION

On the importance of software maintenance and why it is ill-perceived

Citation preview

Page 1: Software evolution evangelisation

Software EvolutionNicolas AnquetilRMod teamrmod.lille.inria.fr

Page 2: Software evolution evangelisation

● Why this course?

– Soft. Maint. is important

– Soft. Maint. is poorly understood

– Soft. Maint. is poorly performed

Page 3: Software evolution evangelisation

● Goals

– You like maintenance

– You understand

● Why it exists

● Why you did not like it

● Why you should like it

Page 4: Software evolution evangelisation

What is it?

Software maintenance is the Software maintenance is the modification of a software product after modification of a software product after

delivery to correct faults, to improve delivery to correct faults, to improve performance or other attributes.performance or other attributes.

ISO/IEC 14764:2006 Software Engineering —ISO/IEC 14764:2006 Software Engineering — Software Life Cycle Processes — Maintenance Software Life Cycle Processes — Maintenance

Definition

Page 5: Software evolution evangelisation

Definition

Legacy software: A system which continues to Legacy software: A system which continues to be used because of the cost of replacing or be used because of the cost of replacing or

redesigning it and often despite its poor redesigning it and often despite its poor competitiveness and compatibility with modern competitiveness and compatibility with modern equivalents. The implication is that the system equivalents. The implication is that the system

is large, monolithic and difficult to modify. is large, monolithic and difficult to modify.

mondofacto.com/facts/dictionarymondofacto.com/facts/dictionary

Page 6: Software evolution evangelisation

Legacy Software

1 sheet 60 lines of code (LOC)≃

both sides = 120 LOC

Page 7: Software evolution evangelisation

Legacy Software

10 sheets = 1200 LOC(1.2 KLOC)

Page 8: Software evolution evangelisation

Legacy Software

Encyclopedia Britanica(15 ed., 32 volumes)

3,75 m 3,20 m

Windows NT 3.1 (1993)

4 to 5 MLOC

Page 9: Software evolution evangelisation

Legacy SoftwareWindows NT 3.1

(1993)

4 to 5 MLOC

Windows server 2003

50 MLOC

41,7 m 46 m

Page 10: Software evolution evangelisation

Legacy Sofware● Linux kernel 3.6

16 MLOC

● MacOS X 10.486 MLOC

● Debian 5.0324 MLOC

Page 11: Software evolution evangelisation

Relevance?● Estimations:

– 120 billion LOC maintained in 1990 (Ulrich, 1990)

– 200 billion in 2000 (Sommerville, 2000)

Page 12: Software evolution evangelisation

Relevance?● Annual cost in USA > $70 billion

(Sutherland, 1995; Edelstein, 1993)

● Nokia spent $90 million on Y2K

● US government spent > $8 billion

Page 13: Software evolution evangelisation

Relevance?● Cost of maintenance in a

software life

1970s early1980s

late1980s 1990

40%55%

75%90%

2000…

from Pigoski 1996

Page 14: Software evolution evangelisation

● Dominant activity in software engineering

● Yet, still poorly understood and despised

– Punishment, probation

– No career advancement

Page 15: Software evolution evangelisation

True/False ?● Maintenance can be eliminated

with perfect development

● Maintenance will be solved by modern technology (ex. Model Driven Development)

● Maintenance is difficult and boring

true false

Page 16: Software evolution evangelisation

True/False ?● Maintenance can be eliminated

with perfect development

● Maintenance will be solved by modern technology (ex. Model Driven Development)

● Maintenance is difficult and boring

true false

Page 17: Software evolution evangelisation

● Development techniques improve all the time

– Software processes (Agile, TDD)

– Software quality (CMMI)

– Tools (IDEs, xUnit)

– Languages (AOP, MDD)

● Maintenance problem still exist !

Page 18: Software evolution evangelisation

● Maintenance categories:

– Adaptive

– Perfective

– Corrective

– Preventive

4% 25%21%

50%

Page 19: Software evolution evangelisation

● For hardware, maintenance is replacement of used parts

● For software:

– Source code doesn't wear (erode)

– Maintenance is mainly evolution

Page 20: Software evolution evangelisation

Software systems must be Software systems must be continually adapted or they become continually adapted or they become

progressively less satisfactory progressively less satisfactory

First law of software evolutionFirst law of software evolution[Lehman, 1974][Lehman, 1974]

Page 21: Software evolution evangelisation

● A system works within the real world

● The world change:

– New business opportunities

– Growing user expectations

– New laws

– …

Page 22: Software evolution evangelisation

● Software systems must evolve or die (not useful)

● Maintenance is mainly due to external causes

Page 23: Software evolution evangelisation

● Maintenance (evolution) is inevitable

● Better (or perfect) software development cannot change that

Page 24: Software evolution evangelisation

Maintenance is a sign of success !Maintenance is a sign of success !The system is used and useful,The system is used and useful,

the users want morethe users want more

Page 25: Software evolution evangelisation

The Mussel shack● Once upon a time, a fisherman in

Dunkerque opened a small mussel selling point

Page 26: Software evolution evangelisation

The Mussel shack● Business was good

Page 27: Software evolution evangelisation

The Mussel shack● Business was very good

Page 28: Software evolution evangelisation

The Mussel shack● Employees asked for a cafeteria

Page 29: Software evolution evangelisation

The Mussel shack● Directors requested their dinning

room

Page 30: Software evolution evangelisation

The Mussel shack● Law imposed an emergency exit

Page 31: Software evolution evangelisation

The Mussel shack● Concurrents have fitness room,

added a piscine

Page 32: Software evolution evangelisation

The Mussel shack● and they lived happily ever after

Page 33: Software evolution evangelisation

Moral

The better the system, the more The better the system, the more maintenance (evolution)maintenance (evolution)

it will require !it will require !

Page 34: Software evolution evangelisation

True/False ?● Maintenance can be eliminated

with perfect development

● Maintenance will be solved by modern technology (ex. Model Driven Development)

● Maintenance is difficult and boring

true false

Page 35: Software evolution evangelisation

New techniques ● Cobol > 60% of all code in the

world [eWeeks, 2001]

● 180 GLOC in use, + 1GLOC/year [Gartner, 2006]

Page 36: Software evolution evangelisation

New techniques● Cobol – 1959

Page 37: Software evolution evangelisation

New techniques● New techniques do not target

Cobol programs/programmers

(We can safely ignore:

– Object Cobol

– Aspect Cobol)

Page 38: Software evolution evangelisation

New techniques● New techniques do not target

existing legacy software

– Miss 90+ % of the market

Page 39: Software evolution evangelisation

New techniques● New techniques (models) are still

programs

– Programs are models of the world

● They will need to be maintained

Page 40: Software evolution evangelisation

True/False ?● Maintenance can be eliminated

with perfect development

● Maintenance will be solved by modern technology (ex. Model Driven Development)

● Maintenance is difficult and boring

true false

Page 41: Software evolution evangelisation

More difficult?● Intrinsically more difficult than

development

– Information missing on existing system

– Must preserve some backward compatibility (existing data, user habits, …)

– More chaotic (reaction to external events)

– Less resources

– …

Page 42: Software evolution evangelisation

Boring?● Difficult ≠ Boring

Page 43: Software evolution evangelisation

Boring?● Easy ≠ Interesting

Page 44: Software evolution evangelisation

Boring?● The problem is cultural first

– Maintenance is not taught (implies it is not important?

– Computer science evolves fast (“newer is better”)

– Seen as punishment/probation

Page 45: Software evolution evangelisation

Boring?● Maintenance is difficult

● Can be seen as an interesting challenge

● A good way to learn many things (e.g. programming tricks)

Page 46: Software evolution evangelisation

Boring?

"Legacy code" often differs from its "Legacy code" often differs from its suggested alternative by actually suggested alternative by actually

working and scaling.working and scaling.

Bjarne StroustrupBjarne Stroustrup

● First need to change perception

Page 47: Software evolution evangelisation

Boring?● First need to change perception

● Lack of interest worsen it:

– ill prepared

– performed by “less competent” employees

Page 48: Software evolution evangelisation

Boring?● First need to change perception

● There is lots of money to make and interesting things to do in software evolution

Page 49: Software evolution evangelisation

True/False ?● Maintenance can be eliminated

with perfect development

● Maintenance will be solved by modern technology (ex. Model Driven Development)

● Maintenance is difficult and boring

true false

Page 50: Software evolution evangelisation

Closing remarks

Page 51: Software evolution evangelisation

● Software evolution is very important

● Typically ill-perceived

● There is an important cultural problem (misunderstanding)