30 votes

Comment élabore-t-on un design en utilisant des cartes CRC?

J'ai toujours été demandais comment les gens utilisent de la CDE (classe de conduite en collaboration) cartes. J'ai lu à leur sujet dans les livres, trouvé de vagues informations sur internet, mais jamais pris vraiment. Je pense que quelqu'un devrait faire une vidéo sur youtube montrant une session avec des cartes CRC, puisque l'un de mes livres a décrit comme étant très difficile à formuler dans le texte, qu'il devrait être "enseigné par quelqu'un qui a déjà le maîtrise". Malheureusement, je connais personne ici qui utilise des cartes CRC et j'aimerais en savoir plus.

Mise à JOUR

Tous les liens vers des vidéos montrant des gens de l'élaboration de cette technique serait appréciée.

36voto

Kent Beck Points 4208

Il est difficile de résumer en une SORTE de réponse, mais je vais essayer. L'un des défis de la conception des objets est l'équilibrage de la pensée d'un point de vue global avec la pensée du point de vue d'un objet individuel. Vous avez besoin de la perspective globale pour obtenir le calcul terminé, mais vous avez besoin de l'objet individuel perspective efficacement la subdivision de la logique et des données.

Le maintien de cet équilibre est l'endroit où CRC de cartes. Quand ils sont assis là à la table, vous obtenez de regarder le calcul dans son ensemble. Quand vous prenez une carte unique, cependant, vous êtes physiquement, kinesthetically encouragés à prendre le point de vue de ce qu'un objet--j'ai ce petit morceau de ce calcul à faire avec des ressources limitées, comment vais-je accomplir?

Au fil du temps, la capacité à détenir simultanément les deux points de vue semble tremper dans le cerveau. De moins en moins qui est écrit sur les cartes. Puis les cartes sont vides. Après un certain temps, les gens juste à l'endroit où la carte serait si ils prendraient la peine de prendre un vide en dehors de la pile. Finalement, les gens ont les avantages de la pensée de style sans avoir besoin de cartes à tous. Quand on parle avec quelqu'un qui n'a pas la maîtrise de l'équilibre, sortir de reals cartes, il peut être utile de communication de l'aider, mais.

La plus grande faiblesse je trouve avec les cartes est le manque de feed-back. Vous pouvez vous tromper sur la façon dont le code va tourner. Je vous recommande d'utiliser uniquement des cartes jusqu'à ce qu'une intéressante question se pose, tournez à des tests/code de confirmation, puis de reprendre la conception.

Ward et j'ai fait une vidéo de 15 ans d'une session de dessin, mais je ne le trouve pas en ligne de n'importe où et je n'ai pas de copie. Je ne suis pas sûr qu'il pourrait être utile comme outil d'enseignement dans tous les cas. Je n'en connais pas d'autres vidéos, mais ils pourraient être intéressant, surtout si vous avez à comparer les différentes concepteur de styles.

13voto

Juri Points 14330

Je vais essayer de donner une réponse. Si des cartes CRC sont généralement utilisés pour la modélisation Orientée Objet de l'environnement pour obtenir une meilleure compréhension du système qui doit être développée (mais ça je pense que vous le savez déjà). Des cartes CRC venir à la toute fin, quand vous arrivez juste avant la mise en œuvre effective. Les différentes étapes pour parvenir à ce niveau, pourrait être la suivante:

  1. Le point de départ est de faire de l'exigence d'élicitation. Impliquer le client en début et en permanence ce qui est suggéré ici (regardez Agile approches, c'est à dire de l'Extreme Programming)
  2. Les exigences peuvent alors être modélisé soit avec des diagrammes de Cas d'Utilisation (UML) ou avec les User stories (agile extreme programming approach). Le problème clé ici est de trouver le bon impliqués objets. Cela dépend beaucoup sur le domaine que vous êtes, bien sûr. Si vous allez à la "dure" d'une façon, vous pouvez appliquer des techniques comme le "nom de l'extraction". Si vous analysez le document de spécification et d'en extraire tous les noms (y compris composite des noms et des personnes avec des adjectifs). De toutes les analyser et abandonner la non pertinents.
  3. Une fois que vous avez le droit de noms -> les objets que vous pouvez commencer à créer vos cartes CRC. Donc ce qui est fait dans un CRC session? La principale tâche est de trouver et d'attribuer les responsabilités de votre (déjà) des objets trouvés qui sont ensuite posés sur des petites cartes d'index (nos cartes CRC). "Les responsabilités" sont principalement les fonctionnalités de base d'un objet spécifique, et de la "collaboration" de la partie sont nécessaires à d'autres objets pour l'accomplissement de certaines fonctionnalités (ce sont les dépendances entre les différents objets de votre modèle). Points importants pour l'attribution des responsabilités en est que les responsabilités sont bien réparties sur l'ensemble du système dans une sorte de façon équilibrée. Un autre point très important est d'éviter le chevauchement des responsabilités entre les objets (c'est là que les cartes CRC aider).
    Un CRC session doit commencer par une séance de remue-méninges, d'avoir une discussion active entre les développeurs et il doit être effectué sur l'indice réel directement les cartes.

J'espère que j'ai pu en quelque sorte vous aider.

En ce qui concerne,
Juri

7voto

Steven A. Lowe Points 40596

allez à la source - Kent Beck, Ward Cunningham, vous en avez déjà entendu parler?

7voto

tvanfosson Points 268301

Je pense que votre déclaration "je sais que personne ici qui utilise des cartes CRC" résume assez bien l'état des cartes CRC dans le développement. Des cartes CRC, à mon avis, ont été une étape sur la route de la traditionnelle plan de développement basé sur des méthodes de développement agile. Le monde a évolué. Au lieu de se concentrer sur la façon d'utiliser des cartes CRC, j'avais enquêter sur des techniques comme le TDD, qui peut rendre l'utilisation de techniques comme UML et des cartes CRC intermédiaire d'artefacts, mais qui se concentre sur le code, et plus particulièrement sur les tests. C'est la direction que les inventeurs de cartes CRC ont pris et je vous recommande de prendre aussi.

5voto

Robert Gould Points 29406

Le moyen le plus simple de les utiliser à mon avis sans entrer dans un désordre est d'écrire de petites cartes CRC dans vos en-têtes de fichier comme ceci:

 ///////////////////////
//* CRC CARD
//*  Class: UISliderEvent
//*  Responsability: Event that holds the value and id of a Slider's movement
//*  Collaborators: UISlider, UIEvent
//////////////////////
 

Ensuite, chaque fois que vous devez ajouter une fonctionnalité, vérifiez votre carte et assurez-vous de ne rompre aucun des contrats que vous y avez indiqués. Comme tout à coup, selon UIMouseEvent par exemple, ce n'est nulle part sur la carte, donc c'est un non-non pour l'inclure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X