CN105867906A - 一种面向软件演化的代码可替换性评估方法 - Google Patents

一种面向软件演化的代码可替换性评估方法 Download PDF

Info

Publication number
CN105867906A
CN105867906A CN201610164659.XA CN201610164659A CN105867906A CN 105867906 A CN105867906 A CN 105867906A CN 201610164659 A CN201610164659 A CN 201610164659A CN 105867906 A CN105867906 A CN 105867906A
Authority
CN
China
Prior art keywords
code
replaceability
bag
coupling
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610164659.XA
Other languages
English (en)
Other versions
CN105867906B (zh
Inventor
李必信
苗意盎
廖力
刘辉辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201610164659.XA priority Critical patent/CN105867906B/zh
Publication of CN105867906A publication Critical patent/CN105867906A/zh
Application granted granted Critical
Publication of CN105867906B publication Critical patent/CN105867906B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向软件演化的代码可替换性评估方法,对演化原因进行分析与定位,包括以下步骤:根据源代码构造相应的抽象语法树;在抽象语法树上提取表示依赖关系的边,构造出代码耦合关系图;基于程序耦合关系定义一种度量代码可替换性指标,对代码中模块的可替换性进行计算;针对演化版本中代码的可替换性发生改变的包进行分析,识别出导致代码可替换性变化的元素。该发明的评估方法不但可以自动分析源代码,度量代码的可替换性,指出代码中的核心框架,而且对演化过程中发生改变的原因进行分析定位实现了演化评估的自动化。

Description

一种面向软件演化的代码可替换性评估方法
技术领域
本发明提出了一种面向软件演化的代码可替换性评估方法,主要利用代码中耦合关系对代码的可替换性演化原因进行识别,属于软件维护与演化领域。
背景技术
在软件的生命周期中,不断对软件进行升级、更改,以适应新的需求。而对软件的更改往往都是在一些外部压力下进行的,如客户或行业竞争。这些更改势必会破坏程序原有的结构,提高程序复杂度,降低代码的质量。结果导致软件的维护成本显著提高,对软件的升级将变得更加困难。任何软件开发方法和工具都不能避免这个问题,对软件的修复工作越晚进行,软件维护成本越高,直至维护代价超过重新开发整个系统的代价。为了解决这个难题,需要一种技术能够跟踪软件中代码可替换性的变更,提高软件的内部质量。
软件演化是软件工程领域正逐步受到重视的研究方向,并将得到越来越多的关注。软件演化过程的目标就是在不违反系统约束的条件下,对软件系统的演化流程进行管理,从而使演化后的软件系统能够在功能满足用户的需求,同时它所展现出来的质量属性也维持在一个令人满意的水平上。
识别程序中哪些地方变更导致代码可替换性发生变化的真实原因是演化分析中的难点目前,只进行一个代码版本的可替换性度量,或者只提供代码变更信息而没有与代码的可替换性相关联,不能提供真实的影响可替换性变更的信息。因此,自动地识别可替换性变更原因对软件演化与维护的分析非常重要。
发明内容
技术问题:本发明提供一种能够自动化识别演化过程中导致代码可替换性变更的演化原因,提取代码演化中可替换性变更的演化对象的面向软件演化的代码可替换性评估方法。
技术方案:本发明的面向软件演化的代码可替换性评估方法,包括以下步骤:
步骤一,根据源代码,将软件版本中的每个类构造为抽象语法树;
步骤二,在所述步骤一构建的抽象语法树上进行解绑定处理,得到底层的依赖关系,然后提取表示依赖关系的边,构造出代码耦合关系图;
步骤三,基于代码耦合关系图,以包的传入耦合度和传出耦合度为基础,根据下式计算度量软件代码中每个包的可替换性指标:
C=EC/(AC+EC)
其中,EC代表对包的传出耦合的度量,表示依赖该包的外部包的数目,即传出耦合集中元素的个数;
AC代表对包的传入耦合的度量,表示被该包依赖的外部包的数目,即传入耦合集中元素的个数;
C代表该包的可替换性的评估,取值为[0-1];
步骤四,比较软件代码中的包在各个演化版本中的可替换性指标,对于可替换性指标发生改变的包进行变更原因分析,识别出导致代码可替换性变化的元素。
进一步的,本发明方法中,所述步骤一构建的抽象语法树包含代码基本架构的解析树信息,以及在方法调用处与被调方法之间建立起绑定关系。
进一步的,本发明方法中,所述步骤二构造的代码耦合关系图具有层次特性,由类层次耦合关系到包层次耦合关系图自下而上构造。
进一步的,本发明方法中,所述步骤四中的变更原因分析,是针对可替换性发生变更的包,在步骤二构造的代码耦合关系图中定位识别出导致代码可替换性变化的元素。
有益效果:本发明方法通过Eclipse JDT生成的抽象语法树获取耦合关系,主要用于解决代码可替换性度量的精确性以及可替换性演化原因分析问题,与现有技术相比,具有以下优点:
(1)利用Eclipse JDT中ASTParser生成的抽象语法树,通过在解绑定技术的基础上所获得的包耦合关系图比现有技术所获得的耦合关系更加精确和完整。传统的耦合关系的获取通常是通过包的声明域进行耦合关系的获取,当代码中包的声明缺省时,会使得耦合关系获取的缺失。我们的技术通过代码解绑定技术,获取在代码中底层所使用的类型,用来生成代码在类层次的耦合关系,进而逐层向上生成包层次耦合关系,可以保证包耦合关系获取的准确性和完整性。
(2)利用从下而上的耦合关系,为可替换性的分析提供了不同的粒度。通过在类的耦合关系的基础上所获得的包耦合关系图,比现有技术所获得的耦合关系能够包含更多信息更加完整。传统的方法在对可替换性结果展示时只显示到包层次的内容,不能够显示出包中具体发生耦合关系的类。我们的技术所获的包的可替换性是建立在类粒度的耦合关系上的,因此可以对包的耦合关系进行更细粒度的查询,能够展示出可替换性评估值在类层次的形成原因。
(3)利用代码的耦合关系提供了软件演化的原因分析。通过我们在类层次所获取的低层次的耦合关系传入传出耦合集,能够对软件演化过程中导致可替换性变化的原因进行分析;传统的评估工具只有针对代码整体变更的分析,并不具有针对可替换性的演化分析,我们的方法通过获取项目演化过程中新旧版本的耦合集,通过新旧版本的传入传出耦合集的匹配,从而定位出与可替换性相关的演化原因。
附图说明
图1面向软件演化的代码可替换性评估体系结构;
图2 JcouplingEvaluator总体工作流程图;
图3抽象语法树;
图4代码耦合关系图。
具体实施方式
下面结合实施例和说明书附图对本发明作进一步的说明。
实施例中项目Proj中有版本Ver1及其演化版本Ver2,Ver1中共有七个包,分别为p1.1-p1.7,Ver2中对应的包为p2.1-p2.7。使用工具JcouplingEvaluator进行评估,其总体工作流程图如图2所示。包括以下步骤:
步骤一,根据源代码,将软件版本中的每个类构造为抽象语法树;将实施例中版本Ver1的源代码构造相应的抽象语法树,其抽象语法树如图3所示;
抽象语法树(Abstract Syntax Tree,AST)作为程序的一种中间表示形式,在代码解析、程序分析等诸多领域有广泛的应用。它将java源代码映射为树的形式:每个java源文件被表示成AST节点树。Eclipse AST是Eclipse JDT的一个重要组成部分,定义在包org.eclipse.jdt.core.dom中,用来表示JAVA语言中的所有语法结构。
Eclipse AST的总体结构:
(1)、org.eclipse.jdt.core.dom.AST(AST节点类),Eclipse AST的工厂类,用于创建表示各种语法结构的节点。
(2)、org.eclipse.jdt.core.dom.ASTNode及其派生类(AST类),用于表示JAVA语言中的所有语法结构,在实际使用中常作为AST上的节点出现。
(3)、org.eclipse.jdt.core.dom.ASTVisitor(ASTVisitor类),Eclipse AST的访问者类,定义了统一的访问AST中各个节点的方法。
(4)、org.eclipse.jdt.core.dom.ASTParser(ASTParser类),用于解析包含java源代码的程序,并返回一个AST。其返回的结果包含了源代码字符的范围。
该图的源代码中包含一个类,类中包含四个成员变量和四个成员方法构成。其中绑定技术用于获取成员变量的SimpleType节点和MethodDeclaration节点的MethodInvocation节点中所使用的类型信息,借助Eclipse AST中的绑定技术将外部类型信息同时加载进抽象语法树,以便于节点数据类型信息的获取。
步骤二,在所述步骤一构建的抽象语法树上进行解绑定处理,得到底层的依赖关系,然后提取表示依赖关系的边,构造出代码耦合关系图;
代码中的耦合关系图中有以下两种关系:传入耦合:如果特定类依赖于其他类,那么就称它对其他类具有传入耦合关系;传出耦合:如果其他类依赖于特定类,那么就称特定类对其他类具有传出耦合关系。
类内根据抽象语法树上的语句节点上抽取耦合信息,其中语句节点包括声明节点和方法调用节点;从语句节点中获取类的传出耦合类,例如类A中声明或调用中使用了类B,类B对于类A则是传出耦合关系,类A对于类B则是传入耦合关系。
包耦合关系在类耦合关系的基础上,根据类所属的包信息,获取属于同一个包中的类的传入耦合集合和传出耦合集合,形成包层次的耦合关系图。
根据步骤一中所构造的AST树,对其中的节点进行解绑定(resolveBinding)处理,可获得所依赖的类型信息,如类型名称以及所属包名。根据解绑定所获得的依赖信息,遍历后将元素放入相应耦合集中。在实例中,包p1.5中的类使用了p1.4中的类,即表示p1.4为p1.5的传出耦合元素,放入p1.5的传出耦合集ACSet中,p1.5为p1.4的传入耦合元素,放入p1.4的传入耦合集ECSet中。访问结束后,可获得Ver1中各个包的传入耦合集合传出耦合集,结果如下表所示:
表格中所记录的数字为各个耦合集中元素个数。
步骤三,基于代码耦合关系图,以包的传入耦合度和传出耦合度为基础,根据下式计算度量软件代码中每个包的可替换性指标:
代码可替换性主要跟模块之间的耦合度相关。模块之间的耦合分为传入耦合和传出耦合。传入耦合是指依赖于一个包的其他包的数量;传出耦合是指一个包所依赖的包的数量。一个包的传出耦合越大,它就越依赖于其他包,该包的变更对其他包的影响较小,但面对关联包的更改时它容易受到连锁反应的影响。一个包的传入耦合越大,则该包被依赖度越高,它发生更改或被替换的代价也就越大。代码可替换性中定义了如下两个集合:
定义1传入耦合集:对于包P中的所有类集C,如果代码其他包p中的类依赖于类c,且c∈C,则p属于传入耦合集中一个元素,这些元素的集合为P包的传入耦合集ACSet。
定义2传出耦合集:对于包P中的所有类集C,对于类c(c∈C),如果类c依赖于其他的类c`,且c`所在的包p属于传出耦合中的一个元素,这些元素的集合为P包的传出耦合集ECSet。
通过可提换性度量模型,对Java软件中包的可替换性的度量评估方法,通过度量传出耦合在耦合关系中所占据的比例对包的可替换性进行量化评价。
该模型统计每个包所依赖包的个数及依赖于该包的包数目,并根据传出耦合在总体耦合中所占比值大小判断该包的可替换性强弱。高的传出耦合比例表示传入耦合较低,对象不具有太多的职责,易于进行替换;反之,高的传入耦合比例表示对象具有太多的职责,在进行替换时候要格外小心。
根据步骤二中的传出耦合与传入耦合,对每个包的可替换性进行计算,结果如下表所示。
Ver1 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7
C 0.91 1.00 0.38 0.73 1.00 1.00 1.00
C表示Ver1中包的可替换性值。
对项目的演化版本Ver2重复步骤一至步骤三,进行可替换性度量,同样计算出可替换性度量值。Ver2中各个包的传入耦合集合传出耦合集表如下所示:
可替换性结果如下表所示:
Ver2 p2.1 p2.2 p2.3 p2.4 p2.5 p2.6 p2.7
C 0.91 1.00 0.38 0.75 1.00 1.00 1.00
可替换性度量值越接近1,说明该包传入耦合相对较少,容易被替换;值越接近0,说明该包传入耦合较多,难以被替换。
步骤四,比较软件代码中的包在各个演化版本中的可替换性指标,对于可替换性指标发生改变的包进行变更原因分析,识别出导致代码可替换性变化的元素。
在软件演化过程中,如果代码包的可替换性度量值改变了,表示代码在演化过程中所进行的修改导致了包的耦合关系发生了改变,例如增加、删除或修改。
代码可替换性变更原因差异分析Diff(ver1,ver2)具体步骤如下如下:
第一步:获取项目ver1中各个包的可替换性;
第二步:获取项目ver2中各个包的可替换性;
第三步:对比ver1和ver2中各个包的可替换性数值,记录发生改变的包;
第四步:定位在ver1和ver2中发生变更的包,记为P与P`,P有传入耦合集ACSet与传出耦合集ECSet,P`有传入耦合集ACSet`与传出耦合集ECSet`;
第五步:对比ACSet与ACSet`中元素,若存在元素a∈ACSet且则表示元素a的传入耦合关系在ver2中被删除,若元素且a∈ACSet`,则表示中ver2中增加了与元素a的传入耦合关系。记录变更信息到Diff(ver1,ver2)中;
第六步:对比ECSet与ECSet`中元素,若存在元素e∈ECSet且则表示元素e的传出耦合关系在ver2中被删除,若元素且e∈ECSet`,则表示中ver2中增加了与元素e的传出耦合关系。记录变更信息到Diff(ver1,ver2)中。
在如上实例中Ver1到Ver2版本的演化过程中包p1.4到p2.4的可替换性发生了变化,其可替换性由0.73变为0.75。对比两个版本中p1.4和p2.4的传入耦合集和传出耦合集,记p1.4的传入耦合集和p2.4的传入耦合集分别为ACSet和ACSet`,实例中ACSet=ACSet`,两者的传入耦合集在演化过程中没有发生变化;记p1.4的传出耦合集和p2.4的传出耦合集分别为ECSet和ECSet`,实例中ECSet中为8个元素,ECSet`中有9个元素,传出耦合耦合集在演化过程中存在元素且e∈ECSet`,则表示中Ver2中增加了元素e的传出耦合关系。
记录包中增加的变更信息到Diff(Ver1,Ver2)中;通过依次遍历Ver1和Ver2中对应的包得到可替换性的变化原因。
上述实施例仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范。

Claims (4)

1.一种面向软件演化的代码可替换性评估方法,其特征在于,该方法包括以下步骤:
步骤一,根据程序源代码,将软件版本中的每个类构造为抽象语法树;
步骤二,在所述步骤一构建的抽象语法树上进行解绑定处理,得到底层的依赖关系,然后提取表示依赖关系的边,构造出代码耦合关系图;
步骤三,基于代码耦合关系图,以包的传入耦合度和传出耦合度为基础,根据下式计算度量软件代码中每个包的可替换性指标C:
C=EC/(AC+EC)
其中,EC代表对包的传出耦合的度量,表示依赖该包的外部包的数目,即传出耦合集中元素的个数;
AC代表对包的传入耦合的度量,表示被该包依赖的外部包的数目,即传入耦合集中元素的个数;
可替换性指标C代表对该包的可替换性的评估,取值为[0-1];
步骤四,比较软件代码中的包在各个演化版本中的可替换性指标,对于可替换性指标发生改变的包进行变更原因分析,识别出导致代码可替换性变化的元素。
2.根据权利要求1所述的面向软件演化的代码可替换性评估方法,其特征在于,所述步骤一构建的抽象语法树包含代码基本架构的解析树信息,以及在方法调用处与被调方法之间建立起绑定关系。
3.根据权利要求1所述的面向软件演化的代码可替换性评估方法,其特征在于,所述步骤二构造的代码耦合关系图具有层次特性,由类层次耦合关系到包层次耦合关系图自下而上构造。
4.根据权利要求1、2或3所述的面向软件演化的代码可替换性评估方法,其特征在于,所述步骤四中的变更原因分析,是针对可替换性发生变更的包,在步骤二构造的代码耦合关系图中定位识别出导致代码可替换性变化的元素。
CN201610164659.XA 2016-03-22 2016-03-22 一种面向软件演化的代码可替换性评估方法 Expired - Fee Related CN105867906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610164659.XA CN105867906B (zh) 2016-03-22 2016-03-22 一种面向软件演化的代码可替换性评估方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610164659.XA CN105867906B (zh) 2016-03-22 2016-03-22 一种面向软件演化的代码可替换性评估方法

Publications (2)

Publication Number Publication Date
CN105867906A true CN105867906A (zh) 2016-08-17
CN105867906B CN105867906B (zh) 2018-11-27

Family

ID=56625702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610164659.XA Expired - Fee Related CN105867906B (zh) 2016-03-22 2016-03-22 一种面向软件演化的代码可替换性评估方法

Country Status (1)

Country Link
CN (1) CN105867906B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970788A (zh) * 2017-02-24 2017-07-21 中国人民解放军海军大连舰艇学院 一种基于时态的对象依赖关系发现方法和系统
CN107066384A (zh) * 2017-03-28 2017-08-18 东南大学 基于Halstead复杂度度量的软件演化评估方法
CN107368303A (zh) * 2017-06-28 2017-11-21 东南大学 一种基于软件架构的可演进性度量方法
CN107703923A (zh) * 2017-10-31 2018-02-16 中国航空无线电电子研究所 数据耦合和控制耦合自动分析方法
CN109901873A (zh) * 2019-02-26 2019-06-18 北京真知科技有限公司 基于语法树的软件功能重构方法及装置
CN110928797A (zh) * 2019-11-29 2020-03-27 五八有限公司 一种代码耦合检测方法、装置、终端设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
CN103294598A (zh) * 2013-05-28 2013-09-11 华为技术有限公司 一种源代码检查方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
CN103294598A (zh) * 2013-05-28 2013-09-11 华为技术有限公司 一种源代码检查方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MERIEM BELGUIDOUM: "Formalization of Component Substitutability", 《ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE》 *
W.M. ZUBEREK: "Checking Compatibility and Substitutability of Software Components", 《MODELS AND METHODOLOGY OF SYSTEM DEPENDABILITY》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970788A (zh) * 2017-02-24 2017-07-21 中国人民解放军海军大连舰艇学院 一种基于时态的对象依赖关系发现方法和系统
CN106970788B (zh) * 2017-02-24 2018-08-07 中国人民解放军海军大连舰艇学院 一种基于时态的对象依赖关系发现方法和系统
CN107066384A (zh) * 2017-03-28 2017-08-18 东南大学 基于Halstead复杂度度量的软件演化评估方法
CN107368303A (zh) * 2017-06-28 2017-11-21 东南大学 一种基于软件架构的可演进性度量方法
CN107368303B (zh) * 2017-06-28 2020-06-12 东南大学 一种基于软件架构的可演进性度量方法
CN107703923A (zh) * 2017-10-31 2018-02-16 中国航空无线电电子研究所 数据耦合和控制耦合自动分析方法
CN109901873A (zh) * 2019-02-26 2019-06-18 北京真知科技有限公司 基于语法树的软件功能重构方法及装置
CN109901873B (zh) * 2019-02-26 2022-05-10 北京真知科技有限公司 基于语法树的软件功能重构方法及装置
CN110928797A (zh) * 2019-11-29 2020-03-27 五八有限公司 一种代码耦合检测方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN105867906B (zh) 2018-11-27

Similar Documents

Publication Publication Date Title
CN105867906A (zh) 一种面向软件演化的代码可替换性评估方法
US7340475B2 (en) Evaluating dynamic expressions in a modeling application
CN102073589B (zh) 一种基于代码静态分析的数据竞争检测方法及系统
US20140282373A1 (en) Automated business rule harvesting with abstract syntax tree transformation
CN101501684A (zh) 包装器生成和模板检测的联合优化
US20120311536A1 (en) Statically derived symbolic references for dynamic languages
CN105843614B (zh) 一种面向软件演化的代码可兼容性评估方法
CN108509338A (zh) 一种基于多层次变更分析的软件演化评估系统及方法
CN109375948A (zh) 一种智能功能点识别的软件计价方法
Karus et al. Code churn estimation using organisational and code metrics: An experimental comparison
CN103186463A (zh) 确定软件的测试范围的方法和系统
Mišić et al. Estimation of effort and complexity: An object-oriented case study
Abrahao On the functional size measurement of object-oriented conceptual schemas: design and evaluation issues
Asencio et al. Relating expectations to automatically recovered design patterns
Sharma et al. An empirical approach for early estimation of software testing effort using SRS document
Carvalho et al. DMOSS: Open source software documentation assessment
CN108509217B (zh) 一种软件架构可持续演进原则达成性度量方法
Dash et al. Maintainability Measurement in Object Oriented Paradigm.
Kuo et al. Code analyzer for an online course management system
CN115858348B (zh) 一种基于字节码的测试工作量评估方法、设备及介质
Navas-Su et al. Measuring Indirect Coupling Complexity of Software Systems
CN116974914A (zh) 一种基于高阶函数的代码依恋检测方法及系统
Gupta et al. A consolidated and comparative analysis of software metrics tools for systems performance evaluation: a survey
Cachero et al. Towards a Quality-Aware Web Engineering Process.
US20080235673A1 (en) Method and System for Measuring Database Programming Productivity

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170116

Address after: 211189 Jiangsu Road, Jiangning District, Southeast University, No. 2, No.

Applicant after: Southeast University

Applicant after: Huawei Technologies Co.,Ltd.

Address before: 211189 Jiangsu Road, Jiangning District, Southeast University, No. 2, No.

Applicant before: Southeast University

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181127

Termination date: 20190322

CF01 Termination of patent right due to non-payment of annual fee