Vous êtes sur la page 1sur 52

Génie Logiciel

Sciences-U EII1
Structure du cours
• Le GL dans son contexte
– Système d'information
– Cycle de vie, gestion de projet
• Génie logiciel
– Pourquoi, comment
– AGL
• Méthodes AGILE
– Puma, Scrum, RUP
• Tests
– Typologie, Méthodologie
SciencesU - EII1 - Génie Logiciel 2
Objectifs
• Etudiant : “programming in the small” :
– Programmation individuelle sur de petits
problèmes
– Algo, langages de programmation, structures
de données
– Parfois un peu de méthodologie (analyse
descendante)

SciencesU - EII1 - Génie Logiciel 3


Objectifs
• Entreprise : “programming in the large”
– Travail en équipe sur des projets longs et
complexes
– Spécifications de départ pas toujours précises
– Dialogue MOA : aspects métier et non
techniques
– Organisation, planification, gestion de risques,
démarche qualité

→ démarche d'ingénierie
SciencesU - EII1 - Génie Logiciel 4
Objectifs
• Génie logiciel : démarche d'ingénierie
appliquée à l'informatique
• Ingénierie :
Ensemble des fonctions allant de la conception et des
études à la responsabilité de la construction et au contrôle
des équipements d'une installation technique ou industrielle
(en anglais : engineering) (JO, 1980)

SciencesU - EII1 - Génie Logiciel 5


Rappels
• Système d'information :
– Ensemble organisé de ressources permettant
d'acquérir, stocker, structurer et communiquer
des informations.

• Système informatique :
– Partie automatisée d'un système d'information

SciencesU - EII1 - Génie Logiciel 6


Aspects économiques
• Taux de réussite des projets informatiques

Echec Mitigé Succès


1995 31% 53% 16%
2000 23% 49% 28%
2004 18% 53% 29%

Le taux d'échec croît en fonction de la


complexité d'un projet !

SciencesU - EII1 - Génie Logiciel 7


Aspects économiques
• Importance croissante de l'informatique
dans l'économie
• Coût software > coût hardware
• Coût maintenance > coût conception

→ améliorer la qualité du software !

SciencesU - EII1 - Génie Logiciel 8


Qualité ?
• Démarche qualité : ISO 9126 (puis ISO 25000)
• 6 facteurs divisés en 27 sous-caractéristiques

• Qualité externe : vision client


• Qualité interne : vision développeur

SciencesU - EII1 - Génie Logiciel 9


Facteurs de Qualité
• Complétude fonctionnelle
• Ergonomie
• Fiabilité
• Maintenabilité
• Efficacité
• Portabilité

• Démarche qualité présente tout au long du


cycle de vie d'un logiciel et nécessite de
modéliser le SI
SciencesU - EII1 - Génie Logiciel 10
Cycle de vie d'un logiciel
• Logiciel : ensemble de programmes
permettant à un système informatique
d'assurer une tâche.
– Immatériel
– Non rival

SciencesU - EII1 - Génie Logiciel 11


Cycle de vie
• Norme ISO 12207 (1995) décrit un modèle
de processus :
– Processus de base
– Processus de support
– Processus organisationnels

• Processus :
activité ou ensemble d'activités qui utilise des
ressources pour convertir des éléments d'entrée
en éléments de sortie possédant une valeur
ajoutée. SciencesU - EII1 - Génie Logiciel 12
Cycle de vie
• Recouvre le développement et l'évolution
d'un logiciel : processus composé de sous
processus communiquant entre eux et
dont certains évoluent en parallèle.
• Chaque processus est caractérisé par :
– Conditions de déclenchement
– Activités déployées
– Ressources utilisées
– Produits résultants
– Critères de terminaison
SciencesU - EII1 - Génie Logiciel 13
Cycle de vie

SciencesU - EII1 - Génie Logiciel 14


Cycle de vie : processus
• Gestion de projet :
– Initiation
– Pilotage et suivi
– Gestion de qualité du logiciel

• Pré-développement :
– Recueil des besoins utilisateur
– Conception

SciencesU - EII1 - Génie Logiciel 15


Cycle de vie : processus
• Développement (→ cycle de développement) :
– Besoins en logiciels
– Conception architecturale
– Conception détaillée
– Codage
– Intégration
– Réception du logiciel
– Intégration du système
– Test de terrain

SciencesU - EII1 - Génie Logiciel 16


Cycle de vie : processus
• Post développement :
– Installation
– Exploitation
– Maintenance et support
– Retrait

• Processus globaux :
– Vérification et validation
– Gestion de la configuration
– Documentation
– Formation SciencesU - EII1 - Génie Logiciel 17
Cycle de développement
• Accompagné par certaines activités :
– Gestion de projet :
• Planification : générer une décomposition en
activités et tâches élémentaires ayant des
interrelations minimales (Gantt, Pert, etc...).
Produit une structure de référence définissant les
tâches, le calendrier, l'allocation des ressources,
les procédures.
• Pilotage et suivi : enregistre l'avancement du projet
et mesure les écarts par rapport à la structure de
référence définie précédemment.

SciencesU - EII1 - Génie Logiciel 18


Cycle de développement
• Accompagné par certaines activités :
– Gestion de la qualité : processus pilotant les
activités de vérification et de validation afin de
garantir la qualité du produit livré.

– Documentation : concrétisation (livrable


résultant) de chaque phase :
• Documents de gestion de projet
• Documents techniques de réalisation
• Manuels d'utilisation et d'exploitation

SciencesU - EII1 - Génie Logiciel 19


Cycle de développement
• Accompagné par certaines activités :
– Gestion de la configuration : processus visant
à maîtriser les évolutions du logiciel :
• Identifier les éléments de configuration et leurs
relations
• Les archiver (états initiaux et successifs)
• Contrôler leurs modifications (→ gestion du
changement)
NB : élément de configuration : tout document,
programme source, moyen de reproduire un
binaire, jeu de données de tests, procédures et
scenarii de test.
SciencesU - EII1 - Génie Logiciel 20
Cycle de vie : modèles
• Modèle en cascade (BOEHM, 70s) :
– Hérité de l'industrie du BTP : séquentiel,
rigide

• Modèle en V (Golberg, 80s) :


– Adapté à l'ingénierie informatique : + réactif,
limite les retours aux étapes précédentes

• Autres modèles : W, spirale,...

SciencesU - EII1 - Génie Logiciel 21


Modèle en cascade

SciencesU - EII1 - Génie Logiciel 22


Modèle en V

SciencesU - EII1 - Génie Logiciel 23


Facteurs de Qualité
• Complétude fonctionnelle
• Ergonomie
• Fiabilité
• Maintenabilité
• Efficacité
• Portabilité

• Démarche qualité présente tout au long du


cycle de vie d'un logiciel et nécessite de
modéliser le SI
SciencesU - EII1 - Génie Logiciel 24
Modélisation des SI
• Méthodes d'analyse :
– Fonctionnelles : 70s
– De l'information : 80s
– Orientées objet

SciencesU - EII1 - Génie Logiciel 25


Méthode d'analyse
fonctionnelle
• SADT (Structured Analysis and Design
Technic), IDEF0 (Integration Definition for
Function Modeling)
– 1977, USA, Softech
– Analyse descendante
– Démarche systémique de modélisation d'un
système complexe

SciencesU - EII1 - Génie Logiciel 26


SADT/IDEF0
• Système :
– Forme : structuralisme
– Logique de fonctionnement
– Échanges

SciencesU - EII1 - Génie Logiciel 27


SADT/IDEF0
• Illustration :

SciencesU - EII1 - Génie Logiciel 28


SADT/IDEF0
• Vue d'ensemble :

SciencesU - EII1 - Génie Logiciel 29


SADT/IDEF0

Avantages Limites
● Structure hiérarchique ●Pas de représentation séquentielle
●Pas d'opération booléenne

SciencesU - EII1 - Génie Logiciel 30


Méthode d'analyse de
l'information
• Objectif : prendre une décision
• S'appuie sur méthodes systémiques
• Centrées sur modélisation des données
• Modèle DIK :
– Données → Informations → Connaissances

SciencesU - EII1 - Génie Logiciel 31


Méthode d'analyse OO
• MACAO : Méthode d'Analyse et de
Conception d'Applications Orientées Objet
• Processus itératif
• Intervention des utilisateurs
• Notation : UML

SciencesU - EII1 - Génie Logiciel 32


Méthode d'analyse OO
• Vue 4+1 de Kruchten :

SciencesU - EII1 - Génie Logiciel 33


Méthode d'analyse OO
• Vue utilisateur :
– Vue du système par ses utilisateurs finaux
– Aspect fonctionnel : cas d'utilisateur, acteurs,
classes, collaboration

SciencesU - EII1 - Génie Logiciel 34


Méthode d'analyse OO
• Vue logique :
– vue de haut niveau se concentrant sur
l'abstraction et l'encapsulation, elle modélise
les éléments et mécanismes principaux du
système
– Aspects statiques : classes, objets,
paquetages
– Aspects dynamiques : d'interaction
(séquence, collaboration), d'état-transition et
d'activité

SciencesU - EII1 - Génie Logiciel 35


Méthode d'analyse OO
• Vue des processus :
– Décomposition en tâches et processus,
regroupement, communication
– Aspect parallélisme : threads, processus,
tâches, interactions

SciencesU - EII1 - Génie Logiciel 36


Méthode d'analyse OO
• Vue des composants :
– Vue de bas niveau : identifie les modules qui
réalisent physiquement les classes de la vue
logique. Décomposition en modules et
regroupement en paquetages.
– Aspect statique : paquetages, méthodes,
threads

SciencesU - EII1 - Génie Logiciel 37


Méthode d'analyse OO
• Vue de déploiement :
– Décomposition en noeuds d'exécution, décrit
les ressources matérielles et la répartition du
logiciel dans ces ressources
– Aspect répartition : diagramme de
déploiement

SciencesU - EII1 - Génie Logiciel 38


UML : rappels
• 9 diagrammes
• Vues statiques du système :
– Diagramme de cas d'utilisation
– Diagramme d'objets
– Diagramme de classes
– Diagramme de composants
– Diagramme de déploiement

SciencesU - EII1 - Génie Logiciel 39


UML : rappels
• Vues dynamiques du système :
– Diagramme de collaboration
– Diagramme de séquence
– Diagramme d'états-transitions
– Diagramme d'activités

SciencesU - EII1 - Génie Logiciel 40


AGL
• Atelier de Génie Logiciel (CASE :
Computer Aided Software Engineering) :
– Ensemble de programmes informatiques
permettant eux-même de produire des
programmes de manière industrielle.
– Collection d'outils et de méthodes
automatisées assistant les concepteurs de
logiciels à différents niveaux du cycle de
développement.

SciencesU - EII1 - Génie Logiciel 41


AGL : pourquoi ?
• Ingénierie des SI :
– Accroissement de la taille des applications
– Accroissement de la complexité
– Importance de la productivité
– Importance de la qualité des produits

SciencesU - EII1 - Génie Logiciel 42


AGL : pourquoi ?
• Besoin des utilisateurs d'un système
informatique :
– Aide au développement des systèmes
– Aide à la gestion de grands projets
– Prise en comte des aspects techniques
(distribution, travail en groupe,...)
– Gain de productivité et de qualité

SciencesU - EII1 - Génie Logiciel 43


AGL : comment ?
• Besoins généraux :
– Importance de la modélisation sur le codage
– Flexibilité pour l'application des méthodes
– Outils s'adaptant à l'utilisateur
– Capitalisation de connaissances

SciencesU - EII1 - Génie Logiciel 44


AGL : comment ?
• Besoins spécifiques :
– Différentes phases du cycle de vie (collecte
des besoins, workflows, tests, déploiement,...)
– Différents types d'applications (embarquées,
web,...)
– Différents types d'organisations (centralises,
décentralisées)
– Différentes approches de modélisation
(orientées données, orientées objet,
structurées,...)

SciencesU - EII1 - Génie Logiciel 45


Un AGL universel ?
• Spécificité des besoins et des méthodes
→ spécificité des AGL

SciencesU - EII1 - Génie Logiciel 46


AGL : objectifs
• Automatisation :
– Des tâches manuelles → productivité
– Des contrôles et vérifications → qualité
• Intégration :
– Langage commun et support à la production
de documents
– Vision globale de l'application des méthodes
– Représentation homogène et consistante
• Guider l'utilisateur

SciencesU - EII1 - Génie Logiciel 47


AGL : composantes
• Structures :
– Objets ou concepts manipulés : fichiers,
arbres, BDD, dictionnaires, classes, etc...
• Mécanismes :
– Langages/outils pour manipuler les
structures : peuvent être visibles ou cachés à
l'utilisateur de l'AGL (exemple : vérificateur de
syntaxe)
• Règles :
– Stratégies/directives définies par les
méthodes et implantées dans les AGL
SciencesU - EII1 - Génie Logiciel 48
AGL : typologie
• Conception (upper-case) :
– Phases d'analyse et conception

• Développement (lower-case) :
– Phases d'implémentation et de test

• Dédiés à un langage particulier (Smalltalk,


InterLisp...) :
– Développement rapide et convivial
– Application développée intégrée à (et souvent
indissociable de) l'environnement : problème de portabilité
SciencesU - EII1 - Génie Logiciel 49
AGL : typologie
• Conception (upper-case) :
– Edition de diagrammes, dictionnaires de données,
édition de rapports, générateurs de squelettes, outils
de prototypage
– Basés sur une méthode d'analyse et conception
(UML, Merise, etc...)
– Exemple : PowerAMC
• Développement (lower-case) :
– Editeurs (dirigés par la syntaxe), générateurs d'IHM,
compilateurs, optimiseurs, débugger
– Exemple : Windev

SciencesU - EII1 - Génie Logiciel 50


AGL : exemples
• Conception

• Développement

SciencesU - EII1 - Génie Logiciel 51


Méthodes AGILE

SciencesU - EII1 - Génie Logiciel 52