ソフトウェアアーキテクチャ
ソフトウェアアーキテクチャは、分野としては円熟してきていながらも、明確な規則がない。そして、技術者はそのような環境の中でシステムを設計しなければならないため、その作業は未だに科学と技能の混合となっている。ソフトウェアアーキテクチャの「技能」的側面は、商用ソフトウェアシステムがビジネスに使用されているという点によるところが大きい。また、システムがビジネスの重要な一部を担っているため、システムの要求仕様は機能仕様ではなく、品質レベルなどで記述されることが多い。システムは、ビジネスの性質に依存するため千差万別であり、品質特性のレベルもシステムによってさまざまである。例えば、フォールトトレラント性が求められたり、互換性が重視されたり、拡張性、信頼性、保守性、可用性、情報セキュリティ、ユーザービリティなどといった面が重視されたりする。
ソフトウェアアーキテクチャは、システムが備えるべき複数の洞察の混合物である。そのようないくつかの観点がソフトウェアアーキテクチャに組み込まれるということは、ソフトウェア開発が具体化する前に、ソフトウェアアーキテクチャを作成することの正当性を示している。