ソフトウェア開発の複雑性
ソフトウェア開発は以下の4つの要因から非常に困難なものとなる。
複雑性
大きくて複雑。
数千万行のコードからなるシステムも珍しくはない。
同調性
ソフトウェアは現実世界に同調していないといけない。
現実世界のプロセスを代替するものであるため。
現実世界は複雑であり、流動的。
それ故にソフトウェアも複雑で流動的なものとなる。
可変性
ソフトウェアは変化し続ける。
それを使ったユーザーが新たな欲求を思いつくため。
不可視性
ソフトウェアは概念の集積であり、目に見えない。
全ての機能、製造のプロセス、意思決定などをすべて見ることができない。
画一的な解決策はない
ソフトウェアは上記の要因から複雑である。
そのためにソフトウェア開発の中で発生する問題も複雑となる。
なぜなら、その要因が複数の問題から発生しているため。
そのため、そういった問題を解決するための画一的な手段は存在しない。
何を優先し、何を諦めるかを決めていかないといけない。