Académique Documents
Professionnel Documents
Culture Documents
Pr Hassan SILKAN
Silkan_h@yahoo.fr
Objectifs du Cours
Connaître les principes du Génie Logiciel et leurs intérêts.
Connaître les méthodes et techniques qui permettent de
développer et de maintenir des systèmes logiciels complexes,
sûrs et de qualité.
B. W. Boehm, 1976
« Application pratique de la connaissance scientifique dans la conception et
l'élaboration de programmes informatiques et de la documentation associée
nécessaire pour les développer, les mettre en oeuvre et les maintenir »
I.1. Qu’est-ce que le génie logiciel ?
Faire du Génie Logiciel
= utiliser les techniques d’ingénierie du logiciel
Bénéfices attendus :
maîtrise du temps de développement, assurance de la qualité,
maintenance facilitée,…
Logiciel
Caractéristiques souhaitées :
Adéquation avec les besoins
Maintenance aisée
Bon marché
Rapidement développé
Souple : facile à modifier
Historique du développement logiciel
7
défaillance du personnel
calendrier et budget irréalistes
développement de fonctions inadaptées
Développement d'interfaces utilisateurs inadaptées
validité des besoins
composants externes manquants
tâches externes défaillantes
problèmes de performance
exigences démesurées par rapport à la technologie.
II.3. Risques majeurs du développement du logiciel
Conception
produit Spécifications détaillées
réalisati
on corrections
version
révisions tests
Spécification globale
Cette activité utilise les résultats de l'analyse des besoins, les
considérations techniques et la faisabilité informatique pour produire une
description de ce que doit faire le système mais sans préciser comment il le
fait (on précise le quoi mais pas le comment)
III.1.Cycle de vie du Logiciel
Conception architecturale et détaillée
Enrichir la description du logiciel de détails d'implémentation afin
d'aboutir à une description très proche d'un programme (décrire le
comment).
La conception architecturale (ou conception globale) a pour but de
décomposer le logiciel en composants plus simples
La conception détaillée: fournit pour chaque composant une
description de la manière dont les fonctions ou les services sont
réalisés
Programmation
Réalisation, à partir de la conception détaillée, d'un ensemble de
programme ou de composants de programmes.
III.1.Cycle de vie du Logiciel
Gestion de configurations et intégration
La gestion de configurations a pour but de maîtriser l'évolution et la
mise à jour des composants tout au long du processus de
développement.
L'intégration a pour but de réaliser un ou plusieurs systèmes
exécutables à partir des composants.
Validation et vérification
Validation : a-t-on décrit le bon système, celui qui répond à l'attente
des utilisateurs ?
Vérification : le développement est-il correct par rapport à la
spécification globale ?
III.1.Cycle de vie du Logiciel
Processus de développement
Le départ est
connu
Conception
Programmation
Test
Maintenance
Inconvénients
Obligation de définir la totalité des besoins au départ
La notion de système n’est pas prise en compte
Passage brusque d’une étape de spécification des besoins à une phase de
spécification détaillé trop techniques.
La phase de test ne concerne que le bon fonctionnement du système,
Code disponible tardivement dans le projet
Aucune préparation des phases de vérification
III.3.Le modèle en cascade (Waterfall Model)
Remarque : ce n’est pas parce qu’un document passe avec succès d’une
étape de validation sur papier que le logiciel qu’il décrit ne donnera pas
forcement des résultats convaincants.
des retours d’information entre les phases sont nécessaires pour
incorporer des corrections.
Années 65-75
Identification des entrées, transformations et sorties.
Analyse
Conception
Programmation
Test
Maintenance
III.4.Le modèle en V
Validé par
Analyse Tests fonctionnels
Programme
Spécifi- Dossiers
cations de
Gestion Simulation Prototypage Conception
de projet des
+ spécifications
Mécanismes +
Gestion Design Patterns
du changement Codage
+
Gestion
Code +Tests unitaires
de l’environ-
nement Sources +
Objets Exploitation
+ Librairies
Maintenance
Réutilisation
Composants métier
III.4.Le modèle en Y
Avantages :
Utilisation immédiate de toutes les compétences
Meilleure traçabilité sur l’ensemble du développement (réutilisation des
modèles d’Analyse + règles de passage)
Validation précoce des besoins
Possibilité de générer le code automatiquement
Industrialisation de la réutilisation
Inconvénients :
Obligation de définir la totalité des besoins au départ
III.5.Le modèle itératif
Il est basé sur l’évolution de prototypes exécutables, mesurables et donc sur
l’évolution d’éléments concrets.
Amélioration
Amélioration
Amélioration
Tests
Tests
Tests
Construction Construction
Construction
III.5.Le modèle itératif
Intérêts
Prise en compte des changements du cahier des charges
Intégrations successives
Dilution des risques
Changement de stratégie
Meilleure conception
Amélioration du processus lui-même
III.5.Le modèle itératif
Modèle de « prototypage »
Consulter Construire ou
Client modifier prototype
Tester le
prototype
Jetable
Son but est d’assurer de la faisabilité et vérifier les exigences
Le produit est reconstruit en tenant compte du feed-back de l’utilisateur
la nouvelle version est développé en utilisant le modèle en cascade
Evolutif
Plusieurs prototypes sont développés (avec minimum de fonctionnalités)
Seul le prototype retenu par l’usager est évolué en un produit final
III.5.Le modèle itératif
Maquette ou prototype rapide
Analyse préliminaire Analyse et sélection de
des besoins nouvelles fonctions
Spécification
définitives
III.5.Le modèle itératif
prototype expérimentale
Utilisé au niveau de la conception pour : S'assurer de la faisabilité de parties
critiques et Valider des options de conception
Spécification Approfondissement
Initiale
Sélections d’un
point ou d’une
caractéristique Construction
du prototype
Evaluation
Confirmation ou affinement
prototype évolutif des spécifications
Etude préalable
Spécification de base
Première Identification
Conception et 1er version
réalisation
Evaluation
Mise en ouvre et
utilisation
Corrections et
Nouvelle version
améliorations
Version finale
III.5.Le modèle itératif
L’ordonnancement des itérations est basée sur les priorités entre cas
d’utilisation et sur l’étude du risque
Chaque prototype réduit une part du risque
Un prototype donné est construit avec des buts précis et clairement
exprimés
L’évaluation du prototype est effectuée par rapports à ces buts
L’enchaînement des prototypes est décrit dans le plan des prototypes
Les priorités et l’ordonnancement de construction des prototypes
peuvent changer avec le déroulement du plan
III.5.Le modèle itératif
Avantages
Au cours de développement, certains prototypes sont montrés aux
utilisateurs.
L’utilisateur est placé devant des situations concrètes lui
permettant de mieux structurer ses désirs et de les communiquer à
l’équipe de développement.
L’utilisateur est totalement impliqué, prend sa part de
responsabilité
accepte facilement le nouveau système.
L’équipe de développement est plus motivé du fait de la proximité
de l’objectif.
III.5.Le modèle itératif
Avantages
L’intégration de différents composants des logiciels est réalisée de
manière progressive durant sa construction.
Les progrès se mesurent par des programmes mesurables plutôt
que par des documents ou des estimations comme dans le cas de
modèle en cascade.
L’encadrement dispose ainsi d’éléments objectifs pour évaluer les
progrès et l’état d’avancement avec plus de fiabilité.
III.6.Le modèle incrémentale
Principe
découper l’expression des besoins en sous-parties (lots ou
incréments). Chaque lot sera réalisé successivement ou en se
chevauchant selon un modèle en cascade ou en V.
III.6.Le modèle incrémentale
Incréments
délivrés Produit opérationnel :
incréments livrables
Inconvénients
Nécessité d’avoir des développeurs qualifiés, qui connaissent le
langage
Difficile de mettre en place des tests intermédiaires : les groupes
étaient autonomes mais pas indépendants !!!
III.7.Le modèle en spirale ( Boehm, 86)
Idée
fournir le plus rapidement possible un prototype exécutable
permettant une validation concrète et non sur document.
Progression du projet par incrémentations successives de versions
du prototype : itérations.
Certains prototypes peuvent être montrés au client. Par ailleurs, une
maquette peut être réalisable préalablement au premier prototype.
La validation par prototype ne justifie pas l’absence de recours à la
documentation!
III.7.Le modèle en spirale ( Boehm, 86)
Le projet est découpé en N phases successives suivies d’une dernière
phase où le logiciel est intégralement développé
Chaque phase a pour objectif la validation d’un point technique ou
fonctionnel particulier pouvant donner lieu au développement d’une
maquette
Chaque phase peut donner lieu à l’utilisation d’un cycle en V ou en Y
Chaque phase permet d’affiner les besoins de l’utilisateur
A chaque phase est associée une analyse de risques pouvant remettre en
cause le développement
III.7.Le modèle en spirale ( Boehm, 86)
Réduit les
risques si bien
communiquer avec le client
risques techniques et de gestion
appliqué
et 12 principes
5. « Bâtissez le projet autour de personnes motivées. Donnez leur
l'environnement et le soutien dont elles ont besoin, et croyez en
leurs capacités à faire le travail ».
6. « La méthode la plus efficace de transmettre l'information est une
conversation en face à face ».
7. « Un logiciel fonctionnel est la meilleure unité de mesure de
progression d’un projet ».
8. « Les processus agiles incitent à un rythme de développement
soutenable. Sponsors, développeurs et utilisateurs devraient
pouvoir maintenir le rythme indéfiniment ».
III.8. Méthodes agiles
et 12 principes
9. « Porter une attention continue à l'excellence technique et à la
qualité de la conception améliore l'agilité ».
10. « La simplicité "l'art de maximiser la quantité de travail à ne pas
faire" est essentielle».
11. « Les meilleures architectures, spécifications et conceptions sont
issues d'équipes qui s'auto-organisent »
12. « À intervalles réguliers, l'équipe réfléchit aux moyens de devenir
plus efficace, puis accorde et ajuste son comportement dans ce sens
».
III.8. Méthodes agiles
Avantages
Elles intègrent le client pour être plus proches de ses besoins.
Elles sont adaptives plutôt que prédictives.
Elles sont orientées vers l’humain, plutôt que vers les processus et outils
minimiser le coût d’un changement au travers du temps contrairement à une
méthodologie classique
AGL de conception
AGL de réalisation
L4G, langages de haut niveau, générateurs de code
Outils de tests
Poste individuel de travail
Réseau et travail de groupe
III.8. Méthodes agiles
Rapid Application Development
Principe n°2
Forte implication des utilisateurs
Les utilisateurs ont la responsabilité de la production de certaines
tâches Exemple : expression des besoins
Comportement "positif" des utilisateurs participatifs, disponibles,
engagés
Utilisateurs centrés sur :
les besoins strictement nécessaires
la simplicité des règles de gestion
l'approche "délai »
III.8. Méthodes agiles
Rapid Application Development
Principe n°3
Equipe informatique de gagneurs
Compétente
Soudée
Motivée
Outillée
III.8. Méthodes agiles
Rapid Application Development
Principe n°4
Cycle de vie raccourci
Approche de prototypage
Parallélisation
de la conception
de la réalisation
Livraison par versions successives
III.8. Méthodes agiles
Rapid Application Development
Principe n°5
Pilotage centré sur l’obtention de résultats rapides
Inconvénients :
- Phase d’analyse pas assez couverte
- Manque de contrôle et de structuration
III.8. Méthodes agiles
Avantages
Propose des modèles Spécifie le dialogue entre les différents intervenants
du projet : les livrables, les plannings, les prototypes…
de documents et des canevas pour des projets types.
Gestion des risques dans le projet (risque financier et de retard limité).
Inconvénients
Lourd, bureautique (mise à jour des schémas), rigoureux et couteux.
Très axé processus, au détriment du développement : peu de place pour le code et
la technologie.
Vision non évidente ni immédiate.
Projet de plus de dix personnes.
VI. Qualité Logiciel
Qualité
Aptitude d’un produit ou d’un service (d’un système) à
satisfaire les besoins des utilisateurs.
Besoins
Exprimés et doivent être traduits ou formulés
Utilisateurs
Particuliers, entreprises ou services publics
VI. Qualité Logiciel
Les besoins et les facteurs de qualité
Les critères de qualité :
Simplicité d’utilisation
Portabilités des outils d’un environnement vers un autre
adaptabilité de l’environnement aux besoins particuliers d’un site et des
utilisateurs avant le démarrage d’un développement
l’évolutivité de l’environnement pour la prise en compte de de nouvelles
fonctionnalités
Capacité d’intégration d’outils au sein d’une méthode de
développement
Sécurité du développement (protection des différentes composantes(Pg,
D, Doc) contre des accès ou modifications non autorisés.
VI. Qualité Logiciel
Facteurs externes de la qualité (utilisateurs du produit)
Validité : l ’aptitude d’un produit logiciel à réaliser exactement les
tâches définies par sa spécification.
Robustesse : l’aptitude d’un logiciel à fonctionner même dans des
conditions anormales.
Extensibilité : la facilité d’adaptation d’un logiciel aux changements de
spécification.
Réutilisabilité : l’aptitude d’un logiciel à être réutilisé en tout ou en
partie pour de nouvelles applications.
Compatibilité : l’aptitude des logiciels à pouvoir être combinés les uns
avec les autres.
VI. Qualité Logiciel
Concepts de la qualité
la qualité est aussi la recherche du compromis
Délais et couts
Maintenance difficile
Absence de documentation ou peu claire
VI. Qualité Logiciel
La qualité pour les dirigeants
coûts et délais
évolutibilité
maintenabilité
rigidité des systèmes conçus
indépendance données/programmes
retour sur investissement
rentabilité du processus de développement
rentabilité de l'informatique
VI. Qualité Logiciel
La qualité pour les informaticiens
Inadéquation entre besoins et produits finis
Sécurité
Intégrité des données
Sauvegarde
Rapidité
Robustesse
Évolutivité du produit
Documentation
Évolutivité de la documentation
Compromis coût délais
Meilleure productivité
Meilleure gestion de projet
Meilleure maintanabilité,…
VI. Qualité Logiciel
Difficultés
Inadéquation entre besoins et produits finis
Coût
Absence de schéma directeur
Complexité de la logique à développer
Manque de visibilité totale de l’application
(chacun développe dans son coin)
Absence de cadre méthodologique
Pas de vision claire
Mauvaise formulation des besoins
Absence de modélisation
Mauvaise utilisation des outils
Personnel insuffisant…