[发明专利]一种模块间内部接口引用的静态检测方法在审
申请号: | 201410124206.5 | 申请日: | 2014-03-28 |
公开(公告)号: | CN103885880A | 公开(公告)日: | 2014-06-25 |
发明(设计)人: | 李智荣;廖正新;陈城香;冯明 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 模块 内部 接口 引用 静态 检测 方法 | ||
技术领域
本发明涉及软件架构技术领域,尤其涉及一种模块间内部接口引用的静态检测方法。
背景技术
良好的软件系统设计是层次化及模块划分、模块与模块之间有明确的接口调用原则。软件系统在设计、开发及维护过程中都会存在的现象:软件系统在最初的设计与开发过程中一般都能遵守模块间的接口调用原则,然而随着时间的推移、开发及维护人员的不断替换,接手的人员尤其是没有经验的新人往往就打破这些调用原则。久而久之,原先结构层次清晰的软件系统就变得界面不清晰,严重影响产品的维护和质量。
当今的软件系统尤其是大型的软件系统无一例外都采用了分层次、模块化设计。模块与模块间有明确的信赖方向及原则,如图1所示。模块间接口调用方向及原则:上层子系统模块可以调用下层子系统模块提供的接口。下层子系统模块禁止调用上层子系统模块的接口;模块间的接口仅限于对外API,禁止调用其他模块的内部接口。因为某种原因开发维护人员发生了流动,加上人员能力参差不齐,新进的开发维护人员没能理解当初设计人员的意图,后合入的代码往往就破坏了软件架构的层次关系,模块与模块间的界面就越来越模糊,牵一发而动全身,最终导致了寸步难行,软件架构的生命就此终结。
发明内容
基于此,有必要提供一种保持软件架构的模块间内部接口引用的静态检测方法。
一种模块间内部接口引用的静态检测方法,包括:
将模块内程序分为模块源程序和对外头文件;
解析模块源程序和对外头文件,判别源程序的内部接口、外部接口以及未定义接口;
若未定义接口为另一模块的外部接口则合法,否则为不合法,告警并提醒程序员修改。
在优选实施例中,所述另一模块为所述模块的下层模块。
在优选实施例中,解析模块源程序和对外头文件的方法为dependence parser静态分析。
采用发明后,将模块内程序分为模块源程序和对外头文件,通过解析这两个文件,判断未定义接口是否为另一模块的外部接口,若未定义接口不是另一模块的外部接口,则告警,使得模块间接口的引用清晰明了,保证模块之间的层级关系,保证了软件的架构。
附图说明
图1为本发明提供的大型软件模块间的层级关系;
图2为本发明提供的一种模块间内部接口引用的静态检测方法的具体流程图;
图3为解析模块源程序和对外头文件的方法示意图。
具体实施方式
为了使本领域相关技术人员更好地理解本发明的技术方案,下面将结合本发明实施方式的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。
参阅图2,本发明提供一种实施方式的模块间内部接口引用的静态检测方法,包括:
步骤S101,将模块内程序分为模块源程序和对外头文件;
模块内程序包括模块源程序和对外头文件,模块源程序为模块内程序主体,而对头文件是声明那些接口可以被其他模块引用。
步骤S102,解析模块源程序和对外头文件,判别源程序的内部接口、外部接口以及未定义接口;
内部接口为源程序内自己定义的接口,禁止被其他模块引用;外部接口为源程序定义的接口,对外头文件声明可以被其他模块引用的接口;未定义接口为源程序未定义的接口,为引用其他模块的接口;通过解析模块源程序和对外头文件,可分别获知上述三种接口。
步骤S103,若未定义接口为另一模块的外部接口则合法,否则为不合法,告警并提醒程序员修改。
未定义接口如果不是另一模块的外部接口,即该未定义接口不是另一个模块对外头文件中声明的接口,则这种引用是不合法的,告警并提醒修改。
在优选实施方式中,上述另一模块为所述模块的下层模块。在软件架构中,上层模块可以引用下层模块的接口,反之则不行。
参阅图3,为解析模块源程序和对外头文件的方法示意图。
本实施方式采用dependence parser的依赖分析方法,dependence parser的依赖分析方法基于编译、链接的原理,做了以下改进(以C语言为例说明):
(1)编译器对C文件进行编译,进行汇编,生成中间文件;dependence parser需要对以模块为单位进行分析,模块所以文件(C文件与头文件)进行分析,所有文件定义的符号认为是模块的内部符号,以自定义的文件格式保存内部符号与外部符号信息,不需要进行指令汇编。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410124206.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种带湿度监测功能恒温清洗壶
- 下一篇:一种带照明功能可充电式恒温清洗壶