基本設計Tips
一言でいえば、詳細設計に落とし込めるだけの粒度で書く。
例えば、下記に記載の、シェルの新規開発の場合だと、
http://blog.hatena.ne.jp/tottimototti/tottimototti.hatenablog.com/edit?entry=26006613468788093
機能としては、ログをローテーションする、というものだが、設計書に、ローテーションする、と書かれても、So what?ってなる。ローテーションするとは、どういう事なのか、噛み砕いて説明する必要がある。一言、ローテートする、と書かれても、具体的にどうやってローテートするのかを考えられていないことを自白しているようなものだ。
記述を基本設計らしくブレイクダウンするためには、幾つかの問いに答えていく必要がある。
・ログとは何か?
→夜間バッチで吐き出されるログファイルを指している。今回の案件で言うと、どのログファイルが対象か、は特定されているので、その特定のログファイルに限定して処理を行う必要がある。
⇒ローテートをどうやって実現するか、の前に、対象のログファイルを特定する必要がある。
⇒(How?)iniファイルに定義する。
⇒ファイルを読み込む処理を記述。
エラーの場合も記述。
・ローテートとは何をするのか?
→過去5日分のログを保持し、それ以前のログについては削除をする。
⇒過去5日分、はどうやって判断する?
⇒ファイルの更新日時かファイル名(※)から判断することができる。今回は、後者でいく。また、この機能は夜間ジョブとして追加するが、同ジョブが同日に複数実行された場合は、同日で複数ログが吐かれることになるが、その場合は、5日分、にカウントされない。同日日付で複数のログファイルが生成されることになる。
※ファイル名について
今回の対象ログには、2種類あって、①XXXX.log とログ名に更新日時が記載されないログ。今回の要件として、ファイル名に更新日時をつけてほしい、とのこと(_yyyymmddHHMMSS)。②XXXX_yyyymmddHHMMSS.logと既にログ名に更新日時が記載されているログの2種類ある。
これくらいの粒度で、何をやるか、を書き出さないと、詳細設計に落とせないし、結合テストも出来ない。
○参考
https://pm-rasinban.com/bd-write