面向对象设计原则自动检测方法和装置与流程

文档序号:37042621发布日期:2024-02-20 20:37阅读:13来源:国知局
面向对象设计原则自动检测方法和装置与流程

本技术涉及软件,特别是涉及一种面向对象设计原则自动检测方法和装置。


背景技术:

1、面向对象是一种对现实世界理解和抽象的编程方法,它强调把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。面向对象作为一种典型的编程范式,在软件程序的可维护性、可复用性、可扩展性、灵活性等方面都要优于面向过程的开发方法,被广泛应用于软件开发的各个场景,甚至被扩展到了数据库、网络管理、分布式系统、人工智能等多个领域。面向对象编程规范虽为软件开发工作提供了较高的可维护性、可扩展性、可复用性,但是在许多场景下却增加了设计和开发工作的复杂程度,对软件设计或开发人员提出了更高的技术要求。在设计或开发经验不足的情况下,使用面向对象进行软件设计研发有可能不仅不会带来可维护性、可扩展性的提高,还会额外提高工作的复杂度,降低工作效率。在面向对象编程规范诞生以来的多年实践中,一些计算机领域的学者或技术专家提出了面向对象设计原则,这为面向对象软件提供了一种统一的指导标准,也为技术人员进行设计和研发工作提供了一套遵循规范,如果软件设计和开发满足面向对象设计原则的要求,可以认为软件拥有高内聚、低耦合的特征,具有较高的可维护性、可复用性、可扩展性。

2、目前在软件项目开发工作中,一般是由架构师或其他软件设计人员在项目设计阶段制定核心类的依赖关系,由开发人员在项目开发阶段参照设计结果实现核心类的研发,并根据经验具体进行某些高层类或工具类的设计和编码。对于设计质量的检测工作一般由架构师或资深开发人员在软件项目上线前进行人工评定,或是在软件项目上线运行后有维护问题或新需求产生时,通过产生的维护或开发成本进行评价。

3、因此,现有的设计原则符合性检测与评价方式效率低、成本高,无法在上线运行前及时准确的反馈程序的质量问题。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种能够提高检测效率的面向对象设计原则自动检测方法和装置。

2、第一方面,本技术提出一种面向对象设计原则自动检测方法,所述方法包括:

3、对待检测的面向对象程序源码进行设计原则符合性检测,得到符合性检测评分值;其中,所述设计原则符合性检测包括迪米特法则符合性检测、依赖倒置原则符合性检测、接口隔离原则符合性检测、合成复用原则符合性检测以及里氏替换原则符合性检测;

4、基于预设的设计原则评分权重和各项所述符合性检测评分值,得到所述面向对象程序源码的符合性总评分。

5、在其中一个实施例中,所述对待检测的面向对象程序源码进行设计原则符合性检测,得到符合性检测评分值,包括:

6、接收待检测的面向对象程序源码,读取所述面向对象程序源码中的开发者编写的类;

7、基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值。

8、在其中一个实施例中,在所述设计原则符合性检测为迪米特法则符合性检测时,所述基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值,包括:

9、定义第一总计数变量和第一违反原则计数变量;

10、在所述开发者编写的类中遍历依赖关系,每遍历到一组所述依赖关系时相应给所述第一总计数变量的数值加1;

11、并判断所述依赖关系在当前的所述开发者编写的类中的位置是否满足迪米特法则的位置条件,若所述位置不满足迪米特法则的位置条件,则相应给所述第一违反原则计数变量的数值加1;

12、当所述面向对象程序源码中的所述依赖关系全部遍历完毕后,基于更新后的所述第一总计数变量和所述第一违反原则计数变量计算迪米特法则符合性评分值。

13、在其中一个实施例中,在所述设计原则符合性检测为依赖倒置原则符合性检测时,所述基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值,包括:

14、定义第二总计数变量和第二违反原则计数变量;

15、在所述开发者编写的类中遍历依赖关系,每遍历到一组所述依赖关系时相应给所述第二总计数变量的数值加1;

16、基于面向对象的反射机制读取所述依赖关系中依赖类,判断所述依赖类是否属于抽象类或接口类型,若所述依赖类不属于抽象类或接口类型,则相应给第二违反原则计数变量的数值加1;

17、当所述面向对象程序源码中的所述依赖关系全部遍历完毕后,基于更新后的所述第二总计数变量和所述第二违反原则计数变量计算依赖倒置原则符合性评分值。

18、在其中一个实施例中,在所述设计原则符合性检测为接口隔离原则符合性检测时,所述基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值,包括:

19、定义第三总计数变量;遍历所述开发者编写的类的接口,每遍历到一个所述接口,相应给所述第三总计数变量的数值加1,并读取所述接口的方法数量;

20、定义方法计数变量;在当前所述开发者编写的类中查找所述接口的调用位置,若能找到所述调用位置,则相应给所述方法计数变量的数值加1,并基于所述方法数量和所述方法计数变量的数值计算接口评分值;

21、当所述面向对象程序源码中的所述接口全部遍历完毕后,基于各个所述接口评分值和所述第三总计数变量的数值计算接口隔离原则符合性评分值。

22、在其中一个实施例中,在所述设计原则符合性检测为合成复用原则符合性检测时,所述基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值,包括:

23、基于当前所述开发者编写的类和当前所述开发者编写的类的父类,得到一对第一继承关系;

24、统计所述第一继承关系中子类覆盖父类的方法个数、子类新增方法个数以及父类中方法个数;基于所述子类覆盖父类的方法个数、所述子类新增方法个数以及所述父类中方法个数计算当前第一继承关系的评分值;

25、当所述面向对象程序源码中的所述第一继承关系全部遍历完毕后,基于各个所述第一继承关系的评分值和第一继承关系的总数量计算合成复用原则符合性评分值。

26、在其中一个实施例中,在所述设计原则符合性检测为里氏替换原则符合性检测时,所述基于所述开发者编写的类进行设计原则符合性检测,得到符合性检测评分值,包括:

27、基于当前所述开发者编写的类和当前所述开发者编写的类的子类,得到一对第二继承关系;

28、在所述面向对象程序源码查找目标代码段,其中,所述目标代码段使用了所述第二继承关系中父类的对象;

29、并将所述目标代码段中的所述父类的对象替换为所述第二继承关系中子类的对象;判断被替换后的所述目标代码段是否能正常运行;统计被替换后仍能运行的所述目标代码段的个数;

30、基于当前所述开发者编写的类的子类个数、目标代码段的个数和被替换后仍能运行的所述目标代码段的个数,计算当前所述开发者编写的类的类评分值;

31、当所述面向对象程序源码中的所述第二继承关系全部遍历完毕后,基于各个所述类评分值以及所述第二继承关系中父类的种类数计算里氏替换原则符合性评分值。

32、第二方面,本技术还提供了一种面向对象设计原则自动检测装置,所述装置包括:

33、符合性检测模块,用于对待检测的面向对象程序源码进行设计原则符合性检测,得到符合性检测评分值;其中,所述设计原则符合性检测包括迪米特法则符合性检测、依赖倒置原则符合性检测、接口隔离原则符合性检测、合成复用原则符合性检测以及里氏替换原则符合性检测;

34、总分计算模块,用于基于预设的设计原则评分权重和各项所述符合性检测评分值,得到所述面向对象程序源码的符合性总评分。

35、第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的面向对象设计原则自动检测方法。

36、第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的面向对象设计原则自动检测方法。

37、上述面向对象设计原则自动检测方法和装置,通过对待检测的面向对象程序源码进行设计原则符合性检测,得到符合性检测评分值;其中,所述设计原则符合性检测包括迪米特法则符合性检测、依赖倒置原则符合性检测、接口隔离原则符合性检测、合成复用原则符合性检测以及里氏替换原则符合性检测;基于预设的设计原则评分权重和各项所述符合性检测评分值,得到所述面向对象程序源码的符合性总评分,从而在开发过程中便可对面向对象设计原则符合性进行及时的检测及评价,验证设计质量,反映设计问题,解决了检测效率低,成本高的问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1