LLD ವಿನ್ಯಾಸ ಪ್ರಕ್ರಿಯೆ (ಅಗತ್ಯತೆಗಳಿಂದ ಕೋಡ್‌ವರೆಗೆ)

Low Level Design ಎಂದರೆ ತಕ್ಷಣವೇ ಕೋಡ್ ಬರೆಯುವುದಲ್ಲ. ಇದು ಒಂದು ವ್ಯವಸ್ಥಿತ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುವುದರ ಬಗ್ಗೆಯಾಗಿದೆ.

ಸಮಸ್ಯೆ ಹೇಳಿಕೆಯಿಂದ (problem statement) ಕಾರ್ಯಗತ ಕೋಡ್‌ಗೆ ಹೋಗಲು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ.

  1. ಅಗತ್ಯತೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ (Understand the Requirements) ನೇರವಾಗಿ ಕ್ಲಾಸ್‌ಗಳಿಗೆ (classes) ಹೋಗಬೇಡಿ. ಮೊದಲು, ಸಿಸ್ಟಮ್ ಏನು ಮಾಡಬೇಕು ಎಂಬುದನ್ನು ಕಂಡುಕೊಳ್ಳಿ.
  • ಅದಕ್ಕೆ ಯಾವ ವೈಶಿಷ್ಟ್ಯಗಳು (features) ಬೇಕು?
  • ಅದು ಯಾವ ಕ್ರಿಯೆಗಳನ್ನು (actions) ಬೆಂಬಲಿಸಬೇಕು?
  • ನಂತರ ಯಾವ ಬದಲಾವಣೆಗಳು ಸಂಭವಿಸಬಹುದು?
  1. ಕ್ಲಾಸ್‌ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾಮಪದಗಳನ್ನು (Nouns) ಗುರುತಿಸಿ ನಿಮ್ಮ ಅಗತ್ಯತೆಗಳಲ್ಲಿ ನಾಮಪದಗಳನ್ನು ಹುಡುಕಿ. ನಾಮಪದಗಳು ನಿಮ್ಮ ಕ್ಲಾಸ್‌ಗಳಾಗುತ್ತವೆ. ಉದಾಹರಣೆ: ಒಂದು ಡಾಕ್ಯುಮೆಂಟ್ ಎಡಿಟರ್ (Document Editor)
  • ನಾಮಪದಗಳು: Document, Text, Image, Storage, Editor.
  • ಕ್ಲಾಸ್‌ಗಳು: Document, TextElement, ImageElement, Storage, DocumentEditor.

ಉದಾಹರಣೆ: ಒಂದು ಪಾರ್ಕಿಂಗ್ ಲಾಟ್ (Parking Lot)

  • ನಾಮಪದಗಳು: ParkingLot, Floor, Slot, Vehicle, Ticket.
  • ಕ್ಲಾಸ್‌ಗಳು: ParkingLot, Floor, Slot, Vehicle, Ticket.
  1. Inheritance ಗಾಗಿ IS-A ಬಳಸಿ ನಿಮ್ಮನ್ನೇ ಕೇಳಿಕೊಳ್ಳಿ: "ಮಗು (child) ಪೋಷಕನ (parent) ಒಂದು ವಿಧವೇ?"
  • TextElement ಎಂಬುದು DocumentElement ನ ಒಂದು ವಿಧ.
  • Car ಎಂಬುದು Vehicle ನ ಒಂದು ವಿಧ.
  • Dog ಎಂಬುದು Animal ನ ಒಂದು ವಿಧ. ಉತ್ತರ 'ಹೌದು' ಎಂದಿದ್ದರೆ, inheritance ಬಳಸಿ.
  1. Composition ಗಾಗಿ HAS-A ಬಳಸಿ ನಿಮ್ಮನ್ನೇ ಕೇಳಿಕೊಳ್ಳಿ: "ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ಇನ್ನೊಂದನ್ನು ಒಳಗೊಂಡಿದೆಯೇ?"
  • ಒಂದು Document ಎಂಬುದು ಎಲಿಮೆಂಟ್‌ಗಳ (elements) ಸಂಗ್ರಹವನ್ನು ಹೊಂದಿದೆ.
  • ಒಂದು ParkingLot ಎಂಬುದು ಫ್ಲೋರ್‌ಗಳ (floors) ಗುಂಪನ್ನು ಹೊಂದಿದೆ.
  • ಒಂದು Car ಎಂಬುದು ಇಂಜಿನ್ ಅನ್ನು ಹೊಂದಿದೆ. ಈ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಜೋಡಿಸಲು composition ಬಳಸಿ.
  1. ಮೆಥಡ್‌ಗಳನ್ನು (Methods) ಕಂಡುಹಿಡಿಯಲು ಕ್ರಿಯಾಪದಗಳನ್ನು (Verbs) ಗುರುತಿಸಿ ಅಗತ್ಯತೆಗಳಲ್ಲಿ ಕ್ರಿಯೆಗಳನ್ನು ಹುಡುಕಿ. ಕ್ರಿಯಾಪದಗಳು ನಿಮ್ಮ ಮೆಥಡ್‌ಗಳಾಗುತ್ತವೆ.
  • Add text ಎಂಬುದು addText() ಆಗುತ್ತದೆ.
  • Save document ಎಂಬುದು save() ಆಗುತ್ತದೆ.
  • Park vehicle ಎಂಬುದು parkVehicle() ಆಗುತ್ತದೆ.
  1. Interfaces ಬಳಸಿ ಬದಲಾವಣೆಗಳಿಗೆ ಯೋಜಿಸಿ ಭವಿಷ್ಯದ ಅಪ್‌ಡೇಟ್‌ಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ. ನೀವು ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಸೇವ್ ಮಾಡಿದರೆ, ನೀವು File, Database ಅಥವಾ Cloud ಅನ್ನು ಬಳಸಬಹುದು.
  • Persistence ಎಂಬ ಹೆಸರಿನ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ರಚಿಸಿ.
  • FileStorage ಅಥವಾ DBStorage ನಂತಹ implementations ರಚಿಸಿ. ಇದು ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸದೆ ನಂತರ CloudStorage ಅನ್ನು ಸೇರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
  1. UML ಬಿಡಿಸಿ ಮತ್ತು ಕೋಡ್ ಬರೆಯಿರಿ ಒಮ್ಮೆ ನೀವು ಕ್ಲಾಸ್‌ಗಳು, inheritance, composition ಮತ್ತು ಮೆಥಡ್‌ಗಳನ್ನು ಹೊಂದಿದ ನಂತರ, UML ಡಯಾಗ್ರಾಮ್ ಅನ್ನು ಬಿಡಿಸಿ. ಇದು ನಿಮ್ಮ ನೀಲನಕ್ಷೆಯಂತೆ (blueprint) ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕೊನೆಯದಾಗಿ, ಆ ನೀಲನಕ್ಷೆಯನ್ನು ಸ್ವಚ್ಛವಾದ (clean) ಕೋಡ್ ಆಗಿ ಪರಿವರ್ತಿಸಿ.

ಸಾರಾಂಶದ ಹರಿವು (Summary Flow):

  • ಅಗತ್ಯತೆಗಳು (Requirements)
  • ನಾಮಪದಗಳಿಂದ ಕ್ಲಾಸ್‌ಗಳಿಗೆ (Nouns to Classes)
  • IS-A ನಿಂದ Inheritance ಗೆ
  • HAS-A ನಿಂದ Composition ಗೆ
  • ಕ್ರಿಯಾಪದಗಳಿಂದ ಮೆಥಡ್‌ಗಳಿಗೆ (Verbs to Methods)
  • ವೈವಿಧ್ಯತೆಗಳಿಂದ ಇಂಟರ್ಫೇಸ್‌ಗಳಿಗೆ (Variations to Interfaces)
  • UML ಡಯಾಗ್ರಾಮ್
  • ಅಂತಿಮ ಕೋಡ್ (Final Code)

Source: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m