فرآیند طراحی LLD (از نیازمندی‌ها تا کد)

طراحی سطح پایین (Low Level Design) به معنای نوشتن فوری کد نیست؛ بلکه به معنای دنبال کردن یک فرآیند ساختارمند است.

برای تبدیل یک صورت مسئله به کد عملیاتی، این مراحل را دنبال کنید.

۱. درک نیازمندی‌ها بلافاصله سراغ کلاس‌ها نروید. ابتدا مشخص کنید که سیستم باید چه کاری انجام دهد.

  • چه قابلیت‌هایی نیاز دارد؟
  • از چه اقداماتی باید پشتیبانی کند؟
  • چه تغییراتی ممکن است بعداً رخ دهد؟

۲. شناسایی اسم‌ها برای یافتن کلاس‌ها در نیازمندی‌های خود به دنبال اسم‌ها بگردید. اسم‌ها تبدیل به کلاس‌های شما می‌شوند. مثال: یک ویرایشگر سند (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 است (IS-A).
  • Car یک Vehicle است (IS-A).
  • Dog یک Animal است (IS-A). اگر پاسخ مثبت است، از وراثت استفاده کنید.

۴. استفاده از رابطه HAS-A برای ترکیب (Composition) از خود بپرسید: «آیا یک شیء شامل شیء دیگری است؟»

  • یک Document شامل مجموعه‌ای از عناصر (elements) است (HAS-A).
  • یک ParkingLot شامل مجموعه‌ای از طبقات (floors) است (HAS-A).
  • یک Car دارای یک موتور (engine) است (HAS-A). برای پیوند دادن این اشیاء از ترکیب (composition) استفاده کنید.

۵. شناسایی فعل‌ها برای یافتن متدها (Methods) در نیازمندی‌ها به دنبال اقدامات (actions) بگردید. فعل‌ها تبدیل به متدهای شما می‌شوند.

  • افزودن متن تبدیل می‌شود به addText().
  • ذخیره سند تبدیل می‌شود به save().
  • پارک کردن خودرو تبدیل می‌شود به parkVehicle().

۶. برنامه‌ریزی برای تغییر با استفاده از رابط‌ها (Interfaces) به به‌روزرسانی‌های آینده فکر کنید. اگر سندی را ذخیره می‌کنید، ممکن است از یک فایل، پایگاه داده یا فضای ابری استفاده کنید.

  • یک رابط (interface) به نام Persistence ایجاد کنید.
  • پیاده‌سازی‌هایی مانند FileStorage یا DBStorage ایجاد کنید. این کار به شما اجازه می‌دهد بعداً بدون تغییر در کد فعلی، CloudStorage را اضافه کنید.

۷. رسم UML و نوشتن کد زمانی که کلاس‌ها، وراثت، ترکیب و متدها را مشخص کردید، یک نمودار UML رسم کنید. این نمودار به عنوان نقشه راه (blueprint) شما عمل می‌کند. در نهایت، آن نقشه را به کد تمیز تبدیل کنید.

خلاصه فرآیند:

  • نیازمندی‌ها
  • تبدیل اسم‌ها به کلاس‌ها
  • رابطه IS-A به وراثت
  • رابطه HAS-A به ترکیب
  • تبدیل فعل‌ها به متدها
  • تبدیل تغییرات به رابط‌ها
  • نمودار UML
  • کد نهایی

منبع: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m