LLD設計プロセス(要件定義からコード実装まで)

ローレベル設計(LLD)は、すぐにコードを書くことではありません。構造化されたプロセスに従うことが重要です。

問題定義から動作するコードへと進むために、以下のステップに従ってください。

  1. 要件を理解する いきなりクラスを作成してはいけません。まず、システムが何をすべきかを明らかにします。
  • どのような機能が必要か?
  • どのようなアクションをサポートする必要があるか?
  • 後でどのような変更が発生する可能性があるか?
  1. 名詞を特定してクラスを見つける 要件の中から名詞を探します。名詞がクラスになります。 例:ドキュメントエディタ
  • 名詞:Document, Text, Image, Storage, Editor.
  • クラス:Document, TextElement, ImageElement, Storage, DocumentEditor.

例:駐車場

  • 名詞:ParkingLot, Floor, Slot, Vehicle, Ticket.
  • クラス:ParkingLot, Floor, Slot, Vehicle, Ticket.
  1. 継承には「IS-A」関係を用いる 自分自身に問いかけてみてください。「子クラスは親クラスの一種か?」
  • TextElement は DocumentElement の一種である。
  • Car は Vehicle の一種である。
  • Dog は Animal の一種である。 答えが「はい」であれば、継承を使用します。
  1. コンポジションには「HAS-A」関係を用いる 自分自身に問いかけてみてください。「あるオブジェクトが別のオブジェクトを保持しているか?」
  • Document は要素のコレクションを保持している(HAS-A)。
  • ParkingLot はフロアの集合を保持している(HAS-A)。
  • Car はエンジンを保持している(HAS-A)。 これらのオブジェクトを関連付けるために、コンポジションを使用します。
  1. 動詞を特定してメソッドを見つける 要件の中からアクション(動作)を探します。動詞がメソッドになります。
  • 「テキストを追加する」は addText() になります。
  • 「ドキュメントを保存する」は save() になります。
  • 「車両を駐車する」は parkVehicle() になります。
  1. インターフェースで変更に備える 将来のアップデートを考慮してください。ドキュメントを保存する場合、ファイル、データベース、またはクラウドを使用する可能性があります。
  • Persistence というインターフェースを作成します。
  • FileStorageDBStorage のような実装を作成します。 これにより、既存のコードを変更することなく、後から CloudStorage を追加できるようになります。
  1. UMLを描き、コードを書く クラス、継承、コンポジション、メソッドが決まったら、UML図を描きます。これが設計図(ブループリント)となります。最後に、その設計図をクリーンなコードに変換します。

まとめフロー:

  • 要件
  • 名詞からクラスへ
  • IS-A から継承へ
  • HAS-A からコンポジションへ
  • 動詞からメソッドへ
  • バリエーションからインターフェースへ
  • UML図
  • 最終的なコード

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