View on GitHub

Today I Learned

Software Engineering Blog

3. Evolutionary Architecture: Guiding Architecture with Testability and Deployability

テスト容易性とデプロイ可能性を追求することによって、本質的な複雑さと偶発的な複雑さを分離するシステム設計ができる。

その結果アーキテクチャレベルの根本的な変更に対して柔軟に対応できる。

3.1 The Importance of Learning and Discovery

複雑なシステムは、漸進的な進歩と学習のプロセスの結果作り上げられるものである。

3.2 The Tools of Sustainable Change

持続可能で進化的なアプローチを実現するのに役立つ5つの性質:

3.3 Testability: Creating High-Quality Systems

この5つの品質に関する特性を、どのようにシステムに組み込めばいいのか。

システムが期待通りに動いているかをテストで検証する。

高凝縮で疎結合なソフトウェアはテストを容易にする。システムが常にテスト可能であることを保つ。

テストの容易性は、時間の経過とともにシステムの修正を自由にする。

3.4 Deployability: Scaling Development of Our Systems

デプロイ可能性はシステムレベルで機能する性質。

デプロイメントパイプラインがすべての評価に合格したなら、それはリリース可能、の状態にする。

リリースのためにもっと幅広くテストする必要があるのであれば、それもデプロイメントパイプラインのスコープに含める。

目指すべきところは、本番環境に導入されるコードを厳密に評価し、できる限り完璧にその挙動を確認すること。