论文部分内容阅读
软件体系结构的设计主要依赖于软件系统的功能性需求和质量需求(也称作非功能性需求),相对于满足功能性需求的体系结构设计,针对质量需求的软件体系结构设计往往是最困难的,也容易被涉众和架构师所忽视。同时,软件体系结构设计作为一种知识密集型的设计活动,质量需求在体系结构设计层的满足与实现很大程度上取决于软件架构师的个人知识和经验,而缺少系统的架构设计方法指导。在软件体系结构设计中应用软件体系结构模式是构造高质量软件体系结构设计的重要途径。而软件体系结构模式的选择与待开发软件系统的质量需求有着密切的关系,应用特定的软件体系结构模式通常可以满足部分系统质量需求,进而优化软件体系结构的设计。但是,目前大部分软件的质量需求获取是以非形式化文档的方式获取客户的需求,所获取的系统质量属性分类是无法测试和评价的;在体系结构设计中,也没有考虑系统质量需求重要性的差异,没有明确的方法来评估系统质量需求的重要性;基于质量需求选择体系结构模式时,主要依据系统架构师的个人经验,没有根据系统质量需求的重要性进行定量计算。针对上述问题,围绕“如何利用协同方式获取系统质量需求,并根据系统质量需求的重要性为系统的体系结构模式选择提供支持”这个应用科学问题,本文提出了基于协作式需求获取的体系结构模式选择方法。主要贡献体现在以下四个方面:(1)提出了一种面向体系结构模式选择的系统质量需求分类体系在分析已有质量需求分类的基础上,研究了软件体系结构设计这个特定开发阶段的质量需求,构建了面向体系结构模式选择的系统质量需求分类及度量指标体系。描述了体系结构设计中常见的21种质量需求,将其划分为7类质量属性,并给出了其子质量属性和度量指标。这种分类体系在体系结构设计阶段更容易确定系统的质量需求类型、也更容易度量和评价,为后续的协作式需求获取和表征提供了基础。(2)提出了一种基于协作式需求获取的系统质量需求表征方法基于课题组前期研究成果RGPS需求描述元模型框架和Reqwiki需求元模型,本文构造了一个基于协作式需求获取的系统质量需求表征元模型,该元模型框架以需求为中心,除了描述了需求的组成、需求的分类、关联等在协作环境下构成需求的要素外,特别描述了质量需求,以及质量需求的相应子需求。并给出了需求相关的实例、操作和关联等的多元组定义。基于协作式需求获取方法,描述了需求的各个方面,可以更全面的获取用户的需求;形式化的表征方法,也可以为后续重要性评估提供了多种需求获取模板。(3)提出了基于实例聚合的系统质量需求重要性评估方法根据系统质量需求表征元模型和需求实例的定义,给出了质量需求实例的主观重要性评估方法和客观重要性评估方法,根据主观重要性和客观重要性综合评估,得出质量需求实例的重要性;并给出了基于质量需求实例进行重要性聚合的算法,从而得到特定质量需求的重要性;给出了计算系统质量需求相对重要性的方法,以便于评估特定质量需求在系统所有质量需求中的权重。可以更清楚的判断各个质量需求在系统整体需求中的重要性,从而有针对性的进行模式选择。(4)提出了基于系统质量需求重要性的体系结构模式选择方法在现有基于质量需求的软件体系结构模式推荐方法的基础上,加入考虑系统质量需求的重要性权重问题,并通过创新点(2)和(3)中基于协作式需求获取得到的系统质量需求聚类及其相对重要性,作为软件体系结构模式推荐的部分输入,通过定量计算的方式,来推荐体系结构模式。这种模式选择方法可以避免新架构师在体系设计时的盲目,也可以实现更准确、有效的软件体系结构模式选择。最后,基于以上提出的相关需求获取、表征和体系结构模式选择方法,本文设计了一个基于协作式需求获取的云出版平台,对上述方法进行了实践应用。本文所提供的协作式需求获取方式,可以更全面的了解涉众对于质量属性的需求,在需求分析和体系结构设计之间建立了桥梁关系,可以指导系统架构师在体系结构设计时根据质量属性进行更准确的体系结构模式选择,以设计出更符合用户需求的系统。