はじめに
どうも、迷走星人と申します。 私は過去に社内のセミナーで発表した、成績ランク算出プログラムをテーマにプログラムの設計~試験の流れを何回かに分けて発表していこうと思います。 1回目はプログラム設計について発表していこうと思います。
要求内容
以下の要求に対応したプログラムの開発を進めていきます。
- 学力試験(100点満点)の結果ファイルを読み込み、点数を元に成績ランクを求め、同じファイルに書き込む。
- Windows10 or 11で動作、プログラムと入出力ファイルは同じフォルダ内に存在するものとする。
プログラム仕様書設計
要求内容の確認
まずはプログラムを開発する前に、要求内容の確認をしておきます。 ここで疑問に思ったことは要求者に確認を行い、自分と要求者の間で認識のずれが起きないようにします。 確認事項が複数ある時は、質問表(QAリスト)に記載し、まとめて回答してもらうようにします。 今回の場合、自分は以下の事項をQAリストに記載し、要求者から回答を頂いた、という体で話を進めていきます。
No. | 確認内容 | 回答内容 |
---|---|---|
1 | 試験成績は整数のみ、という認識で合っているか? | 小数点第1位までの単位で実数も取ることとする。 (小数点第2位で四捨五入) |
2 | 結果ファイル中の試験の成績と成績ランクの区切りは半角のカンマ「,」という認識で合っているか? | 半角カンマ「,」で区切る。 |
3 | 試験成績が0~100点の範囲外の場合はどうするか? | 成績ランク「E」と算出させる。 |
4 | 試験成績が書かれていない(空白のままの)結果ファイルを読み込んだ場合は? | ファイルに成績ランクを追記しないようにする。 |
開発するプログラムの全体イメージ
要求者と要求内容の認識合わせが出来たら設計書作成の作業に入ります。 設計書作成時、自分が開発するプログラムの全体像が分かるように図に興しておきます。 ここでの図は簡素なもので構いません。 外部の人間が見える範囲で作成していきます。 今回はPlantUMLを使い、ユースケース図で下図の様に描きました。
プログラムの全体イメージが掴めたら、今回の自分の改造前後で何が変わるかを書き出してみます。 ここでまとめた内容を確認することが後の試験工程での試験方針になります。
変更前後 | 対応前後の振る舞いの内容 |
---|---|
変更前 | 結果ファイルを読込み、点数を元に成績ランクを算出して 同じファイルに書き込まない。 |
変更後 | 結果ファイルを読込み、点数を元に成績ランクを算出して 同じファイルに書き込める。 |
開発するプログラムの運用の流れ
開発したプログラムでの運用の流れもこの段階でまとめておきます。
ユースケース図に書いた①~⑥に着目し、運用フローに興していきます。
この運用の流れは試験仕様書の設計時に参考にしていきます。
プログラムの仕様
運用の流れが見えてきたら、外から見た時のプログラムの仕様をまとめます。 ここでは「入力」、「出力」、「実装する機能」について、以下の仕様で設計していきます。
入力
- 結果ファイル名
出力
- 結果ファイル(成績ランク有)
実装する機能
ファイルの読み書き機能
- 結果ファイルに書かれた点数を読込み、試験データ配列に格納する。
- 点数及び成績ランクを格納した試験データ配列のデータを結果ファイルに書き込む。
成績ランク算出機能
- 結果ファイルから取得した点数に応じた成績ランクを振り分ける。
- 成績ランクの振り分け方は以下の通りに行う。
機能詳細
各機能の入出力、処理内容が整理できたら、より詳細な箇所を詰めていきます。
アクティビティ図を使い、各機能の内部のロジック(論理)を整理していきます。
ファイルの読み書き機能
入力
- 試験成績ファイル名
- 動作モード[読込/書込]
出力
- 試験データ配列[点数]
- 戻り値
処理フロー
成績ランク算出機能
入力
- 試験データ配列[点数]
出力
- 試験データ配列[点数,成績ランク]
- 戻り値
処理フロー
次回予告
ここまでプログラム設計について発表しました。 次回は以下のタイトルで続きを発表して行こうと思います。
- 成績ランク算出プログラムを設計・製造してみた(プログラム実装編)