Podcast
Questions and Answers
Quelle est la clé pour éviter la transgression des principes de faible couplage et de forte cohésion lorsque les solutions offertes par l'expert ne conviennent pas ?
Quelle est la clé pour éviter la transgression des principes de faible couplage et de forte cohésion lorsque les solutions offertes par l'expert ne conviennent pas ?
Quel est le rôle d'un contrôleur dans un système ?
Quel est le rôle d'un contrôleur dans un système ?
Quel principe signifie 'ne pas se répéter' en ingénierie logicielle ?
Quel principe signifie 'ne pas se répéter' en ingénierie logicielle ?
Quel est l'objectif principal de la méthode basée sur les événements ?
Quel est l'objectif principal de la méthode basée sur les événements ?
Signup and view all the answers
Quelle affirmation décrit le mieux le principe de faible couplage ?
Quelle affirmation décrit le mieux le principe de faible couplage ?
Signup and view all the answers
Quel principe est associé à la maximisation de la simplicité dans la conception ?
Quel principe est associé à la maximisation de la simplicité dans la conception ?
Signup and view all the answers
Qu'est-ce que la documentation assure dans un projet d'équipe ?
Qu'est-ce que la documentation assure dans un projet d'équipe ?
Signup and view all the answers
Quelle est l'objectif principal des principes SOLID en développement logiciel ?
Quelle est l'objectif principal des principes SOLID en développement logiciel ?
Signup and view all the answers
Quelle affirmation décrit le mieux le prototypage ?
Quelle affirmation décrit le mieux le prototypage ?
Signup and view all the answers
Quel est un des avantages d'une conception orientée objet propre ?
Quel est un des avantages d'une conception orientée objet propre ?
Signup and view all the answers
Que représente le principe de forte cohésion dans une application ?
Que représente le principe de forte cohésion dans une application ?
Signup and view all the answers
Quels sont les trois groupes principaux de principes avancés en conception ?
Quels sont les trois groupes principaux de principes avancés en conception ?
Signup and view all the answers
Quelle est la première étape du développement itératif ?
Quelle est la première étape du développement itératif ?
Signup and view all the answers
Qu'est-ce qui révèle les responsabilités au sein d'un système basé sur l'analyse par scénario ?
Qu'est-ce qui révèle les responsabilités au sein d'un système basé sur l'analyse par scénario ?
Signup and view all the answers
Quel est l'objectif des fiches utilisées dans l'analyse par scénario ?
Quel est l'objectif des fiches utilisées dans l'analyse par scénario ?
Signup and view all the answers
Quel est un aspect fondamental à noter lors de la conception d'interfaces de classe ?
Quel est un aspect fondamental à noter lors de la conception d'interfaces de classe ?
Signup and view all the answers
Quel est le but principal des fiches CRC?
Quel est le but principal des fiches CRC?
Signup and view all the answers
Qu'est-ce qu'un scénario dans le contexte des fiches CRC?
Qu'est-ce qu'un scénario dans le contexte des fiches CRC?
Signup and view all the answers
Dans une séance de cartes CRC, quel est l'objectif principal du brainstorming?
Dans une séance de cartes CRC, quel est l'objectif principal du brainstorming?
Signup and view all the answers
Quelle méthode est citée comme étant basée sur les acteurs?
Quelle méthode est citée comme étant basée sur les acteurs?
Signup and view all the answers
Quel élément n'est pas inclus dans une fiche CRC?
Quel élément n'est pas inclus dans une fiche CRC?
Signup and view all the answers
Pourquoi les scénarios sont-ils utilisés pour l'analyse?
Pourquoi les scénarios sont-ils utilisés pour l'analyse?
Signup and view all the answers
Quel type de numéro est souvent associé à la réservation de sièges dans un système de réservation?
Quel type de numéro est souvent associé à la réservation de sièges dans un système de réservation?
Signup and view all the answers
Quel est l'objectif de l'analyse des scénarios au stade de conception?
Quel est l'objectif de l'analyse des scénarios au stade de conception?
Signup and view all the answers
Quel principe stipule qu'une classe ne doit avoir qu'une seule raison de changer ?
Quel principe stipule qu'une classe ne doit avoir qu'une seule raison de changer ?
Signup and view all the answers
Lequel des suivants décrit le principe d'ouverture/fermeture ?
Lequel des suivants décrit le principe d'ouverture/fermeture ?
Signup and view all the answers
Quel principe prévoit que les méthodes utilisant des objets d'une classe doivent fonctionner avec des objets de classes dérivées ?
Quel principe prévoit que les méthodes utilisant des objets d'une classe doivent fonctionner avec des objets de classes dérivées ?
Signup and view all the answers
Quel est l'objectif principal du principe d'inversion des dépendances ?
Quel est l'objectif principal du principe d'inversion des dépendances ?
Signup and view all the answers
Quelle technique est mentionnée comme moyen pour réaliser l'ouverture/fermeture ?
Quelle technique est mentionnée comme moyen pour réaliser l'ouverture/fermeture ?
Signup and view all the answers
Quel principe suggère que chaque module doit avoir une responsabilité unique ?
Quel principe suggère que chaque module doit avoir une responsabilité unique ?
Signup and view all the answers
Lequel des suivants est un aspect clé du principe de substitution de Liskov ?
Lequel des suivants est un aspect clé du principe de substitution de Liskov ?
Signup and view all the answers
Qu'est-ce que le principe d'ouverture/fermeture encourage lors de l'ajout de nouvelles fonctionnalités ?
Qu'est-ce que le principe d'ouverture/fermeture encourage lors de l'ajout de nouvelles fonctionnalités ?
Signup and view all the answers
Quel est le but principal du principe des dépendances acycliques ?
Quel est le but principal du principe des dépendances acycliques ?
Signup and view all the answers
Quelle technique est utilisée pour respecter le principe d'inversion des dépendances ?
Quelle technique est utilisée pour respecter le principe d'inversion des dépendances ?
Signup and view all the answers
Comment doit-on organiser les modules pour respecter le principe des dépendances acycliques ?
Comment doit-on organiser les modules pour respecter le principe des dépendances acycliques ?
Signup and view all the answers
Quels sont les avantages d'un code de qualité selon le contenu ?
Quels sont les avantages d'un code de qualité selon le contenu ?
Signup and view all the answers
Pourquoi est-il important d'identifier les collaborations entre classes ?
Pourquoi est-il important d'identifier les collaborations entre classes ?
Signup and view all the answers
Quel est un effet d'une approche itérative à la conception ?
Quel est un effet d'une approche itérative à la conception ?
Signup and view all the answers
Quel est le rôle des interfaces dans le contrôle des dépendances ?
Quel est le rôle des interfaces dans le contrôle des dépendances ?
Signup and view all the answers
Quels aspects du style de code sont considérés comme importants ?
Quels aspects du style de code sont considérés comme importants ?
Signup and view all the answers
Study Notes
Fiches CRC
- Développées par Kent Beck et Ward Cunningham.
- Chaque fiche contient :
- Nom de la classe
- Responsabilités de la classe
- Collaborateurs de la classe
Scénarios
- Activités que le système doit prendre en charge.
- Utilisés pour découvrir et saisir les interactions entre objets (collaborations).
- Identifier les cas d'utilisation à implémenter (Use Cases).
Utilisation de fiches CRC pour l'analyse
- Les scénarios permettent de vérifier la clarté et la complétude de la description du problème.
- L'analyse des scénarios conduit à la conception.
- Identifier les erreurs ou omissions à ce stade permet de gagner du temps et d'éviter des efforts perdus par la suite.
Méthodes d'analyse par scénarios
-
Méthode basée sur les acteurs :
- Identifier les acteurs.
- Pour chaque acteur, identifier les cas d'utilisation qu'il initie ou auxquels il participe.
-
Méthode basée sur les événements :
- Identifier les événements auxquels le système doit répondre.
- Relier chaque événement aux acteurs et aux cas d'utilisation.
Conception de classes
- L'analyse par scénario aide à clarifier la structure de l'application.
- Chaque fiche correspond à une classe.
- Les collaborations révèlent les relations entre les classes et les interactions entre les objets.
- Les responsabilités révèlent les méthodes publiques.
- Les champs peuvent aussi indiquer la nature des données stockées.
Conception d'interfaces de classe
- Rejouer les scénarios en termes d'appels de méthodes, de paramètres et de retours de valeurs.
- Noter les signatures de méthodes.
- Créer le corps des classes avec les en-têtes des méthodes publiques (sans implémentation).
- Une conception soignée est la clé pour une implémentation réussie.
Disciplines de support pour la conception
- Documentation
- Conception OO propre (Faible couplage)
- Prototypage
- Développement itératif
Documentation
- Écrire des commentaires de classe.
- Écrire des commentaires de méthodes.
- Décrire l'objectif global de chaque élément.
- La documentation permet de :
- Se concentrer sur le "quoi" plutôt que sur le "comment".
- Ne pas oublier les informations importantes.
Coopération
- Le travail d'équipe est la norme.
- La documentation est essentielle pour le travail d'équipe.
- Une conception OO propre, avec des composants faiblement couplés, favorise la coopération.
Prototypage
- Supporte l'investigation préliminaire d'un système.
- Permet d'identifier rapidement les problèmes.
- Les composants incomplets peuvent être simulés.
- Exemple : retourner toujours un résultat fixe.
Développement itératif
- Utiliser le prototypage dans les premiers stades.
- Interaction fréquente avec le client.
- Itération à travers les étapes:
- Analyse
- Conception
- Prototypage
- Rétroaction du client
- Un modèle en croissance est plus réaliste.
Fabrication pure
- En cas de besoin de transgresser les principe de faible couplage et de forte cohésion, une classe imaginaire pure peut être introduite au niveau de la conception, sans forcément avoir une image à l'analysedes domaines.
Principes GRASP
-
Contrôleur : quel est le premier objet à recevoir et coordonner une opération système au-delà de l'interface utilisateur ?
- Un objet racine représentant le système ou sous-système, ou un contrôleur de façade.
- Utiliser le même objet pour tous les événements système appartenant au même scénario.
- Faible couplage : minimiser les dépendances.
- Forte cohésion : cohésion et couplage : le yin et le yang. Une faible cohésion entraîne un couplage élevé.
DRY, KISS, SOLID
- DRY (Don't Repeat Yourself) : en ingénierie logicielle, ne répétez pas vous-mêmes (DRY) ou la duplication est mauvaise (DIE) est un principe de développement logiciel.
- KISS (Keep it Simple, Stupid !) : un principe de conception qui vise à simplifier autant que possible.
- SOLID : cinq principes de conception qui visent à créer un système facile à maintenir et à étendre.
Principes avancés de conception objet
- Trois groupes principaux de principes :
- Gestion des évolutions et des dépendances entre classes.
- Organisation de l'application en modules.
- Gestion de la stabilité de l'application.
Principes SOLID
- Single Responsibility Principle (SRP) : une classe doit avoir une seule raison de changer. Chaque module ou classe doit assumer la responsabilité d'une seule partie de la fonctionnalité fournie par le logiciel, et cette responsabilité doit être entièrement encapsulée par la classe.
- Open/Closed Principle (OCP) : un module doit être ouvert aux extensions mais fermé aux modifications.
- Liskov Substitution Principle (LSP) : les méthodes qui utilisent des objets d'une classe doivent pouvoir utiliser des objets dérivés de cette classe sans même le savoir.
- Interface Segregation Principle (ISP) : les clients ne doivent pas être forcés de dépendre d'interfaces dont ils n'ont pas besoin.
- Dependency Inversion Principle (DIP) : les modules de haut niveau ne doivent pas dépendre de modules de bas niveau. Tous deux doivent dépendre d'abstractions.
Gestion des évolutions et des dépendances entre classes
- OCP : utiliser l'abstraction comme moyen d'ouverture/fermeture. Utiliser des interfaces, classes abstraites et templates (génériques).
- LSP : hériter pour substituer, sinon aggréger.
- DIP : l'abstraction comme technique d'inversion des dépendances. Pour inverser la dépendance de A vers B, introduire une classe d'interface dont dérive B.
Gestion de la stabilité de l'application
- Acyclic Dependencies Principle (ADP) : les dépendances entre packages doivent former un graphe acyclique.
- Technique d'inversion des dépendances : introduire une classe d'interface.
- Organiser les modules en un arbre de dépendances.
- Placer les packages les plus stables à la base de l'arbre.
- Placer les interfaces dans les packages les plus stables.
Synthèse des principes OO
- Les principes énoncés placent le contrôle des dépendances au cœur de la conception, afin de limiter le coût des modifications et d'atteindre les objectifs d'extensibilité et de réutilisabilité.
- Ce contrôle repose sur une utilisation efficace des interfaces, entre applications, packages ou classes.
Conclusion
- Les programmes sont constamment modifiés.
- Il est important de faciliter ces changements.
- Du code de qualité doit être compréhensible et maintenable.
- Du code de qualité évite la duplication, montre de la cohésion et un faible couplage.
- Le style du code est important.
- Il est plus facile de modifier du code bien structuré.
- Identifier les collaborations entre les classes et les interactions entre les objets. L'analyse par fiche CRC supporte ce besoin
- Une approche itérative à la conception, l'analyse et l'implémentation peut être extrêmement bénéfique.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Ce quiz explore l'utilisation des fiches CRC pour l'analyse des systèmes. Vous découvrirez comment ces fiches aident à identifier les responsabilités, les collaborations, et comment les scénarios peuvent guider la conception. Testez vos connaissances sur les méthodes d'analyse par scénarios et l'importance de la clarté dans la documentation.