一个公司决定用软件解决一个特定的问题的时候,公司会去收集该软件的需求清单。需求可以说是软件开发的基础,但除了需求以外,架构师有很多因素需要去考虑。
下图在第 1 章出现过:

架构师可能会参与收集需求,但架构师一个关键的职责是要发现、定义其它和具体需求没有直接关系的东西,这些东西称之为架构特性(architectural characteristics)。
一个架构特性满足三个标准:
-
指定了一个非领域(业务)设计的考虑因素:例如,一 个重要的架构特性是应用程序的性能水平,而这一点往往不会出现在需求文档中 ;
-
影响结构上的设计:这个架构特性是否需要特殊的结构才能成功?例如,考虑要支持支付功能的系统,可以选择第三方支付(只需要符合安全即可嵌入),还是应用自己处理支付(这需要设计特定的支付模块),这将导致不同的架构设计;
-
对应用的成功至关重要:应用程序可以支持大量的架构特性,但每个架构特性的支持都会增加设计的复杂性,因此,架构师的一项工作是 选择最少的架构特性 ;