第12回 アプリケーション2の設計(7月1日)

今日の課題

■ pgmcat の作成状況

設計の出来具合 コーディングの出来具合
完成した人 55%(30人/81人) 完成した人 16%(13人/81人)
ほぼ完成した人 12%(10人/81人)
未完成の人 31%(25人/81人) 未完の人 32%(26人/81人)
未提出の人 32%(26人/81人)

■ 最終課題アプリケーションの要求仕様

タイトル:画像結合パッケージ imgcats(イメージキャッツ)

1. ソフトウエアの目的

ファイルリストにあげられた画像ファイルを結合して1つの画像ファイルを生成すること、また、特定条件を満たすファイルをファイルリストから選出して別のファイルリストを作ること。前者を本体プログラム imgcat と呼び、後者を支援プログラムと呼ぶ。全体を imgcats というパッケージ名とする。

2. ソフトウエアの使用条件

UNIX のコマンドライン上で使用する。

画像ファイルは、グレイスケールの pgm ファイル、または、カラーの ppm ファイルとする(いずれもピクセル値はバイナリーとする)。

本体プログラムや支援プログラムは、それぞれが独立した UNIX コマンドとして実行できるものとする。特に支援プログラムは、画像の選択条件ごとに別の名前で存在する。たとえば、ic_light_filter は、明るさを条件としてファイルリストのフィルタリングを行い、ic_name_filter は、ファイル名を条件としてフィルタリングを行う。

本体プログラムと支援プログラムは、ファイルリストを通じてか、あるいは、UNIX のコマンドライン上のパイプなどを使用して、動作する。使用例を以下に示す。

% ./imgcat < imglistfile > image_all.pgm

imglistfile は、画像ファイル名を1行ごとに記載したファイルである。imgcat は、ファイルリストの画像ファイルをすべて結合し image_all.pgm に出力する。

% cat imglistfile | ./ic_light_filter 100 | ./imgcat > image_all.ppm

ic_light_filter は、imglistfile の中から平均輝度が 100 以上の画像ファイルの名称を出力する。ここで、出力結果は、imgcat への入力となる。imgcat はファイル名リストを入力し、結合した結果を出力する。ここでは標準出力に出力しているので、image_all.ppm に保存される。

% cat imglistfile | ./ic_light_filter 100 | ./ic_name_filter pika | ./imgcat > image_all.ppm

輝度による条件の他に、ファイル名に「pika」が有るかどうかによりファイルを選択し、その結果に対して画像を結合する。

3. その他

プログラミング言語は、C言語を用いる。

■ 最終課題の要項

上述の要求使用を満たすように、最終課題プログラムのレポート、および、プログラムを作成し提出すること。

レポートの書式は以下のとおりとする。

1. 内部設計書
1.1 プログラム構造設計
  モジュールの関係図
1.2 プログラム内設計
  関数の名称、入力条件、出力条件
1.3 物理データ設計
  データ構造やファイルの構造
2. 操作説明
2.1 パッケージの機能説明
  パッケージ全体にどんな機能があるのかを紹介
2.2 操作コマンドの説明
  どんな入力をコマンドラインから入力すれば実行できるのかを説明
  動作例も付随させること。  
3. 考察
3.1 完成度の自己評価
  仕様書通りに完全に動作A,結合した画像が生成できるが、ある場合は生成できないB,結合した画像が全く生成できないC
  B,Cの場合、問題点を説明する。
3.2 〈その他、節のタイトルは自由〉 - - - 
3.3 〈その他、節のタイトルは自由〉 - - -
  プログラム上の工夫した点、自分が以前作った pgmcat より進歩した点
  などを自由にアピール。アピール内容は箇条書きし、項目数がわかるように書く。
4. 感想
  〈採点外なので、自由に書いて下さい〉
付録1
プログラム一式(Makefile、ヘッダファイル、ソースプログラム)
付録2
6月10日に提出した pgmcat のレポートをそのまま添付すること。
(提出していない人は添付しない)

プログラムの作成については、必須機能の実現とオプション機能の実現の数により評価する。また、レポートには、必須機能についての内部設計、操作説明、考察が記載されていること。もちろん、オプション機能が実現できている場合には、その機能についても記載すること。

オプション機能は、順序は問わず実現できそうなものからチャレンジして良い。また、独自の機能を追加して良い。

必須機能(25点中、10点)

オプション機能(25点中、1つ3点)

■ Important Dates

  1. 補講(7月8日(木)、9日(金)5限目):出席日数の足らない人は出席すること。内容はプログラム設計やコーディングについて自由質問を受け付けます。もちろん、出席の足りている人も最終課題について質問があれば自由に参加してください。
  2. アプリケーションの発表会(7月15日):TAが巡回して、動作を確認し、完成度を採点する。作成した機能ごとに、動作している様子が説明できること。
  3. レポート提出期限(8月6日17時):上述の要項に従った形式で書くこと。計算機Cの提出箱に入れること。

2004.6.28 by tokuhisa