2011-02-11 12 views
5

私は複雑なシステムを設計しています。複雑なシステムを設計する2つの方法:トップダウンとボトムアップ

  1. トップダウン: は、私は2つの方法があり、私は多くのインターフェイスとの契約を設計します。その後、これらのインターフェイスを実装し、デザインを検証するためのプロトタイプを作成します。

  2. ボトムアップ:システムを動作させるためのコードを記述します。後は、ソリッドコードからインタフェースとコントラクトを抽出します。蒸留された界面と契約は私のデザインです。それはルール "を実行して、それを正しくします"です。

もっと良い方法はありますか?私の意見では、ボトムアップを選択します。トップダウンは非常に難しいので、誰も多くのインターフェースを高い抽象レベルで設計することはできません。少なくとも、私にとっては難しいです。最初のデザインを検証するためのソリッド・インプリメンテーションを書くと、最初から何度も再設計するような不合理なものがたくさんあります。ボトムアップを使用している間は、私はかなり安全だと感じていますが、少なくともそれは実行できます。

答えて

6

他の人は言っているように、通常は混在しています。より実用的なレベルでは、以下のアプローチが通常役に立ちます。

  • 開始はABSTRACT Top-Downから始まります。つまり、システム/設計を論理コンポーネントに分割してタスクを解決します。しかし、これらのコンポーネントの正確なファイナライズされたインターフェイスを設計しないでください。到着したコンポーネントの中には、実装可能なサイズ(例えば、単一のファンクション/メソッド/クラスのサイズなど)があるまで再帰的に処理を進めてください。

  • 次に、結果のコンポーネントリストBottom-インターフェース/契約の最初の草案。

  • 次に、結果のコンポーネントリストボトムアップを実行し、実装を開始します。これはあなたをできるようになります:

    • は、直ちに作業とテスト可能なコード(コンポーネントがテストに実装する基礎となるのを待つ必要はありません)

    • をお持ちのあなたはのためのインターフェイス/契約の最終版を合成することができますすでに完成した下位レベルのコンポーネントのニーズに基づいてより高いレベルのコンポーネントを提供します。私の意見で

2

ほとんどの些細なデザインを除いてこれは決して単純ではありません。私は、ほとんどのデザインが両方の方法論の混合を必要としていることがわかります。

0

私も個人的にはボトムアップを優先しています。なぜなら、トップダウンを行うときに何かを忘れてしまったからです。少なくとも私の場合は、シングルをデザインする際に、コンポーネントは、底から。

挨拶、現実の世界では ローレンツ

0

は、システムを設計するには、これらの単純な方法論を使用するのはほぼimpossibileです。あなたは本来、複数の繰り返しで両方を使用する必要があります。

しかし、これも単純な答えです。

1

、トップダウン設計は、ボトムアップ1よりも自然です。例:システムを設計するときは、まずその機能(設計インタフェースと契約)を定義し、次にシステムのエンティティを指定し、それらの間の関係を実装します...確かに、トップダウン設計はボトムアップ型で、経験豊かな開発者が必要です。

関連する問題