
上QQ阅读APP看书,第一时间看更新
2.3.3 关注非功能方面的能力
对软件系统在非功能方面的能力加以关注,是软件架构的一项关键职责。我们通常都说:如果在进行系统架构工作时没有对非功能型需求(nonfunctional requirement,NFR)给予足够重视,那么系统通常就会出现故障或发生崩溃,事实也确实如此。
在系统的非功能型需求中,可扩充性(extensibility)、可伸缩性(scalability)、可维护性,以及性能和安全程度,是其中比较重要的几个需求。NFR的特殊之处在于,它们本身虽然未必是组件实体,但是却需要架构中能够有一个或多个功能组件对其进行特别的关照。就这一点来说,架构中的非功能型需求,可以对这种功能组件的属性施加影响,并促使我们去增强其属性。考虑这样一个用例:系统需要把响应时间控制在1秒以内。系统架构师决定把C1、C2和C3这三个组件结合起来,以实现该用例。在这种情况下,组件的特性所具备的本质特点及复杂程度,就规定了每个组件必须要在多长时间内完成其职责,例如C1可能必须在300毫秒内完成,C2可能必须在500毫秒内完成,C3可能必须在200毫秒内完成。由此或许可以发现一些线索,使我们能够看出为了展现、支持或遵照某些特性,还需要给ABB添加哪些属性。
要想做出设计精良、考虑周到的架构,就应该对系统中那些非功能型需求给予适当的关注。在软件开发的生命期中,这些需求应该放在架构定义阶段来考虑,而不能等架构确定好之后再去考虑。
从技术角度来看,如果我们在进行系统架构时,能够适当地关注并考虑非功能方面的需求,那么系统的故障风险就会大幅度降低。