tottimotottiのブログ

コンサルときどきエンジニアの銭湯巡りランナーの備忘録。

基本設計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