Julie Vachon, Hiver 2006
IFT2251:
Introduction au génie logiciel
Chapitre 2:
Cycle de vie du logiciel
Chap.2 p.2 Copyrights Julie Vachon, 2006
Sommaire
Chapitre 2
« Cycle de vie du logiciel»
2.1 Cycle de vie du logiciel 2.2 Le rôle de l’analyste
Planification et ingénierie système
2.3 Aperçu des processus de développement
Modèle en cascade Modèle par prototypage Modèle en spirale Etc.
Chap.2 p.3 Copyrights Julie Vachon, 2006
Références
Satzinger et al.
Chap. 2 Chap. 3 Chap. 13
Ghezzi et al.
Chap.1
Chap.7, section 4
Pfleeger
Chap. 2 (p.45-59)
Chap.2 p.4 Copyrights Julie Vachon, 2006
2.1 Cycle de vie du logiciel
Pour réaliser un logiciel
Activités de développement (phases)
Organisation de ces activités dans le temps (processus de développement).
Analyse et spécification
Conception et spécification
Implémentation
Vérification
Installation
Maintenance
Activités en continu documentation, validation et vérification,
gestion Planification
Du projet
Chap.2 p.5 Copyrights Julie Vachon, 2006
Planification (étude préliminaire)
Définition globale du problème (diag. contexte)
Confirmer la faisabilité
évaluation des stratégies possibles évaluation des ressources, coûts et délais
Produire le calendrier du projet
Trouver le personnel
Lancer le projet
Documents:
rapport de planification
Est-ce possible ?
Chap.2 p.6 Copyrights Julie Vachon, 2006
Analyse des besoins
Découvrir et comprendre les besoins
Cueillette d’informations
exigences fonctionnelles / qualités non fonctionnelles
Spécification du système
Construction de prototypes (pour élaborer la spécification)
Prioriser les éléments de la spécifications
Produire et évaluer des solutions alternatives
Examiner les recommandations avec le chef de projet et/ou le client…
Documents:cahier des charges, document de spécification (analyse), prototype, plan de test.
Quoi faire?
Conception
1.
Conception architecturale: décomposition et organisation de l'application en modules plus simples définis par une interface. Bases de données, environnement d’exploitation, interfaces.
2.
Conception détaillée: pour chaque module, description de la manière dont les services et fonctions sont réalisés:
algorithmes essentiels
structures de données utilisées, etc.
Comment faire?
Conception
Concevoir et intégrer le réseau
Concevoir l’architecture d’application
Concevoir les interfaces utilisateur
Concevoir les interfaces du système
Concevoir et intégrer la base de données
Faire un prototype des détails de la conception
Concevoir et intégrer les contrôles de sécurité Documents:document de conception (spécification), prototype, plan de test global et plan de test par module.
Chap.2 p.9 Copyrights Julie Vachon, 2006
Implémentation
Traduction de la conception dans un langage de programmation ou mise en œuvre en utilisant des outils
de développement
Construire les composantes logicielles
Documents:dossiers de programmation, code source commenté, prototypes.
Chap.2 p.10 Copyrights Julie Vachon, 2006
Vérification
1. Tests unitaires:
Tests avec les jeux d'essais par module selon le plan de test.
2. Tests d'intégration:
Composition progressive des modules Tests des regroupement de modules
3. Test du système:
Test en vraie grandeur du système complet selon le plan de test global.
Documents:rapport de vérification par test.
Est-ce bien fait? Le programme répond-t-il à
la spécification?
?
?
?
Chap.2 p.11 Copyrights Julie Vachon, 2006
Installation et maintenance
Installation:
Mise en fonctionnement opérationnel chez les utilisateurs.
Conversion des données.
Parfois restreint (dans un 1er temps) à des utilisateurs sélectionnés.
Maintenance:
Maintenance corrective (corriger erreurs) Maintenance adaptative (modifications) Maintenance perfective (améliorations)
Aussi: maintenance préventive (pour faciliter les opérations de maintenance à venir).
?
?
?
Chap.2 p.12 Copyrights Julie Vachon, 2006
Activités en continu
Validation
Le produit répond-il aux besoins du client? «Construit-on le bon produit?»
S’assurer de répondre aux exigences du client.
Vérification
Le produit est-t-il correct (par rapport à la spécification)? «Construit-on le produit comme il faut?»
S’assurer de la qualité du produit (révisions et inspections) S’assurer de satisfaire la spécification.
Gestion
Du processus de développement (suivi de projet, révision, etc.) De la configuration: politique de gestion des versions, des documents,
politique de réutilisation Des ressources humaines Du risque
Documentation
Chap.2 p.13 Copyrights Julie Vachon, 2006
2.2 Rôle de l’analyste
Analyse Conception architect.
Implémentation
Test d’intégration
Installation Maintenance Test système Tests unitaires
Analyste
Concepteur
Programmeur
Testeur
Formateur Conception détaillée.
Planification
Membres de l’équipe de développement
Chap.2 p.14 Copyrights Julie Vachon, 2006
Rôle de l’analyste
Responsabilités:
chargé de l’analyse et de la conception invité à participer à la planification stratégique.
Titres de poste:
programmeur analyste, consultant, conseiller en administration des affaires, concepteur de systèmes, architecte système, concepteur de page web, ingénieur logiciel, chef ou gestionnaire de projet.
Milieu de travail:
entreprise spécialisée dans l’analyse et la conception, entreprise requérant les services d’un analyste pour ses propres projets, à la pige, etc.
Exemples:
Offre d’emploi pour un ingénieur d’étude et de développement Offre d’emploi : spécialiste en recherche opérationnelle
Rôle de l’analyste
Connaissances et compétences
Techniques
Fonctionnement des ordinateurs, périphériques, bases de données, réseaux, langages de programmation, systèmes d’exploitation et utilitaires.
Outils de développement et progiciels.
Technique d’analyse, de gestion, de conception, etc.
Administratives
Compréhension de l’organisation des entreprises en générales…
et en particulier (succès, plan stratégique, traditions, valeurs, etc.)
Relations humaines:
Comprendre comment les gens pensent, apprennent, réagissent, communiquent et travaillent.
Aptitude à bien communiquer.
L’analyste et l’ingénierie système
l’entreprise
Domaines d’affaires
Analyse des sous-domaines Système d’information
Construction Et intégration Vue du monde WV={D1,D2, .. Dn}
Un logiciel est un système i.e. un ensemble structuré et coordonné.
Qu’est-ce qu’il y a à l’extérieur ? (frontières) Qu’est-ce qu’il y a à l’intérieur ? (sous-systèmes) ?
Conception du système Ing.
Log.
Chap.2 p.17 Copyrights Julie Vachon, 2006
Ingénierie système
Étude des systèmes complexesde type informatique (lois qui gouvernent les grands systèmes).
Etablissement des besoins relatifsà tous les éléments du système général(matériel, bases de données, utilisateurs, etc.) dans lequel devra s’intégrer le logiciel.
Vue élargie des besoins.
Discipline qui traite de la conception de systèmes informatiques, notamment de l'analyse des besoins, de la détermination des spécifications techniques et du type d'architecture du système à développer. (Grand dictionnaire terminologique)
Chap.2 p.18 Copyrights Julie Vachon, 2006
Ingénierie système
analyse conception code test
Ingénierie système
Les connaissances de l'ingénieur système sont principalement requises dans les phases d’analyse et de conception.
Chap.2 p.19 Copyrights Julie Vachon, 2006
Ingénierie système
Diagramme de contexte
On peut décrire le cadre du système dans lequel le logiciel s’inscrit par un diagramme de contexte.
Diagramme de contexte: Graphique montrant l’ampleur d’un système.
Le système
Les objets externes
Flots de données Exo
Chap.2 p.20 Copyrights Julie Vachon, 2006
Ingénerie système
Diagramme de contexte
Système de contrôle d’un ascenseur
Système de contrôle moteur
frein Bouton
cabine
Bouton D’appel Cmde_activation
No_étage
No_étage
Cmde_activation
Chap.2 p.21 Copyrights Julie Vachon, 2006
2.3 Processus de développement
Processus de développement: Description abstraite et idéalisée des différentes manières d'organiser les
activités du développement d’un logiciel.
1.
Décrit un ensemble de tâches ordonnées impliquant
des activités (celles du cycle de vie)
des contraintes (sur le temps, ressources, etc.)
des
ressources(humaines, matérielles, etc.)
Chap.2 p.22 Copyrights Julie Vachon, 2006
Processus de développement
2.
Doit être «personnalisé» pour l'entreprise de façon à définir l'ordonnancement idéal des activités.
spécifier les artéfactsà produire (types de documents, format, échéancier).
attribuer activités & artéfactsaux développeurs proposer des critères pour superviserl'évolution du
projet, ses résultats et prévoir plans futurs (vérification, validation, documentation, etc.)
proposer une méthodologie pour gérer les
changementstant dans le processus et que le logiciel.
Processus de développement
Le processus de développement est à définir en équipe, de préférence, car ce travail permet:
Bénéficier de l’expertise et des points de vue des autres.
Meilleure identification des incohérences, redondances et omissions dans le processus.
Identification et prise en compte de certaines particularités du projet.
Compréhension commune des activités, ressources et contraintes.
Processus de développement Quelques modèles existants
… à personnaliser
Modèle en cascade
Modèle en V
Modèle par prototypage
Modèle en spirale
Etc..
Chap.2 p.25 Copyrights Julie Vachon, 2006
Modèle en cascade
Etapes réalisées de façon strictement séquentielle.
L’attention est centrée sur les artéfacts produits à la fin chaque étape. (document- driven)
Analyse et spécification
Conception et spécif.
(architect. et détaillée) Programmation
Test (unitaire, intégration, système)
Installation Maintenance
Chap.2 p.26 Copyrights Julie Vachon, 2006
Modèle en cascade
Avantages
Plan simplede ce qu'il faut faire.
Facileà comprendre
Cette première définition a permis la normalisation des cadres conceptuels et terminologiques des différentes activités.
Pertinent dans le cas des anciens systèmes
Plus faciles à analyser et modéliser;
de conception et mise en oeuvre coûteuses (ex.
temps de compilation: 2 jours!)
Inconvénients
Hypothèses souvent irréalistesque l'on peut dès le départ définir complètement et en détail
ce qu'on veut réaliser les résultats intermédiaires
obtenus
Ne reflète pas la façon dont le code est réellement développé.
Trop rigide, manque de flexibilité pour imprévus.
Pas de «feedback»avant la livraison au client....
Chap.2 p.27 Copyrights Julie Vachon, 2006
Modèle en V
Variation du modèle en cascade
Attention centrée sur la correction: vérification et validation
Analyse et spécification
Conception architecturale
Programmation
Test du système Installation et
maintenance
Conception détaillée
Test unitaire et d’intégration
Test de validation validation
vérification
Chap.2 p.28 Copyrights Julie Vachon, 2006
Modèle par prototypage
À chaque étape, un ou plusieurs prototypes sont soumis au client pour évaluation/révision.
Permet d'examiner et d'explorer certains aspects du système pour évaluer et choisir les meilleures stratégies/solutions.
Analyse
des besoins Conception Implémentation Test Analyse,
construction et évaluation de prototype Révision du prototype
Besoins
(description informelle,
souvent incomplète) Installation &
maintenance Analyse,
construction et évaluation de prototype
Analyse, construction et évaluation de prototype
Chap.2 p.29 Copyrights Julie Vachon, 2006
Modèles évolutifs
Le processus de développement d’un logiciel peut être très long (mois, années…)
Le logiciel est un produit de nature évolutive…
Pour être compétitif, il faut réduire le temps de mise en marchéet pouvoir
produire versions partielles du système
ajouter graduellement de qualités et fonctionnalités.
Solution:
Modèle évolutif: développement au cours duquel des versionsdu logiciel de plus en plus complexeset
détaillées sont développées.
Deux versions du logiciel existent alors en parallèle 1. logiciel opérationnel (version utilisée actuellement) 2. logiciel en développement (prochaine version)
Chap.2 p.30 Copyrights Julie Vachon, 2006
Modèle évolutif - incrémental
Approche incrémentale
division du système en sous-systèmes (un par fonctionnalité).
1re version: système partiel.
Chaque nouvelle version ajoute un nouveau sous- système.
Version 1
cycle de vie complet
Version 2
cycle de vie complet noyau
Version 3
Modèle évolutif - itératif
Approche itérative
division du système en sous-systèmes (un par fonctionnalité).
1re version: coquille complète du système.
Chaque nouvelle version apporte une modification/amélioration à un sous-système.
cycle de vie complet cycle de vie
complet
Version 1 Version 2 Version 3
Modèles évolutifs
Avantages
Formation précoce des utilisateurs. Réponse rapide possible.
Création précoce de nouveaux marchés pour nouvelles fonctionnalités.
Focus sur nouveau domaine d'expertise à chaque étape (version).
Détection précoces des problèmes imprévus (correction immédiate du système en
développement).
Inconvénients
Risque de la remise en cause du noyau (fonctionnalités de base) au cours du
développement.
Chap.2 p.33 Copyrights Julie Vachon, 2006
Modèle en spirale (Boehm 88)
Modèle cyclique. Chaque cycle est composé de 4 étapes
A chaque cycle:
spécification de nouveaux besoins
critères de robustesse deviennent des critères de correction 1. Définition
des objectifs, alternatives, contraintes
2. Identification des risques et solutions pour les réduire
3. Développement et vérification/validation de la prochaine version du produit 4. Planification des
cycles suivants
Élaboration de prototypes Analyse des risques
validatiobesoinsn conception codage
Tests unitaires Intégration Acceptation Plan du cycle de vie Plan de tests et intégration
Chap.2 p.34 Copyrights Julie Vachon, 2006
Parmi les objectifs d’apprentissage
Expliquer le but et les tâches des diverses phases du cycle de vie d’un logiciel.
Décrire ce qu’est l’ingénierie système et comment on détermine la portée d’un nouveau système.
Expliquer le rôle principal de l’analyste dans une entreprise.
Identifier et expliquer l’importance des compétences techniques, humaines et commerciales et de la probité professionnelle pour un analyste.