|
||||
ソフトウェア開発を「問題解決」、と見ると、 問題→解 という活動だと考えられる。左の「問題」は、問題空間にあり、右の「解」は 解空間にある。設計とは、このマッピングを行なう活動だと考える。では、分 析とは何か。 実際には、(ソフトウェアでは特に)問題が複雑だったり曖昧だったりするこ とから、このままではうまく解けない。そこで、一旦、この「問題→解」とい う現実世界の問題をモデル化しよう、ということになる。「問題空間」、「解 空間」という空間と直行する空間軸として、上下に「モデル空間」と「現実空 間」を導入する。そうすると、4つの象限が現れる。その4つの象限に、現実空 間の「問題」と「解」、そして、モデル空間の「分析モデル」と「設計モデル」 を置く。ここで、分析モデル=モデル化された問題、設計モデル=モデル化さ れた解である。そして、問題→解という直線的な解き方ではなく、一旦モデル 空間に上って遠回りをしてみる。 分析モデル→設計モデル ↑ ↓ 問題 解 問題を一旦モデル化する活動を「分析」と呼ぶ。成果物は、「モデル空間上の 問題」(分析モデル)だ。そして、モデル空間上で解決させる活動を、「設計」 と呼ぶ。成果物は、「モデル空間上の解」(設計モデル)だ。最後に、モデル 空間から現実空間へと逆変換する。これを実装と呼ぶ。成果物は解、すなわち (ソフトウェア開発であれば)動くコードである。 まとめると、設計とは、問題空間から解空間への変換である。ただし、一旦問 題をモデル化し(分析)、それをモデルで解決する(設計)。つまり、モデル 領域で変換する。そして、解のモデルを、再度現実領域にもどしてやる。これ で最終的な現実世界の解にたどりつく。 分析モデル→<設計>→設計モデル ↑ ↓ <分析> <実装> ↑ ↓ 問題→<テスト>← 解 |
||||
はじめにもどる |