论文部分内容阅读
大型软件系统一般具有较长的生命周期,因此其体系结构设计在开发过程中尤其重要。软件体系结构知识(如决策知识)已成为软件体系结构描述的核心。软件体系结构知识包含许多错综复杂的概念元素,而在软件开发实践中,相关的体系结构知识通常未被记录或者以非结构化(如文本)的形式存在。软件体系结构知识的缺失会对体系结构设计的理解带来困难,导致体系结构设计难以维护和演化。因此,论文拟解决的核心问题是:如何有效地在软件开发过程中对重要的体系结构知识进行抽取、分析以及如何在架构过程中应用软件体系结构知识。虽然现有工作已经对体系结构知识进行了大量的研究,但仍然存在以下亟待解决的问题:(1)软件体系结构知识抽取方式的研究尚不系统。体系结构知识存在来源分散和抽象程度高等特点,基于软件制品抽取体系结构知识的方式主要可分为两种:人工抽取以及自动化抽取。然而,当前可用的自动化体系结构知识抽取方法尚不明确,抽取出的体系结构知识用于支持哪些架构活动也缺乏系统研究。(2)体系结构知识可横跨软件开发的整个生命周期,体系结构模式知识作为重要的设计决策之一,影响软件开发过程中的其他决策;例如,质量属性知识、项目风险相关知识、软件维护及重构知识等。因此,需要进一步明确在实践中被广泛讨论的体系结构知识元素、类型及其关联关系(如体系结构模式如何影响质量属性)。(3)体系结构策略知识作为一类底层的体系结构设计决策,与体系结构模式知识相互补充,可用来满足软件系统特定的质量属性。然而,实践中软件体系结构策略与质量属性之间的设计关联还需要进一步探索。针对以上的三个问题,论文从开发人员的角度出发,提出了抽取软件体系结构知识的半自动化方法,并用于架构活动,创新性研究成果如下:(1)针对软件体系结构知识来源分散和抽象程度高等特点,论文提出了文本分析技术用于抽取软件体系结构知识的目的、相关制品以及效益和成本的分类框架。论文首先系统分析了软件体系结构文本知识的抽取方式,设计并执行了软件体系结构文本知识(半)自动化抽取的系统文献映射研究,关键结果如下:在实践中,七大类文本分析技术可用于软件体系结构知识的抽取,所抽取的体系结构知识可支持多种架构活动,如:体系结构设计的理解;四大类软件开发文本类制品可用于抽取相关的软件体系结构知识,从软件文本类制品中抽取、分析相关的体系结构知识有助于建立开发过程中知识的追溯性链接;软件体系结构知识的(半)自动化抽取能带来五大类相关收益,同时导致三大类成本,而明确相关收益与成本,有助于开发人员更好地在实践中应用体系结构知识的(半)自动化抽取方法。(2)针对体系结构模式知识在实践中应用不明确的问题,论文提出了软件体系结构知识的概念模型和知识实体的分类框架。论文通过量化经验型研究方法,基于开发者专业问答网站中的问答内容,以抽取软件体系结构模式知识为切入点,深入分析了软件体系结构模式与质量属性之间的设计关系,结果发现软件设计上下文对软件体系结构模式的应用具有显著影响。另外,论文采用经验软件工程中的案例研究方法,选取开源软件中开发者交流渠道(即邮件列表)作为数据源抽取、分析和归类体系结构知识。关键结果如下:形成了开发者交流的软件体系结构知识的定性和定量分析结果,并从开发人员角度分析了体系结构知识在实践中的应用;抽取了与体系结构知识相关的术语以构建体系结构知识的置信集,为下一步体系结构知识的(半)自动化抽取奠定了基础。(3)针对软件体系结构策略与质量属性间设计关系不明确的问题,论文提出了一种基于字典学习的半自动化软件体系结构知识抽取方法。论文以软件体系结构策略知识作为研究对象,基于上一创新点中得到的软件体系结构知识置信集建立了领域字典,并采用(半)自动化方法从开发者专业问答网站中抽取体系结构策略知识,关键结果如下:论文提出的方法可在特定的体系结构知识领域,高效地抽取出体系结构策略相关的知识;采用量化和定性的分析方法确定了软件体系结构策略与质量属性之间的设计关系,并将抽取出的设计关系与当前文献中记录的设计关系进行了对比,结果发现,超过20%的设计关系并未在当前文献中系统地讨论。论文提出的方法得到的软件体系结构策略与质量属性之间的设计关系,有助于帮助实践者在架构活动中做出适当决策。