عملية تصميم الـ LLD (من المتطلبات إلى الكود)
تصميم المستوى المنخفض (Low Level Design) لا يتعلق بكتابة الكود فوراً، بل يتعلق باتباع عملية منظمة.
اتبع هذه الخطوات للانتقال من بيان المشكلة إلى كود يعمل بشكل فعلي.
- فهم المتطلبات لا تقفز مباشرة إلى الفئات (Classes). أولاً، اكتشف ما الذي يجب على النظام القيام به.
- ما هي الميزات التي يحتاجها؟
- ما هي الإجراءات التي يجب أن يدعمها؟
- ما هي التغييرات التي قد تحدث لاحقاً؟
- تحديد الأسماء لإيجاد الفئات (Classes) ابحث عن الأسماء في متطلباتك، فالأسماء ستصبح هي الفئات الخاصة بك. مثال: محرر مستندات (Document Editor)
- الأسماء: Document, Text, Image, Storage, Editor.
- الفئات: Document, TextElement, ImageElement, Storage, DocumentEditor.
مثال: موقف سيارات (Parking Lot)
- الأسماء: ParkingLot, Floor, Slot, Vehicle, Ticket.
- الفئات: ParkingLot, Floor, Slot, Vehicle, Ticket.
- استخدام علاقة IS-A للوراثة (Inheritance) اسأل نفسك: "هل الابن هو نوع من الأب؟"
TextElementهو نوع منDocumentElement.Carهو نوع منVehicle.Dogهو نوع منAnimal. إذا كانت الإجابة نعم، فاستخدم الوراثة.
- استخدام علاقة HAS-A للتركيب (Composition) اسأل نفسك: "هل يحتوي كائن ما على كائن آخر؟"
- المستند (Document) يحتوي على (HAS-A) مجموعة من العناصر.
- موقف السيارات (ParkingLot) يحتوي على (HAS-A) مجموعة من الطوابق.
- السيارة (Car) تحتوي على (HAS-A) محرك. استخدم التركيب (Composition) لربط هذه الكائنات.
- تحديد الأفعال لإيجاد الدوال (Methods) ابحث عن الأفعال في المتطلبات، فالأفعال ستصبح هي الدوال الخاصة بك.
- إضافة نص تصبح
addText(). - حفظ المستند يصبح
save(). - ركن السيارة يصبح
parkVehicle().
- التخطيط للتغيير باستخدام الواجهات (Interfaces) فكر في التحديثات المستقبلية. إذا كنت تحفظ مستنداً، فقد تستخدم ملفاً (File)، أو قاعدة بيانات (Database)، أو السحابة (Cloud).
- أنشئ واجهة (Interface) تسمى
Persistence. - أنشئ تطبيقات (Implementations) مثل
FileStorageأوDBStorage. هذا يتيح لك إضافةCloudStorageلاحقاً دون تغيير الكود الحالي.
- رسم مخطط UML وكتابة الكود بمجرد حصولك على الفئات، والوراثة، والتركيب، والدوال، قم برسم مخطط UML. سيعمل هذا كمخطط توضيحي (Blueprint) لك. وأخيراً، قم بتحويل هذا المخطط إلى كود نظيف.
ملخص التدفق:
- المتطلبات (Requirements)
- الأسماء إلى فئات (Nouns to Classes)
- علاقة IS-A إلى وراثة (IS-A to Inheritance)
- علاقة HAS-A إلى تركيب (HAS-A to Composition)
- الأفعال إلى دوال (Verbs to Methods)
- الاختلافات إلى واجهات (Variations to Interfaces)
- مخطط UML (UML Diagram)
- الكود النهائي (Final Code)
Source: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m