架构重要需求
架构重要需求(Architecturally significant requirements)是对软件架构有重大影响的需求[1]。需求可能是软件需求,也可能是硬件需求。
和非功能需求和品质属性的关系
[编辑]人们大约在2016年才认知到“架构重要需求”概念的重要性。在探讨架构时,常会提到非功能需求或是品质属性[2],不过近期的实证研究发现,对于软件系统来说,不是每一个非功能需求都会影响其软件架构,而且,相反的,有些功能性的软件需求也会影响架构[1][3]。此研究建议,在讨论软件架构时,除了识别需求是功能需求还是非功能需求之外,也要识别哪些需求是架构重要需求[3]。
特征
[编辑]架构重要需求可以由以下几个层面来挑选[1]。
叙述式特征
[编辑]架构重要需求多半不容易定义,也不容易表达清楚,一般会用含糊的方式描述,一开始很容易被省略,常会藏在其他的需求中,而且是主观、易变、和情境有关的。其他的需求也常常会有这些叙述式特征,不过因为架构重要需求的重要性,让这些更加特殊且具挑战性。
指标
[编辑]若有一个需求的影响广泛、会影响权衡取舍、有严格限制(有限制,无法妥协)、需要打破假设、或是很难达成,很有可能就是架构重要需求。
文献中有提到以下架构重要需求的指标:
- 需求伴随着高商业价值,或是高技术风险。
- 此需求受到特定利害关系人的关注。
- 此需求是头一次实施,目前使用的架构中的组件都没有负责此一需求。
- 此需求的服务品质(QoS)或服务级别协议(SLA)特性和此架构可以满足的特质都不同。
- 在之前专案中,曾有类似内容的需求出现预算趣超支或是客户不满意的情形。
OpenUP[4]和Peter Eeles[5]都讨论过其他判断架构重要需求的准则。在2020年软件架构欧洲研讨会中也讨谕过一些:商业价值或风险、利害关系人的关注、品质水准、外部相依关系、交叉领域、第一次实施、其他专案的问题来源等"Architectural Significance Test". [2023-01-09]. (原始内容存档于2023-03-19).。
推论
[编辑]若需求标示了软件系统的品质属性:说明甚核心特性、为系统加限制条件、定义系统运作的环境,此需求有可能就是架构重要需求。
提取
[编辑]就像所有的非功能需求以及品质属性一样[6],架构重要需求也需要符合SMART原则。品质属性场景(Quality attribute scenarios)[2] 是一种达到SMART原则中S(特定)和M(可衡量)的方式。软件工程学院则建议使用Quality Attribute Workshops[7]。也曾有人建议要维持架构分析以及设计的轻量化,易于修改,特定应用分类以及技术领域的品质属性树(quality attribute trees)可以支持这种作法[8]。
很重要的向其他人说明所提取的架构重要需求及其他架构产出物,利用对目标受众(尤甚是商业利害关系人)容易理解的表达方式及语言来说明[9]。
影响
[编辑]在软件设计中会考虑架构重要需求,而且会影响架构决策,也可以用来证明架构决策的合理性。若没有满足架构重要需求,可能会累积技术债务。例如,没有符合安全或是法规的需求,会让系统以及流程保证稽核变的复杂,也会增加稽核时发现漏失的可能性[10]。有些文献有提到如何处理系统品质属性(以及架构重要需求)[11][12]。
参考资料
[编辑]- ^ 1.0 1.1 1.2 Chen, Lianping; Ali Babar, Muhammad; Nuseibeh, Bashar. Characterizing Architecturally Significant Requirements. IEEE Software. 2013, 30 (2): 38–45. S2CID 17399565. doi:10.1109/MS.2012.174. hdl:10344/3061 .
- ^ 2.0 2.1 Bass, Len; Clements, Paul. Software Architecture in Practice. Addison Wesley. 2003. ISBN 978-0321154958.
- ^ 3.0 3.1 Eckhardt, Jonas; Vogelsang, Andreas; Fernández, Daniel. Are "Non-functional" Requirements really Non-functional? - An Investigation of Non-functional Requirements in Practice (PDF). The 38th International Conference on Software Engineering. Association for Computing Machinery. 2016 [2023-01-07]. (原始内容存档 (PDF)于2017-08-29).
- ^ Concept: Architecturally Significant Requirements. [2016-08-19]. (原始内容存档于2016-10-17).
- ^ Peter Eeles on ResearchGate. [2023-01-09]. (原始内容存档于2022-09-24).
- ^ Quality Attributes (PDF). [2023-01-09]. (原始内容存档 (PDF)于2017-08-29).
- ^ The SEI Quality Attribute Workshop. [2023-01-09]. (原始内容存档于2017-10-04).
- ^ Keeling, Michael. Lightweight and Flexible: Emerging Trends in Software Architecture from the SATURN Conferences. IEEE Software. 2015, 32 (3): 7–11. doi:10.1109/MS.2015.65.
- ^ Schulenklopper, Jochem. Why They Just Don't Get It: Communicating about Architecture with Business Stakeholders. IEEE Software. 2016, 33 (3): 13–19. S2CID 1309474. doi:10.1109/MS.2016.67.
- ^ K. Julisch et al., Compliance by design - Bridging the chasm between auditors and IT architects 互联网档案馆的存档,存档日期2017-09-21. Computers & Security 30(6-7): 410-426 (2011)
- ^ Implementing System-Quality Attributes. [2023-01-07]. (原始内容存档于2018-10-30).
- ^ A. Rotem-Gal-Oz, SOA Patterns, Manning, 2012.