1.4k likes | 2.65k Views
Cours génie logiciel. élaboré par Amami Maha. mahaamami@gmail.com. 2009 - 2010. Pré-requis. Systèmes d’information Systèmes informatiques Conception et programmation orientée objet Réseaux informatiques Base de données Gestion de production. Objectifs du cours.
E N D
Cours génie logiciel élaboré par Amami Maha mahaamami@gmail.com 2009 - 2010
Pré-requis • Systèmes d’information • Systèmes informatiques • Conception et programmation orientée objet • Réseaux informatiques • Base de données • Gestion de production Cours génie logiciel
Objectifs du cours • Etre capable de définir les principes et les techniques du génie logiciel • Comprendre la valeur ajoutée de génie logiciel Cours génie logiciel
Références • Beugnard, A. (1998). Introduction au génie logiciel. ENST Bretagne. • Di gallo, F. (2001). Cours de génie logiciel. CNAM Bordeaux. • Lonchamp, L. (2003). Cours génie logiciel. CNAM – Nancy. • Notes de cours de Mme Latifa Rabii Cours génie logiciel
PLAN • Chapitre 1 : Introduction • Chapitre 2 : Définitions et principes • Chapitre 3 : Modélisation des processus • Chapitre 4 : Techniques de spécification • Chapitre 5 : Techniques de conception • Chapitre 6 : Processus qualité Cours génie logiciel
Chapitre 1 : Introduction • Section 1 : Rappels • Section 2 : Définition d’un logiciel • Section 3 : Domaines d’application du logiciel • Section 4 : Crise du logiciel • Section 5 : Solution Cours génie logiciel
Rappels • Un système d’information : est l’ensemble des éléments participants à la gestion, au stockage, au traitement, au transport et à la diffusion de l’information au sein de l’organisation • Un système informatique : est l’ensemble des équipements destinés au traitement automatique de l’information permettant d’acquérir, de stocker, de traiter et de communiquer des données Cours génie logiciel
Définition d’un logiciel (1/3) • Un logiciel est un système d’information automatisé • Un système d’information automatisé est l’ensemble des moyens et des méthodes qui se rapporte au traitement automatisé des données. Il constitue la partie logicielle du système informatique Cours génie logiciel
Définition d’un logiciel (2/3) Cours génie logiciel
Définition d’un logiciel (3/3) • Un logiciel est un produit qui couvre un ensemble organisé de : • Programmes • Procédés • Documentation • Services Cours génie logiciel
Caractéristiques du logiciel • Un objet immatériel • Ne s’use pas • Le logiciel est facile à reproduire • Ses fonctionnalités sont difficiles à figer au départ et souvent remises en cause • La plupart des logiciels sont personnalisés Cours génie logiciel
Domaines d’application du logiciel • Système • Compilateurs (A-0 System) • Editeurs • Gestion de fichiers • Temps réels (Real-time) • Contrôle de machine • Affaires (Data processing) • SGBD (Oracle) • ERP (SAP) • Embarqué (Embedded) • Programme FPGA • Auto-contrôle • Scientifique • Simulation • Conception assisté par ordinateur • Calcul numérique intensif • Bureautique • Intelligence artificielle • Système expert Cours génie logiciel
Crise du logiciel (1/4) Systèmes personnels Orientation objet Systèmes experts Systèmes distribués Applications embarquées Multi-usagers Temps-Réel Base de données Progiciel Distribution limitée Logiciel personnalisé Quatrième époque Troisième époque Deuxième époque Première époque 1990 1950 1960 1970 1980 Cours génie logiciel
Crise du logiciel (2/4) Cours génie logiciel
Exemples d’échec de logiciel • Perte de la première sonde Mariner vers Venus suite à une erreur de programmation dans un programme Fortran • Abandon du projet d’informatisation de la bourse londonienne après 4 ans de travail et 100 M£ de pertes • Retard (2 ans) du premier vol de l’Eurofighter Causes Cours génie logiciel
Crise du logiciel (3/4) • Difficulté de maîtrise des coûts (200 millions de dollars pour fabriquer OS-360) • Difficulté de maîtrise des délais de réalisation (2 ans de retard pour les premiers compilateurs PL/1, Algol 68, ADA) Cours génie logiciel
Crise du logiciel (4/4) Rapports au congrès américains sur les logiciels Cours génie logiciel
Solution En octobre 1968 lors d’une conférence de l’OTAN à Garmisch-Partenkirchen en Allemagne Cours génie logiciel
Chapitre 2 : Définition et principes • Section 1 : Définition du génie logiciel • Section 2 : Vue globale • Section 3 : Principes du génie logiciel Cours génie logiciel
Définition du génie logiciel (1/3) Cours génie logiciel
Définition du génie logiciel (2/3) Parallèle avec le génie civil Plan Outils Cours génie logiciel
Définition du génie logiciel (3/3) • Ensemble de moyens mis en œuvre pour la construction de logiciels • Le processus visant la résolution de problèmes posés par un client par le développement et l’évolution de systèmes logiciels de grande taille et de haute qualité en respectant les contraintes de coûts et de temps Coût Délai Règle CQFD Qualité Fonctionnalité Cours génie logiciel
Principes du génie logiciel • Rigueur • Séparation de problèmes en sous problèmes • Modularité • Généricité • Construction incrémentale • Application du changement Cours génie logiciel
Vue globale Gestion d’acquisition Utilisateur Client * Besoins * Gestionnaire * Gestion de projet Acceptation Développeur * * Stakeholders Génie logiciel Cours génie logiciel
Chapitre 3 : Modélisation des processus • Section 1 : Processus de gestion • Section 2 : Processus de production • Section 3 : Modèles de cycle de vie Cours génie logiciel
Processus de gestion Estimation, planification, suivi, … Processus qualité Documentation Processus de production Analyse Conception Réalisation Exploitation Cycle de vie Cours génie logiciel
Processus de gestion • Organisation du projet • WBS (Work breakdown Structure) • PBS (Product breakdown Structure) • OBS (Organisation breakdown Structure) • Planification du projet • Ordonnancer les taches (Pert, Gantt …) • Suivre • Réviser • Estimation des coûts • Délais • Budget • Effort Cahier des charges Cours génie logiciel
Processus de production : Cycle de vie du logiciel • Enchaînement des activités de développement du logiciel Gestion de projet Spécification Assurance qualité Documentation Validation et vérification
Modèle de cycle de vie : Le modèle en cascade Cours génie logiciel
Modèle de cycle de vie : Le modèle en cascade Avantages • Découpage des taches simple et intuitive • Responsabilité humaine facile à associer • Production de la documentation • Maintenance facile Inconvénients • Risques d’erreurs • Difficulté d’avoir tous les besoins du client Cours génie logiciel
Modèle de cycle de vie : Le modèle en V Temps Préparation / Validation Etude préliminaire Maintenance Préparation / Validation Analyse Tests d’acceptation Préparation / Vérification Conception architecturale Tests d’intégration Préparation / Vérification Conception détaillée Tests unitaires Codage Abstraction Cours génie logiciel
Modèle de cycle de vie : Le modèle en V Avantages • Réaliser les propriétés du logiciel • Meilleur préparation aux tests • Contrôle de qualité sur chaque phase Inconvénients • Difficile à appliquer rigoureusement • Validation des étapes adjacentes est mal préparée Cours génie logiciel
Modèle de cycle de vie : Le modèle incrémental Etude de faisabilité Conception architecturale Conception détaillée Codage et intégration Implémentation Itération Livraison du version i du logiciel Cours génie logiciel
Modèle de cycle de vie : Le modèle incrémental Avantages • Appliquer pour un logiciel de grande taille • Réduire les délais de livraison Inconvénients • Maintenance exhaustive • Risques d’interruption de développement Cours génie logiciel
Modèle de cycle de vie : Le modèle de prototypage Cours génie logiciel
Modèle de cycle de vie : Le modèle de prototypage Avantages • Se concentrer sur les points critiques • Un modèle évolutif • Simplifier l’élaboration des besoins • Aider à l’élaboration de l’interface H/M Inconvénients • Problème de gestion de projet Cours génie logiciel
Chapitre 4 : Techniques de spécification • Section 1 : Définition et types de spécification • Section 2 : Styles de spécification Cours génie logiciel
Définition et types de spécification (1/2) • La spécification décrit les caractéristiques attendues (le quoi) d’une implantation (le comment) • On distingue 3 types de spécification : • Spécification des besoins Exigences fonctionnelles et non fonctionnelles Phase d’analyse des besoins Concepteur Utilisateur final Cours génie logiciel
Définition et types de spécification (2/2) • Spécification d’une architecture du système • Spécification technique d’un module Architecture en modules Phase de conception générale Concepteur Programmeur Architecture du module Phase de conception détaillée Concepteur Programmeur Cours génie logiciel
Styles de spécification Spécification informelle (Langue naturelle) Formalité Spécification semi – formelle (Modèles graphiques) Spécification formelle (Langage Z) Opérationnel (Description du comportement désiré) Caractère Déclaratif (Description des propriétés désirées) Cours génie logiciel
Styles de spécification : DFD • Une technique semi-formelle et opérationnelle • La représentation graphique distingue : • Les fonctions par • Les données stockées • Les flux par • Les entités externes par • Exemple Cours génie logiciel
Styles de spécification : Schéma Entité Relation • Une technique semi formelle et déclarative • Les concepts du modèle de base sont : • Les entités • Les relations • Les attributs • Exemple Entité Relation Attributs Attributs Etudiant Filière Est inscrit ID Nom Adresse ID Libellé Cours génie logiciel
Styles de spécification : Langage Z • Un langage formel qui utilise • Les notions ensemblistes, le calcul des propositions… • Les relations et les fonctions • Les suites Cours génie logiciel
Styles de spécification : Langage Z • Exemple : Enregistrement des passagers à bord d’un avion • Déclaration des variables • [PERSONNE] : Ensemble des personnes identifiées de manière unique • Capacité : N Capacité de l’avion • Définition de l’état du système
Styles de spécification : Langage Z • Description de l’état initial • Description de l’évolution du système Cours génie logiciel
Styles de spécification : Langage Z • Description des opérations Cours génie logiciel
Chapitre 5 : Techniques de conception • Section 1 : Définition et approches • Section 2 : Approche fonctionnelle • Section 3 : Approche à objet • Section 4 : Exercice Cours génie logiciel
Définition et approches • La conception propose une solution au problème spécifié lors de l’analyse • Une architecture de l’application (logicielle et physique) • Une description détaillée des modules • On distingue deux approches de conception • L’approche fonctionnelle • L’approche à objets Cours génie logiciel
Définition et approches : Approche fonctionnelle • Dans l’approche fonctionnelle • Un module est un sous-système • La relation de base est la relation de décomposition • Exemple : Gestion de bibliothèque Cours génie logiciel
Approche fonctionnelle : Les diagrammes de structure • Une organisation hiérarchique et fonctionnelle des systèmes • La représentation graphique distingue : • Les modules par • La relation d’appel entre modules par • Les flux de données par Cours génie logiciel