抽象化とはプロセスである。

 要件定義、基本設計をするために、要求から仕様を導出する、各モデルによって分析、設計を行いますが、最初につまづく所がこの抽象化だと感じています。その原因は要件定義手法、設計手法を学ぶ、これまでの経験から練り上げられたプロセスによるテンプレートを使う場合、この抽象化した結果がまず最初に目に飛び込んでくることにあります。

 例えばUSDMを使う場合、テンプレートを最初に見ると、要求が階層化されいます。要求文書から、要求とその理由を元に仕様の導出を試みますが、よくあるパターンは、一番上位にくる(抽象化された結果である)要求に何がくるべきかに悩んでしまうことです。

 別の例では、概念モデルを書く場合に設計手法を学んで覚えていることは、最終的な概念モデルであり、それは抽象化された結果であるモデルであるため、同じように直ぐに抽象化を考えて悩んでしまいます。

 この問題は、特に具体的なソースからは遠い距離にある上位設計でよく起こります。

 この問題にはまらないために理解しておくべきことは、抽象化とはプロセスである、ということです。まずは具体的な要求、クラスなどを要求文書から洗い出し、マインドマップなり、ホワイトボードを使って手を動かしましょう。そして一通り出し切った後から、共通性を見いだし、徐々に抽象化していく、というプロセスを通る必要があります。

 最終的なドキュメントは読み易く構成されているものですが、それが考えるプロセスとは一致しないことを理解しておく必要があります。