まず、すべての関係を含むクラス図を描き、アプリケーションの要件に応じて必要なクラスのみを実装します。
貧弱なアプローチ (属性とゲッターとセッター) を使用して物事をシンプルに保ち、同じステップでビジネス ロジックを記述するステップを回避できます。貧血モデルでは、ロジックは対応する Service クラスに入ります。そうすれば、後でユースケースを検討できます。
この方法を好まない人がいることは知っていますが、メンテナンスに役立ち、依存関係の問題を回避できます。
以下のむさぼり食ったエリジウムの質問への回答:
分析に関しては、ユースケース (What) から始めてクラス図 (How) に進むのが経験則のように思えます。個人的には、どのプロセス/オブジェクト間でメッセージを送信する必要があるかを知る必要があるため、後でシーケンス図 (いつ、誰が?) を作成します。
それを超えて、UML は単にシステム/プロジェクトをモデル化する方法であり、それ自体が方法論ではないというのが私の見解です (Merise、RAD、RUP、スクラムなどとは異なります)。図を完成させるのに十分な情報がある限り、誰かが図を書き始めるのを止めるものは何もありません。実際、各ダイアグラムは同じシステム/プロジェクトの異なる視点であるため、これらは同時に実行する必要があります。
つまり、全体として、分析をどのように行うかによって異なります。研究中に、コードを生成する前に最初から最後まで完全な分析を行う、厳格なウォーターフォール アプローチを教えられました。ただし、可能な限り短い時間で動作するアプリケーションを作成することが不可欠な場合があるため、実際には状況が異なる場合があります。
たとえば、私は最近、人々がフィクションを投稿できる Web サイトの作成に関する演習で、スクラムの方法論を紹介されました。時間的な制約と、何を達成すべきかについての明確なビジョンがあったため、ドメイン モデルを表す必要最小限のクラス図からすぐに始めました。次に、作成した一連のモック画面からユース ケースを推測しました。
記憶によると、クラスは Story、Chapter、User、Category でした。この最後のクラスは、より柔軟な Tag クラスを優先して段階的に廃止されました。ご想像のとおり、既存のプロジェクトの完全なクラス図は、ドメイン駆動設計と Java プログラミング言語の特殊性を適用するため、はるかに複雑になります。
このアプローチは、ずさんなものと見なされる可能性があります。ただし、このような Web サイトは、反復プロセスを使用して数週間で簡単に作成でき、それでも適切に設計されています。反復プロセスがウォーターフォール アプローチより優れている点は、要件を継続的に調整できることです。頻繁に要件が変更されることは現実です。なぜなら、人々はしばしば考えを変え、反復のたびに機能するアプリケーションを作成できる可能性があるため、いわばコースにとどまることができるからです。
もちろん、クライアントにプロジェクトを提示するときは、UML ダイアグラムといくつかのモック画面を使用した完全な分析が望ましいでしょう。そうすれば、彼らはあなたが何を提供しているかを把握できます。ここで UML の出番です。視覚的な規則のいくつかを説明したら、図を理解できるはずです。
最後に、クライアントが何を望んでいるかを判断しようとしている状況にある場合は、持参できるアンケートを徐々に作成することをお勧めします. アプリケーションに本当に必要なコンセプトや機能を判断するには、インタビューを行うしかありません。もう 1 つのヒントは、よく知らない話題に直面したときに Web で簡単な調査を行うことです。
あなたの例では、これは解剖学の基本を理解することです。とりわけ、これは、モデルに何を含める必要があり、どのような粒度を持たなければならないかを決定するのに役立ちます (臓器のどのグループを考慮する必要がありますか? どの程度の精度が必要ですか? 臓器のみをモデル化する必要がありますか、それともモデル化する必要がありますか?組織、細胞、化学組成などの構成要素?)。