ソフウェアの腐敗

ソフトウェア開発において、もっとも不確定な要素は仕様である。
最初の設計時点では想定していなかった仕様変更により、設計はじわじわと劣化していく。
なんとか変更に対応したとしても、初期に設計思想に違反している為、こうした変更が積み重なってくると設計が腐敗し始める。
しかし、仕様変更は当たり前のように存在するものであり、そういった変更に耐えられるように設計する方法を見つけ、プロジェクトへ導入する必要がある。

じゃぁ、どうすれば・・・

アジャイルでは、そもそも歳月とともに劣化するような初期の設計に時間をかけるようなことはしない。
設計に時間をかける代わりに、システム設計を可能な限りクリーンかつシンプルに保つようにする。
具体的には、ユニットテストや受け入れテストを頻繁に行ない、リファクタリングにより変更しやすいようなソースコードを維持する。
このように柔軟なソースコードを維持しながら、継続的に設計を改善する。

結局のところアジャイルな設計とは?

ソフトウェアの構造や可読性を向上させる為、原則、パターン、プラックティスを継続的に適用する行為である。

で、プラックティスについては、プロジェクトによっては適用が難しかったりするけど、原則、パターンは適用できそう。
特に原則は今まで勉強したことないし、興味あり!