ユースケース駆動開発についての勉強まとめ そして思ったこと

先日、以下の書籍を使ってユースケース駆動開発について勉強をしました。

ユースケース駆動開発実践ガイド

ユースケース駆動開発実践ガイド

経緯

私はキーワード駆動テストアプリケーションを作っています。
せっかく時間をかけたものなので、これを公開してもっと多くの人に利用してもらおうと思いました。

ただ、そこにはまだまだ実現したいことが多く残っていました。
そこで、私はアプリケーションを利用してくれる方の中から開発に参加してくれる方を募ると良いのではないかと考えました。

しかし、私は一つの課題があることに気づきました。
これがどういうものなのかが、私にしか理解できないものになっていたことに。

そこで、対象の構造を改めて誰もが分かる形で表現するにはどうしたらいいのか?と考え、
手に取ったのが本書でした。

本書を読んだのは、本当にたまたまです。
他にもUPやRUPの本、DDDやRDDの本も手に取りましたが、要求分析からテストまでの開発の流れを体系的に理解する必要がある今の私には、これが一番自分に合っていたからです。

ユースケース駆動開発において予備設計に進める上で重要だと感じた点

要求

機能要求…システムができること(非機能も含める)
振る舞い要求…機能要求からユーザーとシステムの対話を明らかにしていくこと。

ユースケースモデリング

要求を元に、アプリケーションの振る舞いをユースケースとして記述することで、アクターとシステム間の振る舞いを明確にする。

ドメインモデリング

問題とする領域を明確にし、現実に基づいたユースケースを記述する上での用語を明確にする行為。
何を解決しなければならないのかを明らかにするために、問題領域をドメインモデルとして明らかにする。

ポイント

ユースケース記述を、解決すべき領域(ドメインモデル)の用語を用いて叙述的に書くこと。
この記述が、オブジェクト自体やオブジェクト同士の関連を見つける目的で実施されるロバストネス分析の実施を補助することになる。

勉強のまとめ

私はJJUGに参加しているのですが、昨年参加した「ビール片手にLT大会」が今年は11/21に開催されるということでした。
ちょうど良い機会だと思い、勉強のアウトプットもかねて発表してきたので、備忘録として残します。

www.slideshare.net

様々な開発手法

ロバストネス分析の結果を明らかになった、バウンダリ/エンティティオブジェクト、コントローラからシーケンス図を作成し、
そこに表現されたオブジェクト間の相互作用、必要な属性をオブジェクトに反映し、抽象的に表現した図がクラス図になります。

ユースケース駆動開発であるICONIXは、このようなアプローチで開発を進めていく手法を採用しています。

一方、本書を読む中で「そもそもオブジェクトととは?」について調べる為に参照した下記書籍では、ユースケース駆動開発とはまた別のアプローチでオブジェクトをに他の手法が紹介されていました。
詳しくは別の機会にしますが、OOADというジャンルではオブジェクトを設計をしていくという目的は同じなのですが、そこへのアプローチの仕方は他にも様々あるのだなと感じました。

私が大切だと思ったこと

開発の話からそれますが本書だけでなく、日常生活からの体験も踏まえて思ったことがあります。

  • 自分が何を大切にしていて、何かをするときに関わる人が居るときはその人は何を大切にしているのかを話してお互いに納得すること
  • 様々なシーンでの役割を理解すること
  • 良い仕事は良好な関係から生まれること

オブジェクト設計ではないですが、この世で生活をする上ではいろんなシーンがありそこでには自分の役割があるはずです。

  • 職場での役割
  • 家庭での役割
  • 社会での役割

役割がなければ自分で作ればいいのかなと思います。
役割が合わないと思えば、合わせるか、変えていけばいいのです。
私はオブジェクト設計を通してこんなことを思いました。
変な人ですね(^_^;)

今後、UPやRUP、DDDのアプローチついて勉強するのが楽しみです。