27 0 654KB
LICENCE EN GENIE LOGICIEL ISA EMT
ATELIER DE GENIE LOGICIEL ET RAD
Objectifs : Développement rapide d'applications à travers une stratégie et des outils efficaces du domaine du Génie Logiciel.
Contenu Problématique de développement de logiciel
Présentation des AGLs et des outils (Rational rose, Visual studio, power AMC, Windev, etc.)
Etude de cas, modélisation et implémentation de projets
ATELIER DE GENIE LOGICIEL
Page 1
LICENCE EN GENIE LOGICIEL ISA EMT
SOMMAIRE CHAPITRE 1 : PROBLEMATIQUE DU LOGICIEL CHAPITRE 2 : LE RAD CHAPITRE 3 : PRESENTATION DES AGL ET OUTILS CHAPITRE 4 : DIFFERENTS MODELES DE CYCLE DE VIE CHAPITRE 5 : GESTION DE PROJET CHAPITRE 6 : EXPRESSION ET ANALYSE DU BESOIN CHAPITRE 7 : TECHNIQUES ET OUTILS DE SPECIFICATION CHAPITRE 8 : METHODES D’ANALYSE FORMELLE CHAPITRE 9 : METHODE D’ANALYSE ET DE CONCEPTION DE LOGICIEL CHAPITRE 10 : VALIDATION ET VERIFICATION
ATELIER DE GENIE LOGICIEL
Page 2
LICENCE EN GENIE LOGICIEL ISA EMT
CHAPITRE 1 : PROBLEMATIQUE DU LOGICIEL 1. génie logiciel ou l'art de produire du logiciel La production de logiciel tout comme celle de n'importe quel autre bien nécessite la mise en œuvre de méthodes, techniques et outils dépassant largement le cadre de la seule programmation, regroupés sous le vocable général de Génie Logiciel. Le Génie Logiciel est à rapprocher du Génie civil, Génie mécanique ou Génie chimique. La réalisation d'un pont ne peut être menée sans de méthodologie, de même la réalisation d'un logiciel nécessite un minimum de précautions qui garantissent sa faisabilité, sa qualité et sa fiabilité.
Figure 1 : La production de logiciel sous contrôle du génie logiciel La programmation est une discipline récente purement intellectuelle, certains la qualifiaient même d'art [Knuth, The art of software programming] ; pour ces raisons, on y trouve des attitudes et des habitudes qui paraîtraient étranges dans d'autres disciplines plus mures. Notamment le syndrome du "not invented here" ; on n'imagine pas un ingénieur mécanicien réinventer la roue ou fabriquer ses propres vis et boulons alors qu'un programmeur préfère souvent réécrire ses propres lignes de code plutôt que réutiliser un code développé par d'autres. La lutte contre cette tendance naturelle est un défi majeur de l'industrie informatique ATELIER DE GENIE LOGICIEL
Page 3
LICENCE EN GENIE LOGICIEL ISA EMT
d'aujourd'hui connu sous le vocable réutilisation. L'aspect ludique de la discipline renforce la dérive vers les comportements individualistes. La programmation est une activité immatérielle: pour un néophyte, il peut sembler peu dispendieux de démolir et reconstruire une architecture logicielle alors que l'on réfléchirait à deux fois avant d'agir de même concernant une autoroute ou un bâtiment. Le logiciel modifie l'environnement de celui qui l'utilise dans des proportions telles que l'on a du mal à définir précisément et durablement des spécifications stables. La maintenance occupe une part importante du budget et du temps consacré au développement d'un logiciel. Elle peut revêtir différentes formes :
maintenance corrective: destinée à corriger des "bugs" maintenance évolutive: adaptative ou perfective
Il est important de prendre conscience des enjeux majeurs représentés par la maintenance
67% du coût total est consacré à la maintenance dont 48% consacrés à réparer des défauts 60% des défauts correspondent à des erreurs de spécification et de conception
D'un point de vue économique, tout comme il convient de distinguer Chimie et Génie Chimique, il faut différencier programmation et génie logiciel. En chimie si deux réactions différentes conduisent au même produit on n'a aucune raison de préférer l'une à l'autre. Alors que le génie chimique différenciera parmi ces deux réactions celle qui met en jeu les produits de base les moins chers par exemple. De même le Génie Logiciel tiendra compte en particulier des coûts de formation et des implications à long terme lors de l'introduction de nouvelles techniques de programmation.
2. La crise du logiciel Mise en évidence au début des années 70, la crise se caractérise par :
l'absence de maîtrise des projets, au niveau des coûts et des délais, la mauvaise qualité des produits: les produits ne répondent pas aux besoins définis et des erreurs résiduelles persistent dans le produit final un stock important de projets en attente faute d'une gestion rigoureuse
Quelques exemples de logiciels défaillants:
La fausse attaque de missiles (Novembre 1979) Les anti-missiles Patriotes (Guerre du Golfe 1991) Les sondes perdues vers Vénus (années 60) vers Mars (99) La panne ATT (1990)
ATELIER DE GENIE LOGICIEL
Page 4
LICENCE EN GENIE LOGICIEL ISA EMT
L’échec d’Ariane 5 (1996) La poste (1998) Et les erreurs que l'on ignore : logiciels de surveillance médicale défaillants
3. Les réponses à la crise La maîtrise du processus de développement Pour maîtriser le développement, une organisation doit choisir et appliquer un modèle de processus définissant:
Les phases du développement: définitions des besoins, spécifications, planification, conception, codage, tests... Les produits intermédiaires: prototype, documentations... Les critères de changement de phase, Un cadre pour la gestion de projet.
L'accent est mis sur les phases amont : analyse, conception et non plus seulement sur la programmation. Développement de méthodes structurées et d'outils CASE Dans les années 75-90 les méthodes structurées se développent (SA/RT, SADT, Ward et Mellor, modèle entités-relations...) ainsi que les métriques et outils permettant de les mettre en œuvre. (ateliers de Génie Logiciel ou outils CASE Computer.Aided.Software.Engineering). A cette époque, au sein des directions informatiques (et de l'organisation), de nouveaux services apparaissent : "méthodes et qualité", chargés de définir les bonnes pratiques en matière de développement logiciel, de choisir les bons outils CASE. Le langage ADA (1983) développé à la demande du DOD (Department of Defense américain) est le fer de lance de cette rationalisation qui passe par un développement systématique et contrôlé par le compilateur, ce langage est le premier à mettre à l'ordre du jour la réutilisation systématique d'éléments de bibliothèques ("packages") fournis avec le compilateur. Le paradigme objet Dans les années 90 la crise n'est toujours pas résolue. Si les méthodes structurées s'avéraient efficaces pour traiter des programmes de 5000 à 50000 lignes, elles ne le sont plus pour des produits de 500.000 voire 5.000.000 lignes. Or les développements sont de plus en plus complexes, de plus en plus longs et l'obsolescence est de plus en plus rapide! Il y a donc une nécessité à réutiliser les connaissances et à les partager. Dans le domaine de la maintenance également, les méthodes structurées n'ont pas fait leurs preuves. Le problème vient du fait que les méthodes structurées sont soit orientées données ATELIER DE GENIE LOGICIEL
Page 5
LICENCE EN GENIE LOGICIEL ISA EMT
soit orientées actions et que la modification d'un élément du logiciel impacte d'autres éléments de manière relativement imprévisible. Un nouveau paradigme voit le jour en 80 (Smalltalk) et devient très populaire dans les années 90, c'est le paradigme objets qui encapsule actions et données. Ceci facilite la maintenance car la localisation de l'erreur se fait plus facilement. L'objet masque la structure interne des données qui sont accédées uniquement à travers des messages. Chaque objet est autonome. En outre la définition de l'héritage et de la généricité permet la réutilisation d'objets déjà développés dans un autre contexte.
4. les moteurs de la qualité Objectifs Les objectifs de qualité rejoignent bien souvent les objectifs de productivité
Adéquation aux besoins Efficacité temps/espace Fiabilité Sécurité, Intégrité Testabilité, Traçabilité Adaptabilité, Maintenabilité, Convivialité (interface, aide et documentation) Pérennité (facilité de la maintenance)
L'assurance qualité vise à atteindre les objectifs de qualité, réduire le nombre d'erreurs résiduelles, maîtriser les coûts et la durée du développement sans nuire à l’innovation et à la créativité. Les moteurs de l'assurance qualité sont multiples : on peut citer
L'organisation du processus : découper le processus pour le maîtriser Les ressources humaines : les équipes doivent être motivées pour mettre en place des procédures qualité L'utilisation de techniques, méthodes, outils Les considérations managériales, politiques et économiques : considérer le retour sur investissement de la mise en place de procédures qualité par une analyse coûts bénéfices.
Organiser le processus : cycle de vie, responsabilités, rôles Comme tout produit, un logiciel a un cycle de vie, il naît, vit et meurt ; autrement dit, il est créé, distribué sur un marché ou bien mis en exploitation et disparaît pour cause d'obsolescence. La phase de maintenance évolutive a pour objectif de retarder la phase de disparition. ATELIER DE GENIE LOGICIEL
Page 6
LICENCE EN GENIE LOGICIEL ISA EMT
Le cycle de développement des logiciels s'insère dans le cycle de vie global du produit, on l'appelle souvent abusivement cycle de vie des logiciels.
La maîtrise du processus de développement passe par un découpage en activités
Séquentielles (verticales) : Spécifications, Conception, … Permanentes (horizontales) : Gestion de projet, Gestion des configurations…
Chaque activité sera validée avant de passer à la suivante. Chaque projet est découpé en éléments maîtrisables. Par exemple au niveau de la conception globale on essaiera de décomposer en modules aussi indépendants que possible, ce qui facilitera le codage, l'intégration et la maintenance. Ce découpage est garant d'efficacité et de motivation des équipes : il est plus facile de respecter un objectif à court terme qu'à moyen ou long terme. Chaque activité élémentaire, chaque phase est placée sous la responsabilité d'un acteur, les recommandations pour l'assurance qualité insistent toutes sur la notion rôle, il faut définir o o o o o
Qui fait, Qui approuve, Qui vérifie, Qui valide, Qui est consulté.
Gestion des ressources : gestion de projet, gestion des configurations Comme tout projet industriel, un projet logiciel nécessite une gestion stricte des ressources tant humaines que matérielles et logicielles. Cette activité est transversale au projet et met en œuvre des techniques communes à tout type de projet ainsi que d'autres plus spécifiques que nous étudierons plus tard. Il s'agit ici de
ATELIER DE GENIE LOGICIEL
savoir évaluer coûts et délais définir et ordonnancer les tâches, planifier la réalisation, l'intégration, la validation… établir un système de contrôle pour tous les produits intermédiaires du cycle de vie, dans le but de détecter le plus tôt possible: défauts, erreurs, omissions, ambiguïtés, incohérences, hypothèses incorrectes, …. Page 7
LICENCE EN GENIE LOGICIEL ISA EMT
organiser la formation sur les méthodes, les outils, les nouvelles technologies motiver les équipes, anticiper les problèmes, ne pas brider la créativité, détecter la résistance au changement
Méthodes, techniques et outils de production et de mesure L'analyse, la conception, le développement et le test du produit constituent le cœur de la production logicielle. Depuis les années 80, de gros efforts ont été faits sur les outils permettant de rationaliser et/ou automatiser ces tâches. Dans la suite du cours on insistera particulièrement sur o les méthodes de spécification et de conception qu'elles soient structurées ou orientées objets o les méthodes de validation et vérification o l'outillage : le poste de travail de l'ingénieur logiciel les ateliers de génie logiciel incluant outils d'analyse, générateur de code, environnement de développement et de mise au point, outils de tests, outils de mesures de performances… L'amélioration d'un processus passe par sa connaissance précise, il est nécessaire d'organiser des collectes de données pour mesurer: o Coûts, o Délais, o Qualité.(taille, temps, complexité) Actuellement de nombreux outils sont disponibles sur le marché pour aider à ces mesures (outils de planification, outils d'analyse statique de code…)
5. Assurance qualité Définition Assurance qualité : "Mise en œuvre d'un ensemble approprié de dispositions préétablies et systématiques destinées à donner confiance en l'obtention de la qualité requise." (AFNOR) Plus précisément toutes les normes qualité insistent sur trois aspects essentiels : communication, contrôle, organisation. Organisation Le processus de développement est classiquement organisé en différentes phases conformément à la figure suivante
ATELIER DE GENIE LOGICIEL
Page 8
LICENCE EN GENIE LOGICIEL ISA EMT
Figure : Les phases du cycle de vie d'un produit logiciel Une tâche essentielle du chef de projet est d'organiser ces différentes phases et de les lier à des activités en y affectant les ressources nécessaires tant humaines que logicielles ou matérielles. L'enchaînement des activités constituera le workflow du projet... Chaque activité débouche sur un produit intermédiaire dont la production détermine la fin de l'activité et qui devra être contrôlé avant de passer à l'activité suivante. Contrôle L'assurance qualité passe par des contrôles réguliers et inclut - la validation (du latin "VALIDARE", déclarer valide) permet de répondre à la question"sommes nous en train de faire le bon produit? " - la vérification (du latin "VERITAS ", la vérité): répond à la question "est ce que nous faisons le produit correctement" Comme le montre la figure suivante les erreurs sont de plus en plus coûteuses à réparer lorsqu'elles sont découvertes tard dans le cycle de vie: d'où le rôle primordial de contrôles intermédiaires. La validation et la vérification sont en partie garanties par la mise en place des d'inspections, revues, relectures pour tous les produits intermédiaires du développement (prototypes/ maquettes, documents de spécification, de conception, code, jeux de tests)
ATELIER DE GENIE LOGICIEL
Page 9
LICENCE EN GENIE LOGICIEL ISA EMT
Figure : coût relatif de correction des erreurs en fonction de leur découverte, source IBM Communication Même si l'assurance qualité ne doit pas être confondue avec une production intensive et bureaucratique de documentation, elle insiste sur la nécessité de communiquer à différents niveaux:
entre développeurs et environnement, (clients avant le développement, support pendant la phase de maintenance) : cahier des charges, dossier d'analyse, manuel d'installation, dossier de conception, plan projet, plan qualité entre les développeurs. (dossier d'analyse, dossier de conception, plan qualité, commentaires du code, résultats de tests…)
Certains documents sont plus spécifiquement dédiés à la gestion de la qualité, il s'agit du manuel qualité de l'entreprise et du plan qualité du projet. a) Manuel qualité Le manuel qualité décrit les procédures définies par une entreprise ou une organisation pour atteindre ses objectifs de qualité. Il répertorie les méthodes et procédures à utiliser pour: o Gestion de projets o Réalisation, Vérification, Validation, o Evaluation de la Qualité (Mesures). En s'appuyant sur:
ATELIER DE GENIE LOGICIEL
Page 10
LICENCE EN GENIE LOGICIEL ISA EMT
o Rédaction de standards, normes (ISO, DOD..) , conventions, guides, o Expérience acquise des projets, pour améliorer le processus. b) Plan qualité Le plan qualité logiciel définit, pour un projet donné, en accord avec le manuel qualité de l'entreprise, les méthodes techniques et outils permettant d'atteindre les objectifs de qualité pour un coût donné. Le plan qualité fait partie des éléments contractuels liant un client et son fournisseur de logiciels. Il est établi lors de la phase de planification.
6. Génie Logiciel 6.1.Définition du génie logiciel Le génie logiciel est l'ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi. Autrement dit :
Le génie logiciel est l'art de produire de bons logiciels au meilleur rapport qualité/prix Il utilise pour cela des principes d'ingénierie
Le génie logiciel demande de la part de l'informaticien Une bonne formation aux différentes techniques : le savoir Un certain entraînement et de l'expérience : le savoir-faire Le génie logiciel englobe les taches suivantes :
Spécification : capture des besoins, cahier des charges, spécifications fonctionnelles et techniques Conception : analyse, choix de la modélisation, définition de l'architecture, définition des modules et interfaces, définition des algorithmes Implantation : choix d'implantations, codage du logiciel dans un langage cible Intégration : assemblage des différentes parties du logiciel Documentation : manuel d'utilisation, aide en ligne Vérification : tests fonctionnels, tests de la stabilité, tests de la sureté Validation : recette du logiciel, conformité aux exigences du CDC Déploiement : livraison, installation, formation Maintenance : corrections, évolutions
6.2. Définition d’un logiciel Un logiciel est un ensemble d’entités nécessaires au fonctionnement d’un processus de traitement automatique de l’information. ATELIER DE GENIE LOGICIEL
Page 11
LICENCE EN GENIE LOGICIEL ISA EMT
Parmi ces entités, on trouve par exemple :
des programmes (en format code source ou exécutables) ; des documentations d’utilisation ; des informations de configuration.
6.3. Les différentes catégories de logiciels Logiciels génériques vendus comme les produits courants Logiciels sans impact économique significatif (logiciels amateurs) Logiciels jetables ou consommables (par exemple les traitements de texte), leur remplacement n'engendrent pas de risque majeur pour l'entreprise Logiciels spécifiques développés pour une application précise et destinés à un seul client Logiciels essentiels au fonctionnement d'une entreprise. Ce type de logiciel est le fruit d'un investissement non négligeable et doit avoir un comportement stable, sur et sécurisé. Logiciels vitaux, c'est-à-dire ceux dont dépend la vie d'êtres humains (domaines du transport, de l'armement et de la médecine). 6.4. Qualité d’un Logiciel Pour produire de bons logiciels, il est nécessaire de fixer des critères de qualité d'un logiciel. On peut séparer ces qualités en deux catégories : Lors de l'utilisation :
Fiabilité : correction et robustesse Adéquation aux besoins : y compris besoins implicites Ergonomie : simplicité et rapidité d'emploi, personnalisation Efficacité Convivialité Faible coût Respect des délais
Lors de la maintenance
Flexibilité : utilisation du paramétrage, de la généricité, de l'héritage Portabilité : éviter l'assembleur et les langages trop confidentiels Structuration : utilisation de modules ou de classes, de procédures ou de fonctions indépendantes aux max Documentation
ATELIER DE GENIE LOGICIEL
Page 12
LICENCE EN GENIE LOGICIEL ISA EMT
6.5. Les grands principes du génie logiciel
La rigueur La décomposition des problèmes en sous-problèmes indépendants La modularité L’abstraction L’anticipation des évolutions La généricité La construction incrémentale
ATELIER DE GENIE LOGICIEL
Page 13
LICENCE EN GENIE LOGICIEL ISA EMT
ATELIER DE GENIE LOGICIEL
Page 14
LICENCE EN GENIE LOGICIEL ISA EMT
ATELIER DE GENIE LOGICIEL
Page 15
LICENCE EN GENIE LOGICIEL ISA EMT
ATELIER DE GENIE LOGICIEL
Page 16
LICENCE EN GENIE LOGICIEL ISA EMT
6.6.Atelier de génie logiciel Un AGL est Un logiciel aidant à la réalisation de logiciels Système pour le développement logiciel assisté par ordinateur Catégorie de logiciels offrant un environnement complet de développement de logiciels en équipe Ensemble d'outils permettant de couvrir le cycle de vie du logiciel
Objectif des AGL
Améliorer la productivité Améliorer le suivi Améliorer la qualité Fiabilité Maintenance Évolutivité
Comment ?
En faisant le suivi des différentes phases du processus logiciel En offrant un cadre cohérent et uniforme de production
ATELIER DE GENIE LOGICIEL
Page 17