ソフトウェアアーキテクチャ
Grady Booch 氏は "アーキテクチャは重要な決定を表し、その重要性は変更のコストによって決まる。" と言った。 事前の設計プロセスでは、したがって、たとえばデータベースの各カラムの文字列長などについての理解よりもソフトウェアシステムの全体像に影響を与える重要な決定についての理解を深めるべきだ。
これを行う際に失敗すると、混沌、たとえば貧弱な構成、理解しづらく内部的に一貫性の無いコードベース(よくある "大きな泥だんご" )、メンテナンスが困難でパフォーマンスやスケーラビリティ、セキュリティなどのについて重要な品質上の要件が満たせない可能性のある機能群、につながる。
3. ソフトウェアアーキテクチャの役割はコーディング、コーチング、そしてコラボレーションである
4. UMLを用いる必要はない
5. 良いソフトウェアアーキテクチャはアジリティを可能にする 良いアーキテクチャの核となる特徴は、適切な分解戦略に基づいて凝集度が高められているか
これは今日の世界では、既存のモノリシックなコードベースがめちゃくちゃであるということに単純に反発したいがために、マイクロサービスのアーキテクチャスタイルを採用しているチームによくあてはまる。笑い話だが、こうしたチームにはその後 "分散された大きな泥だんご" を作ってしまう。そしてソフトウェア設計と分解のプロセスこそが重要であり、モノリシックかマイクロサービスアーキテクチャかは関係無いということに気づくのである。アジリティと良い設計はただでは手に入らない。自覚的な努力と、トレードオフの考慮が必要である。