第6回 アプリケーションの仕様作成(5月26日)
今日の課題
■ ウォーターフォールモデル
ウォーターフォールモデルは,ソフトウエア開発の工程のモデルの一種である.このモデルによると,ソフトウエアの開発は,次に示す工程を上から下へ順に進める.
- 基本計画:ソフトウエアの目的と開発スケジュールを決める.
- 要求分析:どのようなソフトウエアが必要なのかを調べる.
- 外部設計:ソフトウエアの振舞い(機能)を決める.
- 内部設計:プログラムをどのように作るかを決める.
- 製造:プログラムを作る.
- テスト:ソフトウエアの動作を確認する.
- 運用・保守:機能の追加やバグの修正を行う.
■ 基本計画
ソフトウエアの目的を明確にして,使用する人,使用する期間,開発に携わる人,作業の分担,を行なう.
これらの事柄を,文書としてまとめる.企画書・計画書という.
■ 要求分析
ソフトウエアで,どんな仕事・遊びをしたいのかを明確にする.
- 例えば,まず,「家計簿の計算をする」という抽象的な目的をたて,次に,「1ヶ月の食費の合計を出す」,「エンゲル係数を求める」,「最も食費の多かった日を出力する」などの具体的な目的をたてる.
- 「1秒以内に計算が終了すること」というような処理時間への要求,「使用するメモリは,10kbytes以内であること」というような動作環境の条件なども,明確にする.
これらの事柄を,文書としてまとめる.要求仕様書という.
■ 外部設計
要求に応えるために,ソフトウエアがどのように動作するのかを明確にする.
- ユーザの立場から,考えられる機能の単位を明確にする.例えば,使用品目名と単価の入力の機能,合計値を計算する機能,プリントアウトする機能,棒グラフにまとめて表示する機能など.
- ユーザがソフトウエアを使うためのインタフェースを明確にする.例えば,コマンドラインから使うのか,ウインドウとマウスを使うのか,など.
- ソフトウエアが取り扱うデータを明確にする.例えば,商品名の文字列長はどのくらいか,単価を管理するか,小数点第何位までを計算するか,商品名とコードを対応付けるか,など.
これらの事柄を,機能仕様書,インタフェース設計書,論理データ設計書などという.
■ 内部設計
外部設計の結果を元に,どのようなプログラムを作るのか,具体的に設計する.
- 外部設計でたてた機能を,モジュールに分割する.C言語の関数に対応するレベルまで分割する.
- モジュールがどのような入力に対してどのような出力をするのかというインタフェースを設計する.
- 他のモジュールとどのように関わるかというプログラムフローやデータフローを設計する.
- メモリやディスクなどの計算機資源を使うことができるかどうか,データ構造(structure)や変数の型などのデータを設計する.
■ 製造
プログラムソースを作成する.
モジュールを「ハリボテ」で作成することがある.たとえば,モジュールの内部ではきちんと計算せず,特定の入力とそれに対応する出力だけを返すことのできるモジュールを作る.複数のモジュールで構成するプログラムを作るとき,デバッグに有効である.
モジュールを部分的に動作させてデバッグをする.このとき,入力条件の境界値を与えたり,内部の分岐条件に対応する値を与えたりする.
□ 課題
以下の内容のソフトウエアを作りたい.要求分析,および,外部設計をせよ.
- ソフトウエアの名称
- pgmcat
- ソフトウエアの目的
- お気に入りの画像をまとめることを目的とする.具体的には,あるディレクトリ内に沢山の pgm の画像ファイルがあるとする.そのうち,ある指定する条件を満たすものを,縦方向,あるいは,横方向に,順に並べて結合させ,1枚の画像ファイルに編集する.
- ソフトウエアの使用者
- UNIXのコマンドラインが操作できるユーザを対象とする.
- ソフトウエアの開発期間
- H16年,6月8日までに設計を終了し,6月9日に製造を開始して,6月16日にはそのソフトウエアを納品する.
- ソフトウエアの開発人員
- 1人で作成する.
サンプルを示す. ⇒ pgmcatプログラム設計書
サンプルの設計書どおりにプログラムを完成させるのは,大変かもしれません.自分が作成できる程度を考えて,「自分の言葉で 」で書き起こすようにしてください.来週(6月2日)までに,要求分析および外部設計を済ませておくこと.
2004.5.24 by tokuhisa