要求仕様に対するソフトウェア工学からのアプローチを解説する第2回である今回は、実際にUML図を作成する。自分だったらどう記述するか、考えながら読み進めてほしい。
[node:1113,title="前回"]、要求仕様書作成におけるUMLの意義について述べた。今回は、システム化の具体例を設定し、実際にUML図を作成していく。題材として、広告誌を発行するA社における新・広告編集システムを取り上げる。これは、原稿の入稿から編集、印刷に至るまでの業務プロセスを効率化することを目的にしたシステムである。
UML図の作成に先立ち、システム化の背景を説明しておこう。A社はこれまで、図1の業務フローに示すようにFAXを利用して原稿をやりとりしており、そのプロセスを管理するための「注文管理システム」を利用してきた。従来のこうしたやり方には、毎月の通信費がかさむという問題があった。さらに、A社では近くWeb広告に参入する計画だが、その際にも紙の原稿をベースにした編集作業は足かせになることが容易に予想できた。
そこで、A社はFAXに加えてデジタル原稿をWeb経由で送受信し、入稿から印刷までの工程を管理できる仕組みを整えることにした。通信費削減のほか、紙に印字された情報をパソコンに入力する手間をなくすことも、新システムの狙いである。
以上の経緯を踏まえたうえで、A社の新システムを「ユースケース図」「クラス図」「シーケンス図」という、UMLの代表的な3モデルで表現していく。
ユースケース図を作成する
ユースケースは、ある目的を達成するためにアクターが実行する個別の操作を示す。ユースケース図には、システムのアクターやそのアクターが業務フローの中でどのような操作を行うのかを記述する。
実は、あるワークショップでこの題材を使ってユースケース図を作成する演習を実施したところ、3つのグループが作成したユースケース図はすべて異なっていた。なぜだろうか。グループ間の議論の焦点になったポイントを以下に示す。
(1)ユースケースをどう分割するか。例えば、編集(社員による最初の原稿作成)と校正(顧客と原稿を確認しながら、確認修正する作業)を、同じユースケースとするか別のユースケースとするか。
(2)A社は業務規模が小さいため、1人の社員が営業や編集、印刷業務を兼務することが多い。この場合、アクターを「社員」という1つのアクターとするか、あるいは「営業担当」「編集者」「印刷担当」といった役割で分けて表現するか。
(3)一定期間は新システムと既存の注文管理システムを並行して稼働させ、新システムに登録された受注内容を既存の注文管理システムに送信する必要がある。既存システムはユースケースのどこに、どのように書くべきか。
(1)はユースケースの粒度の問題、(2)はアクターの表現の問題、(3)は既存システムとの関係をどう表現するかの問題と言える。いずれも、ユースケース図を作成する際に混乱しやすい事柄なので、前もって明確に定義しておきたい。3つのポイントについて、ここでは次のように定義する。
- 業務フロー図にならい、編集作業と校正作業はそれぞれ別のユースケースとする。
- 社員が増えた場合を見越して、アクターはそれぞれの役割別に設ける。
- 既存の注文管理システムをアクターとして設け、「原稿を入稿する」というユースケースと関連づける。
以上の要件を得て作成したのが、図2のユースケース図である。
ただし、ユースケース図だけではシステム構築に必要な情報を網羅できない。そこで、ユースケースごとに「ユースケースシナリオ」を作成する。このユースケースシナリオには、アクターが実施すべき業務フローに従ってシステム仕様を文章で記述する。顧客がWeb経由で入稿する際のユースケースシナリオの例を、図3に示す。
ユースケース名 | 原稿を入稿する |
---|---|
ユースケース番号 | U002 |
概要 | 顧客から原稿を受け取り、営業担当者と注文管理システムに渡す |
アクター | 顧客、営業担当者、注文管理システム |
事前条件 | セッションが確立していること |
事後条件 |
|
イベントフロー | |
正常フロー |
|
異常フロー |
|
会員登録(無料)が必要です
- 1
- 2
- 次へ >
- 要求仕様作成における最大のコツ─機能の2割をカットする:第14回(2009/11/02)
- システム仕様を数式に変換─Z言語で要求仕様を厳密に記述する:第13回(2009/10/02)
- スケッチ、設計図、プログラミング言語UMLの利用法を再確認する:第11回(2009/08/06)
- ブレーンストーミング、KJ法、NM法、マインドマップ─発想法のエッセンスを理解する:第10回(2009/07/06)
- 現実解に固執せず自由に発想し独創性の高い解決策を生み出す:第9回(2009/06/04)