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

Post on 12-Oct-2020

11 views 2 download

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

Maintenance Logicielle -- IntroductionNicolas AnquetilNicolas.Anquetil@univ-lille1.frNicolas.Anquetil@inria.fr

SommaireMaintenance logicielle

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

SommaireMaintenance logicielle

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

C’est quoi ?

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

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

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%

Et concrètement ?

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

13/11/2017 9/51

Et concrètement ?

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

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)

13/11/2017 11/51

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

13/11/2017 12/51

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

41,7m 46m

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

13/11/2017 14/51

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

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 …

SommaireMaintenance logicielle

– C'est quoi ?–

– Ça existe encore !?!– Conditions

Importance ?

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]

13/11/2017 18/51

Et concrètement ?Cobol - 1959

13/11/2017 19/51

Et concrètement ?Cobol – 1959

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

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).

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

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

SommaireMaintenance logicielle

– C'est quoi ?– Importance ?–

– ConditionsÇa existe encore ?!?

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)

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 ?!?

13/11/2017 26/51

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

13/11/2017 27/51

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

13/11/2017 28/51

Il était une fois ...Vraiment bien

13/11/2017 29/51

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

13/11/2017 30/51

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

13/11/2017 31/51

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

13/11/2017 32/51

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

13/11/2017 33/51

Il était une fois ...etc …

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

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]

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) ;– …

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

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

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

SommaireMaintenance logicielle

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

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

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

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

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

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 »

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)

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)

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

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 »)

Conclusion

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