Upload
others
View
10
Download
2
Embed Size (px)
Citation preview
Maintenance Logicielle -- IntroductionNicolas [email protected]@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