Génie Logiciel - Objectifs et Définitions
24 Questions
0 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

Quelle est la principale différence entre le modèle en cascade et le modèle en V ?

Le modèle en V se différencie du modèle en cascade par son approche en V, où les étapes de validation sont intégrées dès le début du projet, et chaque étape de développement est accompagnée d'une étape de test correspondante.

Quel est l'objectif du diagramme de cas d'utilisation ?

  • Modéliser les interactions entre les acteurs et le système (correct)
  • Décrire l'architecture du logiciel
  • Décrire les processus de développement du logiciel
  • Définir les classes et les attributs du système
  • Quel est le rôle d'un acteur dans un diagramme de cas d'utilisation ?

    Un acteur représente un rôle joué par une entité externe qui interagit avec le système. Il peut s'agir d'un utilisateur humain, d'un autre système ou d'un appareil matériel.

    Expliquez la différence entre une association et une dépendance en UML.

    <p>Une association représente une relation sémantique durable entre deux classes. Elle indique qu'une instance d'une classe contient une référence à une instance d'une autre classe. Une dépendance, quant à elle, est une relation de type &quot;utilise un&quot;. Elle est utilisée lorsqu'une classe utilise un objet d'une autre classe comme argument dans une méthode ou le crée localement dans sa méthode.</p> Signup and view all the answers

    Quelle relation UML indique qu'un cas d'utilisation est toujours appelé par un autre cas d'utilisation ?

    <p>Inclusion</p> Signup and view all the answers

    Quel est le but de la phase de faisabilité dans l’analyse des besoins ?

    <p>La phase de faisabilité a pour but de vérifier si le développement du logiciel proposé est réalisable et si cela vaut la peine d’être mis en œuvre.</p> Signup and view all the answers

    Quelles sont les deux méthodes de programmation mentionnées dans le principe de construction incrémentale ?

    <p>Écrire l’ensemble du code source d’un programme et compiler. Puis, écrire le code source d’une fonction ou module, le compiler et passer à la suivante.</p> Signup and view all the answers

    Le modèle en cascade est un modèle de développement logiciel qui se base sur des exigences exprimées en début de projet, et ce, sans possibilité de revenir en arrière.

    <p>True</p> Signup and view all the answers

    Le modèle en V est un modèle d'organisation des activités d'un projet qui se caractérise par un flux d'activité descendant qui détaille le produit jusqu'à sa réalisation, et un flux ascendant, qui assemble le produit en vérifiant sa qualité.

    <p>True</p> Signup and view all the answers

    Quel est le rôle d'un diagramme de cas d'utilisation dans la modélisation d'un système ?

    <p>Il présente un système du point de vue de ses acteurs, en mettant l’accent sur les relations entre le système et ses interfaces externes.</p> Signup and view all the answers

    Expliquez la différence entre un acteur principal et un acteur secondaire dans un diagramme de cas d'utilisation.

    <p>Un acteur principal utilise les fonctionnalités principales du système, tandis qu’un acteur secondaire effectue des tâches administratives ou de maintenance.</p> Signup and view all the answers

    Quel est le rôle de l’UML (Unified Modeling Language) dans la modélisation d’un système ?

    <p>UML est un langage de modélisation qui permet de représenter les modèles d'un système informatique, en utilisant un ensemble de notations graphiques.</p> Signup and view all the answers

    Faites correspondre chaque diagramme UML avec sa description :

    <p>Diagramme de classes = Représente la structure statique des classes et leurs relations. Diagramme d'objets = Illustre la structure d'un système à un moment donné, en montrant les instances des classes et leurs relations. Diagramme des cas d'utilisation = Modélise les interactions entre les acteurs et le système. Diagramme de séquence = Illustre l'ordre temporel des interactions entre les objets. Diagramme d'activité = Modélise les processus et les flux de travail dans un système. Diagramme d'état = Représente les états possibles d'un objet et les transitions entre ces états. Diagramme de déploiement = Représente la distribution physique des composants d'un système. Diagramme de composants = Modélise les composants logiciels d'un système et leurs relations. Diagramme de structure composite = Représente la structure interne d'un composant composé. Diagramme de paquetages = Organise les éléments d'un modèle en groupes logiques.</p> Signup and view all the answers

    Quelle est la différence entre une association et une dépendance dans un diagramme de classes ?

    <p>Une association représente une relation sémantique durable entre deux classes, tandis qu’une dépendance indique qu’une classe utilise un objet d’une autre classe, mais de manière temporaire.</p> Signup and view all the answers

    Quelle est la différence entre une agrégation et une composition dans un diagramme de classes ?

    <p>Une agrégation représente une relation où l’élément contenu peut exister indépendamment de l’élément contenant, tandis qu’une composition représente une relation où l’élément contenu dépend totalement l’élément contenant.</p> Signup and view all the answers

    Comment est représentée une classe dans un diagramme de classes UML ?

    <p>Une classe est représentée par un rectangle divisé en trois compartiments : le nom de la classe, ses attributs et ses méthodes.</p> Signup and view all the answers

    L'encapsulation dans UML consiste à cacher les données et les méthodes d’une classe aux autres classes.

    <p>True</p> Signup and view all the answers

    Quelle est la différence entre une classe et un objet dans UML ?

    <p>Une classe est une description abstraite d’un ensemble d’objets, tandis qu’un objet est une instance concrète d’une classe.</p> Signup and view all the answers

    Qu’est-ce qu’une multiplicité dans un diagramme de classes ?

    <p>Une multiplicité dans un diagramme de classes indique le nombre possible d’instances d’une classe qui peuvent être liées à une instance d’une autre classe.</p> Signup and view all the answers

    La navigabilité dans un diagramme de classes indique si une classe peut accéder aux données d’une autre classe.

    <p>True</p> Signup and view all the answers

    Qu’est-ce qu’une relation d’héritage dans un diagramme de classes ?

    <p>Une relation d’héritage permet de créer une nouvelle classe à partir d’une classe existante, en héritant de ses attributs et méthodes.</p> Signup and view all the answers

    Un diagramme de classes UML peut être utilisé pour modéliser un système complexe, même s'il ne couvre pas tous les aspects de l'implémentation.

    <p>True</p> Signup and view all the answers

    Décrivez un exemple de relation de dépendance dans un diagramme de classes.

    <p>Une classe ‘Employé’ pourrait dépendre d’une classe ‘Adresse’ : la méthode ‘afficherAdresse’ de la classe ‘Employé’ pourrait utiliser un objet de type ‘Adresse’ comme paramètre.</p> Signup and view all the answers

    Décrivez un exemple de classe-association dans UML.

    <p>Une association entre une classe ‘Client’ et une classe ‘Commande’ pourrait posséder une classe-association ‘Paiement’ pour stocker les informations de paiement associées à chaque commande d’un client.</p> Signup and view all the answers

    Study Notes

    Génie Logiciel - Objectifs du Cours

    • Acquérir les bases du génie logiciel
    • Maîtriser les différents modèles de processus de développement logiciel
    • Comprendre les méthodes d'analyse des besoins et de spécification logicielle
    • Développer des compétences en conception, programmation et tests de logiciels

    Logiciel - Définitions

    • Un logiciel est un ensemble d'éléments nécessaires au fonctionnement d'un processus de traitement automatique de l'information.
    • Il comprend des programmes (en format source ou exécutable), des données, des documents d'utilisation et des informations de configuration.
    • Logiciel = programmes + utilisation

    Catégories de Logiciels

    • Logiciels génériques: Produits courants, impact économique limité (logiciels amateurs, traitements de texte). Remplacement facile sans risque majeur pour l'entreprise.
    • Logiciels spécifiques: Développés pour une application précise et un seul client. Critiques pour le fonctionnement d'une entreprise. Nécessite un investissement important et doit assurer fiabilité, sécurité et robustesse. Incluent des logiciels vitaux, liés à la vie humaine (transport, médecine).

    Définitions - Qualité et Non-Qualité

    • Qualité: Capacité d'un produit ou service à satisfaire les besoins des utilisateurs.
    • Non-qualité: Défauts apparaissant lors de l'exploitation du logiciel (coût de correction élevé).

    Définitions - Assurance Qualité et Manuel Qualité

    • Assurance qualité: Ensemble des mesures, procédures et méthodes pour atteindre le niveau de qualité souhaité dans le développement d'un logiciel.
    • Manuel qualité: Document qui décrit les dispositions générales d'une entreprise pour assurer la qualité de ses produits et services. Il comprend divers aspects comme la gestion de documentation, des achats, des sous-traitants, des réclamations clients, de l'offre de service et des missions.

    Définition - Plan Qualité Logiciel

    • Plan qualité logiciel (PQL): Document décrivant les dispositions spécifiques d'une entreprise pour obtenir la qualité d'un produit ou service particulier. Il précise les intervenants (noms, rôles) et les procédures à utiliser pour ce projet spécifique.

    Logiciel de Qualité - Critères

    • Critères côté client: Validité, Efficacité (exécution, stockage), Ergonomie, Facilité d'apprentissage, Fiabilité (long terme), Sécurité (contrôle d'accès), Intégrité (fiabilité des données).
    • Critères côté concepteur: Modularité, Réutilisabilité, Lisibilité, Clarté, Portabilité, Compatibilité, Testabilité

    Critère de qualité - Fiabilité/Robustesse

    • La capacité du logiciel à réagir de façon appropriée à des conditions d'utilisation non prévues. Réaction aux cas anormaux.
    • Solutions: Méthodes formelles, langages et méthodes de programmation de haut niveau, vérifications, tests.

    Critère de qualité - Facilité d'utilisation/Ergonomie

    • La facilité pour les utilisateurs de comprendre et utiliser le logiciel pour résoudre des problèmes.
    • Solutions: Analyse du mode opératoire des utilisateurs, adaptation ergonomique aux utilisateurs.

    Critère de qualité - Compatibilité/Interopérabilité

    • Capacité des éléments logiciels à être combinés à d'autres.
    • Solutions: Bases de données (découplage données/traitements), Utilisation de middleware avec API bien définie, Standardisation des formats de fichiers (XML...), protocoles de communication (CORBA...).

    Critère de qualité - Efficacité/Performance

    • Capacité du système logiciel à utiliser le minimum de ressources matériels et temporelles afin d'assurer l'exécution.
    • Solutions : Logiciel simplifié, complexité algorithmique réduite, machines plus performantes.

    Critère de qualité - Portabilité

    • Facilité de transfert des logiciels entre différents environnements logiciels ou matériel.
    • Solutions : Rendre le logiciel indépendant de son environnement d'exécution, utilisation de machines virtuelles.

    Critère de qualité - Réutilisabilité

    • Capacité des éléments logiciels à servir dans différentes applications. Potentiel de gains significatifs dans de nombreux logiciels.
    • Solutions: Abstraction, généricité, construction à partir de composants prêts à l'emploi.
    • Design Patterns.

    Critère de qualité - Maintenabilité

    • Degré de facilité de la maintenance d'un logiciel. La maintenance utilise une forte proportion des efforts de développement.
    • Solutions : Réutilisabilité, modularité, tests et vérifications, anticipation des changements futurs.

    Critère de qualité - Extensibilité, Intégrité, Ponctualité

    • Extensibilité: Facilité d'adaptation du logiciel aux changements de spécifications.
    • Intégrité: Capacité du logiciel à protéger son code et ses données contre des accès non autorisés.
    • Ponctualité: Capacité du logiciel à être livré au moment prévu par les utilisateurs (ou avant).

    Crise du Logiciel

    • Historique : Prise de conscience dans les années 70 de l'importance du coût de développement logiciel par rapport au coût matériel.
    • Conséquences de la mauvaise gestion des projets (années 60): délais non respectés, budgets non respectés, logiciel non adapté aux besoins utilisateurs, difficulté d'utilisation, maintenance et évolution.
    • Étude du DoD (1995): Étude sur les logiciels produits dans le cadre de 9 gros projets militaires. Montre un taux élevé de projets jamais utilisés ou livrés avec de fortes modifications.

    Génie Logiciel - Définitions et Objectifs

    • Définition : Ensemble des méthodes, techniques et outils pour la conception, le développement et la maintenance des systèmes informatiques.
    • Objectifs : Procédures systématiques pour des logiciels de grande taille afin d'optimiser le coût et la qualité. Respect des besoins clients, de la spécification, des coûts et des délais lors de la mise en œuvre (développement, évolution, maintien) du projet.

    Exemples d'échecs

    • Confirm (1992): Projet American Airlines de système de réservation. Abandonné en raison de la difficulté à intégrer différentes parties avec des méthodes de développement différentes.
    • Taurus (1993): Projet d'automatisation des transactions pour la bourse de Londres. Annulé après 5 ans de développement.

    Raisons de la faible qualité des logiciels

    • Manque de méthodes et d'outils de conception, de validation et de vérification.
    • Mauvaise compréhension de besoins du client et manque d'implication du client dans le processus.
    • Différences entre ce que le client explique et les attentes réelles.

    Solutions à la crise du logiciel

    • Adapter les méthodes d'ingénierie au domaine logiciel pour développer des méthodes plus fiables.
    • Établir des procédures rigoureuses pour guider le développement (conception à la livraison).
    • Contrôler les coûts, évaluer les risques et respecter les délais.
    • Établir des critères pour évaluer la qualité des logiciels.

    Modélisation avec UML - Généralités

    • UML est un langage qui permet de représenter les modèles des applications informatiques. UML n'est pas une méthode.
    • Il offre un ensemble de notations pour la conception d'application avec une orientation objet.
    • Les diagrammes UML peuvent représenter différents points de vue d'un système (Vue externe, logique statique, dynamique, d'implémentation, de déploiement).
    • Différents exemples de diagrammes, comme les diagrammes des cas d'utilisation avec les relations, et les diagrammes de classes.

    Diagrammes d'UML - Cas d'Utilisation

    • Comportement d'un système du point de vue des utilisateurs.
    • Décrit les actions et les réactions.
    • Définir les limites du système et ses relations avec l'environnement.
    • Sert à modéliser des aspects dynamiques, les acteurs et les fonctions offertes par le système. Utilisé pour modéliser les exigences/besoins du client.
    • Structure avec des acteurs, cas d'utilisation, relations de dépendance, généralisation et spécialisation.
    • Trois types de relations entre cas d'utilisation: Inclusion, Extension, Héritage
    • Diagrammes représentés par des diagrammes en forme d'ellipse.
    • Comment structurer les cas d'utilisation: trouver les comportements partagés, les cas particuliers (exception ou variante), les généralisations/spécialisations.
    • Comment modéliser: identifier les acteurs, les types de relations.

    Modèles incrémentaux

    • Hiérarchiser les besoins du client ; concevoir et livrer sous forme de fonctionnalités.
    • Captures les besoins en permanence, détection des erreurs et implication des clients.
    • Difficulté: Définir la dimension des incréments lors de la gestion de développement.

    Modèles en spirale

    • Développement progressif par cycle (implémentant des versions successives).
    • Intégration répétée des étapes de besoin, conception et test.

    Processus de développement logiciel

    • Ensemble d'activité structurée nécessaire pour la production d'un logiciel.
    • Différents choix de gestion possible en fonction des contraintes (taille de l'équipe, temps, qualité).

    Cycle de vie en cascade

    • Modélisation en cascade: Succession de phases linéaires
    • Avantages : Structure simple et logique, facilite la planification, adapté aux petits systèmes avec des besoins connus.
    • Inconvénients : Absence de validation intermédiaire, la modification précoce est difficile, adapté aux petits problèmes.
    • Limitation: Nécessite une connaissance précise et complète des besoins au démarrage, pas adapté aux projets complexes ou dont les besoins évolueront.

    Cycle de vie en V

    • La modélisation en V, fait la conception et les tests simultanément pour un produit. Les tests sont toujours adaptés à l'étape de développement correspondant.
    • Avantages : Le test est intégré, segments les phases du projet clairement. Adapter à chaque étape de développement.
    • Inconvénients : La modélisation est toujours séquentielle. La maintenance est non intégrée (logiciel jetable). Se base sur une bonne connaissance des besoins.

    Modèle de prototypage

    • Développement rapide d'un prototype pour la validation des besoins du client. Ensuite développement linéaire complet.
    • Avantages : validation concrète des besoins, diminution des risques d'erreur de spécification

    Cycle de vie d'un logiciel - Activités

    • Analyse des besoins, spécification, conception, programmation, validation et vérification, livraison, et maintenance.

    Analyse des besoins

    • Phase cruciale pour comprendre les besoins du client pour le futur système. Contribue à la définition du cahier des charges.
    • Composée de 3 phases principales : Faisabilité, Spécifications des besoins, et Organisation du projet.

    Spécification des besoins

    • Permettre de définir ce que le logiciel doit faire, sans indiquer comment il le fait.
    • Types de spécifications : générales, fonctionnelles, d'interface, et techniques.

    Organisation du projet

    • Planification et gestion de projet pour gérer le développement du logiciel (découper en tâches, enchaînement, affectation des ressources).
    • Plusieurs étapes : Analyse des coûts, planification (calendrier), et répartition des tâches.

    Types de maintenance

    • Correction des erreurs qui apparaissent après livraison.
    • Adaptation aux changements d'environnement.
    • Améliorer la performance, ajouter des fonctionnalités et améliorer la maintenabilité.

    Répartition de l'effort

    • La maintenabilité utilise près de 60% des efforts de développement, les autres phases (spécification, conception, programmation, intégration, test) représentent le reste.

    Studying That Suits You

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

    Quiz Team

    Related Documents

    Description

    Ce quiz aborde les bases du génie logiciel, incluant les modèles de processus de développement et les méthodes d'analyse des besoins. Il permet également de comprendre les différentes catégories de logiciels, des génériques aux spécifiques. Testez vos connaissances sur ces concepts clés du logiciel prouvé.

    Use Quizgecko on...
    Browser
    Browser