LLD設計プロセス(要件定義からコード実装まで)
ローレベル設計(LLD)は、すぐにコードを書くことではありません。構造化されたプロセスに従うことが重要です。
問題定義から動作するコードへと進むために、以下のステップに従ってください。
- 要件を理解する いきなりクラスを作成してはいけません。まず、システムが何をすべきかを明らかにします。
- どのような機能が必要か?
- どのようなアクションをサポートする必要があるか?
- 後でどのような変更が発生する可能性があるか?
- 名詞を特定してクラスを見つける 要件の中から名詞を探します。名詞がクラスになります。 例:ドキュメントエディタ
- 名詞:Document, Text, Image, Storage, Editor.
- クラス:Document, TextElement, ImageElement, Storage, DocumentEditor.
例:駐車場
- 名詞:ParkingLot, Floor, Slot, Vehicle, Ticket.
- クラス:ParkingLot, Floor, Slot, Vehicle, Ticket.
- 継承には「IS-A」関係を用いる 自分自身に問いかけてみてください。「子クラスは親クラスの一種か?」
- TextElement は DocumentElement の一種である。
- Car は Vehicle の一種である。
- Dog は Animal の一種である。 答えが「はい」であれば、継承を使用します。
- コンポジションには「HAS-A」関係を用いる 自分自身に問いかけてみてください。「あるオブジェクトが別のオブジェクトを保持しているか?」
- Document は要素のコレクションを保持している(HAS-A)。
- ParkingLot はフロアの集合を保持している(HAS-A)。
- Car はエンジンを保持している(HAS-A)。 これらのオブジェクトを関連付けるために、コンポジションを使用します。
- 動詞を特定してメソッドを見つける 要件の中からアクション(動作)を探します。動詞がメソッドになります。
- 「テキストを追加する」は
addText()になります。 - 「ドキュメントを保存する」は
save()になります。 - 「車両を駐車する」は
parkVehicle()になります。
- インターフェースで変更に備える 将来のアップデートを考慮してください。ドキュメントを保存する場合、ファイル、データベース、またはクラウドを使用する可能性があります。
Persistenceというインターフェースを作成します。FileStorageやDBStorageのような実装を作成します。 これにより、既存のコードを変更することなく、後からCloudStorageを追加できるようになります。
- UMLを描き、コードを書く クラス、継承、コンポジション、メソッドが決まったら、UML図を描きます。これが設計図(ブループリント)となります。最後に、その設計図をクリーンなコードに変換します。
まとめフロー:
- 要件
- 名詞からクラスへ
- IS-A から継承へ
- HAS-A からコンポジションへ
- 動詞からメソッドへ
- バリエーションからインターフェースへ
- UML図
- 最終的なコード
Source: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m