スパイラル1は最初のとっかかりを作る。 ここでも、きちんと要求分析、システム分析、設計、実装、テストの工程を実行する。

会議室予約システム

企画書

画面イメージ

sp1-screen.png

要求分析

要求分析とは「何を作るのか?」を明確にする工程である。

自分がこれから作ろうとしているソフトウェアがどんなものであるか、明確に定義することが目的となる。

要求分析は、以下の3つの手順からなる。

ユースケース図

このシステムで登場するユースケースは2つである。 また、登場するアクターはユーザとデータベースの2つである。

&ref(): File not found: "ud1.png" at page "会議室予約システム/スパイラル1";

ユーザは両方のユースケースに関係する。 一方、データベースは片方のユースケースだけに関係する。

ユースケース記述

指定した月の予約を閲覧する

起動する

シナリオ

指定した年月の予約を閲覧する

太郎君は2015年8月の会議室Cの予約を閲覧するため、年に2015を、月に8を、会議室名に会議室Cを入力して表示ボタンを押した。制御パネルはボタンが押されたことをシステム管理者に通知した。システム管理者は受け取った年月と会議室名をデータベース管理者に渡し、データベースから予約リストを取り出した。システム管理者は取り出された予約リストをカレンダー管理者に渡した。カレンダー管理者は渡された予約リストを基にしてカレンダーを更新した。

起動する

太郎君は会議室の予約状況を確認するために会議室予約システムのページを開いた。システムが起動し、システム管理者、データベース管理者、カレンダー管理者、制御パネルが生成された。制御パネルはデータベース管理者から会議室のリストを取り出し、自分の選択項目に全会議室と共に追加した。さらに、現在の年と月が取り出され制御パネルに設定した。制御パネルはその年と月を自身の入力欄に設定し、システム管理者に対して年月と全会議室の予定を表示するように通知した。全会議室の今月の予約状況が表示された。

システム分析

システム分析では、要求分析で明確化したシステム要求を設計につなげるための橋渡しを行う。 具体的には、

を行う。

オブジェクトの抽出

オブジェクト指向開発においては、システムに登場する「もの」がオブジェクトである。 が、どれが「もの」なのか?、を決めることはなかなか難しい。

システム中に登場する「もの」を決めるには、システム全体を見渡して完成イメージを固めつつ、これまでの経験や勘を動員して行う必要がある。 かなり経験豊富な開発者でも、最初の段階から「もの」を見分けることは難しいし、そもそも「もの」にするのかしないのか、どちらでもよい場合もあるからである。

例えば、「登録」、「編集」、「削除」、「表示」という4つのボタンを持つシステムがあったとしよう。 これら4つのボタンをそれぞれ別な「もの」として分析を進めることもできるし、4つとも同じボタンでラベルが違うだけだ、と見ることもできる。

したがって、スパイラルが進むにつれてオブジェクトが変更になることもありうる。

しかし「もの」を決める方針はある。

それは要求分析の最後に書いたシナリオである。

シナリオは、各ユースケースが実行されるときの様子を具体的に記述した文章であるから、その文章の中にシステムに登場する「もの」がかかれていることが多い。特に名詞や名詞句はその候補となる。

そこで、もう一度シナリオを名詞と名詞句に着目して見なおしてみる。

指定した年月の予約を閲覧する

太郎君2015年8月会議室C予約を閲覧するため、2015を、8を、会議室名会議室Cを入力して表示ボタンを押した。制御パネルボタンが押されたことをシステム管理者に通知した。システム管理者は受け取った年月会議室名データベース管理者に渡し、データベースから予約リストを取り出した。システム管理者は取り出された予約リストカレンダー管理者に渡した。カレンダー管理者は渡された予約リストを基にしてカレンダーを更新した。

起動する

太郎君会議室予約状況を確認するために会議室予約システムページを開いた。システムが起動し、システム管理者データベース管理者カレンダー管理者制御パネルが生成された。制御パネルデータベース管理者から会議室リストを取り出し、自分選択項目全会議室と共に追加した。さらに、現在が取り出され制御パネルに設定した。制御パネルはその自身入力欄に設定し、システム管理者に対して年月全会議室予定を表示するように通知した。全会議室今月予約状況が表示された。

この中で、今回のシステムでオブジェクトとして抽出するのは以下の5つである。

このシステムにおいて、ボタンは押されたことを通知するためだけに使用されるので、わざわざオブジェクトにしなくても良いと考えられる。 また、リストはJavaScriptでは標準でサポートされるオブジェクト(ここでいう「もの」ではない)があるので、これもわざわざオブジェクト(=もの)として抽出しなくても良いと考えられる。(C++やJavaなどの一般的な言語ならオブジェクトして抽出するかもしれない)

設計

実装

テスト


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS