非功能需求是从整个系统的角度提出的对产品的质量要求(dfx),跟我们通常说的需要靠流程靠每个人来保证的一个好的交付质量可以说是两个概念。
第一,既然是需求,就涉及到需求排序与取舍。一个产品不可能满足所有的质量需求,要根据产品的目标用户,实际应用场景等来取舍。例如我们的eg,像可靠性可能大家觉得没那么重要,考虑的比较少。而像用户体验大家都比较重视,因为有些互联网产品的性质。 另外有的质量需求相互之间本身就会有矛盾,在某些条件下不可能同时满足。比较典型的例子就是分布式系统中的cap理论,即一致性、可用性、网络分区容忍性这三个要求最多只能同时满足两个。
第二,质量需求落地需要进行设计。针对质量属性的设计,可能会对系统架构,数据模型提出要求。如果是对一个已有系统提出了新的质量要求,可能会需要改变当前的架构。 所以决定产品架构的不止有功能,还有非功能要求,而且有的非功能要求对架构的影响往往比较大。