Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf ·...

51
Maintenance Logicielle -- Introduction Nicolas Anquetil [email protected] [email protected]

Transcript of Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf ·...

Page 1: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

Maintenance Logicielle -- IntroductionNicolas [email protected]@inria.fr

Page 2: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

– C'est quoi ?– Importance ?– Ça existe encore !?!– Conditions

Page 3: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

– Importance ?– Ça existe encore !?!– Conditions

C’est quoi ?

Page 4: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

C'est quoi ?Un programme pour aller dans le bureau voisin:

debout

tourne à gauche de 45º

avance 2 pas

tourne à droite de 45º

avance 3 pas

tourne à droite de 30º

avance 5 pas

Page 5: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

C'est quoi ?Maintenance = modifcation d'un programme existant pour :

– corriger une erreur– l'adapter à un changement

d'environnement– prévenir une maintenance future– apporter une amélioration ou une

extension

Page 6: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

C'est quoi ?Maintenance = modifcation d'un programme existant pour :

– corriger une erreur– l'adapter à un changement

d'environnement– prévenir une maintenance future– apporter une amélioration ou une

extension

4%

25%

21%

50%

Page 7: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

Et concrètement ?

Page 8: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 8/51

Et concrètement ?

1 feuille ≃ 60 lignes de code (LOC)recto/verso = 120 LOC→ de mon bureau jusque dans la rue

Page 9: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 9/51

Et concrètement ?

10 feuilles = 1200 LOC (1.2 KLOC)→ de mon bureau au café du coin

Page 10: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 10/51

Et concrètement ?Windows NT 3.1 (1993)4 à 5 MLOC

3,75m 3,20m

Encyclopedia Britanica(15 ed., 32 volumes)

Page 11: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 11/51

Et concrètement ?Windows NT 3.1 (1993)4 à 5 MLOC→ du M3 à la mosquée Sainte Sophie

Page 12: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 12/51

Et concrètement ?Windows NT 3.1 (1993)4 à 5 MLOCWindows server 200350 MLOC

41,7m 46m

Page 13: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 13/51

Et concrètement ?Windows NT 3.1 (1993)4 à 5 MLOCWindows server 200350 MLOC→ de mon bureau au voisin en passant par :

- New York- Rio de Janeiro- Dakar

Page 14: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 14/51

Et concrètement ?Correction de bug =Trouver la feuille avec la ligne qui est erronée …

Page 15: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 15/51

Et concrètement ?Correction de bug =Trouver la feuille avec la ligne qui est erronée …→ une instruction erronée et …

Page 16: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

– C'est quoi ?–

– Ça existe encore !?!– Conditions

Importance ?

Page 17: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

Et concrètement ?Cobol représente > 60% des logiciels au monde70% des applications commerciales (“business applications”) sont écrites en CobolLes applications Cobol traitent 85% des données commercialesCobol croit de 5 milliards de LOC par an

[eWeeks, 2001]

Page 18: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 18/51

Et concrètement ?Cobol - 1959

Page 19: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 19/51

Et concrètement ?Cobol – 1959

– Maintenir un programe Cobol c'est comme faire rouler cette voiture tous les jours

Page 20: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 20/51

Importance ?1990 → 120 milliards LOC en maintenance (Ulrich, 1990).NB : pile de 100 km de papier2000 → 250 milliards LOC en maintenance (Sommerville, 2000).La quantité de code maintenu double tous les 7 ans (Müller et al., 1994).

Page 21: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 21/51

Importance ?Coût annuel aux USA >$70 milliards (Sutherland, 1995; Edelstein, 1993)Nokia a dépensé $90 millions avec le bug de l'an 2000Gouvernement fédéral aux USA a dépensé $8,38 milliards en 5 ans avec le bug de l'an 2000

Page 22: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 22/51

Importance ?

70s début 80s fin 80s 90s 2000s0

10

20

30

40

50

60

70

80

90

100

Estimation du pourcentage de la maintenance dans le coût total d'un logiciel

Page 23: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

– C'est quoi ?– Importance ?–

– ConditionsÇa existe encore ?!?

Page 24: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 24/51

Ça existe encore !?!On a :

– Langages évolués (OO, AOP)– Processus modernes (RUP, Agiles)– Normes de qualité (CMMi)– Modèles de développement (MDE, SOA)

Page 25: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 25/51

Ça existe encore !?!On a :

– Langages évolués (OO, AOP)– Processus modernes (RUP, Agiles)– Normes de qualité (CMMi)– Modèles de développement (MDE, SOA)

C'est quoi le

problème ?!?

Page 26: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 26/51

Il était une fois ...Un marchand de moules construit un magasin à Dunkerque ...

Page 27: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 27/51

Il était une fois ...Les afaires marchent bien

Page 28: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 28/51

Il était une fois ...Vraiment bien

Page 29: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 29/51

Il était une fois ...Les employés veulent un restaurant

Page 30: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 30/51

Il était une fois ...Les directeurs, une terrasse

Page 31: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 31/51

Il était une fois ...La loi impose une sortie de secours

Page 32: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 32/51

Il était une fois ...La concurrence ofre des goodies aux clients, l'entreprise … une piscine !

Page 33: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 33/51

Il était une fois ...etc …

Page 34: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 34/51

Il était une autre fois ...Avec le logiciel, ça serait possibleEn fait c'est comme ça que beaucoup de systèmes évoluent

Page 35: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 35/51

Il était une autre fois ...Avec le logiciel, ça serait possibleEn fait c'est comme ça que beaucoup de systèmes évoluentUn logiciel utilisé dans un

environnement réel doit évoluer

sinon il devient de moins en moins

utile dans cet environnement

1ère loi de l'évolution de

logiciel [Lehman, 1980]

Page 36: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 36/51

Ça existe encore !?!La maintenance n'est pas une question de choix (ni une question de bug)Les évolutions sont imposées :

– Pression de la concurrence ;– Nouvelles lois ;– Nouvelles nécessitées ;– Opportunités de marché ;– Evolution des autres systèmes

(bibliothèques, système opérationnel) ;– …

Page 37: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 37/51

Ça existe encore !?!La maintenance est un signe de succès !!!1ère loi de Lehman« Un logiciel utilisé dans un environnement réel doit évoluer sinon il devient de moins en moins utile dans cet environnement »On ne maintient que les systèmes utiles et qui en valent la peine

Page 38: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 38/51

Ça existe encore !?!La maintenance résulte de facteurs externes au logicielLes meilleurs processus, environnements, langages, …… ne peuvent pas diminuer signifcativement la maintenance

Page 39: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 39/51

Ça existe encore !?!Élever le niveau d'abstraction (assembleur, langages procéduraux, langages à objets, composants, modèles)

– Ne simplife pas la maintenance,– Autorise seulement à faire des

programmes plus riches

Page 40: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

– C'est quoi ?– Importance ?– Ça existe encore !?!– Conditions

Page 41: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 41/51

ConditionsSignifcativement plus difcile que le développement de nouvelles applications

– + chaotique– + contraint techniquement– + contraint fnancièrement– Difcultés de compréhension

Page 42: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 42/51

Conditions chaotiquesLa maintenance se fait régulièrement en réaction à un événement externe

– Maintenance corrective : Les bugs ne préviennent pas à l’avance

– Maintenance évolutive : Réaction à la concurrence

Moins d’opportunités de planifcation que pour le développement d’une nouvelle application

Page 43: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 43/51

Conditions techniquesLa maintenance se fait dans un environnement pré-existantChoix techniques du passé (langage, architecture, BdD, etc.) contraignent le présent … CobolChoix des meilleures solutions … dans les limites de l’existant

Page 44: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 44/51

Conditions fnancièresSouvent plus facile de trouver de l’argent pour un projet neuf

– Investissement : Se traduit par une modifcation de la valeur du patrimoine

– Fonctionnement : Dépenses nécessaires au fonctionnement

Page 45: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 45/51

Difcultés de compréhension

Perte des connaissances :– Organisation existante du système– Choix techniques faits (et pour quelles

raisons)– Fonctionnalités existantes– « Business rules »

Page 46: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 46/51

Difcultés de compréhension

Perte des connaissances :Difficultés deic réficupicéreicr ficeics ficonnaisissaisnficeics

– Conficeicpicteicurs initiaisux sont picaisrtis– Paiss deic doficumeicntaistion ou doficumeicntaistion

obsolèteic– Lais seiculeic sourficeic d’informaistion eicst leic ficodeic

(informaistion deic très baiss niveicaisu)

Page 47: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 47/51

Difcultés de compréhension

Perte des connaissances :Difficultés deic réficupicéreicr ficeics ficonnaisissaisnficeics

– Conficeicpicteicurs initiaisux sont picaisrtis– Paiss deic doficumeicntaistion ou doficumeicntaistion

obsolèteic– Lais seiculeic sourficeic d’informaistion eicst leic ficodeic

(informaistion deic très baiss niveicaisu)

De 40% à 60% du temps de

maintenance est passé à lire le

code (pour le comprendre)

Page 48: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 48/51

Difcultés de compréhension

Perte des connaissances :– Organisation existante du système– Choix techniques faits (et pour quelles

raisons)

➔Érosion de l’architecture (« architectural drift »)➔Perte de qualité du système

Page 49: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 49/51

Difcultés de compréhension

Perte des connaissances :– Organisation existante du système– Choix techniques faits (et pour quelles

raisons)

➔Perte de qualité du système– Correction d’un bug en introduit trois

autres (« ripple efect »)

Page 50: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

Conclusion

Page 51: Maintenance Logicielle -- Introductionseriai/uploads/Enseignement/CoursAnquentil1.pdf · Maintenance Logicielle -- Introduction Nicolas Anquetil Nicolas.Anquetil@univ-lille1.fr Nicolas.Anquetil@inria.fr

13/11/2017 51/51

ConclusionLa maintenance est une réalité intrinsèque et inévitable du logicielLa maintenance n’est pas un problème, c’est une preuve de succèsLa maintenance est difcile