設計とアーキテクチャ

目的は?

ソフトウェアアーキテクチャの目的は以下であると説明。

  • ソフトウェアアーキテクチャの目的は、求められるシステムを構築・保守する人材を最小限に抑えること

システムは拡張・変更のコストを抑える重要な鍵はアーキテクチャにある。
保守・運用コストがかかりすぎてしまう原因は、汚いコードにあり、そうなってしまうのはアーキテクチャが良くないからだ。

本書は柔軟なソフトウェアを作るためのアーキテクチャを設計するための原則を紹介する。

アーキテクチャとは?設計とは?

アーキテクチャとは、大枠から細部に至るまでの構造で、大枠と詳細との厳密な境界の明確な基準はない。
設計とは、大枠から細部に至るまでの決定の連続のことで、こちらも大枠と詳細の境界の明確な基準はない。

一般的には、アーキテクチャとは上位レベルの構造を指し、下位レベルの詳細と切り離して捉えられていたり、設計は細部の決定をすることと捉えられていることがあるが、それは開発手法やフェーズを踏まえた場合に発生している考え方であって、実際はそれが一般的な基準となる考え方になるわけではない。

ケーススタディ

  1. 人材をリリースごとに増やす。図1-1
  2. 人が増えているにも関わらず、リリースが進むごとに生産性が下がっていく。図1-2。図1-4。
  3. しかし、人は増えているからリリースが進むごとにコード行あたりのコストも爆増し、開発者に払う給料も爆増。図1-3、図1-5

何が間違ったのか?

開発者は、後でクリーンにできると自信過剰になり、市場に出すことを急いだ。
しかし、実際には後でクリーンにすることはない。
市場、競合他社のプレッシャーがあるから。
そしてコードはどんどん汚くなり、生産性は落ちていく。

あとでクリーンにできるから先に出すという考え方は、汚いコードは長期的には生産性が下がるが、短期的には上がるという考え方が起因している。
しかし、この考え方は間違っていて、実際には短期的にも長期的にも遅いのが正しい。(TDDで進めたプロダクトとそうでないプロダクトで検証。)
だから、あとでクリーンできるという考え方は根本から変えないといけない。

うさぎとかめは良い教訓を教えてくれる。

  • 遅くとも着実なものが競争に勝つ
  • 競争は短期的ではない。強いものが勝つわけでもない。
  • 急げば急ぐほど遅くなる

学びを活かすアイディア・行動

  • 今の所特になし

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です