CN103208039B - 软件项目风险评价方法及装置 - Google Patents

软件项目风险评价方法及装置 Download PDF

Info

Publication number
CN103208039B
CN103208039B CN201210009752.5A CN201210009752A CN103208039B CN 103208039 B CN103208039 B CN 103208039B CN 201210009752 A CN201210009752 A CN 201210009752A CN 103208039 B CN103208039 B CN 103208039B
Authority
CN
China
Prior art keywords
risk
project
evaluation
mentioned
model
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.)
Expired - Fee Related
Application number
CN201210009752.5A
Other languages
English (en)
Other versions
CN103208039A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to CN201210009752.5A priority Critical patent/CN103208039B/zh
Publication of CN103208039A publication Critical patent/CN103208039A/zh
Application granted granted Critical
Publication of CN103208039B publication Critical patent/CN103208039B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明的目的在于提供一种能够建立风险出现概率判断的准确度更高的软件项目风险评价模型的软件项目风险评价方法。本发明的软件项目风险评价方法包括:收集步骤,收集多个样本的关于项目指标和项目风险的历史数据;分割步骤,将项目指标所映射的值域分割为多个,针对每个子值域取代表值,上述值域是m维向量空间;统计步骤,根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率,以及计算步骤,根据代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型;将模型用于新项目的风险评价。

Description

软件项目风险评价方法及装置
技术领域
本发明涉及一种软件项目风险评价方法及软件项目风险评价装置,特别涉及通过分析项目指标和项目风险之间的量化关系,来建立风险评价模型,将模型用于评价新项目中各种风险发生概率,以及对模型进行优化的方法和装置。
背景技术
在各种软件项目开发过程中经常会出现各种风险。比如,在一些项目开发过程中,存在主要开发者离职的情况、频繁的重复性编码错误、或者频繁的需求变更等情况。以上这些对项目开发产生影响的情况的发生可能性称项目风险。开发过程中的项目风险会对项目产生冲击,引起一些负面影响。有些项目风险使得项目日程延迟,有些项目风险增加项目开发成本,有些项目风险降低了软件质量。因此,希望能够针对各个项目预测各个项目风险的发生概率,以便在早期采取措施加以预防。
采用风险评价模型来对项目风险出现概率进行评价是本领域中识别项目潜在风险的有效方法。事实上,现有风险评价体系包含多个目标例如,风险发生概率评价、风险严重程度评价、风险出现时间预测、风险影响范围评价等。本发明着重处理风险发生概率的评价。
现有的项目风险评价方法有以下几种。
例如存在采用调查问卷的方式对风险概率进行简单评价的方法。在非专利文献1:(论文)“Software Risk Management:Principles and Practices”,Barry Boehm,IEEESoftware,1991.中讲述了一种用问卷调查来进行风险评价的方法。在本方法中,由专家设计专用的调查问卷,用于收集一些跟风险相关的项目信息。通过对项目管理者进行的问卷调查,收集管理者对项目状况的看法评分。基于收集到的评分,进行某种综合分析(比如AHP或DELPHI方法),得出风险发生的概率。自本文作者Barry Boehm的成果发表后,其他学者沿同样的路线进行了很多后续研究和完善,均以问卷调查为基本策略。
但是,该方法有较大的不确定性和对专家问卷的依赖性。由于在问卷调查的过程中,项目管理者容易把个人偏见加入到评分中,影响到了项目评价的准确性,因此会带来较大的不确定性。另外,问卷的制订完全依赖于专家经验。换一种项目类型后必须重新要求专家制订相应的问卷,调整分析方法。这对专家形成了依赖,影响了问卷的适用范围。因此,该方法存在人为因素大、准确度低并且成本难以控制的缺点。
此外,也有采用基于规则或模型的评价方式,例如采用挣值分析(EVM)的方法分析风险出现的几率。
在专利文献2:(美国专利7669180B2)中公开了这一种方法:为每组风险因素创建了风险评价任务,为每个任务定义了决策流程图,为决策流程图创建了相关的规则集合,基于项目数据和规则集合自动对风险进行综合评价。
此外,专利文献2中提及的风险模型建立规则可以用某种机器语言描述,并且,专利文献2所涉及装置提供规则编程用的API。用户可以较自由地编辑适用于自己软件项目的风险检测规则。
专利文献2中描述了一种基于规则的风险评价方法。这些规则可以用某种语言或编程API进行自由编辑,使得该方法具有很好的扩展性。但是,该方法存在用户需要自行编辑或选择风险检测规则的问题。事实上,缺乏经验的管理者不太知道哪种规则适用于检测他们项目的风险,也不知道如何创造出有效的规则。
此外,在非专利文献3:(论文)”Risk management method using data from EVMin software development projects”,A.Hayashi,CIMCA 2008,IEEE Computer Society.中描述了一种风险评价方法。具体来说,该技术是采用EVM(挣值分析)等方法,将项目进度受到的各种影响量化成进度延迟天数,然后根据计算出的进度延迟天数进行风险评价。
非专利文献3作为一种基于EVM的风险评价技术。其目标是对项目风险进行量化评价,尤其适用于跟软件进度相关的风险评价。但非专利文献3中存在的问题是,这种方法较难对非进度型指标,比如项目质量方面的指标进行分析,得出风险评价。也就是说,方法的适用范围比较有限,并且,非专利文献3中公开的量化评价方法的准确度也不高。
发明内容
本发明的目的在于提供一种能够建立风险出现概率判断的准确度更高的软件项目风险评价模型的软件项目风险评价方法及软件项目风险评价装置。
本发明是一种软件项目风险评价方法,包括:收集步骤,收集多个样本的关于项目指标和项目风险的历史数据;分割步骤,将上述项目指标所映射的值域分割为多个,针对每个分割后的子值域取代表值,设相对于某类项目风险的项目指标的种类数量为m时,上述值域是m维向量空间,其中,m是大于0的整数;统计步骤,根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率;计算步骤,根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型;以及评价步骤,利用上述计算步骤中计算出的项目风险评价模型对新的软件项目进行风险评价,得到预测风险概率。
此外,本发明也可以是一种软件项目风险评价装置,包括:收集单元,收集多个样本的关于项目指标和项目风险的历史数据;分割单元,将上述项目指标所映射的值域分割为多个,针对每个分割后的子值域取代表值,设相对于某类项目风险的项目指标的种类数量为m时,上述值域是m维向量空间,其中,m是大于0的整数;统计单元,根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率;计算单元,根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型;以及评价单元,利用上述计算单元所计算出的项目风险评价模型对新的软件项目进行风险评价,得到预测风险概率。
根据本发明的软件项目风险评价方法及软件项目风险评价装置,可以在不依赖专家经验的情况下,找出历史数据中各种风险的发生规律,并将其量化为风险评价模型,在新项目中基于项目指标和评价模型估算出各种风险发生的概率,从而提高了风险评价的准确性。
此外,本发明采用了机器学习的方法,自动发现历史风险出现规律,相当于把“规则”创建自动化,并且通过收集各种类型的项目风险和指标,扩大了装置的适用范围。
因此,根据本发明,能够建立准确度更高的软件项目风险评价模型,来帮助项目管理者发现软件项目中的各种风险。采用本发明的建模方法及装置能够有效利用历史数据,找出项目风险出现的规律,发现新项目中存在的风险,减少对专家经验的依赖,提高风险发现的准确率,并且适用范围广泛。
附图说明
图1是第一实施方式涉及的软件项目风险评价方法的流程图;
图2是第一实施方式涉及的软件项目风险评价装置的框图;
图3是第二实施方式涉及的软件项目风险评价方法的流程图;
图4是第二实施方式涉及的软件项目风险评价装置的框图;
图5是项目风险记录和历史项目指标的例图;
图6是准备风险模型训练数据的流程图;
图7是说明风险模型训练数据的例图;
图8是说明通过向量空间分割得到训练数据的例图;
图9是采用SVM算法训练风险模型的流程图;
图10是采用风险模型计算项目风险概率的流程图;
图11是说明分析项目风险和项目指标之间的相关度的流程图;
图12是分析项目风险和项目指标之间的相关度的实例图;
图13是说明利用验证数据训练风险评价模型的流程图;
图14是说明调整向量空间分割距离的流程图;
图15是调整相关度阈值的流程图。
具体实施方式
以下,参照附图,对有关本发明的优选实施方式进行说明。
(第一实施方式)
图2是第一实施方式涉及的软件项目风险评价装置的框图。如图2所示,本发明的软件项目风险评价装置包括收集单元200、分割单元201、统计单元203以及计算单元204。
其中,收集单元200将多个样本的关于项目指标和项目风险的历史数据收集到数据库201中加以保存。例如,收集单元200受理用户通过输入装置进行的输入,或者直接从外部装置导入历史数据,来自动/手动收集软件项目的历史数据和正在进行的新项目数据,并将数据保存到数据库201中。
作为数据库201中的一个保存示例,可以利用表格保存项目风险记录和历史项目指标。图5是项目风险记录和历史项目指标的例图,在图5中示意性地示出了当前软件管理中的部分项目风险和项目指标。如图5所示,表格“项目风险记录”中保存了项目风险发生记录。表格第1列记录项目名称,第2列记录所发生风险类型,第3列及之后记录了某项目中某种风险每天的发生次数。其中,项目1(Project 1)在2011/7/5日出现“交付延迟(Deliverydelay)”风险一次,项目2在2011/7/6日同样出现了“交付延迟”风险一次。
表格“历史项目指标”记录了项目的各种项目指标。表格第1列记录项目名称,第2列记录所收集项目指标,第3列及之后记录了某项目中某种指标每天的值。如图5所示,表格第2、3行记录了项目1的“缺陷密度”和“需求变更规模”两项指标,第4、5行记录了项目2的这两项指标的变化情况。
在此,由于同类项目的历史数据对新项目的风险分析更加具有参考价值,因此假设所收集到的数据都属于同类项目(比如都属于嵌入式开发项目),或者已经按照项目类型(如电子商务项目、手机应用项目、中间件项目等)进行了分类。
此外,如图5中所指出的项目风险和项目指标的种类仅是示例,当然还包括其他现有的项目风险和项目指标。
设收集单元200收集到的、相对于某类项目风险的项目指标的种类数量为m(m是大于0的整数)时,即有m种项目指标时,该m种项目指标的值域构成m维向量空间。分割单元201将将上述项目指标所映射的作为该m维向量空间的值域分割为多个子值域,针对每个分割后的子值域取代表值,用于后续的处理。
统计单元203根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点(某项目中所有项目指标所构成的m维向量)的数量的比值,作为该类项目风险出现的风险概率,有关映射的详细情况在后面叙述。
计算单元204用于制作项目风险评价模型,具体来说,计算单元204根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型,根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型。其中,上述归一化处理可以利用现有的归一化处理算法来进行,并且,得到训练数据之后,即可利用现有的预测模型建立方法来建立项目风险评价模型,因此,在此省略详细的说明。
以下利用图1说明本发明的第一实施方式涉及的软件项目风险评价方法。图1是第一实施方式涉及的软件项目风险评价方法的流程图。如图1所示,首先,收集单元200收集多个样本的关于项目指标和项目风险的历史数据(步骤100)。
接着,分割单元201将上述项目指标所映射的值域分割为多个,针对每个分割后的子值域取代表值,设相对于某类项目风险的项目指标的种类数量为m时,上述值域是m维向量空间(步骤101)。
接着,统计单元203根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率(步骤102)。
最后,计算单元204根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型(步骤103)。
以下举例详细说明各步骤。
一般来说,风险评价模型实际上是“风险概率”和“相关项目指标”之间的量化函数关系。为了训练出项目风险评价模型,需要大量的(风险概率,相关项目指标)数据。数据库中已有历史项目指标,可以直接查出,但相应的历史风险概率是需要计算出来的。为了计算历史风险出现概率,这里把历史风险概率的计算定义成“相同或相似条件下的多个样本案例中,某种风险发生的几率”。这里加入“相似条件下案例”是因为在历史数据中找到多个完全相同条件的案例是很困难的。“相同或相似条件”实际上是指“在相关项目指标相同或相似的条件下”。为便于计算,这里设所有项目指标都是相关项目指标,从而仅针对项目种类进行分类,即可将数据库中的某类项目的数据带入本发明的软件项目风险评价装置中进行处理。
图6是准备风险模型训练数据的流程图。是对图1中的流程图中的步骤101~103的举例说明。
如图6所示,在将该风险发生概率定义为“在相同或相似条件下(具备相同或相近的项目指标),该风险出现的几率”(步骤800)时,统计单元203针对某种风险i,找出数据库中多个项目风险i发生的记录,采用这些项目中与风险i相关的m类指标数据建立m维向量X{x1,…,xm};由于每个项目都有多组(风险记录,指标)数据对,可以得到向量X的很多组实例,及每组实例对应的风险记录(步骤801);这里的“数据对”实际上是指某项目某天风险发生的状况和当天的相关项目指标,例如2011年9月1日,某项目中“交付延迟”风险出现1次,当天的相关指标为“缺陷密度=9.2K/LOC,需求变更范围=5个模块”,相应的数据对就是(风险记录=1,指标向量X=(9.2,5))(步骤801)。
分割单元201将m维向量看作m维空间,在每个维度上,将该维的值域均分为L段,也就是将整个m维空间均分为Lm个区间,将每区间的中心点记为{x1c,x2c,…,xmc}作为每个段的代表值(步骤802)。
接着,统计单元203将向量X的所有样本实例映射到m维空间中;在每个中心点为{x1c,x2c,…,xmc}的区间中,统计出落在该区间的样本数量,并可统计出发生了风险的样本数量。把(风险发生样本数)/(总样本数)作为该区间的风险概率(步骤803)。通过统计上述每个区间内的风险概率,可以得到一组(风险概率,指标向量)数据集,比如(15%,X1),(88%,X2),…,(75%,Xi),这里Xi是每个区间的中心点(步骤804)。
最后,计算单元204将上述数据集中的向量X值进行归一化,将向量X的每个值转化为[0,1]之间的值(步骤805)。这样,就得到了可用于风险评价模型训练的多组(风险概率,项目指标)记录。
在图6中,统计单元203先进行伴随风险发生的向量映射,分割单元202再进行值域分割,但是也可以先进行值域分割,再进行映射。也就是说,本发明的各步骤的执行顺序并不限于图6中所例举的实施方式。在不存在数据继承关系的情况下,各步骤的执行顺序是任意的。
此外,在上述例子中,以分割后的段(子值域)的中心点所对应的向量作为代表值,结合该子值域的风险概率,来进行归一化处理。但是,本发明中所取得代表值并不限于中心点。也可以是其他点的向量。例如将子值域中包含所有映射点的特定图形(例如圆形)的中心点的向量作为代表值。或者也可以根据子值域中的映射点分布的疏密程度来计算代表值,总之,代表值的定义方式并不仅限于这里所例举的具体事例,可以根据项目环境或者侧重点来设定子值域中的任意向量值作为代表值。
图7是说明风险模型训练数据的例图。在图7中示出了经过图6的各步骤所得到的训练数据的例子,图中表格的每一行记录了某个向量区间中心点项目指标的值,和该区间内某种风险的发生概率(风险概率,项目指标)。在图7的例中,各种项目指标已经进行了归一化。
结合图8说明风险概率的计算过程。图8是说明通过向量空间分割得到训练数据的例图。为了说明的方便,以简单的二维空间为例进行说明。在本发明的软件项目风险评价方法中,主要有以下特点。
(1)将与项目风险相关的m维项目指标,看作m维向量空间。在上图例中,把“缺陷密度(Bug density)”和“需求变更规模(Require change scale)”看作是与“交付延迟”风险相关的两种项目指标,因此就得到如图的二维向量空间,“缺陷密度”作为横坐标,“需求变更规模”作为纵坐标。
(2)将数据库中的所有指标样本及相关风险记录映射到向量空间中。有风险发生的指标样本用实心圆表示,无风险发生的指标样本用空心圆表示。在图8中,把数据库中2011/7/5日项目1的“缺陷密度”和“需求变更规模”指标映射成向量空间中的样本点(7,3),因为该样本伴随有“交付延迟”风险,因此标记为实心圆,同样2011/7/6日项目2的这两项指标映射成样本点(3,4),而且也是实心圆。相反,2011/7/3日的两项指标映射成样本点(3,1),但因为当天未出现“交付延迟”风险,因此该样本点为空心圆。
(3)按照各维度上样本的跨度,将向量空间等分为多份。本例中,将横轴、纵轴各划分3等分,整个二维空间划分为3×3等分,9个区间。关于边界值的划分原则,将边界值包含在靠前的较小区间中。例如,在图8中,横轴划分为[0,3]、(3,6]、(6,9]等3个区间,纵轴划分为[0,2]、(2,4]、(4,6]等3个区间。
(4)在划分后的每个区间内,统计落在该区间中的样本点总数,及出现了风险的样本点数目(实心圆数目)。“风险样本点数目/样本点总数”即作为该区间内的风险概率,并算出该区间的中心点(图中星型符)。将该区间的(风险概率,中心点向量)作为一组(风险概率,项目指标)数据。比如,图8中最左列第2个区间内,有2个样本点,其中1个样本点出现了风险,该区间的风险概率即为1/2=50%。根据横纵坐标,可算出该区间的中心点为(1.5,3),因此就得到一组(风险概率,项目指标)记录为[50%,(1.5,3)]。其中项目指标(1.5,3)为2维向量。同理,可在其他区间内获得图中的另外两组记录[0%,(1.5,1)]和[100%,(7.5,3)]。
(5)汇总所有区间的(风险概率,中心点向量)计算结果,即得到可用于风险评价模型训练的多组训练数据(风险概率,项目指标)记录。
上例中讲述了二维向量空间的划分。实际上,这种向量空间划分方法完全可以扩展到多维(维度>=3)。下面以四维向量(即4个指标与某风险相关)为例子来说明多维空间分割的例子。设四维向量为(x1,x2,x3,x4),向量空间分割及区间内风险概率计算步骤如下:
1)针对向量每一维,从其最大值到最小值之间等分为L段(比如5段)。比如,假设x1的值在[0,50]之间,则将其值域划分为x10,x11,…x14总共5段,x10段的值介于[0,10],x11段的值介于(10,20],而x14段的值介于(40,50]。
2)将每维的各段,与其他3维的各段,进行不重复的组合,形成L×L×L×L个组合。每个组合也就是一个区间,比如(x10,x21,x33,x42)。该区间的中心为各维在该段上的中心点,比如(x10c,x21c,x33c,x42c)。
3)在划分后的每个区间内,查找数据库中落在该区间内的样本点,并查出这些样本点中发生风险的样本点。比如数据库中落在(x10,x21,x33,x42)的样本点有10个,出现风险的样本点有4个。在本例中,就认为,在4类项目指标接近x10c,x21c,x33c,x42c(区间中心点)的情况下,风险概率为4/10=40%。
统计每个区间内的风险概率,并记录该区间的中心点值,即得到大量的(风险概率,x1,x2,x3,x4)数据组合。该5元组所形成的集合即可用于风险评价模型的训练。在这里,组合的数目其实就是空间划分区间的数目,比如L4个。区间划分越多,每个区间越小,区间内样本点距中心点距离越小,样本点条件就越近似,风险概率计算精度就越高,但计算量就越大。反之,区间划分越少,单个区间越大,落在单个区间内的样本点更多,但风险概率精度下降,计算量也下降。
通过以上的基于向量空间划分统计历史风险概率的方法,可以得到各种风险的(历史风险概率,相应项目指标)数据集。这些数据将用于各种风险的评价模型训练。模型训练可采用支持向量机(SVM)、神经网络、KNN(K-Nearest Neighbor algorithm:K近邻算法)等方法,本说明书以SVM算法为例说明利用训练数据建立预测模型的步骤。训练步骤参见附图9。首先,计算单元204为非线性SVM选定核函数,例如:
这里σ为常量(步骤1000)。然后,设置用于模型训练的方程组,例如:
这里c是常量,b和ai是方程中需要确定的参数(步骤1001)。将已准备好的(风险概率,指标向量)数据集作为方程中的(yi,xi)代入,解出方程参数b和ai的值(步骤1002)。当所有参数确定后,创建风险评价模型,比如:
这里,xi是相关的指标向量{x1,x2,…,xm)(1003)。至此,某种风险的概率评价模型已经得出。应当使用各种风险的相关数据为每种风险训练各自的概率评价模型。
此外,在得到项目风险评价模型之后,也可以在装置内部对新的软件项目进行风险评价。在这种情况下,本发明的软件项目风险评价装置还可以包括评价单元,通过评价单元利用计算单元204所计算出的项目风险评价模型对新的软件项目进行风险评价,得到预测风险概率。
图10是采用风险模型计算项目风险概率的流程图。如图10所示,在收集新项目中与风险i相关的m维向量指标,将其归一化,并创建m维向量X(步骤1100)之后,评价单元采用训练出的风险评价模型,代入新项目中的项目指标(m维向量X),来计算出预测的风险发生概率(步骤1101)。根据以上结果判断风险发生可能性的大小(步骤1102)。同时,可以将与新项目有关的各种数据保存进数据库,作为后续项目风险评价的参考数据。
并且,也可以是,每当新的软件项目完成之后,收集单元200收集该软件项目的与项目指标和项目风险有关的信息,作为历史数据,重新制作项目风险评价模型。这样,新的项目风险评价模型所依据的样本数量增加,从而结果更加准确。
根据本发明,通过这种将值域细化为子值域的方法,能够简单地找出项目风险出现的规律,发现新项目中存在的风险,减少对专家经验的依赖,提高风险发现的准确率,并且适用范围广泛。
(第二实施方式)
在第一实施方式中,设所有项目指标都是与风险相关的项目指标,来进行风险预测模型的建立。但是,由于设所有项目指标都是相关项目指标,忽略了项目种类对项目指标的影响,并且相关度高的项目指标与相关度低的项目指标混用,增大了模型训练的计算量,并在一定程度上有可能降低预测模型的准确度。因此,在第二实施方式中,增加对收集到的数据进行前期处理的过程,以相关度为依据,对项目指标的种类进行筛选,从而减少了模型训练的计算量,并提高预测模型的准确度。该第二实施方式在样本范围较大的情况下尤其有效。
第二实施方式中的装置主体构成和预测模式的建立方式与第一实施方式相类似,主要不同点在于,对收集单元200收集的数据进行相关度分析,仅将相关度指标在规定的相关度阈值以上的项目指标作为相关项目指标,重新用于分割步骤,即将多个项目指标限缩为相关项目指标,仅将相关项目指标用于预测模型的训练数据的生成。
图4是第二实施方式涉及的软件项目风险评价装置的框图。该软件项目风险评价装置包括:数据收集模块400、相关度分析模块402、样本数据分析模块403、模型回归分析模块404、以及风险概率评价模块405。
其中,数据收集模块400相当于收集单元,收集软件项目的历史数据和正在进行的新项目数据,并将数据保存到数据库401中。
相关度分析模块402是具有一维指标的分割功能、统计功能和相关度分析功能的模块,根据某类项目指标的每个子值域的中心值和伴随该子值域发生的某类项目风险次数,计算该某类项目风险与该某类项目指标之间的相关度指标,仅将相关度指标在规定的相关度阈值以上的项目指标作为相关项目指标,用于多维向量空间的值域分割。
样本数据分析模块403相当于将统计单元和分割单元的功能集成为一体的模块。用于根据相关度分析模块402的相关性分析结果,从数据库401中提取出与风险相关的项目指标,再依照第一实施方式的流程计算出(历史风险概率,相关项目指标)数据集。其中,第一实施方式中所说的图6的流程就是由样本数据分析模块403完成,因此省略详细的说明。
再次,为便于说明,将统计单元和分割单元都包括在相关度分析模块402和样本数据分析模块403来进行说明,但是也可以仅具有独立的统计单元、分割单元以及样本数据分析单元,来通过数据的传输进行本实施方式的相关度处理。在这种情况,统计单元和分割单元先将统计出来的、每个子值域中伴随某类项目风险发生的某类项目指标的出现次数发送给样本数据分析单元进行相关度分析,再接受相关度分析的结果,仅利用相关项目指标重新进行值域分割和统计处理。其中值域分割和统计处理的过程与第一实施方式相同,因此省略详细说明。
模型回归分析模块404相当于计算单元,基于样本数据分析模块403得到的相关项目指标和子值域的风险概率(子值域的代表值)构成的数据集,作为训练数据,训练出各种风险的风险评价模型。训练流程与第一实施方式中说明的图9相同,因此省略详细的说明。
风险概率评价模块405相当于评价单元,基于这些模型和新项目的相关指标,计算出新项目中各类风险的发生概率。
图3是第二实施方式涉及的软件项目风险评价方法的流程图。首先,数据收集模块400收集多种类型的项目指标,并记录出现的项目风险,将收集到的项目指标、风险保存到数据库401中(步骤300)。
然后,相关度分析模块402分析项目指标与项目风险之间的相关度,样本数据分析模块403和模型回归分析模块404创建项目风险概率的评价模型,该模型能够量化表示项目风险与指标之间的关系(步骤301),具体的相关度分析过程在后面详细叙述。
在确定风险评价模型后,风险概率评价模块405收集新项目的项目指标,采用这些项目指标以及风险概率模型计算各种风险的发生概率(步骤302)。
至此,利用本发明的软件项目风险评价装置,项目管理者可以根据得出的各种风险发生概率进行风险的判断和预防。
还可以通过数据收集模块400将新项目的项目指标和实际风险发生记录保存到数据库,根据需要,采用更新后的数据更新风险概率模型(步骤303)。这相当于对新项目的数据加以利用,再应用于未来项目的风险评价。
以下对第二实施方式中涉及的相关度分析进行详细说明。
在训练出用户专属的风险评价模型之前,首先要找出模型中的影响因子,也就是找出跟风险相关的项目指标。这个确定项目指标与风险相关度的过程在附图11中进行了说明。
相关度分析模块402执行图11中示出的流程。如图11所示,为了确定项目指标与风险的相关度,需要对项目指标和风险进行逐对分析。首先,选择一对风险Ri和项目指标Mj(步骤600),对其相关度进行分析。将项目指标Mj的值域均分为L个区间,将每个区间的中点记为Vm,将每个区间的上下限记为Vd,Vu(步骤601)。统计指标Mj位于每个区间(Vd,Vu)时风险发生的次数(步骤602)。根据上述统计结果,得出L组(风险次数,Mj)数据对(步骤603),并采用
等算法(也可以采用净相关分析算法来消除同类指标的重复性影响),计算风险出现次数和项目指标Mj之间的相关度值Wj(步骤604)。这里采用Pearson模型计算的结果是位于[-1,1]之间的值。然后判断|Wj|是否大于阈值Cr,Cr是一个阈值常量(步骤605)。如果大于阈值Cr,说明风险Ri和指标Mj之间有显著的关联(步骤606);反之,则说明风险Ri和指标Mj之间的关联可以忽略(步骤607)。继续分析其他项目风险和指标之间的相关度,直到分析完所有的风险和指标组合(步骤608)。通过这一分析过程,可以找出跟每种项目风险相关联的几种项目指标,这些指标将成为相应风险评价模型的影响因子。
这里,一对风险Ri和项目指标Mj进行处理,在一维上针对某一种项目指标进行分割,该处理也可以由分割单元完成,或者将分割单元与统计单元的部分功能并入相关度分析单元中进行。但是分割与统计的方法与第一实施方式中正式进行训练数据提取中的过程类似,所不同的在于相关度分析是一维,而正式的训练数据提取流程中是m维的向量空间。
并且,为了进行相关度分析而进行的值域分割的疏密程度可以与正式的训练数据提取流程中进行的值域分割的疏密程度相同,也可以不同。
图12是分析项目风险和项目指标之间的相关度的实例图。如图12所示,选定一对风险i和项目指标Mj后,将项目指标Mj的值域均分为L个区间,将每个区间的中点记为Vm,将每个区间的上下限记为Vd,Vu。Mj本身是一条变化的曲线,其值域也就是最大值和最小值之间的范围。统计指标Mj位于每个区间(Vd,Vu)时风险发生的次数,该区间的中间值为Vm。每个区间都可以得到这两个值,因此,总共可以得到L个“风险i发生次数和项目指标Mj”的数据对。例如“交付延迟”风险出现次数和“缺陷密度”指标形成的数据对。接下来,采用Pearson模型计算风险i和Metrics j的相关度。这里,E是风险i出现次数或指标Mj的期望值。根据相关度阈值确定风险i和Mj之间的相关度是否足够显著。
根据第一实施方式的相关度分析,提高了项目指标整体上与风险的相关度,因此能够是软件项目风险评价装置的评价结果更加准确。
(第一变形例)
以上说明了本发明涉及的软件项目风险评价方法及装置的基本结构和主要流程,但是本发明并不仅限于上述实施方式,还可以在主框架的基础上进行各种变形和优化,这些都包括在本发明的范围内。以下针对几个重要的变形例进行详细的说明。
首先,本发明中需要创建各种风险的概率评价模型。为了验证这些风险评价模型的准确度,本发明的软件项目风险评价装置还可以包括验证单元,该验证单元将历史数据中的一部分数据作为验证数据,代入项目风险评价模型来得到验证用预测风险概率,并计算该验证数据的预测风险概率与真实历史风险概率之差相对于真实风险概率的百分比,在上述百分比大于规定验证阈值的情况下,不使用该项目风险评价模型进行风险评价。
图13是说明利用验证数据训练风险评价模型的流程图。如图13所示,首先,将最初收集到的历史数据或者进过相关度分析而具有显著相关性的项目风险和指标数据按照项目划分为两组,一组用于模型训练,一组用于模型验证(步骤700)。
以上划分可以项目为依据进行划分,例如将7成历史数据作为训练数据,其余3成历史数据作为验证数据。建立用于模型训练的样本,样本包括历史风险概率和相应的项目指标数据(步骤701)。
接下来,采用以上第一、第二实施方式中说明的方法提取训练数据,并采用SVM等回归算法训练出每种风险各自的评价模型(步骤702)。
最后,采用预先保留的验证数据代入到这些风险评价模型,评价风险评价模型(步骤703),来测试训练出的模型精度是否可接受。
具体来说,根据训练数据中的历史统计,计算出验证数据的真实风险概率,再将训练数据的项目指标分别代入风险评价模型,得到风险概率预测结果;将预测结果和真实风险概率进行比较。如果两者的标准差大于真实风险概率的某个百分比阈值(比如大于真实风险的20%),则认为该模型精确度不足,予以放弃;反之,则接受该模型为新的风险评价模型。
通过上述验证步骤,能够找到准确度较大的风险概率模型加以使用,从而提高软件项目风险评价装置的精度。
(第二变形例)
在以上提及的历史风险概率统计方法中,向量空间划分扮演着重要角色。但如何防止空间划分过密或过疏是一个问题。因此,分割单元也可以值域分割时预先进行空间划分疏密的判断,确定最优的分割方式。
图14说明了一种控制向量空间划分数量的机制,可以控制向量空间划分过密或过疏。首先分割单元202选定一种风险Ri和相关的m维指标向量X(步骤900),进行试划分,将向量X的每维Xj值域均分为10段。划分线相互交织,从而在m维向量空间中形成10m个区间(步骤901)。
接着,将所有风险样本总数记为Nt,将风险样本数目最多的空间中的风险样本数目记为Nm(步骤902)。判断Nm是否小于(Nt/100),在Nm小于(Nt/100)时,判断为区间过多,划分过分密集(步骤903)。流程进入步骤904。
在步骤904,将每维上的划分段数每次减少10%,重新进行判断,直至上述不等式不成立。
如果在步骤903为否定,则进入步骤905。判断是否Nm是否大于(Nt/2)(步骤905)。在肯定的情况下,判断为区间过少,划分过分稀疏,流程进入步骤906。将每维上的划分段数每次增加10%后,重新进行判断,直至上述不等式不成立。
如果在步骤905为否定,则进入步骤907。经过以上调整,能够得到不是过分密集或过分稀疏的向量空间划分方式。
上述递进增减的百分比并不限于10%,可以根据设备的计算能够进行调整。由此,能够确定向量空间最佳的分割距离。
(第三变形例)
在上述第二实施方式中,对项目风险与项目指标之间的相关度进行评价,确定相关度高于一定阈值的项目指标进行风险评价。但是,随着环境的变化与发展,就是是相同的项目风险和项目指标,项目风险与项目指标之间的相关度也是在不断变化过程中。因此,相关度分析单元也可以定期进行相关度阈值的修正,使相关度阈值更加接近实际情况。
在本变形例中,相关度分析单元每一定时期将相对某类项目风险而放弃的项目指标重新用于评价模型的建立,来建立临时评价模型,并且将利用临时评价模型得到的风险评价结果与利用原评价模型得到的风险评价结果相比较,在临时评价模型得到的风险评价结果比原评价模型得到的风险评价结果更加接近历史风险概率时,将规定的相关度阈值调整为该放弃的项目指标所对应的相关度。
图15是调整相关度阈值的流程图。如图15所示,可以根据风险评价模型的精度对指标相关度阈值进行修正。主要构思在于根据调整相关指标后评价精度是否增加来判断阈值调整的必要性。
首先,对风险i,计算所有项目指标与该风险的相关度,按绝对值大小排序,以默认阈值t为界限将所有项目指标分为两组(步骤1200)。
根据默认的相关度阈值进行风险相关指标的选取,基于指标集(x1,…,xm),完成标准模型的训练(步骤1201)。
然后,根据相关度由大到小顺序,把最初所放弃的指标xm+1添加进有效范围,基于扩展指标集(x1,…,xm,xm+1),重新训练模型(步骤1202)。
比较新模型与标准模型的精度(步骤1203)。精度比较可以基于验证数据进行。首先根据历史数据,计算出验证数据的真实风险概率(例如通过图1的步骤101、102求得);然后将验证数据的各种项目指标,再分别代入新模型和标准模型,分别得出风险概率预测结果;将两种预测结果跟真实风险概率进行比较,看哪个更接近真实概率。如果存在多种风险的评价模型或多个项目的验证数据,在比较新模型和标准模型准确程度时,根据预测结果和真实概率的方差或标准差进行。
如果新模型的精度更高,则将相关度阈值修正为指标xm+1的相关度,并用新模型替换标准模型(步骤1205),再继续尝试将下一个放弃的相关度指标扩展进指标集(步骤1206);如果新模型精度更低,说明放弃指标xm+1是合理的,相关度阈值和标准模型不变(步骤1204)。
应当注意的是,增加相关度阈值修正步骤,会有助于提高风险评价精度,但会增大装置的计算量,特别是项目指标较多的情况下。这是因为每次模型训练计算量都较大,目前的阈值修正策略是以多次重新训练模型为前提。在实际情况下,出于计算量大的考虑,最好限制与风险相关的指标数目。
综上所述,本发明能够应用到各种领域的软件项目风险评价中,更好地帮助项目管理者发现软件项目中的各种风险。采用本发明的建模方法及装置能够有效利用历史数据,找出项目风险出现的规律,发现新项目中存在的风险,减少对专家经验的依赖,提高风险发现的准确率,并且适用范围广泛。

Claims (16)

1.一种软件项目风险评价方法,其特征在于,
包括:
收集步骤,收集多个样本的关于项目指标和项目风险的历史数据;
分割步骤,将上述项目指标所映射的值域分割为多个,针对每个分割后的子值域取代表值,设相对于某类项目风险的项目指标的种类数量为m时,上述值域是m维向量空间,其中,m是大于0的整数;
统计步骤,根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率;
计算步骤,根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型;以及
评价步骤,利用上述计算步骤中计算出的项目风险评价模型对新的软件项目进行风险评价,得到预测风险概率。
2.根据权利要求1所述的软件项目风险评价方法,其特征在于,
在上述分割步骤中,将映射到某个子值域中的样本数量与规定的数量阈值相比较,根据比较结果调整分割的子值域的大小。
3.根据权利要求1所述的软件项目风险评价方法,其特征在于,
还包括验证步骤,将历史数据中的一部分数据作为验证数据,代入项目风险评价模型来得到验证用预测风险概率,并计算该验证用预测风险概率与验证数据的历史风险概率之差相对于历史风险概率的百分比,在上述百分比大于规定验证阈值的情况下,不使用该项目风险评价模型进行风险评价。
4.根据权利要求1所述的软件项目风险评价方法,其特征在于,
还包括反馈步骤,每当新的软件项目完成之后,收集该软件项目的与项目指标和项目风险有关的信息反馈给上述收集步骤,作为历史数据,重新制作项目风险评价模型。
5.根据权利要求1所述的软件项目风险评价方法,其特征在于,
在上述分割步骤中,取每个子值域的中心值作为该子值域的代表值。
6.根据权利要求1所述的软件项目风险评价方法,其特征在于,
还包括相关度分析步骤,根据在上述统计步骤统计出来的、每个子值域中伴随某类项目风险发生的某类项目指标的出现次数,计算该某类项目风险与该某类项目指标之间的相关度指标,仅将相关度指标在规定的相关度阈值以上的项目指标作为相关项目指标用于分割步骤,
在上述分割步骤中,仅将上述相关项目指标所映射的值域作为m维向量空间进行分割。
7.根据权利要求6所述的软件项目风险评价方法,其特征在于,
在上述相关度分析步骤中,每一定时期将相对某类项目风险而放弃的项目指标重新用于评价模型的建立,来建立临时评价模型,并且比较将历史数据分别代入临时评价模型和原评价模型而得到的风险评价结果,在作为临时评价模型的风险评价结果的预测风险概率比作为原评价模型的风险评价结果的预测风险概率更加接近历史风险概率时,将规定的相关度阈值调整为该放弃的项目指标所对应的相关度。
8.根据权利要求1所述的软件项目风险评价方法,其特征在于,
在上述计算步骤中,利用支持向量机、神经网络或K近邻算法KNN,对训练数据进行建模处理,来制作项目风险评价模型。
9.一种软件项目风险评价装置,其特征在于,
包括:
收集单元,收集多个样本的关于项目指标和项目风险的历史数据;
分割单元,将上述项目指标所映射的值域分割为多个,针对每个分割后的子值域取代表值,设相对于某类项目风险的项目指标的种类数量为m时,上述值域是m维向量空间,其中,m是大于0的整数;
统计单元,根据收集到的历史数据,统计每个子值域中伴随某类项目风险发生的项目指标映射点的数量相对于映射到该子值域中的所有项目指标映射点的数量的比值,作为该类项目风险出现的风险概率;
计算单元,根据上述代表值与统计后的上述风险概率,进行归一化处理,作为训练数据,制作项目风险评价模型;以及
评价单元,利用上述计算单元所计算出的项目风险评价模型对新的软件项目进行风险评价,得到预测风险概率。
10.根据权利要求9所述的软件项目风险评价装置,其特征在于,
上述分割单元将映射到某个子值域中的样本数量与规定的数量阈值相比较,根据比较结果调整分割的子值域的大小。
11.根据权利要求9所述的软件项目风险评价装置,其特征在于,
还包括验证单元,将历史数据中的一部分数据作为验证数据,代入项目风险评价模型来得到验证用预测风险概率,并计算该验证用预测风险概率与验证数据的历史风险概率之差相对于历史风险概率的百分比,在上述百分比大于规定验证阈值的情况下,不使用该项目风险评价模型进行风险评价。
12.根据权利要求9所述的软件项目风险评价装置,其特征在于,
每当新的软件项目完成之后,上述收集单元收集该软件项目的与项目指标和项目风险有关的信息,作为历史数据,重新制作项目风险评价模型。
13.根据权利要求9所述的软件项目风险评价装置,其特征在于,
上述分割单元取每个子值域的中心值作为该子值域的代表值。
14.根据权利要求9所述的软件项目风险评价装置,其特征在于,
还包括相关度分析单元,上述相关度分析单元根据上述统计单元统计出来的、每个子值域中伴随某类项目风险发生的某类项目指标的出现次数,计算该某类项目风险与该某类项目指标之间的相关度指标,仅将相关度指标在规定的相关度阈值以上的项目指标作为相关项目指标,
上述分割单元仅将上述相关项目指标所映射的值域作为m维向量空间进行分割。
15.根据权利要求14所述的软件项目风险评价装置,其特征在于,
上述相关度分析单元每一定时期将相对某类项目风险而放弃的项目指标重新用于评价模型的建立,来建立临时评价模型,并且将利用临时评价模型得到的风险评价结果与利用原评价模型得到的风险评价结果相比较,在临时评价模型得到的风险评价结果比原评价模型得到的风险评价结果更加接近历史风险概率时,将规定的相关度阈值调整为该放弃的项目指标所对应的相关度。
16.根据权利要求9所述的软件项目风险评价装置,其特征在于,
上述计算单元利用支持向量机、神经网络或K近邻算法KNN,对训练数据进行建模处理,来制作项目风险评价模型。
CN201210009752.5A 2012-01-13 2012-01-13 软件项目风险评价方法及装置 Expired - Fee Related CN103208039B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210009752.5A CN103208039B (zh) 2012-01-13 2012-01-13 软件项目风险评价方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210009752.5A CN103208039B (zh) 2012-01-13 2012-01-13 软件项目风险评价方法及装置

Publications (2)

Publication Number Publication Date
CN103208039A CN103208039A (zh) 2013-07-17
CN103208039B true CN103208039B (zh) 2017-05-03

Family

ID=48755256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210009752.5A Expired - Fee Related CN103208039B (zh) 2012-01-13 2012-01-13 软件项目风险评价方法及装置

Country Status (1)

Country Link
CN (1) CN103208039B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105721410B (zh) * 2014-12-05 2020-05-01 北京奇虎科技有限公司 获取网络安全状况的方法与装置
CN107292463A (zh) * 2016-03-30 2017-10-24 阿里巴巴集团控股有限公司 一种对应用程序进行项目评估的方法及***
CN106600007A (zh) * 2016-11-29 2017-04-26 上海亿账通互联网科技有限公司 活动质量评估方法及装置
CN106874933A (zh) * 2016-12-30 2017-06-20 平安科技(深圳)有限公司 基于数据挖掘的建模方法及装置
CN108449307B (zh) * 2017-02-16 2020-12-29 上海行邑信息科技有限公司 一种用于识别风险设备的方法
CN107480435B (zh) * 2017-07-31 2020-12-08 广东精点数据科技股份有限公司 一种应用于临床数据的自动搜索机器学习***及方法
CN109376929B (zh) * 2018-10-24 2021-04-23 北京星选科技有限公司 配送参数的确定方法、确定装置、存储介质和电子设备
CN109816221B (zh) * 2019-01-07 2024-01-02 平安科技(深圳)有限公司 项目风险决策方法、装置、计算机设备和存储介质
CN109978330A (zh) * 2019-02-20 2019-07-05 华电电力科学研究院有限公司 一种部门安全管理水平衡量***
CN110399302A (zh) * 2019-07-26 2019-11-01 中国工商银行股份有限公司 软件测试项目的风险识别方法、装置、电子设备和介质
CN111143212B (zh) * 2019-12-24 2023-06-23 中国航空工业集团公司西安飞机设计研究所 一种模块集成式软件架构下的功能逻辑函数库验证方法
CN112363928B (zh) * 2020-11-10 2023-08-22 网易(杭州)网络有限公司 测试用例的处理方法、装置、处理器及电子装置
CN112379913B (zh) * 2020-11-20 2022-01-07 上海复深蓝软件股份有限公司 基于风险识别的软件优化方法、装置、设备及存储介质
CN113297333A (zh) * 2021-03-17 2021-08-24 无锡极数宝大数据科技有限公司 数据处理方法、装置、服务器及存储介质
CN112882959B (zh) * 2021-03-30 2024-05-17 中信银行股份有限公司 一种项目风险判断方法、装置、设备及可读存储介质
CN113296836B (zh) * 2021-06-08 2022-07-22 北京百度网讯科技有限公司 训练模型的方法、测试方法、装置、电子设备及存储介质
CN114742351A (zh) * 2022-03-09 2022-07-12 中国国际金融股份有限公司 一种项目风险预测方法、模块及计算设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7669180B2 (en) * 2004-06-18 2010-02-23 International Business Machines Corporation Method and apparatus for automated risk assessment in software projects
SG159530A1 (en) * 2005-02-11 2010-03-30 Volt Inf Sciences Inc Project work change in plan/scope administrative and business information synergy system and method
CN101339596A (zh) * 2008-08-26 2009-01-07 腾讯科技(深圳)有限公司 一种对计算机软件***进行保护的方法和装置
CN101826202A (zh) * 2009-08-26 2010-09-08 张艳红 项目管理风险破线后补丁空间理论体系、模型与实现

Also Published As

Publication number Publication date
CN103208039A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
CN103208039B (zh) 软件项目风险评价方法及装置
JP7090936B2 (ja) Esg基盤の企業評価遂行装置及びその作動方法
Hurst et al. Size-specific tree mortality varies with neighbourhood crowding and disturbance in a montane Nothofagus forest
Wang et al. Compositional vector space models for improved bug localization
US8838789B2 (en) Monitoring device and a server
US9633403B2 (en) Managing sustainable intellectual property portfolio of an enterprise
CN108197737A (zh) 一种建立医保住院费用预测模型的方法及***
CN110689368B (zh) 一种移动应用内广告点击率预测***设计方法
CN106815652A (zh) 一种基于大数据相关性分析的配电网供电可靠性预测方法
CN110225055A (zh) 一种基于knn半监督学习模型的网络流量异常检测方法与***
CN113221960B (zh) 一种高质量漏洞数据收集模型的构建方法及收集方法
Ek et al. Development and testing of regeneration imputation models for forests in Minnesota
CN109471934B (zh) 基于互联网的金融风险线索发掘方法
Herraiz et al. Impact of installation counts on perceived quality: A case study on debian
CN114548494A (zh) 一种可视化造价数据预测智能分析***
CN113420946A (zh) 一种新闻媒体的评价方法
CN111738610A (zh) 一种基于舆情数据的企业流失性风险预警***和方法
Theron The use of data mining for predicting injuries in professional football players
CN115630732A (zh) 一种面向城市运营的企业迁移大数据监测预警方法及装置
Cao Design and optimization of a decision support system for sports training based on data mining technology
Benner-Wickner et al. Process mining for knowledge-intensive business processes
CN109690585A (zh) 信息处理装置、信息处理方法及信息处理程序
Luo Progress indication for machine learning model building: A feasibility demonstration
Bargh et al. Dynamic data quality management framework using issue tracking systems
CN116012143B (zh) 一种分箱回归下的变量选择及参数估计方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170503

Termination date: 20200113

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