Vous êtes sur la page 1sur 10

M1 informatique

Module Génie Logiciel


CM1 : Introduction au Génie Logiciel

Céline ROUDET
Celine.Roudet@u-bourgogne.fr
http://ufrsciencestech.u-bourgogne.fr/~roudet/teaching.html
http://ufrsciencestech.u-bourgogne.fr/master1/GenieLogiciel/

Finalité : CM1 : Introduction au Génie Logiciel


intégration
continue 1- Introduction :
– Définitions autour du logiciel
– Crise du logiciel et bugs célèbres
– Solutions proposées par le Génie Logiciel

2- Activités du processus / étude de cas

3- Historique des différents cycles de vie

http://fabianpiau.com/wp-content/uploads/post/00003/Dossier_CI.pdf 3 Introduction au Génie Logiciel Céline ROUDET 4

Production de logiciels et Génie Logiciel Lois de Lehman (1985)

• Omniprésence dans les activités humaines


Hypothèses  dynamique d’évolution des logiciels
 diversifiés, complexes, ...
− Loi des modifications perpétuelles : utilisé dans
 exigences de qualité / fiabilité
un environnement réel  évolution nécessaire

• Nécessite méthodes, techniques et outils  GL − Loi de complexité croissante : plus il évolue,


 Science de l’ingénieur dont la finalité est la plus sa structure a tendance à se complexifier
fabrication de systèmes informatisés complexes
− Loi de stabilité organisationnelle :
 Travail de groupe et non un individu isolé modifications de chaque nouvelle version  à peu
 Besoins techniques et non techniques près constantes

Introduction au Génie Logiciel Céline ROUDET 5 Introduction au Génie Logiciel Céline ROUDET 6
Qu’est-ce qu’un logiciel ? Projet logiciel et schéma/comité directeur

• Ensemble d’artéfacts : • Intensions de l’entreprise à moyen terme (1 à 3 ans)


 Codes : sources, binaires, tests, …
 Documentation pour l’utilisateur : manuel d’installation, • Schéma élaboré par un comité directeur (direction générale)
d’utilisation, de maintenance, tutoriels, ...
 Documentation interne : cas d’utilisation, modèle du
domaine, … • Orientations stratégiques pour définir :
 visibilité des ambitions de l’organisation
• Conçus par et pour différents acteurs :
 Utilisateurs, programmeurs,  priorités de réalisation des objectifs (pour terminer à temps)
 Maîtrise d’ouvrage (MOA) : commanditaire/client
 Maîtrise d’oeuvre (MOE) : responsable du développement
 Hotline, ... Projet : inscrit dans les objectifs généraux de l’entreprise

Introduction au Génie Logiciel Céline ROUDET 7 Introduction au Génie Logiciel Céline ROUDET 8

Lancement d’un projet (au niveau de la MOA) Projet et processus


• Suivi par un comité de pilotage (responsables de la MOA) • Projet : ensemble d’activités organisées pour créer un
• Désignation d’un directeur de projet (MOA) produit / service avec une qualité définie dans le cadre
d’un budget fixé.

= représentants de la direction générale



Processus :
− Ensemble structuré :
= responsables organisationnels de la MOA • d’activités pour chaque acteur (code, planification,
Représentants des tests, …)
différentes entités • d’artefacts/livrables pour chaque activité (exécutable,
= chef du projet au niveau MOA
de l’entreprise maquette, planning, doc, …)
• de workflows (= enchaînement des activités)
= intervenants ponctuels − Un processus peut lui-même englober des sous-processus
Source : http://www.commentcamarche.net

Introduction au Génie Logiciel Céline ROUDET 9 Introduction au Génie Logiciel Céline ROUDET 10

Processus de développement de logiciels Processus de développement de logiciels (2)

Activités séquentielles (phases du développement) : • Activités Permanentes (horizontales) :


 Capture des besoins (CdC)  Produits intermédiaires (prototypes, maquettes, docs)

 Analyse (Spécification)  Plan/manuel qualité et d’assurance qualité


 Gestion de projet, des ressources (planification, suivi et
 Conception (Architecture)
avancement du projet), des configurations, des versions,
 Implémentation / Réalisation (Codage et tests unitaires) de l’environnement, ...

 Intégration, validation et tests (Logiciel livrable)


• Permet d’assurer le cycle de vie du logiciel :
 Qualification et déploiement (Mise en exploitation)
 depuis sa création … jusqu’à son retrait
 Maintenance (Correction, adaptation)
 en passant par sa distribution sur un marché

Introduction au Génie Logiciel Céline ROUDET 11 Introduction au Génie Logiciel Céline ROUDET 12
Vie du logiciel (et coûts engendrés côté MOE) La qualité logicielle

• Définitions (AFNOR) :
 Aptitude d’1 produit/service à satisfaire les besoins des utilisateurs
 Assurance qualité : manière dont on compte atteindre la qualité

• Manuel qualité / assurance qualité s’appuient sur :


 Rédaction de standards, normes (ISO), conventions, guides
 Savoir-faire, expertise de l’entreprise, expériences acquises

• Plan qualité / assurance qualité visent à :


 Réduire nb erreurs résiduelles
(d’après J. Printz)
 Maîtriser coûts et durée de développement
 Sans nuire à : innovation & créativité
67% du coût total d’un logiciel  maintenance (dont 48% à réparer des défauts)
60% des défauts correspondent à des erreurs de spécification et de conception
(d’après A-M. Hugues) 13 Introduction au Génie Logiciel Céline ROUDET 14

Facteurs, critères et métriques (McCall – 1977) CM1 : Introduction au Génie Logiciel


Qualité
globale
1- Introduction :
Qualité Qualité – Définitions autour du logiciel
Gestion Technique
– Crise du logiciel et bugs célèbres
Point de vue Vue orientée – Solutions proposées par le Génie Logiciel
utilisateur Facteur Facteur "management "
Vision externe de la qualité (exigences)
ex : maintenabilité 2- Activités du processus / étude de cas

Point de vue
Vue orientée
3- Historique des différents cycles de vie
concepteur
Critère Critère Critère logiciel
Vision interne
qui détermine
ex : cohérence, concision, la qualité
simplicité, modularité …

Mesures quantitatives Métrique Métrique Métrique


15 Introduction au Génie Logiciel Céline ROUDET 16

La crise du logiciel Constats en 1979


Étude du Government Accountability Office sur 163 projets :
• Apparue au début des années 70
 29% des logiciels n’ont jamais été livrés
• Absence de maîtrise des projets (fiabilité, coûts, délais)
 45% des logiciels ont été livrés... mais n’ont pas été
• Mauvaise qualité des produits
utilisés
 Ne répondent pas aux besoins définis (car mal définis)
 Erreurs résiduelles dans le produit final (car pas assez de  19% des logiciels ont été livrés mais ont du être
tests) modifiés pour être utilisés
 Difficultés d'évolution (non prévues à l’avance)
 → 7% de logiciels livrés et utilisés en l’état
• Projets en attente, faute d’une gestion rigoureuse

Ces projets ont tous utilisé le modèle en cascade

Introduction au Génie Logiciel Céline ROUDET 17 Introduction au Génie Logiciel Céline ROUDET 18
La crise du logiciel n’est pas terminée ! Les facteurs d’échec
Raisons invoquées des projets abandonnés (études du
• Réussite des projets informatiques (études du Standish
Group)
Standish Group en 1995) :
Année Succès Mitigé Echec
Pb Analyse
1995 16% 53% 31% des besoins

2000 28% 49% 23% Pb Comm.


avec client
2004 29% 53% 18%

2009 32% 44% 24% Pb Gestion


 Succès : livré à temps, sans dépassement de budget et avec
toutes les fonctionnalités initialement spécifiées du projet
 Mitigé : livré et opérationnel, mais avec moins de fonctionnalités
que prévu et un dépassement de budget et/ou de temps
 Echec : annulés ou non utilisés après livraison

IT : Information Technology

Introduction au Génie Logiciel Céline ROUDET 19 Introduction au Génie Logiciel Céline ROUDET 20

Les facteurs de succès Exemples de logiciels défaillants


Raisons invoquées des réussites projets (études du
• Echec du 1er lancement d’Ariane 5 (4 juin 1996) : explose en vol
Standish Group en 1995) :
 Réutilisation dans Ariane 5 d’un composant d’Ariane 4 (contrainte
cachée)
Bonne Comm
 Cause : problème au niveau de la validation (tests d’intégration)
avec le client
Bonne gestion • Mission Venus : sonde Mariner
du projet
 Passage à 5 000 000 Km de la planète, au lieu de 5 000 Km prévus
Bonne Analyse  Cause : remplacement d'une virgule par un point ( format US des
des besoins nombres)

• Accidents de radiothérapie à Epinal (2004 – 2005)


 Surdosages dus à des erreurs de paramétrage d'un logiciel
 Cause : mauvaise ergonomie d'un logiciel obsolète

Introduction au Génie Logiciel Céline ROUDET 21 Plus de détails : http://www.mines.inpl-nancy.fr/~tisseran/cours/qualite-logiciel/qualite_logiciel.html 22

CM1 : Introduction au Génie Logiciel Solutions proposées par le GL

1- Introduction : • Gérer la complexité (liée aux coûts) :


 Séparer besoins fonctionnels / aspects technologiques
– Définitions autour du logiciel
 Décomposer en sous-systèmes
– Crise du logiciel et bugs célèbres  Modéliser (UML), documenter, commenter (Javadoc), …

– Solutions proposées par le Génie Logiciel


• Augmenter la productivité (liée à la réussite) :
Génération de code, reverse engineering, gestion de versions ( SVN),
2- Activités du processus / étude de cas intégration continue (Jenkins), réutilisation de composants (Java Beans), …

3- Historique des différents cycles de vie • Améliorer la qualité / fiabilité :


 Designs patterns & Refactoring
 Vérification, Validation & Communication
 Organisation du travail en équipe

Introduction au Génie Logiciel Céline ROUDET 23 Introduction au Génie Logiciel Céline ROUDET 24
Organiser le processus de développement CM1 : Introduction au Génie Logiciel
• Processus = enchaînement d’activités
1- Introduction
• Pour chaque activité, on doit déterminer des rôles :
2- Activités du processus / étude de cas
 Qui fait • Capture/analyse des besoins
Activité Résultats
 Qui approuve Entrées • Spécifications fonctionnelles
intermédiaires
 Qui vérifie
• Planifications et gestions
 Qui valide Validation / Vérification
Gestion de projet, Doc • Conception détaillée
 Qui est consulté
des versions, …
• Implémentation et tests unitaires
• Assurance qualité  contrôles réguliers : • Intégration, qualification et déploiement
 Validation : le bon produit ? (conforme aux besoins) • Maintenance
 Vérification : le produit correct ? (sans bugs, défauts)
3- Historique des différents cycles de vie

Introduction au Génie Logiciel Céline ROUDET 25 Introduction au Génie Logiciel Céline ROUDET 26

Étude de cas : projet tutoré à 4 étudiants (2009–10) Maquette 1 de l’IHM (logiciel Visio)
• Sujet :
 Modélisation et simulation des activités d’une entreprise de
collecte, traitement, stockage et expédition de céréales (blé,
orge, colza, …)

• Opérations effectuées par l’entreprise :


 nettoyage à la réception ou à l’expédition,
 ventilation lors du stockage (conservation des céréales),
 injection d'un produit insecticide (si insectes présents).

• Problématique : accidents dans les silos


 explosions (mise en suspension des poussières)
 ou incendies (caractéristiques des produits / matériels).

Fenêtre principale
 l’entreprise souhaite se doter d’un système informatique de
suivi en temps réel pour la surveillance continue des
dispositifs matériels
27 28

Maquette 2 de l’IHM (logiciel Visio) Synthèse des étapes/activités du processus

Détail des
cellules

29 30
1) Analyse des besoins (le QUOI) 2) Spécifications fonctionnelles
Diag. de séquence (Traitement du grain) : diag. d’intéraction (dynamique)

→ use cases
(diagramme de
comportement UML) :
besoins
fonctionnels

+ précisions du rôle de
chaque acteur
+ liste des tests envisagés pour valider les scenarii
+ contexte du système (modèle du domaine / du métier)
+ besoins non fonctionnels et architecturaux + maquette, prototype : guider le choix de l’architecture
31 32

3) Planifications et gestions 3.1) Diagrammes de Gantt prévisionnels


• Gestion du temps / délais : planification et maîtrise du temps ( MS Project,
GantProject, TaskJuggler, … )

• Gestion de la qualité : système de contrôle pour les produits intermédiaires


du cycle de vie (inspection, revue ), plan/manuel qualité, normes, standards, ...

• Gestion des ressources (humaines, matérielles)


 budget transformé en travail, locaux, matériels, déplacements
 formation sur les méthodes, outils, nouvelles technologies

• Gestion de la configuration, des versions, …


 cohérence des composants, différences d’une installation à une autre,
évolution au cours du temps,
 outils/méthodes pour faciliter :
• gestion des versions, du travail collaboratif ( CVS, SVN, Git),
• reconstruction du système ( ant, maven, gradle, make, cmake ),
• intégration continue ( CruiseControl, Hudson, Jenkins )
+ diagramme réel et justifications des ajustements
+ tableaux de suivi du projet, ...
Introduction au Génie Logiciel Céline ROUDET 33 34

4) Conception (choix de l’architecture technique) 4.2) Diagramme de classes (de structure : statique)

4.1) MCD (Modèle Conceptuel de Données - Merise)

Dictionnaire des données


+ explications
+ Design Patterns,
+ plan d’intégration des modules, plans de tests 36
35
4.3) Autres diagrammes (Merise, UML) 5) Réalisation

MCT (Merise) : enchaînement des opérations, vue globale des
traitements/activités du domaine 
Implémentation + documentation :

UML : – IDE/AGL (Eclipse, Netbeans, Jbuilder, … ),
Structure
Comportement – documentation des classes (Javadoc), …
Intéraction – génération de code et rétroconception (reverse engineering),
– réutilisation de composants logiciels ( Java Beans), ...

• Restructuration et tests de vérification


– refactoring (améliorer la structure du code), assertions ( JML),
debugger (IDE), robustesse du système (exceptions), ...
– environnements de tests unitaires (JUnit, Mockito, EasyMock ),
couverture de code, ...

Tiré de : http://laurent-audibert.developpez.com/Cours-UML/?page=mise-en-oeuvre-uml#L9 37 38

5.1) Manuel utilisateur 5.1) Manuel utilisateur (2)

Fenêtre de visualisation du contenu du silo


Fenêtre principale
+ actualisations (diagrammes UML, Merise, tests, ...)
39 40

6) Intégration, validation et qualification Un choix possible : les méthodes formelles



Pour traiter durant tout le processus les dysfonctionnements logiciel
• Intégration matérielle et logicielle 
Notation/modèle formel + sémantique bien définie + outillage
 Modules intégrés avec les autres (plan d'intégration),

Exemples : automates, réseaux de Pétri, B, Z, LOTOS, SDL, CSP, CCS, ...
 ensemble testé conformément aux plans de tests
Analyse et spécification :
- Description formelle des concepts clés du problème (domaine d’application)
• Tests de validation (le bon produit ?) - Spécification formelle du comportement du système (explicites, précises, non-ambigües)
 en accord avec les besoins du client - Prototypage

 conformément aux spécifications initiales


Conception architecturale et détaillée :
- Spécification formelle de l’interface des modules
- Méthode rigoureuse de raffinement
• Qualification (ou recettes : une fois le logiciel terminé) :
Codage :
 Tests dans des conditions normales d'utilisation, - Preuves de programmes
 puis logiciel prêt à la mise en exploitation - Synthèse automatique du code
- Utilisation d’assertions : pré/post-conditions, invariants (JML)

Tests : Génération automatique des tests (base pour leur développement)


Introduction au Génie Logiciel Céline ROUDET 41 42
7) Maintenance du projet CM1 : Intro au Génie Logiciel

[selon C. Larman]
Extensions utilisateur . . . . . . . . . . . 41,8% 1- Introduction
Correction d’erreurs . . . . . . . . . . . . 21,4%
Modification format de données . . . 17,4%
Modification de matériel . . . . . . . . . . 6,2% 2- Activités du processus / étude de cas
Documentation . . . . . . . . . . . . . . . . . 5,5%
Efficacité . . . . . . . . . . . . . . . . . . . . . . 4%
3- Historique des différents cycles de vie
• Modèles séquentiels
• Modèles itératifs et incrémentaux
Maintenance, évolution :
 correction des erreurs (robustesse)
 demandes d’évolution (nouvelles
fonctionnalités, portabilité, …)
 étape longue, critique et coûteuse (80%
de l’effort)

43 Introduction au Génie Logiciel Céline ROUDET 44

Modèle en cascade (1970)


Problèmes du modèle en cascade
Définition des exigences Séquentiel linéaire
Document formalisé
(un des premiers modèles proposés)
• Difficile de gérer les changements en cours de projet
Spécification Ex : Merise
• Applicable pour les projets bien compris et maîtrisés
générale
Architecture du système • Le produit apparaît à la fin : risques élevés / non contrôlés
• identification tardive des problèmes
Spécification
détaillée • preuve tardive de bon fonctionnement
Modules et interactions

Implémentation Utilisation des fonctionnalités spécifiées [selon C. Larman]


Code et tests unitaires
Jamais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45%
Intégration
Rarement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19%
Première version livrable
Parfois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16%
Erreur de spécification Souvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13%
Déploiement
trouvée en maintenance : Livraison et installation Toujours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7%
+ de 100 fois plus cher
Mises à Maintenance
jour
45 Introduction au Génie Logiciel Céline ROUDET 46

Modèle en V (1979) Horizontal : préparation de la vérification Avantages et inconvénients du cycle en V


Définition des exigences Tests d’acceptation
• Avantages :
Vertical : développement des activités

 Associe à chaque activité de conception une activité de


Spécifications générales Tests systèmes test
Validé par  Validations intermédiaires  meilleure anticipation
Spécifications détaillées Tests d’intégration  Évite les retours en arrière

Codage Tests unitaires


• Inconvénients :
Gestion des configurations  Modèle toujours séquentiel : peu d’adaptabilité
 Tests commencent après le développement
Gestion de projet  Preuve toujours tardive du bon fonctionnem ent
Plan assurance qualité

Introduction au Génie Logiciel Céline ROUDET 47 Introduction au Génie Logiciel Céline ROUDET 48
CM1 : Introduction au Génie Logiciel Modèle itératif

• But : améliorer les modèles séquentiels (+ de flexibilité)


1- Introduction
• Gestion des risques fait partie du modèle :
2- Activités du processus / étude de cas – Minimisation grâce à 1 analyse régulière (client)

3- Historique des différents cycles de vie • A chaque nouvelle itération :


− Modèles séquentiels – Maîtrise d'une partie des risques (+ importants d’abord)
− Modèles itératifs et incrémentaux – Preuve de faisabilité / adéquation avec les objectifs
(maquette, prototype)
– Nouvelles fonctionnalités (produit de plus en plus
complet)

Introduction au Génie Logiciel Céline ROUDET 49 Introduction au Génie Logiciel Céline ROUDET 50

Source : Wikipedia
Modèle itératif (2) Modèle en spirale (1986)

s
ue
isq
sr
e de
s
aly
An

Schéma tiré du cours de P.-A. Muller 51 52

Produits opérationnels :
Avantages et inconvénients du modèle en spirale Modèle incrémental incréments livrables

- Logiciel construit par incréments


• Avantages : de fonctionnalités

 Prise de décision managériale et non purement technique - Premier incrément = noyau

 Bilans réguliers : faisabilité, satisfaction client - Chaque incrément aide à gérer


les risques techniques
 Divise le traitement de la complexité de l’application
 Rectifier au plus tôt les erreurs et prendre en compte
l’évolution des besoins

• Inconvénients :
 Qualité des prototypes développés souvent faible
 Le client ne voit le système réalisé qu’à la fin !

Introduction au Génie Logiciel Céline ROUDET 53 Schéma tiré du cours de P. Collet 54


Modèle incrémental et itératif UP/USDP : répartition des phases, disciplines et itérations

• Incrémental : parties planifiées, développées au fil du temps et


intégrées dès qu’elles sont terminées
Phases :
• chaque incrément fonctionnel :
– donne lieu à un produit fini (exécutable testé et intégré)
– est à taille humaine (un besoin du client)

• Itératif : une partie est remaniée et améliorée plusieurs fois avant


d’atteindre son état définitif

• Utilisé par les méthodes suivantes :


– UP ou USDP (Unified Software Development Process)
– XP (eXtreme Programming) : méthode agile

• Le client peut influencer le développement

Itérations :
Un système complexe qui fonctionne a toujours évolué à partir d’un système
simple qui a fonctionné … (John Gall) 55 56

Différents cycles de vie : cascade vs iter. & incr.


Vie d’un logiciel avec UP/USDP (1997)

• Composée de cycles (de développement)


– 1 cycle = 1 nouvelle version du logiciel
– chaque cycle est composé de 4 phases

• Chaque phase d’un cycle est composée d’itérations


– chaque itération : composée d’activités/disciplines
 Modélisation métier, capture des besoins
 Analyse, conception
 Réalisation, test, déploiement …

– ... en proportions variables en fonction du temps

57 Tiré du cours d’E. Chenu 58

Tiré du cours d’E. Chenu


Cycles de vie (2) Liens : processus de développement et qualité
– Cours d’A. M. Hugues : http://users.polytech.unice.fr/~hugues/GL/qualite.html
– Cours de P. Collet : http://deptinfo.unice.fr/twiki/bin/view/Minfo05/GLOO
– Cours d’E. Lefrançois : http://homepage.hispeed.ch/e.lefrancois/heig/files/Download/GL.pdf
– Cours de M. Amiguet : http://www.matthieuamiguet.ch/media/documents/MA-QLOGI-02-Normes.pdf

Livres :
– Quality factors. J.A. McCall, in Encyclopædia of Software Engineering, J.Wiley & Sons - 1994
– Le génie logiciel. J. Printz. Eyrolles - 2005
– Object-Oriented Analysis and Design with applications, 3rd ed. G. Booch et al. – 2007
– Programmation en C++ et génie logiciel. V. T'kindt. Dunod – 2007
– Software Engineering - 9th ed. I. Sommerville. Addison-Wesley – 2010
– Mémento - Cahier des charges informatique. Y. Constantinidis. Eyrolles – 2011
– Tout sur le développement logiciel - Ecrire du code efficace, Jean-François Pillou,
Christine Eberhardt, Dunod, 2011
– Architecture logicielle. Concevoir des applications simples, sûres et adaptables.J.
Printz. Dunod – 2012
– Architecture logicielle - Pour une approche organisationnelle, fonctionnelle et
technique. T. Bailet. Editions ENI – 2012
– Expression du besoin et cahier des charges fonctionnel. Élaboration et rédaction–
3rd éd. J. Bernard-Bouissières. Editions AFNOR – 2013
– Design Patterns en Java. Les 23 modèles de conception - Descriptions et solutions
illustrées en UML2 et Java, Laurent Debrauwer, Eni, 2013

Introduction au Génie Logiciel Céline ROUDET 59 Introduction au Génie Logiciel Céline ROUDET 60

Vous aimerez peut-être aussi