Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software evolution evangelisation

1,169 views

Published on

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

Published in: Education
  • Be the first to comment

Software evolution evangelisation

  1. 1. Software Evolution Nicolas Anquetil RMod team rmod.lille.inria.fr
  2. 2. ● Why this course? – Soft. Maint. is important – Soft. Maint. is poorly understood – Soft. Maint. is poorly performed
  3. 3. ● Goals – You like maintenance – You understand ● Why it exists ● Why you did not like it ● Why you should like it
  4. 4. What is it?Definition Software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes. ISO/IEC 14764:2006 Software Engineering — Software Life Cycle Processes — Maintenance
  5. 5. DefinitionLegacy software: A system which continues to be used because of the cost of replacing or redesigning it and often despite its poorcompetitiveness and compatibility with modernequivalents. The implication is that the system is large, monolithic and difficult to modify. mondofacto.com/facts/dictionary
  6. 6. Legacy Software 1 sheet ≃ 60 lines of code (LOC) both sides = 120 LOC
  7. 7. Legacy Software 10 sheets = 1200 LOC (1.2 KLOC)
  8. 8. Legacy SoftwareWindows NT 3.1 (1993) 4 to 5 MLOC 3,75 m 3,20 m Encyclopedia Britanica (15 ed., 32 volumes)
  9. 9. Legacy SoftwareWindows NT 3.1 (1993) 4 to 5 MLOC 41,7 m 46 mWindows server 200350 MLOC
  10. 10. Legacy Sofware● Linux kernel 3.6 16 MLOC● MacOS X 10.4 86 MLOC● Debian 5.0 324 MLOC
  11. 11. Relevance?● Estimations: – 120 billion LOC maintained in 1990 (Ulrich, 1990) – 200 billion in 2000 (Sommerville, 2000)
  12. 12. Relevance?● Annual cost in USA > $70 billion (Sutherland, 1995; Edelstein, 1993)● Nokia spent $90 million on Y2K● US government spent > $8 billion
  13. 13. Relevance?● Cost of maintenance in a software life 90% 75% 55% 40% from Pigoski 1996 early late 1970s 1990 2000… 1980s 1980s
  14. 14. ● Dominant activity in software engineering● Yet, still poorly understood and despised – Punishment, probation – No career advancement
  15. 15. True/False ?● Maintenance can be eliminated true false with perfect development● Maintenance will be solved by modern technology (ex. Model Driven Development)● Maintenance is difficult and boring
  16. 16. True/False ?● Maintenance can be eliminated true false with perfect development● Maintenance will be solved by modern technology (ex. Model Driven Development)● Maintenance is difficult and boring
  17. 17. ● Development techniques improve all the time – Software processes (Agile, TDD) – Software quality (CMMI) – Tools (IDEs, xUnit) – Languages (AOP, MDD)● Maintenance problem still exist !
  18. 18. ● Maintenance categories: – Adaptive 21% – Perfective 4% 25% – Corrective 50% – Preventive
  19. 19. ● For hardware, maintenance is replacement of used parts● For software: – Source code doesnt wear (erode) – Maintenance is mainly evolution
  20. 20. Software systems must becontinually adapted or they become progressively less satisfactory First law of software evolution [Lehman, 1974]
  21. 21. ● A system works within the real world● The world change: – New business opportunities – Growing user expectations – New laws – …
  22. 22. ● Software systems must evolve or die (not useful)● Maintenance is mainly due to external causes
  23. 23. ● Maintenance (evolution) is inevitable● Better (or perfect) software development cannot change that
  24. 24. Maintenance is a sign of success ! The system is used and useful, the users want more
  25. 25. The Mussel shack● Once upon a time, a fisherman in Dunkerque opened a small mussel selling point
  26. 26. The Mussel shack● Business was good
  27. 27. The Mussel shack● Business was very good
  28. 28. The Mussel shack● Employees asked for a cafeteria
  29. 29. The Mussel shack● Directors requested their dinning room
  30. 30. The Mussel shack● Law imposed an emergency exit
  31. 31. The Mussel shack● Concurrents have fitness room, added a piscine
  32. 32. The Mussel shack● and they lived happily ever after …
  33. 33. Moral The better the system, the more maintenance (evolution) it will require !
  34. 34. True/False ?● Maintenance can be eliminated true false with perfect development● Maintenance will be solved by modern technology (ex. Model Driven Development)● Maintenance is difficult and boring
  35. 35. New techniques● Cobol > 60% of all code in the world [eWeeks, 2001]● 180 GLOC in use, + 1GLOC/year [Gartner, 2006]
  36. 36. New techniques● Cobol – 1959
  37. 37. New techniques● New techniques do not target Cobol programs/programmers (We can safely ignore: – Object Cobol – Aspect Cobol)
  38. 38. New techniques● New techniques do not target existing legacy software – Miss 90+ % of the market
  39. 39. New techniques● New techniques (models) are still programs – Programs are models of the world● They will need to be maintained
  40. 40. True/False ?● Maintenance can be eliminated true false with perfect development● Maintenance will be solved by modern technology (ex. Model Driven Development)● Maintenance is difficult and boring
  41. 41. 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 – …
  42. 42. Boring?● Difficult ≠ Boring
  43. 43. Boring?● Easy ≠ Interesting
  44. 44. 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
  45. 45. Boring?● Maintenance is difficult● Can be seen as an interesting challenge● A good way to learn many things (e.g. programming tricks)
  46. 46. Boring?● First need to change perception "Legacy code" often differs from its suggested alternative by actually working and scaling. Bjarne Stroustrup
  47. 47. Boring?● First need to change perception● Lack of interest worsen it: – ill prepared – performed by “less competent” employees
  48. 48. Boring?● First need to change perception● There is lots of money to make and interesting things to do in software evolution
  49. 49. True/False ?● Maintenance can be eliminated true false with perfect development● Maintenance will be solved by modern technology (ex. Model Driven Development)● Maintenance is difficult and boring
  50. 50. Closing remarks
  51. 51. ● Software evolution is very important● Typically ill-perceived● There is an important cultural problem (misunderstanding)

×