一种软件设计质量的评价和强制实行的制作方法_2

文档序号:9865385阅读:来源:国知局
或多个特征。例如,操作可以包括:识别被分类为涉及至少一个设计质量属性的设计质量规则的子集;向所访问的软件应用设计应用所识别设计质量规则,以检测对所识别设计质量规则的违反;以及累积通过向所访问的软件应用设计应用所识别设计质量规则而检测的所有违反。在另一示例中,操作可以包括:访问被限定用于评价软件应用的设计质量的所有设计质量规则;识别涉及至少一个设计质量属性的所检测的违反;以及累积涉及至少一个设计质量属性的所识别违反。
[0013]此外,操作可以包括:针对至少一个设计质量属性,跨所访问的软件应用设计中包括的每个类而聚集所检测的违反;以及针对至少一个设计质量属性,使用针对所访问的软件应用设计中包括的每个类的聚集违反,跨软件应用的设计来累积所检测违反。操作还可以包括:对涉及至少一个设计质量属性的所检测违反进行计数。
[0014]在某些实现中,操作可以包括:访问涉及多个不同设计质量属性的设计质量规则;以及针对多个不同设计质量属性的每一个,累积涉及相应设计质量属性的所检测违反。在这些实现中,操作可以包括:针对多个不同设计质量属性的每一个,并且基于针对相应的设计质量属性而累积的违反,计算从相应的设计质量属性方面反映软件设计质量的度量;以及基于针对多个不同设计质量属性中每一个而计算的度量,计算设计质量复合指标。此外,在这些实现中,操作可以包括访问涉及系统所评价的所有设计质量属性的设计质量规则。
[0015]在某些示例中,操作可以包括:访问涉及性能设计质量属性、安全设计质量属性以及僵化度(rigidity)设计质量属性的设计质量规则。在这些示例中,操作可以包括:针对性能设计质量属性,累积涉及性能设计质量属性的所检测违反;针对安全设计质量属性,累积涉及安全设计质量属性的所检测违反;以及针对僵化度设计质量属性,累积涉及僵化度设计质量属性的所检测违反。而且,在这些示例中,操作可以包括:针对性能设计质量属性,并且基于针对性能设计质量属性而累积的违反,计算从性能设计质量属性方面反映软件设计质量的性能度量;针对安全设计质量属性,并且基于针对安全设计质量属性而累积的违反,计算从安全设计质量属性方面反映软件设计质量的安全度量;以及针对僵化度设计质量属性,并且基于针对僵化度设计质量属性而累积的违反,计算从僵化度设计质量属性方面反映软件设计质量的僵化度度量。操作可以包括:通过结合性能度量、安全度量和僵化度度量,计算设计质量复合指标。
[0016]此外,操作可以包括:访问性能加权因子、安全加权因子和僵化度加权因子;将性能度量与性能加权因子相乘以确定性能值;将安全度量与安全加权因子相乘以确定安全值;将僵化度度量与僵化度加权因子相乘以确定僵化度值。操作还可以包括:对性能值、安全值和僵化度值求和,以确定设计质量复合指标。
[0017]在某些实现中,操作可以包括:访问涉及性能设计质量属性的设计质量规则;针对性能设计质量属性,累积涉及性能设计质量属性的所检测违反;以及基于涉及性能设计质量属性的所累积违反,计算针对所访问的软件应用设计的性能度量。性能度量可以从性能方面反映软件设计质量。
[0018]另外,操作可以包括:访问涉及安全设计质量属性的设计质量规则;针对安全设计质量属性,累积涉及安全设计质量属性的所检测违反;以及基于涉及安全设计质量属性的所累积违反,计算针对所访问的软件应用设计的安全度量。安全度量可以从安全方面反映软件设计质量。
【具体实施方式】
[0019]用于评价和强制实行软件设计质量的示例系统。模型处理器可以评价软件应用的设计。例如,模型处理器可以评价针对从UML(统一建模语言)设计库访问的模型的UML设计。可以例如在开发用于相关软件应用的代码之前评价UML模型。
[0020]作为另一示例,可以评价经逆向工程的模型。例如,如果对于模型的UML设计不存在,则可以根据代码库中的代码来创建UML模型。例如,可以使用提取器组件从代码中提取类、接口和包信息,并且可以使用依赖关系定位器组件来识别类、包和其他设计元素之间的依赖关系。模型创建器可以使用提取的类、接口和包信息以及识别出的依赖关系来创建模型。恢复的设计可以存储在UML设计库中或者在UML模型库中。
[0021]模型处理器可以处理原始设计或者经逆向工程的设计,以产生诸如度量、签名元数据和注解之类的模型信息,这些模型信息可以存储在模型信息库中。此外,用户可以创建一个或更多包注解,其亦可存储在模型信息库中。包注解例如可以包括关于类、包和其他软件元素的设计的注释。
[0022]规则引擎可以访问来自规则库的设计质量规则。规则库可以包括预定规则并且还可以包括由用户使用规则/规则集定制组件定制的规则。可以定义设计质量规则来评价软件应用的设计质量。
[0023]规则引擎可以处理来自模型信息库的模型信息,对设计应用获取自规则库的规则以检测对设计质量规则的违反。如果发现对规则的违反,则可以将违反存储在违反数据库中。还可以使用可视化和报告组件将违反报告给用户。可视化和报告组件可以向用户显示重构建议。重构建议可以通过上下文重构组件来确定,该上下文重构组件可以基于获取自设计质量知识库的信息来提供建议。用户可以提供用户输入,以解决对设计质量规则的一个或更多违反。例如,用户可以使用建模应用来提供输入,从而更新设计以纠正检测到的对设计质量规则的一个或更多的违反。作为另一示例,用户可以提供输入以忽略检测到的违反,并且可以提供对于为什么可以忽略该违反的理由。
[0024]用于分析软件设计的过程200。可将过程200的操作一般地描述为由系统来执行。过程200的操作可以由系统的组件之一(例如,模型处理器)来执行,或者可以由系统的组件组合来执行。在一些实现中,过程200的操作可以由包含在一个或更多电子设备中的一个或更多处理器来执行。
[0025]当过程200开始时(202),系统确定是否有用于模型的代码存在(204)。例如,参考,模型处理器可以确定在代码库中是否存在用于模型的代码。
[0026]执行。过程300的操作可以由系统的组件之一(例如,模型处理器)来执行,或者可以由系统的组件组合来执行。在一些实现中,过程300的操作可以由包含于一个或更多电子设备中的一个或更多处理器来执行。
[0027]系统读取设计模型(302)。举例而言并且参考,模型处理器可以访问来自UML设计库的设计模型。
[0028]系统向用户显示可用的注解(304)。例如,可以在建模应用中显示设计模型,并且可以在建模应用中显示包含于设计中的注解。
[0029]系统确定是否存在新的注解(306)。例如,系统可以接收来自用户的、表示向设计添加新注解的请求的用户输入。
[0030]如果存在新的注解,则系统接收定义一个或更多新注解的用户输入(308)。例如,用户可以提供关于注解的详情(例如,文本注释)。
[0031]系统接收向模型应用注解的用户输入(310)。例如,用户可以识别与一个或更多注解相关的一个或更多软件元素(例如,类、包)。
[0032]系统向用户显示设计质量规则(312)。例如,可以在用户界面中向用户显示现有设计质量规则。用户界面可以显示每条规则的名称、作用域和解释。可以从规则库(例如,的库)中获取设计质量规则。
[0033]系统确定是否有新的设计质量规则(314)。例如,用户可以提供指示出对于添加新规则的请求的用户输入。
[0034]如果有新的设计质量规则,则系统接收定义一个或更多新规则的用户输入(316)。例如,用户可以为规则提供名称、描述、适用的作用域(例如,包、类、序列图、接口),以及定义规则的条件(例如,基于软件元素的一个或更多属性的条件,诸如类或接口的操作数量、子代数量、包中类的数量或者任何其他属性)。
[0035]系统接收将规则优先的用户输入(318)。例如,用户可以使用用户界面来将规则列表排列在代表期望的规则优先权的顺序之中(例如,置于优先列表的顶部附近的规则可以具有比置于优先列表的底部附近的规则更高的优先权)。
[0036]系统接收指定针对规则执行的适用准则和排除准则的用户输入(320)。例
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1