LLD ವಿನ್ಯಾಸ ಪ್ರಕ್ರಿಯೆ (ಅಗತ್ಯತೆಗಳಿಂದ ಕೋಡ್ವರೆಗೆ)
Low Level Design ಎಂದರೆ ತಕ್ಷಣವೇ ಕೋಡ್ ಬರೆಯುವುದಲ್ಲ. ಇದು ಒಂದು ವ್ಯವಸ್ಥಿತ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುವುದರ ಬಗ್ಗೆಯಾಗಿದೆ.
ಸಮಸ್ಯೆ ಹೇಳಿಕೆಯಿಂದ (problem statement) ಕಾರ್ಯಗತ ಕೋಡ್ಗೆ ಹೋಗಲು ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ.
- ಅಗತ್ಯತೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ (Understand the Requirements) ನೇರವಾಗಿ ಕ್ಲಾಸ್ಗಳಿಗೆ (classes) ಹೋಗಬೇಡಿ. ಮೊದಲು, ಸಿಸ್ಟಮ್ ಏನು ಮಾಡಬೇಕು ಎಂಬುದನ್ನು ಕಂಡುಕೊಳ್ಳಿ.
- ಅದಕ್ಕೆ ಯಾವ ವೈಶಿಷ್ಟ್ಯಗಳು (features) ಬೇಕು?
- ಅದು ಯಾವ ಕ್ರಿಯೆಗಳನ್ನು (actions) ಬೆಂಬಲಿಸಬೇಕು?
- ನಂತರ ಯಾವ ಬದಲಾವಣೆಗಳು ಸಂಭವಿಸಬಹುದು?
- ಕ್ಲಾಸ್ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾಮಪದಗಳನ್ನು (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.
- Inheritance ಗಾಗಿ IS-A ಬಳಸಿ ನಿಮ್ಮನ್ನೇ ಕೇಳಿಕೊಳ್ಳಿ: "ಮಗು (child) ಪೋಷಕನ (parent) ಒಂದು ವಿಧವೇ?"
- TextElement ಎಂಬುದು DocumentElement ನ ಒಂದು ವಿಧ.
- Car ಎಂಬುದು Vehicle ನ ಒಂದು ವಿಧ.
- Dog ಎಂಬುದು Animal ನ ಒಂದು ವಿಧ. ಉತ್ತರ 'ಹೌದು' ಎಂದಿದ್ದರೆ, inheritance ಬಳಸಿ.
- Composition ಗಾಗಿ HAS-A ಬಳಸಿ ನಿಮ್ಮನ್ನೇ ಕೇಳಿಕೊಳ್ಳಿ: "ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ಇನ್ನೊಂದನ್ನು ಒಳಗೊಂಡಿದೆಯೇ?"
- ಒಂದು Document ಎಂಬುದು ಎಲಿಮೆಂಟ್ಗಳ (elements) ಸಂಗ್ರಹವನ್ನು ಹೊಂದಿದೆ.
- ಒಂದು ParkingLot ಎಂಬುದು ಫ್ಲೋರ್ಗಳ (floors) ಗುಂಪನ್ನು ಹೊಂದಿದೆ.
- ಒಂದು Car ಎಂಬುದು ಇಂಜಿನ್ ಅನ್ನು ಹೊಂದಿದೆ. ಈ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಜೋಡಿಸಲು composition ಬಳಸಿ.
- ಮೆಥಡ್ಗಳನ್ನು (Methods) ಕಂಡುಹಿಡಿಯಲು ಕ್ರಿಯಾಪದಗಳನ್ನು (Verbs) ಗುರುತಿಸಿ ಅಗತ್ಯತೆಗಳಲ್ಲಿ ಕ್ರಿಯೆಗಳನ್ನು ಹುಡುಕಿ. ಕ್ರಿಯಾಪದಗಳು ನಿಮ್ಮ ಮೆಥಡ್ಗಳಾಗುತ್ತವೆ.
- Add text ಎಂಬುದು addText() ಆಗುತ್ತದೆ.
- Save document ಎಂಬುದು save() ಆಗುತ್ತದೆ.
- Park vehicle ಎಂಬುದು parkVehicle() ಆಗುತ್ತದೆ.
- Interfaces ಬಳಸಿ ಬದಲಾವಣೆಗಳಿಗೆ ಯೋಜಿಸಿ ಭವಿಷ್ಯದ ಅಪ್ಡೇಟ್ಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ. ನೀವು ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಸೇವ್ ಮಾಡಿದರೆ, ನೀವು File, Database ಅಥವಾ Cloud ಅನ್ನು ಬಳಸಬಹುದು.
- Persistence ಎಂಬ ಹೆಸರಿನ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ರಚಿಸಿ.
- FileStorage ಅಥವಾ DBStorage ನಂತಹ implementations ರಚಿಸಿ. ಇದು ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸದೆ ನಂತರ CloudStorage ಅನ್ನು ಸೇರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
- 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