Le génie logiciel Définition de l IEEE (IEEE 1990): L application d une approche systématique, disciplinée et quantifiable pour le développement, l opération et la maintenance de logiciels.
Introduction et Définitions Maintenance? Page 3
Introduction et Définitions Définition du génie logiciel Terme anglais: Software Engineering Autres définitions possibles - L'application pratique de l'informatique, de la gestion de projets et d'autres sciences à l'analyse, à la conception, à la réalisation, à la maintenance du logiciel et à la documentation nécessaire à l'utilisation et à la maintenance du logiciel. - Une science qui applique les concepts de l'analyse, de la conception, de la réalisation, de la vérification, de la documentation et de la gestion de projets. - L application systématique de procédures, méthodes, outils et techniques pour atteindre les besoins ou les objectifs attendus d un logiciel. Page 4
Les logiciels en opération aujourd hui Navette spatiale : 100,000 lignes Les programmes de contrôle de mission : 3,000,000 lignes de code Un logiciel de télécommutation de NORTEL : 5,000,000 lignes de code Un interstitiel / serveur d applications : 10,000,000 + Etc.
Comment s y prendre? Décomposer le «développement» d un logiciel en un processus ayant des étapes plus «gérables» Décire le logiciel selon plusieurs perspectives (modèles), chacune mettant l emphase sur un aspect particulière
Qu est ce qu un processus? Une suite d étapes impliquant des activités, des acteurs, des ressources, et des contraintes pour produire un résultat escompté Différents modèles de processus de développement ont été proposés
Modèles de processus de développement Faisabilité Le modèle en cascade Définition Planification besoin Analyse Conception Conception Codage Réalisation Installation Maintenance Tests unitaires Intégration Tests d intégration Installation Tests système Maintenance Tests de nonrégression Page 6
Modèles de développement Le modèle par prototypage Analyse des besoins Conception rapide Construction d un prototype Évaluation du prototype et raffinement des besoins Élaboration du produit Page 7
Modèles de développement Le modèle en spirale Coûts cumulés Identification des objectifs, des alternatives et des contraintes Évaluation des alternatives Identification des risques Analyse du risque Analyse du risque Analyse du risque Prototype Prototype Prototype Prototype opérationnel Plan de développement Intégration et tests Planification des phases suivantes Plan du cycle de vie Définition conceptuelle Analyse besoins Validation besoins Validation conception Installation Simulation Conception Code logiciel Tests unitaires Tests d intégration Tests d acceptation Conception détaillée Développement Page 8
Modèles de développement Le modèle pour la réutilisation Concevoir l architecture du système Spécifier les composants Chercher les composants réutilisables Incorporer les composants dans le système Page 9
Modèles de développement Modèle de développement OO Page 10
Cycle de vie d un logiciel Analyse et définition des besoins Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 11
Cycle de vie d un logiciel Analyse et définition des besoins Préciser les services qui seront rendus par le logiciel à l'utilisateur * Le cahier des charges (ou document d'analyse des besoins) - Identification des concepts pertinents au problème. - Définition des propriétés ou des contraintes, décrites de façon précise, qu'un logiciel doit satisfaire. Complet Cohérent Tout ce que le logiciel aura à faire doit être exprimé. Aucun des besoins exprimés ne doit être en conflit avec un autre. Les méthodologies d analyse et de conception * Exemple de méthodologies - Orientées Données - Merise - Methode/1 (Arthur Andersen) - Productivité + (DMR) - Orientées Temps réel - Ward-Mellor Analysis & Design - Boeing-Hatley Analysis & Design - Orientées Objet - Coad-Yourdon - Booch - OMT, etc. Page 12
Cycle de vie d un logiciel Spécification Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 13
Les trois vues d'un logiciel Processus (fonctionnel) Données (structurel) Événements (dynamique) La plupart des méthodologies permettent de décrire cet aspect tridimensionnel du logiciel. - L aspect structurel - Point de vue des données - L aspect fonctionnel - Point de vue des traitements Structure 1 Structure 2 Relation Entrée Processus Sortie - L aspect temps événementiel - Point de vue des événements État 1Les Événement 1 État 2 Événement 2 Page 5
Cycle de vie d un logiciel Spécification Les spécifications décrivent la fonctionnalité du système; ce que le système est supposé faire mais pas nécessairement comment. Différents types de spécifications Les spécifications en langage naturel Les spécifications formelles - Les spécifications graphiques Type données : diagrammes de flux de données, modèle conceptuel de données, etc. Type données/évènements : machines d état finis, réseaux de Petri, etc. - Les spécifications à l aide de langages formels VDM CSP Lotos Langage Z Page 14
Cycle de vie d un logiciel Conception Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 15
Cycle de vie d un logiciel Conception La conception doit préciser comment les fonctions seront réalisées. Conception architecturale et spécification fonctionnelle - Interprétation des spécifications et des fonctionnalités ciblées - Identification des composants logiciels ou matériels d un logiciel intégré et cohérent - Construction architecturale du produit - Description détaillée de chacune des abstractions utilisées Page 16
Cycle de vie d un logiciel Réalisation Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 16
Cycle de vie d un logiciel Réalisation Choix d un ou de plusieurs langages adéquats Assemblage Procédural (COBOL, FORTRAN, PASCAL, C, etc. ) Fonctionnel ( LISP) Logique (PROLOG) Orienté-Objet (C++, Smalltalk, Eiffel, Java, C#, etc.) Page 18
Cycle de vie d un logiciel Vérification Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 19
Cycle de vie d un logiciel Vérification Les différents tests possibles Tests unitaires Tests de modules Tests de sous-systèmes Tests d'intégration Tests d'acceptation La validation des documents générés dans différentes phases Revues par pair Revues structurées Inspections Page 20
Cycle de vie d un logiciel Maintenance Analyse et définition des besoins Spécification Conception Développement Réalisation Vérification Exploitation Maintenance Exploitation et maintenance Page 21
Qualité du logiciel et maintenance Maintenance - Les tendances du logiciel (étude de Lehman & Belady 1985) - Loi du changement continuel - Loi de l accroissement de la complexité - Loi de l évolution des grands programmes - Les trois aspects de la maintenance Répartition de l effort de maintenance Corrective Adaptative Perfective (17 %) (18 %) (65 %) - Maintenance perfective - Effectuer les changements demandés par les utilisateurs ou par les programmeurs du système - Maintenance adaptative - Adapter le logiciel aux changements de son environnement - Maintenance corrective - Corriger les erreurs Page 22
Qualité du logiciel et maintenance Nature du logiciel Nature particulière du logiciel - Développement versus processus de production - Produit difficilement tangible, mesurable... Difficultés du logiciel - Produit abstrait et donc difficilement compréhensible - La construction d un produit est souvent reprise de zéro - L estimation est difficile - Définition des besoins en perpétuel changement - Manque de compréhension de l impact des changements - Absence de modèles de fabrication contrôlables Retombées floues - Procédure d acceptation de produit mal définie - Procédure d acceptation des besoins mal définie - Acceptation de produits incomplets Page 23
Qualité du logiciel et maintenance Qualités souhaitables d un logiciel Maintenabilité Flexibilité Testabilité RÉVISION TRANSITION Portabilité Réutilisabilité Interfaçabilité EXPLOITATION Exactitude Fiabilité Efficacité Intégrité Commodité Sécurité Page 24
Qualité du logiciel et maintenance Définition des qualités d un logiciel Les qualités d'exploitation - Exactitude (Fait-il ce que je veux?) - Fiabilité (Le fait-il fidèlement à chaque fois?) - Efficacité (S'exécute-t-il sur ma machine aussi vite que nécessaire?) - Intégrité (Est-il intègre?) - Commodité (Suis-je capable de l'utiliser?) - Sécurité (Est-il sécuritaire?) Les qualités de révision - Maintenabilité (Puis-je le corriger?) - Flexibilité (Puis-je le modifier?) - Testabilité (Puis-je le tester?) Les qualités de transition - Portabilité (Pourrai-je l'utiliser sur une autre machine?) - Réutilisabilité (Pourrai-je réutiliser une partie de mon logiciel?) - Interfaçabilité (Pourrai-je l interfacer avec un autre système?) Page 25
Qualité du logiciel et maintenance Quantification du logiciel La quantification du logiciel vise à mesurer les produits et les processus du développement logiciel dans le but de les améliorer. Pourquoi utiliser des mesures - Planification de projet - Évaluation de produits et de méthodes - Contrôle des processus de développement - Amélioration des processus de développement Que mesurer? - Les mesures directes - le coût - l effort - le nombre de lignes de code - la performance - la taille mémoire - le nombre d erreurs - Les mesures indirectes - la complexité - la portabilité - la fiabilité - la maintenabilité Les différentes classifications de mesures - Les mesures de produits - Les mesures de processus - Les mesures de ressources - Les mesures d attributs externes et internes Page 26
Outils CASE Qu est-ce qu un outil CASE? Définition L utilisation d outils automatiques pour le développement du logiciel Objectifs - Améliorer la productivité - Favoriser la réutilisabilité et la portabilité - Automatiser le processus de développement du logiciel - Améliorer la qualité - Formaliser et standardiser la documentation - Limiter le nombre d erreurs (nombre et gravité) Caractéristiques - Interface graphique - Dictionnaire - Capacités de vérification automatique Exemples - Générateurs de diagrammes de flux de données - Outils d analyse et d inspection du code - Outils de mesures - Système à base de connaissance pour l aide à la conception Page 27
Outils CASE Caractéristiques des outils CASE - Des outils d aide dans chaque phase du cycle de vie - Un référentiel pour gérer et stocker toute l information concernant le logiciel - Une interface graphique pour dessiner des diagrammes de structure - Un ensemble d outils intégrés partageant la même interface - Des outils de prototypage - Génération automatique de code à partir des spécifications Page 28