「ユースケース(use-case)」を理解するために、その歴史をたどる

ユースケース」って言葉はよく見聞きしますよね。「まずはユースケースから考えよう」とか「ユースケースの洗い出しが甘いよね」とか「あー、あの棒人間と楕円をつないだやつね」とか。

しかし、どうもその実態というか意味がつかめていません。あるいは、ユースケースがもたらす嬉しさや悲しさもあまり体感できていません。ユースケースという言葉の解釈や使い方は、人によってバラバラな気がしてなりません。みなさんはどうでしょうか?

ユースケースはどうやら有用な考え方らしいのですが、どうもしっくりこないんですよね。一方で、これを理解することができたらとても嬉しい気がするのも事実です。ムズムズしてもどかしい。

というわけで、ユースケースについて勉強していくことにしました。まずは、その定義から。つまり、歴史をたどりましょう。

ユースケースの歴史をざっくり

提唱したのは Ivar Jacobson 名前がついたのは1987年

use-case という概念を提唱したのは Ivar Jacobson という人です。1939年生まれで現役バリバリです。

彼が1987年のOOPSLA 1987: Orlando, Floridaというカンファレンスで発表したことで正式に名前がついたようです。

なお、1987年以前から、ユースケースの概念はすでに世の中に知れ渡っていたようです。

World Wide Web の開始が1991年ということを考えると相当な歴史を持っている概念ですね。

1991 年 8 月 6 日の、 Tim Berners-Lee による alt.hypertext 公開ニュースグループへの 投稿 が、公開プロジェクトとしての World Wide Web の公式な開始日と考えられています。

HTTP の進化 - HTTP | MDN

どんどん発展している

Jacobsonの執筆した書籍(共著含む)を追ってみると、use-caseの考え方がどんどん発展していることがわかってきました(書籍以外に論文もたくさん著しています!)。

  1. 『Object Oriented Software Engineering: A Use Case Driven Approach』(1992年)
  2. 『Unified Modeling Language Reference Manual』(1998年)
  3. Aspect-Oriented Software Development with Use Cases』(2004年)
  4. 『The Essentials of Modern Software Engineering』(2019年)

それぞれ日本語版も出版されています。

  1. オブジェクト指向ソフトウェア工学OOSE―use‐caseによるアプローチ』(1995年)
  2. UMLによる統一ソフトウェア開発プロセスオブジェクト指向開発方法論』(2000年)
  3. ユースケースによるアスペクト指向ソフトウェア開発 』(2006年)
  4. 『モダン・ソフトウェアエンジニアリング』(2020年)

それぞれの本をちらっと読んだ感じでは、ユースケース自体の概念を発展させていたり、ユースケースではカバーできないところは別の概念を使ったりしていました。どんどん強力になっていると思うのですが、より複雑になっているのではないかと思います。どういう経緯があるのやら。

逆に言うと、古い書籍は内容がシンプルな印象があります。より純度が高い印象です。

ユースケースを理解したいけど、どうする?

さて、本題は「ユースケースを理解したい!」です。

しかし、何をもって「ユースケースを理解した」と定義すればよいのでしょう。皆目検討がつきません。

そこで、「ユースケースとは○○である」というような文を書籍から拾ってきて並べてみることにしました。これは問題のすり替えでもありますが、現状は何がわからないかも言えないくらいわかっていません。まずは自分なりの解釈を作るところから始めるべきだと判断しました。

また、電子版がないので手作業での発掘ですが、それはそれで楽しいので少しずつ書き足していこうかなと思います。

1. 『オブジェクト指向ソフトウェア工学OOSE―use‐caseによるアプローチ』(1995年)

p.117

(略) ユーザがシステムを利用するとき、ユーザはシステムとの対話における動作に関する一連の処理を行う。われわれはこのような特別な一連の処理をuse-caseと呼ぶ。

p.142

(略) アクタはシステムの環境を規定し、use-caseはシステムの中で何が実行されるかを表す。

p.144

(略) それぞれのuse-caseはユーザの視点から見たシステムにおける事象の完全な系列である。

p.146

use-caseはシステムが持つ機能のある一部分を実行するための特定の手順である

p.147

アクタはuse-caseの実行を要求しているわけではなく、結果的には完結されるuse-caseの事象の系列を開始しただけである。

p.158 7.2.7 議論 は必見

use-caseを分割するかどうかの議論が載っている。

p.159

すべてのuse-caseは内部事象でなく外部事象から始まるので、(略)

2. 『UMLによる統一ソフトウェア開発プロセスオブジェクト指向開発方法論』(2000年)

p.155

ユースケースは、システムが結果としてアクターに価値をもたらす機能の「かたまり」です。もっと厳密に言えば、ユースケースは、システムがアクターと相互作用することによって実行できる、代替となるアクションを含んだ一連のアクション(アクションのシーケンス)を指定します。

p.170

(中略) ユースケースが正常に実行された場合には、アクターが目的を達成するために必要な、何らかの価値がアクターにもたらされる必要があります。(略)

p.175 議論 は必見

オブジェクト指向ソフトウェア工学OOSE―use‐caseによるアプローチ』のp.158と見比べたいところ。

ユースケースモデルを作成するときのトレードオフ、例えばユースケースを分割するか1つにまとめるか、の議論がある。

p.175

(中略) ユースケースは実行の最小単位であると考えられ、したがって、別のユースケースを開始する前に常に完了しなければならないからです。

参考文献

※ すべて翻訳版の出版年。原著はもっと古い。

以上