ما هي التحف التصميمية الأساسية التي تنتجها؟[مغلق]

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

  •  09-06-2019
  •  | 
  •  

سؤال

في سياق دورة حياة تطوير البرمجيات الخاصة بك، ما هي عناصر التصميم الأساسية التي تنتجها؟ما الذي يجعلها ضرورية لممارستك؟

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

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

المحلول

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

بالنسبة إلى "تطبيق مؤسسي" عام قائم على الخادم، أريد أن يكون الحد الأدنى شيئًا على هذا المنوال:

  • وثيقة تصميم وظيفية مفصلة (ويعرف أيضًا باسم المواصفات).بشكل عام شيء على غرار جويل WhatsTimeIsIt مثال المواصفات, ، على الرغم من أنه ربما مع بعض الرسوم البيانية لحالة استخدام UML.
  • وثيقة التصميم الفني للبرمجيات.ليست بالضرورة مفصلة لتغطية النظام بنسبة 100% ولكنها مفصلة في جميع المجالات الرئيسية وتحتوي على جميع قرارات التصميم.نظرًا لكونك مهووسًا بعض الشيء بـ UML، سيكون من الجيد رؤية الكثير من الصور على غرار مخططات الحزمة، ومخططات المكونات، ومخططات فئة الميزات الرئيسية، وربما بعض المخططات التسلسلية التي تم طرحها بشكل جيد.
  • وثيقة تصميم البنية التحتية.ربما باستخدام مخطط نشر UML للتصميم المفاهيمي وربما مخطط شبكة لشيء أكثر مادية.

عندما أقول مستند، قد يتم تقسيم أي مما سبق إلى مستندات متعددة، أو ربما تخزينها على موقع wiki/أداة أخرى.

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

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

نصائح أخرى

رمز العمل...ورسومات السبورة.

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

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

في نموذجنا (المخصص إلى حد ما لتطبيقات العمليات التجارية) تتضمن عناصر التصميم ما يلي:

  • نموذج بيانات المجال، مع التعليقات على كل كيان وسمة
  • ملف خصائص يسرد جميع مشغلات التعديل والإنشاء لكل كيان، والسمات المحسوبة، وأدوات التحقق من الصحة، ومنطق الأعمال الأخرى
  • مجموعة تعريفات الشاشة (عرض النموذج)

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

لكن حقيقة أنها تخدم واجبًا مزدوجًا هي أمر قوي لأنها، بحكم تعريفها، محدثة ومتزامنة مع الكود في جميع الأوقات.

هذه ليست وثيقة تصميم في حد ذاتها، ولكنها وثيقة تصميم خاصة بنا اختبارات الوحدة يخدم الغرض المزدوج المتمثل في "وصف" كيفية عمل الكود الذي يختبرونه.الجزء الجميل في هذا هو أنهم لا تخرج أبدًا عن التاريخ, ، نظرًا لأن اختبارات وحدتنا يجب أن تمر حتى ينجح بناءنا.

لا أعتقد أن أي شيء يمكن أن يحل محل مواصفات التصميم القديمة الجيدة للأسباب التالية:

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

أحب أن أرى أجزاء مختلفة من المعلومات في مواصفات التصميم:

  • شرح عام لنهجك في مواجهة التحدي المطروح
  • كيف ستراقب طلبك؟
  • ما هي المخاوف الأمنية وكيف يتم معالجتها؟
  • المخططات الانسيابية / المخططات التسلسلية
  • القضايا المفتوحة
  • القيود المعروفة

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

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