ソフトウェア工学とは何か
潜在意識レベルではわかっていたことに気付かされる文章。
次のように考えるべきかな。適度にコーディングするのがポイント。
自分流に置き換えるとこんな感じかな。
基本設計フェーズ
- 実現する機能をまとめた「管理文書」作成。
- モジュール分割方針と全体シーケンス作成(外部サブシステムとの意識合わせ用)。
- 外部サブシステム用のインタフェース仕様書を作成する。実際に空実装でコーディングして、呼び出し側も作ってみてビルドし、イメージを膨らませる。
詳細設計フェーズ
- 補助ドキュメントとして「実装方針」を文書化する。
- 内部のモジュール分割と処理シーケンスを図示する。詳細に書くと「真の設計であるコード」と乖離するので「適度に省略するのが重要」。
- 内部処理なしの関数コールだけのコーディングを進める。データのインプット(引数やメンバ変数)とアウトプット(戻り値やメンバ変数)を意識しておく。
- 外部からのイベントによって状態が変化して、その後のイベントによる振る舞いが異なる場合は、状態遷移表でパターンを網羅しておく(表にするのがポイント)。
実装フェーズ
- 関数の内部実装を完成させる。
- 異常系以外の正常動作レベルを確認する。
単体テストフェーズ
- 外部インタフェースの引数/戻り値を網羅してテストパターン作成。
- 内部処理で気になる部分はそこだけ取り出してでもテストする。
- 基本的に全パスを通す。
結合/システムテストフェーズ
- いろんなことをしてみる。