Untitled Quiz
76 Questions
2 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quels sont les principaux objectifs du Génie Logiciel?

Développer des logiciels satisfaisant le client et le fournisseur, de qualité supérieure, dans des délais raisonnables et avec des coûts acceptables.

Quelles sont les conséquences du manque de méthodologie dans le développement logiciel?

Des logiciels qui ne répondent pas aux attentes des clients, des temps de réponse trop lents, et des coûts de maintenance élevés.

Quel préjudice le piratage de logiciels peut-il causer?

Il cause un énorme préjudice pour les fournisseurs de logiciels.

Pourquoi est-il important de respecter les délais et les coûts dans le développement logiciel?

<p>Le non-respect des délais et des coûts peut entraîner des projets échoués et une insatisfaction des clients.</p> Signup and view all the answers

Quelles analogies peuvent être faites entre le Génie Logiciel et d'autres types de génie?

<p>Des analogies peuvent être établies avec le Génie Civil et le Génie Mécanique.</p> Signup and view all the answers

Quelle est la définition du Génie Logiciel?

<p>C'est l'ensemble des méthodes, techniques et outils pour produire un logiciel, au-delà de la seule programmation.</p> Signup and view all the answers

Comment la maintenance des logiciels est-elle impactée par l'absence de méthodologie?

<p>Elle devient trop chère et difficile, entraînant des difficultés dans la gestion des logiciels.</p> Signup and view all the answers

Quels doivent être les résultats d'un bon processus de Génie Logiciel?

<p>Des logiciels de qualité, conformes aux attentes, livrés dans les temps et respectant le budget.</p> Signup and view all the answers

Quels défis peuvent survenir si les exigences des clients ne sont pas satisfaites?

<p>Des clients insatisfaits, des pertes économiques pour le fournisseur, et des retours négatifs sur le produit.</p> Signup and view all the answers

Comment le développement logiciel peut-il être amélioré par le recours à des méthodologies?

<p>Il peut être amélioré en structurant le processus, réduisant les erreurs et optimisant les coûts.</p> Signup and view all the answers

Quels sont les principaux rôles impliqués dans le processus de développement logiciel?

<p>Développeur, Analyste, Architecte, Testeur et Chef de Projet.</p> Signup and view all the answers

Que signifie l'acronyme CASE et son utilité dans les activités de génie logiciel?

<p>CASE signifie 'Computer-Aided Software Engineering' et il est utilisé pour optimiser les différentes activités du développement logiciel.</p> Signup and view all the answers

Citez trois exemples d'outils CASE utilisés dans les projets de génie logiciel.

<p>Compilateurs, éditeurs et débogueurs.</p> Signup and view all the answers

Quel est le rôle d'un Chef de Projet dans un projet de développement logiciel?

<p>Le Chef de Projet coordonne l'équipe, gère le planning et s'assure que les objectifs sont atteints.</p> Signup and view all the answers

Pourquoi est-il important d'analyser les besoins dans le processus de développement logiciel?

<p>L'analyse des besoins permet de comprendre les exigences des utilisateurs et de définir les fonctionnalités du logiciel.</p> Signup and view all the answers

Quel est l'impact d'un débogueur dans le processus d'implémentation?

<p>Un débogueur aide à identifier et à corriger les erreurs dans le code durant l'implémentation.</p> Signup and view all the answers

Comment le rôle d'un Analyste diffère-t-il de celui d'un Développeur?

<p>L'Analyste se concentre sur la collecte et l'analyse des exigences, tandis que le Développeur se concentre sur l'écriture du code.</p> Signup and view all the answers

Quelles activités sont majoritairement réalisées lors de la phase de conception?

<p>La modélisation des systèmes, la définition de l'architecture et l'établissement des spécifications techniques.</p> Signup and view all the answers

Qu'est-ce qu'une méthodologie de développement en informatique?

<p>C'est un ensemble d'activités participant à la production d'un logiciel.</p> Signup and view all the answers

Quels sont les deux types principaux de méthodologies de développement mentionnés?

<p>Les méthodologies classiques et les méthodes agiles.</p> Signup and view all the answers

Pourquoi les méthodologies de développement sont-elles considérées comme complexes?

<p>Elles dépendent fortement des acteurs qui dirigent les activités.</p> Signup and view all the answers

Quel est le but principal d'utiliser une méthodologie de développement?

<p>Découper des projets importants et affecter correctement les tâches.</p> Signup and view all the answers

Comment les méthodes agiles diffèrent-elles des méthodologies classiques?

<p>Elles se concentrent sur des livraisons petites et fréquentes et moins sur la documentation.</p> Signup and view all the answers

Quelles sont les caractéristiques des modèles séquentiels?

<p>Ils ont des étapes clairement définies et une documentation très fournie.</p> Signup and view all the answers

Quelle est l'une des motivations principales derrière l'utilisation des méthodologies de développement?

<p>Anticiper et gérer les risques.</p> Signup and view all the answers

Que sont les outils CASE et quel est leur rôle?

<p>Ce sont des outils de support qui aident dans le processus de développement logiciel.</p> Signup and view all the answers

Dans quel type de projet est-il plus approprié d'utiliser les méthodes agiles?

<p>Dans des projets de petite et moyenne taille.</p> Signup and view all the answers

Quel modèle de développement implique un processus peu flexible et très structuré?

<p>Le modèle séquentiel.</p> Signup and view all the answers

Comment la réduction de la complexité est-elle une motivation dans le choix d'une méthodologie?

<p>Elle facilite la gestion et la compréhension des projets.</p> Signup and view all the answers

Qu'est-ce qui caractérise un modèle itératif?

<p>Il repose sur des cycles de développement répétitifs pour affiner le produit.</p> Signup and view all the answers

Pourquoi la documentation est-elle moins importante dans les méthodes agiles?

<p>Parce qu'elles privilégient l'interaction directe et le développement rapide.</p> Signup and view all the answers

Quel est l'impact de l'affectation correcte des tâches dans une méthodologie de développement?

<p>Cela améliore l'efficacité et la productivité de l'équipe de développement.</p> Signup and view all the answers

Quel est le principal objectif des outils CASE ?

<p>Automatiser les tâches et gérer le projet de développement.</p> Signup and view all the answers

Quels sont les deux critères de classification des outils CASE ?

<p>D'un point de vue fonctionnel et d'un point de vue activité.</p> Signup and view all the answers

Citez un exemple d'outil de planification et son utilité.

<p>Microsoft Project, utilisé pour la gestion des délais et des ressources dans un projet.</p> Signup and view all the answers

Quels types d'outils pourrait-on classer sous la catégorie 'Editeurs' ?

<p>Les éditeurs de texte comme vi et GIMP pour l'édition d'image.</p> Signup and view all the answers

Quel outil de gestion de configuration est mentionné dans le texte ?

<p>GitHub.</p> Signup and view all the answers

À quoi servent les outils de test mentionnés dans le document ?

<p>Ils sont utilisés pour réaliser des tests unitaires et assurer la qualité du code.</p> Signup and view all the answers

Qu'est-ce qui est inclus dans les 'Outils de documentation' ?

<p>Documents de projet et documents de code.</p> Signup and view all the answers

Quelle est la fonction des outils de support de procédé ?

<p>Ils aident à générer du code et offrent des outils d'assistance.</p> Signup and view all the answers

Citez un outil de traitement de langage et sa fonction.

<p>Un compilateur, qui traduit le code source en code machine.</p> Signup and view all the answers

Pourquoi est-il important de classer les outils CASE ?

<p>Cela permet de mieux comprendre leurs fonctions et leur efficacité dans divers aspects du développement.</p> Signup and view all the answers

Quel est un métier qui pourrait utiliser les outils de gestion de configuration ?

<p>Développeur.</p> Signup and view all the answers

Quelle est la différence entre un compilateur et un interprète ?

<p>Un compilateur traduit l'intégralité d'un programme, tandis qu'un interprète exécute le code ligne par ligne.</p> Signup and view all the answers

Quel rôle les outils de test jouent-ils dans le développement ?

<p>Ils garantissent la fiabilité et la performance du logiciel en détectant les défauts.</p> Signup and view all the answers

Cite un exemple d'outil de documentation et son utilisation.

<p>Doxygen, utilisé pour générer de la documentation à partir du code source.</p> Signup and view all the answers

Quels sont les moments appropriés pour utiliser le modèle en V dans le développement logiciel?

<p>Lors de la création d'une nouvelle version d'un produit existant et lors du portage d’un produit sur une autre plateforme.</p> Signup and view all the answers

En quoi le modèle en V diffère-t-il du modèle en cascade?

<p>Le modèle en V met l’accent sur la vérification et la validation, avec des tests réalisés en parallèle des autres activités.</p> Signup and view all the answers

Quels avantages principaux sont associés à l'utilisation du modèle en V?

<p>Il accroît la qualité du logiciel en se concentrant sur les tests et la validation, et facilite la planification dans la gestion de projets.</p> Signup and view all the answers

Quels inconvénients peut-on rencontrer avec le modèle en V?

<p>Il ne gère pas explicitement les changements des spécifications et ne prend pas en compte les activités d’analyse de risque.</p> Signup and view all the answers

Pourquoi le modèle en V est-il considéré comme 'facile à utiliser'?

<p>Parce qu'il offre une structure claire avec des phases distinctes dédiées aux tests et à la validation.</p> Signup and view all the answers

Comment le modèle en V aide-t-il à améliorer la qualité du logiciel?

<p>En intégrant des tests réguliers et en validant chaque livrable tout au long du développement.</p> Signup and view all the answers

Quelle est l'une des raisons pour lesquelles les spécifications doivent être stables lors de l'utilisation du modèle en V?

<p>Car toute modification des spécifications peut compliquer la validation et nécessiter des retours en arrière dans le processus.</p> Signup and view all the answers

Quel rôle les tests jouent-ils dans le modèle en V?

<p>Les tests sont parallèles aux autres activités et jouent un rôle central dans la vérification et la validation du produit.</p> Signup and view all the answers

D'où provient la complexité d'intégrer des modifications dans le modèle en V?

<p>La complexité vient du fait que le modèle ne prévoit pas de processus pour gérer les changements en cours de développement.</p> Signup and view all the answers

Qu'est-ce que le modèle en cascade et pourquoi est-il considéré comme un modèle académique?

<p>Le modèle en cascade est un processus linéaire où chaque phase doit être terminée avant de passer à la suivante. Il est considéré comme académique en raison de sa structure claire et de sa facilité d'utilisation pour les étudiants.</p> Signup and view all the answers

En quoi l'accent sur les tests dans le modèle en V est-ce bénéfique pour la gestion de projets?

<p>Il permet d'identifier et de résoudre les problèmes dès leur apparition, réduisant ainsi le risque de défauts importants à la livraison.</p> Signup and view all the answers

Mentionnez un domaine où le modèle en V n'est pas idéal.

<p>Il n'est pas idéal pour des projets où les exigences évoluent rapidement.</p> Signup and view all the answers

Quels sont les avantages du modèle en cascade en matière de gestion de projet?

<p>Il offre une structure organisée, est facile à comprendre pour une équipe inexpérimentée et est idéal lorsque la qualité est plus importante que les délais et les coûts.</p> Signup and view all the answers

Quel est le résultat d'une mauvaise gestion des spécifications dans le modèle en V?

<p>Une mauvaise gestion peut conduire à des produits qui ne répondent pas aux attentes des utilisateurs.</p> Signup and view all the answers

Quels sont les principaux inconvénients du modèle en cascade?

<p>Les besoins des clients sont souvent instables et le produit n'est visible qu'à la fin du processus. De plus, une phase ne peut commencer tant que celle précédente n'est pas terminée.</p> Signup and view all the answers

Quelles caractéristiques rendent le modèle en V 'facile à planifier'?

<p>Sa structure en phases distinctes et ses livrables testables permettent une planification claire.</p> Signup and view all the answers

Pourquoi le modèle en cascade peut-il être considéré comme sensible aux nouveaux besoins?

<p>Il impose que chaque phase soit complétée avant de commencer la suivante, rendant difficile l'adaptation aux changements de besoins en cours de projet.</p> Signup and view all the answers

Quelle est l'importance de la validation dans le modèle en V?

<p>La validation assure que le produit final répond aux spécifications initiales et satisfait les besoins des utilisateurs.</p> Signup and view all the answers

Quel est l'impact de la faible implication du client dans le modèle en cascade?

<p>La faible implication du client peut mener à des divergences entre les attentes et les résultats finaux, car le produit n'est visible qu'à la fin.</p> Signup and view all the answers

Comment le modèle en V aborde-t-il la documentation des tests?

<p>Chaque livrable documenté doit être testé pour assurer qu'il respecte les critères de qualité.</p> Signup and view all the answers

Dans quel type de projet le modèle en cascade fonctionne-t-il mieux?

<p>Il fonctionne mieux dans les projets où les exigences sont bien définies et peu susceptibles de changer.</p> Signup and view all the answers

Pourquoi le modèle en cascade est-il considéré comme facile à comprendre?

<p>Sa structure étape par étape permet aux membres de l'équipe de comprendre clairement les objectifs de chaque phase.</p> Signup and view all the answers

Comment le modèle en cascade traite-t-il la qualité par rapport aux coûts et délais?

<p>Il privilégie la qualité, même si cela signifie que les coûts et délais peuvent être moins nombreux.</p> Signup and view all the answers

Quelles étapes sont incluses dans le modèle en cascade?

<p>Les étapes incluent la spécification, la conception, l'implémentation, les tests, le déploiement et la maintenance.</p> Signup and view all the answers

Quelle est la principale raison pour laquelle le modèle en cascade peut devenir problématique?

<p>La rigidité du modèle peut rendre difficile l'intégration de nouvelles exigences une fois que le projet est en cours.</p> Signup and view all the answers

En quoi le modèle en cascade peut-il influencer la dynamique de l'équipe?

<p>Il peut renforcer la discipline au sein de l'équipe en suivant strictement les phases définies.</p> Signup and view all the answers

Pourquoi la gestion du temps est-elle un facteur critique dans le modèle en cascade?

<p>Chaque phase dépend de l'achèvement de la précédente, donc un retard dans une phase impacte l'ensemble des délais du projet.</p> Signup and view all the answers

Quel type de projets bénéficierait le moins du modèle en cascade?

<p>Les projets nécessitant une flexibilité ou des ajustements fréquents des exigences bénéficieront le moins de ce modèle.</p> Signup and view all the answers

Comment le modèle en cascade traite-t-il l'évaluation des risques?

<p>Les risques sont souvent décalés vers la fin du projet, ce qui peut poser problème à mesure que le délai de livraison approche.</p> Signup and view all the answers

Quel est le rôle des livrables dans le modèle en cascade?

<p>Chaque phase produit des livrables spécifiques qui sont essentiels pour avancer à la phase suivante.</p> Signup and view all the answers

Flashcards

Génie Logiciel

Ensemble des méthodes, techniques et outils pour créer des logiciels, plus qu'uniquement la programmation.

Objectif du Génie Logiciel

Développer des logiciels satisfaisants, de qualité supérieure, respectant les délais et les coûts.

Problèmes sans méthodologie

Logiciels qui ne répondent pas aux attentes, temps de réponse lent, respect insuffisant des délais et coûts élevés, maintenance complexe.

Software Engineering

Version anglaise du Génie Logiciel.

Signup and view all the flashcards

Satisfaire le client

Répondre aux besoins et aux exigences des utilisateurs.

Signup and view all the flashcards

Qualité supérieure

Logiciel fiable, performant et adapté.

Signup and view all the flashcards

Délais raisonnables

Respecter les temps prévus pour la création du logiciel.

Signup and view all the flashcards

Coûts acceptables

Respecter le budget prévu pour la réalisation du logiciel.

Signup and view all the flashcards

Analogie Génie Logiciel

La comparaison du Génie Logiciel avec le Génie Civil et le Génie Mécanique pour démontrer la nécessité d'une approche méthodique.

Signup and view all the flashcards

Piratage de logiciels

L'utilisation illégale de logiciels.

Signup and view all the flashcards

Métiers de GL

Différents rôles impliqués dans le développement logiciel, incluant développeur, analyste, architecte, testeur et chef de projet.

Signup and view all the flashcards

Outils CASE

Logiciels utilisés dans les différentes phases du développement logiciel, depuis les besoins jusqu'à la conception.

Signup and view all the flashcards

Développeur

Personne qui écrit et teste le code.

Signup and view all the flashcards

Analyste

Personne qui analyse et détermine les besoins du client.

Signup and view all the flashcards

Architecte

Personne qui planifie la structure du logiciel.

Signup and view all the flashcards

Testeur logiciel

Personne qui vérifie le fonctionnement du logiciel.

Signup and view all the flashcards

Chef de Projet

Personne responsable de l'organisation du projet de développement complet.

Signup and view all the flashcards

Expression de besoins

Détermination des exigences du client pour un logiciel.

Signup and view all the flashcards

Méthodologie de développement

Ensemble d'activités menant à la création d'un logiciel, définissant les étapes, leur ordre et l'affectation des tâches aux développeurs.

Signup and view all the flashcards

Cycle de vie d'un logiciel (SDLC)

Autre nom pour une méthodologie de développement, qui couvre toutes les étapes de la vie d'un logiciel.

Signup and view all the flashcards

Motivations de l'utilisation de méthodologies

Permet de mieux gérer les projets, réduire la complexité et les risques, tout en assurant une meilleure affectation des tâches.

Signup and view all the flashcards

Méthodologies classiques

Modèles stricts avec des étapes clairement définies, une documentation complète et adaptées aux gros projets.

Signup and view all the flashcards

Méthodes agiles

Modèles incrémentaux et itératifs avec des livraisons fréquentes, priorisant le code et adaptées aux projets de petite et moyenne taille.

Signup and view all the flashcards

Modèle séquentiel

Un modèle où les étapes du développement sont exécutées en séquence, une après l'autre.

Signup and view all the flashcards

Modèle incrémental

Un modèle où le logiciel est développé en plusieurs incréments, chaque incrément ajoutant une fonctionnalité au logiciel.

Signup and view all the flashcards

Modèle itératif

Un modèle où le développement se fait en cycles, chaque cycle améliorant le logiciel en fonction des commentaires reçus.

Signup and view all the flashcards

Quand utiliser une méthodologie X ?

Le choix de la méthodologie dépend du type de projet, de la taille de l'équipe, des exigences et des ressources disponibles.

Signup and view all the flashcards

Avantages des méthodologies classiques

Permet de mieux gérer les gros projets avec des exigences strictes et une documentation complète.

Signup and view all the flashcards

Avantages des méthodes agiles

Plus flexibles pour les projets changeants, permettent des livraisons rapides et nécessitent moins de documentation.

Signup and view all the flashcards

Exemples de méthodologies classiques

Waterfall, Spiral, V-Modell.

Signup and view all the flashcards

Exemples de méthodes agiles

Scrum, Kanban, Extreme programming.

Signup and view all the flashcards

Choisir la méthodologie adaptée

Il est important de choisir la méthodologie la plus adaptée au projet et aux contraintes.

Signup and view all the flashcards

Classification fonctionnelle des CASE

On classe les outils CASE en fonction de leur fonction principale dans le processus de développement.

Signup and view all the flashcards

Exemples d'outils de planification

Outils PERT, outils d'estimation, tableurs comme Excel, GanttProject, DotProject.

Signup and view all the flashcards

Exemples d'éditeurs

Editeurs de texte, d'image, de diagrammes, tels que vi, bloc notes, GIMP, Photoshop, Visio.

Signup and view all the flashcards

Gestion de configuration

Gestion des modifications apportées au code source, contrôle des versions, coordination des équipes.

Signup and view all the flashcards

Outils de support de procédé

Générateurs de code, outils d'assistance, IDE, tels que Team Foundation Server, Accurev, Enterprise Architect.

Signup and view all the flashcards

Outils de traitement de langage

Compilateurs, interpréteurs, débogueurs, transpilateurs, permettant de transformer et d'exécuter le code.

Signup and view all the flashcards

Outils de test

Environnements de tests, outils de tests unitaires, tels que Junit, Nunit, TestWorks, Bugzilla.

Signup and view all the flashcards

Outils de documentation

Documents de projet, documents de code, créés avec Word, Open Office, Sandcastle, Doxygen, javadoc.

Signup and view all the flashcards

Classification par activité

On classe les outils CASE en fonction des activités du développement où ils interviennent.

Signup and view all the flashcards

Exemple d'outil utilisé en conception

Un outil de modélisation UML peut être utilisé pour représenter la conception du logiciel.

Signup and view all the flashcards

Exemple d'outil utilisé en programmation

Un IDE, comme Eclipse, peut être utilisé pour écrire et déboguer le code.

Signup and view all the flashcards

Exemple d'outil utilisé en test

Un outil de test automatisé peut être utilisé pour exécuter des tests répétitifs et vérifier le bon fonctionnement du logiciel.

Signup and view all the flashcards

Rôles des professionnels du développement

Le développement logiciel implique des rôles comme analyste, développeur, architecte, testeur et chef de projet.

Signup and view all the flashcards

Modèle en Cascade

L'un des premiers modèles de développement logiciel, inspiré du modèle de Royce (1970). Il est linéaire, avec des phases distinctes et des livrables à la fin de chaque phase. Une phase ne peut démarrer que si la précédente est terminée.

Signup and view all the flashcards

Modèle en Cascade - Phases

Le modèle en cascade comporte plusieurs phases : spécification, conception, implantation, tests, déploiement et maintenance.

Signup and view all the flashcards

Avantages du Modèle en Cascade

Ce modèle est facile à comprendre et à utiliser, surtout pour les équipes inexpérimentées. Il permet de gérer et suivre efficacement les projets, surtout quand la qualité est prioritaire aux coûts et délais.

Signup and view all the flashcards

Inconvénients du Modèle en Cascade

Le modèle en cascade n'est pas flexible face aux changements de besoins, car il est difficile de revenir en arrière. Les risques se concentrent à la fin du projet, et le client n'est pas impliqué souvent.

Signup and view all the flashcards

Quand utiliser le Modèle en Cascade ?

Le modèle en cascade est approprié pour les projets ayant des exigences stables et claires, où la qualité est prioritaire et les changements sont peu probables.

Signup and view all the flashcards

Modèle en V

Variante du modèle en cascade qui met l'accent sur la vérification et la validation du logiciel pendant le développement.

Signup and view all the flashcards

Avantages du modèle en V

Le modèle en V est reconnu pour sa capacité à accroître la qualité du logiciel en mettant l'accent sur les tests et la validation. De plus, il est facile à planifier et à utiliser dans un cadre de gestion de projets.

Signup and view all the flashcards

Inconvénients du modèle en V

Malgré ses avantages, le modèle en V présente certaines limitations. Il ne gère pas efficacement les changements de spécifications, n'inclut pas d'activités d'analyse de risque et peut être rigide dans sa gestion des tâches parallèles.

Signup and view all the flashcards

Quand utiliser le modèle en V ?

Le modèle en V est particulièrement adapté aux projets où les besoins sont connus et stables, la technologie à utiliser est maîtrisée, et la création d'une nouvelle version d'un produit existant ou le portage d'un produit sur une autre plateforme sont les objectifs du développement.

Signup and view all the flashcards

Caractéristiques du modèle en V

Le modèle en V est basé sur une approche séquentielle, où chaque phase est exécutée de manière linéaire. Il s'agit de tester le produit en parallèle du développement.

Signup and view all the flashcards

Le modèle en V - Vérification

Le modèle en V utilise la vérification pour s'assurer que le logiciel est conforme aux exigences spécifiées.

Signup and view all the flashcards

Le modèle en V - Validation

Le modèle en V utilise la validation pour s'assurer que le logiciel répond aux besoins des utilisateurs finaux.

Signup and view all the flashcards

Le modèle en V - Tests

Le modèle en V met fortement l'accent sur les tests. Chaque phase de développement est accompagnée d'une phase correspondante de test.

Signup and view all the flashcards

Study Notes

Cours 1 - Méthodologies de Développement

  • Le cours porte sur les méthodologies de développement de logiciels et se divise en modules.
  • Le module introduit au génie logiciel.

Objectifs du Cours

  • Découvrir les principales activités du développement de logiciels.
  • Connaître les différentes méthodologies et leurs philosophies.
  • Connaître les méthodologies classiques et les méthodes agiles.
  • Choisir une méthodologie appropriée en se basant sur les données concernant le projet de développement.
  • Prise de contact avec la méthodologie UP.
  • Découvrir les outils de support (CASE).

Plan du Cours

  • Introduction
  • Activités
  • Outils et Métiers
  • Méthodologies
  • Méthodologies Classiques
  • Méthodes Agiles
  • UP

Introduction

  • Définition d'un logiciel : Un ensemble de traitements effectués automatiquement par un appareil informatique. Un logiciel est un « transformateur » d'information.
  • Composantes d'un logiciel : Produits connexes, binaires (exécutables), documentation.
  • Développement d'un logiciel : La transformation d'une idée ou d'un besoin en un logiciel fonctionnel. Le client (utilisateur) produit l'idée et le fournisseur la développe.
  • Un bon logiciel (du point de vue du client) : respecte les critères de qualité, est peu coûteux, livré dans les délais et fait ce qu'on lui demande.
  • Un bon logiciel (du point de vue du fournisseur) : minimise le coût, minimise les délais et maximise les profits.
  • Faits sur le développement : le développement est plus que la programmation, le développement de logiciels n'est pas une opération facile. Le développement implique plusieurs équipes de compétences différentes avec la Communication , Des outils, Un projet de développement , Une méthodologie.
  • Critères de réussite : Délai, Portée, Bon Logiciel, Coût, Qualité.
  • Echecs des projets de développement : Taux de réussite des projets basé sur les données de Standish Group.
  • Difficultés et points de vue.
  • Difficultés de développement : Gérer le projet et les personnes, Différence de langage, Le logiciel est intangible (non palpable), Le piratage de logiciels.

Conséquences du Manque de Méthodologie

  • Des logiciels qui ne satisfont pas les attentes des clients.
  • Des temps de réponse trop lents.
  • Non respect des délais et des coûts.
  • Maintenance trop chère car trop difficile.

Analogies

  • Génie Civil
  • Génie Mécanique

Le Génie Logiciel

  • L'objectif du GL est de permettre le développement de logiciels satisfaisant le client et le fournisseur, de qualité supérieure, dans des délais raisonnables et avec des coûts acceptables.

Définition

  • Le génie logiciel (en anglais software engineering) désigne l'ensemble des méthodologies, des techniques et outils concourant à la production d'un logiciel, au-delà de la seule activité de programmation.

Composantes

  • Méthodologies
  • Outils
  • Techniques

Composantes - Suite

  • Méthodologie: Déroul�ée par des acteurs, supportée par des outils, composé de plusieurs activités, selon certaines techniques, et en utilisant certains outils.
  • Les outils: Utilisés par des acteurs, pour certaines activités, selon des techniques
  • Les techniques: Utilisées par des acteurs, pour exécuter des activités selon une certaine manière.

Activités de Développement

  • Étapes de développement : Développement, Support.
  • Principales activités : Analyse de besoins, Conception, Codage, Tests, Maintenance

Analyse de besoins

  • Collecter les attentes du client.
  • Comprendre le client et l'environnement.
  • Formaliser.
  • Contractualiser.
  • Difficultés de l'analyse de besoins : le client parle un autre langage, incompréhensions, oublis, complexités; difficultés d'estimation, changement des besoins en cours de projet.

Conception

  • Choix des solutions techniques permettant de répondre aux attentes.
  • Aide à l'établissement d'un planning de la solution.
  • Élaboration de l'architecture de la solution
  • Maquettes, prototypes
  • Connaissances techniques mises en Å“uvre
  • Difficultés de conception : Dépendance forte envers le résultat de l'analyse des besoins, plusieurs solutions possibles et choix de la meilleure solution, nécessite une compétence technique accrue, évolution rapide de la technologie.

Codage

  • Transformation des solutions proposées lors de la conception en un code opérationnel.
  • Basé sur les langages de programmation.
  • L'équipe la plus grande.
  • Utilisation d'un référentiel unique du code source (emplacement, modèles,...).
  • Difficultés de codage: Gestion de projets pour équipes nombreuses, uniformisation des méthodes de travail, intégration du code source, mobilité des développeurs, uniformisation de la compréhension du projet, différence de niveau technique entre développeurs.

Tests

  • Détermination de la qualité du logiciel.
  • Conformité du logiciel par rapport aux spécifications.
  • Plusieurs types de tests : Tests unitaires, tests fonctionnels.
  • Tests en boîte blanche (avec accès au code source), tests en boîte noire.
  • Difficultés de test : Nécessite concentration, souvent lassant, Optimisation : trouver le maximum de défaillances en un moins de temps, Difficilement automatisable.

Activités de Développement

Outils et Métiers

  • Principaux métiers de développement : Développeur, Chef de projet, Analyste, Architecte, Testeur.
  • Métiers et Activités
  • Outils CASE : Définition, Exemples (compilateurs, éditeurs, débogueurs, ...etc.), But (automatiser les tâches et/ou gérer le projet de développement), Classification des CASE (fonctionnel, activité).

Méthodologies de Développement

  • Définition d'une méthodologie : Un ensemble d'activités qui conduisent à la production d'un logiciel.
  • Motivations : Maîtriser les gros projets, Découper le projet et affecter correctement les tâches, Anticiper et gérer les risques, Réduire la complexité.
  • Générations de méthodologies : Méthodologies classiques (modèles stricts, étapes claires et documentation fournie, conviennent à des projets gouvernementaux ou grands). Méthodes agiles (modèles incrémentaux et itératifs, petites livraisons fréquentes, conviennent aux projets de petite et moyenne taille).
  • Typologie : Modèle séquentiel, Modèle incrémental, Modèle itératif.
  • Quand utiliser une méthodologie X ? Nature du projet, Taille du projet, Nature du client, Exigences du contrat, Compétences de l'équipe

Méthodologies Classiques

  • Modèle en cascade : L'un des premiers modèles proposés, inspiré par le modèle de Royce, basé sur le principe de livrables, modèle linéaire, académique.
  • Modèle en Cascade – Suite : Spécifications, Conception, Implémentation, Tests, Déploiement, Maintenance.
  • Avantages : Facile à utiliser, Un procédé structuré pour une équipe inexpérimentée, Idéal pour la gestion et le suivi de projets, Fonctionne bien quand la qualité est plus importante que les coûts et les délais.
  • Inconvénients : Les besoins des clients sont souvent instables, Sensibilité aux nouveaux besoins, Une phase ne peut démarrer que si la précédente est finie, Le produit n'est visible qu'à la fin, Les risques se décalent vers la fin, Très faible implication du client.
  • Modèle en V : Variante du modèle en cascade qui met l'accent sur la verification et la validation, Le test du produit se fait parallèlement avec les autres activités. Avantages : Met l'accent sur les tests et la validation, chaque livrable doit être testable, facile à utiliser, Facile à planifier. Inconvénients : Ne gère pas les activités parallèles, Ne gère pas explicitement les changements des spécifications, Ne contient pas d'activités d'analyse de risque.
  • Prototypage : Le projet se fait sur plusieurs itérations, Les développeurs construisent un prototype selon les attentes du client, Le prototype est évalué par le client, Le client donne son feedback, Adaptation des prototypages selon les feedbacks, Normalisation du code.
  • Avantages : Implication active du client, Le développeur apprend directement du client, S'adapte rapidement aux changements des besoins, Progrès constant et visible, Une grande interaction avec le produit.
  • Inconvénients : Implique un code faiblement structuré, Degré très faible de maintenabilité, Le processus peut ne jamais s'arrêter, Très difficile d'établir un planning.
  • Quand utiliser le prototypage : Pour de très petits projets impliquant peu de personnes, Quand les besoins sont instables et/ou nécessitent des clarifications, Quand des livraisons rapides sont exigées, Très déconseillé en situations professionnelles.
  • Modèle Incrémental : Chaque incrément est une construction partielle du logiciel, trie les spécifications par priorité et regroupe les composants dans des groupes de spécifications. Chaque incrément implémente un ou plusieurs groupes jusqu'à ce que le produit soit complet. Avantage : Développement de fonctionnalités à risque en premier, Utiliser l'approche << diviser pour régner>>, Le client intervient à la fin de chaque incrément, Le client entre en relation avec le produit très tôt. Inconvénients : Exige une bonne planification et une bonne conception, Exige une vision sur le produit fini, Le coût total du système peut être cher.
  • Quand utiliser le modèle incrémental : Quand la plupart des spécifications sont connues à l'avance et vont être sujettes à de faibles évolutions, Quand on veut rapidement un produit fonctionnel, Pour des projets de longues durées, Pour des projets impliquant de nouvelles technologies.
  • Modèle en spirale : Modèle itératif qui a des incréments sous forme de cycle, et détermine les objectifs du cycle suivant à la fin de chaque cycle. Chaque cycle est composé des mêmes activités que le modèle en cascade. Inclut l'analyse de risque et le prototypage. Avantage : Identification rapide des risques, Impacts minimaux des risques sur le projet, Fonctions critiques développées en premier, Feedback rapide du client, Une évaluation continue du procédé. Inconvénients : L'évaluation des risques peut prendre beaucoup de temps, Le modèle est très complexe, La spirale peut s'éterniser, Les développeurs doivent être réaffectés pendant les phases non-développement, Les objectifs ne sont pas faciles à formuler.
  • Quand utiliser le modèle en spirale : Quand le prototypage est exigé, Quand le risque du projet est considérable, Pour les nouveaux produits, Quand les spécifications ne sont pas stables, Quand le projet implique de la recherche et de l'investigation.

Méthodes Agiles

  • Historique : Au milieu des années 90, un groupe d'experts en gestion de projets de développement désiraient proposer de nouvelles méthodologies plus légères, sans trop de documents, s'adressant à des équipes réduites, pour des projets de petite ou moyenne taille, qui soient capables de s'adapter rapidement aux changements des spécifications tout en garantissant des livraisons fréquentes (ces méthodologies sont qualifiées de « méthodes agiles »).
  • Principes Agiles : Individus et interactions au lieu de processus et outils, Logiciel fonctionnel au lieu de documentation massive, Collaboration du client au lieu de négociation de contrats, Réagir aux changements au lieu de suivre un plan.
  • Principe 1 : Les collaborateurs sont essentiels au succès. Un collaborateur n'est pas un programmeur mais une personne qui travaille bien en équipe. Démarrer petit et investir peu au démarrage. Construire l'équipe est plus important que construire l'environnement.
  • Principe 2 : Le code sans documentation est un désastre. Trop de documents est pire que pas de documents. Souvent les documents sont des « mensonges » formels. Le code ne ment jamais sur lui-même. Produire toujours des documents aussi courts que possible.
  • Principe 3 : Très difficile de décrire la totalité du logiciel depuis le début. Les projets réussis impliquent les clients d'une manière fréquente et régulière. Le client doit avoir un contact direct avec l'équipe de développement.
  • Principe 4 : Un logiciel ne peut pas être planifié très loin dans le futur, Tout change : technologie, environnement et surtout les besoins. Les chefs de projets classiques fonctionnent plus facilement sur la base de GANTT, PERT et le système de tâches. Avec le temps, les diagrammes se dégradent car des tâches s'ajoutent et d'autres deviennent non nécessaires. Planifier très court (2 semaines à un mois), Plannings détaillés pour la semaine à venir, plus vagues au-delà.
  • Principales méthodes agiles : Adaptive Software Development (ASD), Feature Driven Development (FDD), Crystal Clear, Dynamic Software Development Method (DSDM), Rapid Application Development (RAD), Scrum, Extreme Programming (XP), Kanban.

Méthodologie XP

  • Développée par Kent Beck et Ward Cunningham en 1995.
  • Méthode légère, efficace, à bas risques, flexible, scientifique et amusante pour développer des logiciels.
  • Destinée à des équipes de moyenne taille avec des spécifications incomplètes ou vagues.
  • Le codage est le noyau de XP.
  • Fondamentaux : Implication massive du client, Test unitaire continu (TDD), Programmation par paires, Itérations courtes et livraisons fréquentes.

Méthodologie Scrum

  • Inspiré par une approche en 1986 par H. Takeuchii et H. Nonaka, terme Scrum (dans "Wicked Problems, Righteous Solutions" par DeGrace et Stahl, 1991).
  • Utilisé comme méthodologie dans le livre << Agile Software Development with Scrum"" par K. Schwaber et M. Beedlle en 2001.
  • Principes : Simple, Empirique (itérations courtes, feedback continu), Techniques simples, Equipes (auto-organisation, multi-compétences), Optimisation (détection rapide des anomalies, organisation simple, ouverture et visibilité).
  • Déroulement : Scrum, Schéma global (Backlog du produit, Backlog du sprint, Mélée quotidienne, Sprint, Produit). Principe et Concepts : Processus (Sprint), Backlog (Product Backlog, Sprint backlog, équipe, Scrum Master, Product Owner, Team), réunions (Scrum quotidien, planning, revue, rétrospective), Suivi (Rapports, vélocité).
  • Avantages : Méthode simple et efficace, Adoptée par les géants du marché, Orientée projet, Peut inclure d'autres activités venant d'autres méthodologies.
  • Inconvénients : N'est pas 100% spécifique au GL, Difficulté de budgétiser un projet.

Processus Unifié (UP)

  • Méthodologie très populaire, Incrémentale et itératif, dont la plus célèbre est RUP (Rational Unified Process).
  • Implémentations : RUP (rational unified process), Agile Unified Process (AUP), Basic Unified Process (BUP), Enterprise Unified Process (EUP), Essential Unified Process (EssUP), Open Unified Process (OpenUP), Oracle Unified Method (OUM).
  • Principes : Processus itératif et incrémental, basé sur les cas d'utilisation, centré sur l'architecture, accent sur les risques, utilisation de modèles UML.
  • Phases : Inception, Elaboration, Construction, Transition.
  • Activités : Expression de besoins, Analyse, Conception, Implémentation, Tests

Avantages et Inconvénients de UP

  • Avantages : Méthodologie complète, Identification rapide des risques, Largement adoptée, Intégration avec UML, Séparation concise des phases et des livrables, Des formations/livres/tutoriaux disponibles.
  • Inconvénients : Complexes, Plusieurs implémentations d'où confusion ou éloignement du concept d'origine.

Bibliographie

  • Les livres et les cours citées comme sources d'informations et références.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Untitled Quiz
6 questions

Untitled Quiz

AdoredHealing avatar
AdoredHealing
Untitled Quiz
37 questions

Untitled Quiz

WellReceivedSquirrel7948 avatar
WellReceivedSquirrel7948
Untitled Quiz
55 questions

Untitled Quiz

StatuesquePrimrose avatar
StatuesquePrimrose
Untitled Quiz
50 questions

Untitled Quiz

JoyousSulfur avatar
JoyousSulfur
Use Quizgecko on...
Browser
Browser