[发明专利]一种软件复杂度计算方法有效
申请号: | 201910081440.7 | 申请日: | 2019-01-28 |
公开(公告)号: | CN109814924B | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 赵涌鑫;史建琦;黄滟鸿;李钦;王泊涵 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F8/77 | 分类号: | G06F8/77 |
代理公司: | 北京辰权知识产权代理有限公司 11619 | 代理人: | 刘广达 |
地址: | 200062 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软件 复杂度 计算方法 | ||
本发明公开了一种软件复杂度计算方法,包括:获取软件中的构件包括的各个活动;根据所述构件包括的各个活动,通过操作语义规则执行所述软件中的各个构件,得到所述软件的执行路径对应的路径信息;根据所述软件的执行路径对应的路径信息,计算所述软件的复杂度。本发明提出面向复杂度的建模语言,并为该建模语言设计了操作语义规则,基于该建模语言和操作语义规则能够在软件开发的各个阶段度量软件产品的复杂度,并且既可以计算构件的动态复杂度,又可以计算软件结构的平均复杂度,提高了软件复杂度计算的准确性。
技术领域
本发明主要涉及软件技术领域,尤其涉及一种软件复杂度计算方法。
背景技术
随着计算机及互联网技术的快速发展,人工智能、机器学习、云计算等领域的发展前景越来越广阔,使用这些技术开发的应用系统越来越广泛,同时也在不断地改变人们的生活方式。软件系统规模不断扩大,其功能也变得越来越复杂。由于软件技术的不断革新,人们对于软件功能的要求越来越高,不仅要求软件能够实现强大的功能,而且对于软件产品的可靠性、稳定性等质量属性要求也越来越高,因此对软件质量的评估工作变得越来越重要。
在软件开发中,软件复杂度是影响软件质量的一个重要因素,因此也是开发人员特别关心的方面。软件的复杂度过高,会导致软件的效率、可维护性、可测试性、可靠性等质量水平的下降,同时会增大软件的风险,这对于软件质量要求极高的领域具有非常重大的威胁。一个软件质量的好坏,是软件能否保证在长时间的使用中少发生甚至不发生错误的重要评价因素。
目前较为常见的复杂度度量方式有:代码行数方式、圈复杂度方式和Halstead复杂度方式。其中,代码行数方式根据软件代码的行数来衡量软件规模的大小。代码行数越多,表明软件越复杂。但此方式存在很大的片面性,只能粗略的评估,评估结果不准确。圈复杂度主要是用来衡量一个模块结构的复杂程度,其计算独立路径的条数,但其没有区分不同种类的控制流的复杂度,并且没有考虑顺序语句的复杂度。Halstead复杂度是以程序中出现的运算符和运算元为计数对象,以它们出现的次数作为计数目标,据以计算出程序容量、工作量。但并没有计算各个模块之间相互作用的复杂度的问题,存在误差。
由上可知,现有的软件复杂度计算方式普遍存在准确性低,误差大的问题。
发明内容
为解决以上问题,本发明提出了一种软件复杂度计算方法,提出面向复杂度的建模语言,并为该建模语言设计了操作语义规则,基于该建模语言和操作语义规则能够在软件开发的各个阶段度量软件产品的复杂度,并且既可以计算构件的动态复杂度,又可以计算软件结构的平均复杂度。
具体的,本发明提出了一种软件复杂度计算方法,包括:
获取软件中的构件包括的各个活动;
根据所述构件包括的各个活动,通过操作语义规则执行所述软件中的各个构件,得到所述软件的执行路径对应的路径信息;
根据所述软件的执行路径对应的路径信息,计算所述软件的复杂度。
优选地,所述获取软件中的构件包括的各个活动,包括:
通过面向复杂度的建模语言抽象软件包括的构件对应的构件信息;
从所述构件信息中识别所述构件包括的各个活动,所述活动由二元组组成,所述二元组包括所述活动对应的功能及执行所述功能产生的复杂度。
优选地,所述根据所述构件包括的各个活动,通过操作语义规则执行所述软件中的各个构件,得到所述软件的执行路径对应的路径信息,包括:
通过面向复杂度的建模语言确定所述软件中各个构件之间的构件组合关系;
通过所述操作语义规则,按照所述构件组合关系的执行规则执行所述软件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910081440.7/2.html,转载请声明来源钻瓜专利网。