前に書いた、
アクティビティ図やユースケース図は、なんか別の視点から出来ている図なのではないか?
ということを予感させることを書き始めてしまったわけですが、このことに関しては、このシリーズではなく、別枠で書くつもりです。
の別枠の話。
アクティビティ図やユースケース図等、UMLの図は、あくまでも、オブジェクト指向分析における図であって、それ以外の開発の場合では、ベストな図とは言いがたい場合があります。
たとえば、前に見たアクティビティ図。
これは、オブジェクト指向では開発しない、たとえばCでの開発の場合、最適とはいえない。
入力メディアが違ってしまえば、プログラミングは変わってくるわけで、そうなると、かなり早い段階で、入出力メディア(画面かファイルか)がわかっていないといけない。
この場合においては、入出力のメディアがはっきりしない(オブジェクトノードとして一括して表してしまう)アクティビティ図より、データベース、画面、帳票をはっきり書く、業務流れ図のほうが、好ましい。
しかし、オブジェクト指向で開発するという場合、多態性を利用して、はじめのうちは、メディアをはっきりさせず、入力、出力を共通的なインターフェースを使って設計しておき、最終段階で実際の入出力メディアを決めるという開発方法もありえます。
つまり、DI(依存性の注入)であります。
こうやってシステムを作ると、仮に考えると(仮に考えるだけで、この方法で作れることは保障していない)入出力メディアを決めないで、システムを設計、開発していき、最終段階で、確定させるということができないといけません。
この場合においては、入出力のメディアをデータベース、画面、帳票をはっきり書く、業務流れ図ではまずいわけで、はっきりとはかかず、オブジェクトノードとして、項目だけ挙げるアクティビティ図のほうが望ましいということになります。
ユースケース図においても、オブジェクト指向でなければ、継承などは関係ないから、コンピューターが行うプロセス部分をユースケースとして出しているだけで、あまり意味ある図ではありません。
しかし、オブジェクト指向で考えた場合、継承関係があるわけで、その継承を表現するには、ユースケース図の意義があるわけです(ER図でも継承は表せます。しかし、ER図では永続的なモノや出来事を表現するので、一時的な処理(帳票出力)の継承関係(と受注表出力、納品書出力)までが表現されることは保障されていません。そこでこれらの継承を表せる図が必要になってくるわけです-そもそもER図はオブジェクト指向の図ではないですが)。
で、ここで要求分析で継承関係が表せるため、さらに下の工程で作成されるクラス図での継承関係の正当性が担保できるということになってきます。
ということで、UMLの図は、オブジェクト指向的には意味があるけど、そうじゃなければ、意味がなかったり逆効果だったりすることがあります。
で、次なる話題。
さっき、さらっと流したけど、
はじめのうちは、メディアをはっきりさせず、入力、出力を共通的なインターフェースを使って設計しておき、最終段階で実際の入出力メディアを決めるという開発方法もありえます。
もっと言っちゃうと、要求仕様をはっきり決めず、どんどん開発していくということも、オブジェクト指向、とくにDIを使った場合可能なのか?
という問題があります。これについては長くなるので、別の機会に。。。