一种软件架构可持续演进原则达成性度量方法与流程

文档序号:15384721发布日期:2018-09-08 00:25阅读:272来源:国知局
本发明涉及一种软件架构可持续演进原则达成性度量方法,属于软件架构度量和评估
技术领域

背景技术
:软件演进(softwareevolution)是指在软件系统的生命周期内软件维护的行为和过程。软件发生演进的最终目的是保持软件的使用价值。随着信息技术的高速发展,软件规模不断扩大、复杂度不断提高,软件演进过程具有更强的变化性。软件架构是控制软件复杂性、提高软件系统质量、支持软件开发和复用的重要手段之一,是目前软件工程的一个重要的研究领域。在实际应用中,演进发生在软件的各个方面,而架构的演进则是其中较为抽象且关键的演进活动之一。软件架构持续演进原则达成性度量是针对架构演进过程的评估和预测,是软件可演进性度量的一个重要应用。架构可持续演进一方面是架构师在设计架构时需要关注的主要目标之一,另一方面也是评价架构好坏的一个主要依据。本发明提出的软件架构可持续演进原则达成性度量方法,是对软件架构演进效果的度量,这部分研究在业界鲜有成果。当前研究的不足主要体现在以下两个方面:1.目前关于架构原则的研究主要体现在架构设计原则方面,包括基本原则和关键原则等,其中基本原则包括商业原则、数据原则、应用程序原则及技术原则等,关键原则包括单一职责原则、最少知识原则、关注分离点等,这些原则都是针对架构设计阶段提出的指导架构设计的原则,与架构演进过程并无太大的关系,对架构演进过程部分的研究还有较大的空白;2.目前关于架构演进方面的度量,主要是对某一版本的软件架构提取信息并度量,缺乏对软件架构在演进过程中达成演进原则情况的评估。技术实现要素:本发明的目的是提供一种软件架构可持续演进原则达成性度量方法,该方法通过提取架构基本信息和源代码基本信息,将可持续演进原则划分为主体维持原则、平滑演进原则、模块独立演进原则、组件规模最小化原则、外部接口稳定性原则和复杂性可控原则等6个子原则,建立持续演进原则达成性度量模型,对软件架构的演进过程是否达成了持续演进原则进行度量,用于评估软件架构的演进效果。为了实现上述目的,本发明的技术方案如下,本发明提出的软件架构可持续演进原则达成性度量方法,主要通过对源代码和软件架构进行分析,提取源代码和架构图中的基本信息,分别设计度量公式对6个可持续演进子原则进行计算,并通过层次分析法赋予各个子原则不同的权重计算软件架构的可持续演进原则。一种软件架构可持续演进原则达成性度量方法,具体步骤如下:步骤1:选取度量版本及其演进的起始版本,演进起始版本经过一个演进过程,演进为度量版本,即度量版本是演进版本的演进结果。对这两个软件架构版本的源代码进行分析,提取源代码基本信息,软件源代码部分的信息提取方法主要是通过将源代码转化为抽象语法树(abstractsyntaxtree,ast)来完成。业界有很多非常成熟的源代码解析编译工具,如jdt(eclipsejavadevelopmenttools)等,通过编译工具将源程序转化为抽象语法树,通过访问抽象语法树上的节点提取软件度量信息。提取的软件源代码信息主要包括项目规模、圈复杂度、外部接口数量等;步骤2:分别对这两个软件版本的软件架构进行分析,软件架构部分的信息提取主要来源于组件依赖图,组件依赖图主要包括组件元素、连接件元素以及架构的约束条件等,说明了一组组件的组织和相互依赖关系。提取的组件图信息主要包括组件图中组件的个数及出入度等,并结合源代码基本信息,计算架构基本信息;步骤3:利用步骤1和步骤2中获取到的源代码基本信息和架构基本信息,计算可持续演进子原则度量数据:(1)主体维持原则:主体维持原则表示的含义为架构主体在软件演进过程中需保持稳定,从而保障软件系统主体行为稳定。该原则的达成性用组件及其之间依赖关系的变化情况来衡量,当变化越少时,软件系统主体行为越稳定。主体维持原则的计算公式为:其中,nchange表示从演进起始版本到度量版本的演进过程中组件图中增加、删除或修改的节点数和边数,nunchange表示未变化的节点数和边数。(2)平滑演进原则:平滑演进原则表示的含义为软件架构的演化过程应平稳、稳定,避免出现剧烈的架构演进,以保持系统的相对稳定。在软件系统的生命周期里,软件演化的变化波动趋于平缓,不产生大幅度的软件结构变化,避免由于爆发式演进造成潜在威胁。在系统发展的过程中,应简单、快速、弹性的满足用户需求并过渡到新的系统,用户只需很小的代价就能适应新的系统,避免代价大、剧烈的演进过程。平滑演进原则的计算公式为:式中,其中,sizepre表示组件在演进起始版本中的规模,sizecur表示组件在度量版本中的规模,n表示组件的个数,当组件增加或删除时,xi取1。(3)模块独立演进原则:模块独立演进原则表示的含义为软件中各模块自身的演进最好是相互独立的,以保证在架构演进的过程中各模块之间互相影响的程度较小。在软件演进过程中,各模块应保持一定独立性,组件之间应保持高内聚、低耦合。软件中各模块自身的演进最好是相互独立的,或者对其他模块的影响比较小、或影响范围比较小。模块独立演进原则的计算公式为:其中,npre表示演进起始版本组件图中的边数,npre表示演进起始版本组件图中的节点数,ncur表示度量版本组件图中的边数,ncur表示度量版本组件图中的节点数。(4)组件规模最小化原则:组件规模最小化原则表示的含义为在演化过程中组件的规模应越小越好,以保证系统组件的独立性。软件架构演化的过程中,为了降低组件的耦合度、提高内聚度,会将组件进行解耦,从而将组件的规模降低。组件规模最小化原则的计算公式为:其中,sizepre表示演进起始版本的项目规模,npre表示演进起始版本的组件数,sizecur表示度量版本的项目规模,ncur表示度量版本的组件数。(5)外部接口稳定性原则:外部接口稳定性原则表示的含义为判断组件功能是否足够稳定,从而说明软件演化中的不稳定因素的影响程度。外部接口稳定性原则的计算公式为:其中,nchange表示从演进起始版本到度量版本的演进过程中增加、删除或变化的接口数,nunchange表示未变化的外部接口数。(6)复杂性可控原则:复杂性可控原则表示的含义为软件架构的演化过程应保持可控的复杂性。随着软件系统的日趋复杂,无论是开发还是维护都是一项成本高昂的工作,以最简单的方式开发愈加复杂的系统是对所有开发团队的要求。好的架构在演进的过程中会保持可控的复杂性,以便更好地对软件开发过程进行控制,提高架构的可维护性和可靠性,确保产品的质量。复杂性可控原则的计算公式为:其中,sizepre表示演进起始版本的项目规模,ccpre表示演进起始版本的圈复杂度,sizecur表示度量版本的项目规模,cccur表示度量版本的圈复杂度。步骤4:根据演进上下文,对步骤3中得到的主体维持原则、平滑演进原则、模块独立演进原则、组件规模最小化原则、外部接口稳定性原则和复杂性可控原则度量值合理分配权重,计算各子原则的加权平均值,即为可持续演进原则的度量结果。可持续演进原则的计算公式如下:其中,n表示子原则的个数,wi表示第i个子原则的权重,qi表示第i个子原则的度量值,通过以上公式,可计算出软件架构两个版本之间的可持续演进原则度量值,当可持续演进原则度量值大于0时,则表示从演进起始版本到度量版本的演进过程达成可持续演进原则,且可持续演进度量值越大表示演进效果越好;当可持续演进原则度量值小于0时,则表示从演进起始版本到度量版本的演进过程未达成可持续演进原则,且可持续演进度量值越小表示演进效果越差。本发明提出了一种软件架构可持续演进原则达成性度量方法,同时提取软件架构和源代码中的基本信息,通过度量模型计算软件架构的可持续演进原则达成性度量数据,与现有技术相比,具有以下优势:(1)本发明从软件架构的角度出发,通过对架构可持续演进原则达成性进行度量,可以使得架构师、管理决策人员充分了解架构在设计和演进过程中变化情况,便于架构师和管理决策人员及时调整架构设计和演进策略;(2)本发明通过对软件架构、软件源代码进行分析,提取架构和源代码基本信息,度量数据客观精确,具有较高的可信性;(3)本发明可通过用户基于应用场景和需求的判断,对可持续演进原则的6个子原则分配权重,可得出更为合理的可持续演进原则达成性度量值。附图说明图1为本发明整体方案流程图;图2为a项目1.0版本软件架构图;图3为a项目2.0版本软件架构图。具体实施方式下面结合附图和实施例对本发明进一步说明。为了便于描述,我们假定a项目的1.0版本软件架构和2.0版本软件架构分别如图2和图3所示,按照如下步骤对该项目从1.0版本到2.0版本是否达成了可持续演进原则进行度量:步骤1:选取a项目的2.0版本为度量版本,1.0版本为其演进的起始版本,对这两个软件架构版本的源代码进行分析,提取软件源代码基本信息,表1和表2分别展示了a项目1.0版本和2.0版本的基本信息;表1版本1.0软件源代码基本信息组件名代码行数圈复杂度接口数组件13115739421026组件267641070211组件33142538671097组件4710组件5223542959752表2版本2.0软件源代码基本信息步骤2:分别对这两个软件架构版本的组件图进行分析,提取组件图信息,并结合源代码基本信息,计算架构基本信息;表3展示了组件图情况及节点和边的变化情况,表4展示了架构基本信息:表3组件图信息节点数边数变化的节点数变化的边数版本1.055--版本2.05601表4架构基本信息项目规模圈复杂度接口数变化的接口数未变的接口数版本1.091707118393086--版本2.0985701257833012473065步骤3:利用步骤1和步骤2中获取到的两个版本的架构基本信息和源代码基本信息,进行可持续演进子原则的计算:(1)根据以下公式计算主体维持原则:其中,nchange表示从演进起始版本到度量版本的演进过程中组件图中增加、删除或修改的节点数和边数,nunchange表示未变化的节点数和边数。(2)根据以下公式计算平滑演进原则:其中,sizepre表示组件在演进起始版本中的规模,sizecur表示组件在度量版本中的规模,n表示组件的个数,当组件增加或删除时,xi取1。(3)根据以下公式计算模块独立演进原则:其中,npre表示演进起始版本组件图中的边数,npre表示演进起始版本组件图中的节点数,ncur表示度量版本组件图中的边数,ncur表示度量版本组件图中的节点数。(4)根据以下公式计算组件规模最小化原则:其中,sizepre表示演进起始版本的项目规模,npre表示演进起始版本的组件数,sizecur表示度量版本的项目规模,ncur表示度量版本的组件数。(5)根据以下公式计算外部接口稳定性原则:其中,nchange表示从演进起始版本到度量版本的演进过程中增加、删除或变化的接口数,nunchange表示未变化的外部接口数。(6)根据以下公式计算复杂性可控原则:其中,sizepre表示演进起始版本的项目规模,ccpre表示演进起始版本的圈复杂度,sizecur表示度量版本的项目规模,cccur表示度量版本的圈复杂度。步骤4:根据演进上下文,对步骤3中得到的主体维持原则、平滑演进原则、模块独立演进原则、组件规模最小化原则、外部接口稳定性原则和复杂性可控原则度量值合理分配权重,计算各子原则的加权平均值,即为可持续演进原则的度量结果。为计算方便,此实施例中各子原则的权重都取1,所以,可持续演进原则的计算结果如下:可持续演进原则其中,n表示子原则的个数,wi表示第i个子原则的权重,qi表示第i个子原则的度量值,由度量结果可知,a项目从版本1.0演进到2.0的可持续演进原则达成性度量值为0.40655,度量结果大于0,表示a项目从版本1.0到版本2.0的演进过程达成可持续演进原则。需要说明的是上述实施例仅仅是本发明的较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的等同替换或者替代均属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1