第7回 総合的な課題(5月30日)
■ 総合的な課題
基本計画
2007年F1グランプリに関する情報が一目で分かるようなプレゼンテーションツールが欲しい。F1の情報は、Yahoo サイトから得られるので、それを簡単に加工した上で、このツールを使うことにしたい。
ツールを使用する人は、Linux のコンソール上の操作に慣れていることとする。ツールは Linux のコンソール上で操作することとする。
作成スケジュールは以下のとおりとする。
- 5/30:設計書の作成(要求仕様書の作成)
- 6/07:設計書の作成(外部仕様書と内部仕様書の作成)(*)
- 6/15:コーディング1(Yahoo サイト情報のとりこみ)
- 6/22:コーディング2(選手名と画像ファイルの処理)(*)
- 6/29:コーディング3(集合型画像ファイルの生成)
- 7/06、13:コーディング4、5(オリジナル機能の作成)
- 7/20:アプリケーションの発表会(納品日)
- 7/27:レポート作成
- 8/8:レポート提出日(**)
必須問題
ユーザは手作業で、Yahoo サイトのドライバーズポイントの表をコピー&ペーストすることで、テキストファイルとしてF1の情報を格納することにする。この情報に、何らかの別の情報を組み合わせて、総合得点の高い者から順に顔写真を列挙して1枚の画像ファイルとして出力するためのプログラムを作成せよ。
自由問題
その他の機能を2つ追加せよ。
解答の要領
- プログラムの設計書(要求仕様書、外部仕様書、内部仕様書)を提出すること
- ソースプログラム一式(ヘッダファイル、Makefileを含む)を提出すること
- 操作説明書(コンパイル方法、操作方法、実行例と解説)を提出すること
- (設計書、ソースプログラム一式、操作説明書をまとめて最終課題レポートとする)
- 期日に関して:
- 6/15までに、外務仕様書と内部仕様書の初版が完成していること。
- 6/29までに、選手名と画像ファイルの対応関係が処理できること。
- 7/20の発表会の日に、動作が説明できること。
- 8/8 までに、最終課題レポートを提出すること。
■ ウォーターフォールモデル
ウォーターフォールモデルは,ソフトウエア開発の工程のモデルの一種である.このモデルによると,ソフトウエアの開発は,次に示す工程を上から下へ順に進める.
- 基本計画:ソフトウエアの目的と開発スケジュールを決める.
- 要求分析:どのようなソフトウエアが必要なのかを調べる.
- 外部設計:ソフトウエアの振舞い(機能)を決める.
- 内部設計:プログラムをどのように作るかを決める.
- 製造:プログラムを作る.
- テスト:ソフトウエアの動作を確認する.
- 運用・保守:機能の追加やバグの修正を行う.
■ 基本計画
ソフトウエアの目的を明確にして,使用する人,使用する期間,開発に携わる人,作業の分担,を行なう.
これらの事柄を,文書としてまとめる.企画書・計画書という.
■ 要求分析
ソフトウエアで,どんな仕事・遊びをしたいのかを明確にする.
- 例えば,まず,「家計簿の計算をする」という抽象的な目的をたて,次に,「1ヶ月の食費の合計を出す」,「エンゲル係数を求める」,「最も食費の多かった日を出力する」などの具体的な目的をたてる.
- 「1秒以内に計算が終了すること」というような処理時間への要求,「使用するメモリは,10kbytes以内であること」というような動作環境の条件なども,明確にする.
これらの事柄を,文書としてまとめる.要求仕様書という.
⇒ 要求仕様書サンプル
■ 外部設計
要求に応えるために,ソフトウエアがどのように動作するのかを明確にする.
- ユーザの立場から,考えられる機能の単位を明確にする.例えば,使用品目名と単価の入力の機能,合計値を計算する機能,プリントアウトする機能,棒グラフにまとめて表示する機能など.
- ユーザがソフトウエアを使うためのインタフェースを明確にする.例えば,コマンドラインから使うのか,ウインドウとマウスを使うのか,など.
- ソフトウエアが取り扱うデータを明確にする.例えば,商品名の文字列長はどのくらいか,単価を管理するか,小数点第何位までを計算するか,商品名とコードを対応付けるか,など.
⇒ 外部仕様書サンプル
これらの事柄を,機能仕様書,インタフェース設計書,論理データ設計書などという.
■ 内部設計
外部設計の結果を元に,どのようなプログラムを作るのか,具体的に設計する.
- 外部設計でたてた機能を,モジュールに分割する.C言語の関数に対応するレベルまで分割する.
- モジュールがどのような入力に対してどのような出力をするのかというインタフェースを設計する.
- 他のモジュールとどのように関わるかというプログラムフローやデータフローを設計する.
- メモリやディスクなどの計算機資源を使うことができるかどうか,データ構造(structure)や変数の型などのデータを設計する.
⇒ 内部仕様書サンプル
(c) Masato TOKUHISA (2007, May 28.)