كيف يمكن للمرء أن يتقن التصميم باستخدام بطاقات CRC؟

StackOverflow https://stackoverflow.com/questions/98878

  •  01-07-2019
  •  | 
  •  

سؤال

لقد كنت أتساءل دائمًا عن كيفية استخدام الأشخاص لبطاقات CRC (التعاون في مسؤولية الفصل).لقد قرأت عنها في الكتب، ووجدت معلومات غامضة على الإنترنت، لكنني لم أفهمها أبدًا.أعتقد أنه يجب على شخص ما إنشاء مقطع فيديو على YouTube يعرض جلسة باستخدام بطاقات CRC، نظرًا لأن أحد كتبي وصفها بأنها من الصعب جدًا صياغتها في النص، وأنه يجب "تدريسها على يد شخص يتقنها بالفعل".للأسف، لا أعرف أحدًا هنا يستخدم بطاقات CRC وأرغب في معرفة المزيد.

تحديث

سيكون موضع تقدير أي روابط لمقاطع فيديو تظهر أشخاصًا يشرحون هذه التقنية.

هل كانت مفيدة؟

المحلول

سأحاول إعطاء إجابة.لذلك تُستخدم بطاقات CRC بشكل عام للنمذجة في بيئة كائنية التوجه للحصول على فهم أفضل للنظام الذي يجب تطويره (ولكن أعتقد أنك ستعرفه بالفعل).تأتي بطاقات CRC في النهاية، عندما تصل قبل التنفيذ الفعلي مباشرةً.يمكن أن تكون الخطوات المختلفة للوصول إلى هذا المستوى كما يلي:

  1. نقطة البداية هي القيام باستنباط المتطلبات.يُقترح هنا إشراك العميل مبكرًا وبشكل مستمر (ألق نظرة على أساليب Agile، أي:البرمجة المتطرفة)
  2. يمكن بعد ذلك صياغة المتطلبات إما باستخدام مخططات حالة الاستخدام (UML) أو باستخدام قصص المستخدم (نهج البرمجة المتطرفة الرشيقة).المشكلة الرئيسية هنا هي العثور على الكائنات المعنية الصحيحة.وهذا يعتمد كثيرًا على المجال الذي تتواجد فيه بالطبع.إذا سلكت الطريق "الصعب"، فيمكنك تطبيق تقنيات مثل "استخلاص الاسم".لذلك تقوم بتحليل وثيقة المواصفات واستخراج جميع الأسماء (بما في ذلك الأسماء المركبة وتلك التي تحتوي على صفات).تحليل كل منهم وتجاهل تلك التي لا صلة لها بالموضوع.
  3. بمجرد حصولك على الأسماء الصحيحة -> الكائنات، يمكنك البدء في إنشاء بطاقات CRC الخاصة بك.إذن ما الذي يتم فعله في جلسة اتفاقية حقوق الطفل؟تتمثل المهمة الرئيسية في العثور على المسؤوليات الخاصة بالأشياء التي تم العثور عليها (سابقًا) وتعيينها، ثم يتم وضعها على بطاقات فهرسة صغيرة (بطاقات CRC الخاصة بنا)."المسؤوليات" هي بشكل أساسي الوظائف الأساسية لكائن معين وجزء "التعاون" هو الكائنات الأخرى اللازمة لتحقيق وظائف معينة (هذه هي التبعيات بين الكائنات المختلفة في النموذج الخاص بك).النقاط المهمة لتعيين المسؤوليات هي أن المسؤوليات يتم توزيعها بشكل جيد على النظام بأكمله بطريقة متوازنة.هناك نقطة أخرى مهمة جدًا وهي تجنب أي ازدواجية في المسؤوليات بين الأشياء (وهذا هو المكان الذي تساعد فيه بطاقات CRC).
    يجب أن تبدأ جلسة CRC باجتماع عصف ذهني وإجراء مناقشة نشطة بين المطورين ويجب إجراؤها على بطاقات الفهرسة الفعلية مباشرةً.

آمل أن أكون قادرًا على مساعدتك بطريقة أو بأخرى.

يعتبر،
جوري

نصائح أخرى

من الصعب تلخيص ذلك في إجابة SO، لكنني سأحاول.أحد تحديات تصميم الأشياء هو الموازنة بين التفكير من منظور شامل والتفكير من منظور كائن فردي.أنت بحاجة إلى المنظور الشامل لإكمال العملية الحسابية، لكنك تحتاج إلى منظور الكائن الفردي لتقسيم المنطق والبيانات بشكل فعال.

الحفاظ على هذا التوازن هو المكان الذي تأتي فيه بطاقات CRC.عندما يجلسون هناك على الطاولة، يمكنك إلقاء نظرة على العملية الحسابية ككل.عندما تلتقط بطاقة واحدة، يتم تشجيعك جسديًا وحركيًا على اتخاذ وجهة نظر هذا الكائن الواحد - لدي هذا الجزء الصغير من هذه العملية الحسابية للقيام به بموارد محدودة، كيف سأقوم بإنجازه؟

وبمرور الوقت، يبدو أن القدرة على التمسك بكلا المنظورين في وقت واحد تتغلغل في الدماغ.يتم كتابة أقل وأقل على البطاقات.ثم البطاقات فارغة.بعد فترة من الوقت، يشير الأشخاص فقط إلى المكان الذي ستكون فيه البطاقة إذا كانوا سيهتمون بأخذ بطاقة فارغة من المكدس.وفي نهاية المطاف، يتمتع الأشخاص بفوائد أسلوب التفكير دون الحاجة إلى بطاقات على الإطلاق.عند التحدث مع شخص لا يتقن التوازن، فإن سحب البطاقات الحقيقية يمكن أن يكون وسيلة مساعدة مفيدة في التواصل.

أكبر نقطة ضعف أجدها في البطاقات هي قلة التعليقات.يمكنك خداع نفسك بشأن كيفية ظهور الكود.أود أن أقترح استخدام البطاقات فقط حتى يظهر سؤال مثير للاهتمام، ثم انتقل إلى الاختبارات/الكود للتأكيد، ثم استأنف التصميم.

لقد قمت أنا ووارد بتصوير مقطع فيديو منذ 15 عامًا تقريبًا لجلسة تصميم، لكنني لا أجده على الإنترنت في أي مكان ولا أملك نسخة منه.لست متأكدًا من أنها ستكون مفيدة كأداة تعليمية في أي حال.لا أعرف مقاطع فيديو أخرى، لكنها قد تكون مثيرة للاهتمام، خاصة إذا كان عليك مقارنة العديد من أنماط المصممين المختلفة.

اذهب إلى المصدر - كينت بيك، وارد كننغهام، هل سمعت عنهم من قبل؟

أعتقد أن بيانك "لا أعرف أحدًا هنا يستخدم بطاقات CRC" يلخص إلى حد كبير حالة بطاقات CRC في التطوير.في رأيي، كانت بطاقات CRC خطوة على الطريق من التطوير التقليدي القائم على الخطة إلى التطوير السريع.العالم قد تقدم.بدلاً من التركيز على كيفية استخدام بطاقات CRC، سأبحث في تقنيات مثل تد, ، والتي يمكنها الاستفادة من تقنيات مثل بطاقات UML وCRC كعناصر وسيطة ولكنها تركز على التعليمات البرمجية، وبشكل أكثر تحديدًا على الاختبارات.هذا هو الاتجاه الذي اتخذه مخترعو بطاقات CRC وأوصي بأن تسلكوه أيضًا.

أسهل طريقة لاستخدامها في رأيي دون الدخول في فوضى هي كتابة بطاقات CRC الصغيرة في رؤوس ملفاتك مثل هذا:

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

ثم في كل مرة تحتاج فيها إلى إضافة ميزة، تحقق من بطاقتك وتأكد من عدم خرق أي من العقود التي ذكرتها فيها.كما هو الحال فجأة اعتمادًا على UIMouseEvent على سبيل المثال، هذا ليس موجودًا في أي مكان على البطاقة لذا فمن غير المقبول تضمينه.

في كتابهم تصميم الكائن:الأدوار والمسؤوليات والتعاون نشرت في عام 2003 ريبيكا ويرفس بروك يناقش آلان ماكين بطاقات CRC بشيء من التفصيل.إنهم يؤكدون حقًا على الفرق الذي يحدثه الإجراء بأكمله وهو أن هذه يجب أن تكون تجربة ملموسة للغاية وتخفف من تفكير الناس في المرور حول جسم مادي عند محاولة تجسيد تصميم/متطلبات.

يشير العنوان الفرعي لهذا الفصل إلى أن استخدام البطاقات هو جزء من مرحلة "التصميم الاستكشافي"، لذا فمن المحتمل أن يأتي ذلك قبل القيام بالكثير من البرمجة، لكنني لا أرى أي سبب يمنعك من الاستمرار في العودة إليها في كل تكرار مشروع Agile وتذكير نفسك بالمكان الذي كنت تعتقد أنك ستذهب إليه ومراجعة ذلك إذا لزم الأمر (كمجموعة بالطبع).

يبدو أنني أتذكر أنهم يقترحون تمرير الكرة في جميع أنحاء الغرفة بحيث لا يُسمح إلا للشخص الذي لديه الكرة بالتحدث، لذلك ربما لا يتعلق الأمر ببطاقات CRC بقدر ما يتعلق الأمر بجعل الجميع في الغرفة يتحدثون عن أدوار ومسؤوليات الأشياء التي تهم؟

إذا كنت ترغب في قراءة دراسة حالة لبطاقات CRC أثناء العمل (بالإضافة إلى ورقة كينت ووارد الأصلية بالطبع) فقم بإلقاء نظرة على كتاب بطاقة CRC.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top