一种软件需求分析量化方法及系统转让专利

申请号 : CN201310566545.4

文献号 : CN103577195B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董乔陈斌季文翀杨光

申请人 : 中国联合网络通信集团有限公司联通系统集成有限公司

摘要 :

一种软件需求分析量化方法及系统,包括:样本获取模块以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定;分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器;分类模块在确定软件需求划分成的基本过程的各项特征属性取值后,利用所述分类器进行分类,得到相应的输出类别即开发时间。本发明利用历史数据生成分类器,并引入功能点所属模块类型的特征,可以更为准确地估算软件开发时间,对量化软件开发过程,控制软件生命周期有良好效果。

权利要求 :

1.一种软件需求分析量化方法,包括:

以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性,其中,所述所属模块属性根据软件需求所属行业的业务功能划分确定;

利用获取的样本作为训练样本训练分类器模型,生成分类器;

确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。

2.如权利要求1所述的方法,其特征在于:

所述分类器为朴素贝叶斯分类器;

所述利用获取的样本作为训练样本训练分类器模型,生成分类器,包括:计算出每个输出类别在训练样本中出现的概率,以及对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。

3.如权利要求2所述的方法,其特征在于:

若基本过程的信息域类型为内部逻辑文件ILF或外部接口文件EIF,功能复杂度属性用数据元素类型DET和记录元素类型RET的数量表征;若基本过程的信息域类型为外部输入EI、外部输出EO或外部查询EQ,功能复杂度属性用数据元素类型DET和引用文件类型FTR的数量表征;

所述人员属性包括开发人员的年龄、学历、性别、开发经验、每日或每周工作时间,及使用的语言中的一种或多种。

4.如权利要求1或2或3所述的方法,其特征在于:

所述待分类项的特征属性值根据历史数据中基本过程的特征属性的取值确定,包括:直接将历史数据中基本过程的特征属性的取值作为待分类项的特征属性值,或者,先将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。

5.如权利要求1或2或3所述的方法,其特征在于:

所述利用获取的样本作为训练样本训练分类器模型,生成分类器之后,还包括:利用获取的另一部分样本作为测试样本,使用生成的分类器对所述测试样本进行分类并判断分类结果的错误率是否超出设定的阈值,如不超过,则分类器可以使用,如超过,则对所述分类器进行优化处理,然后利用测试样本重新进行测试。

6.一种软件需求分析量化系统,其特征在于,包括:

样本获取模块,用于以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性,其中,所述所属模块属性根据软件需求所属行业的业务功能划分确定;

分类器生成模块,用于利用获取的样本作为训练样本训练分类器模型,生成分类器;

分类模块,用于确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。

7.如权利要求6所述的系统,其特征在于:

所述分类器生成模块生成的是朴素贝叶斯分类器;

所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器,包括:根据所述训练样本,计算出每个输出类别在训练样本中出现的概率,以及对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。

8.如权利要求7所述的系统,其特征在于:

所述样本获取模块获取分类器的样本时,若基本过程的信息域类型为内部逻辑文件ILF或外部接口文件EIF,功能复杂度属性用数据元素类型DET和记录元素类型RET的数量表征;若基本过程的信息域类型为外部输入EI、外部输出EO或外部查询EQ,功能复杂度属性用数据元素类型DET和引用文件类型FTR的数量表征;

所述人员属性包括开发人员的年龄、学历、性别、开发经验、每日或每周工作时间,及使用的语言中的一种或多种。

9.如权利要求6或7或8所述的系统,其特征在于:

所述样本获取模块在获取样本时,直接采用历史数据中基本过程的特征属性的取值作为待分类项的特征属性值,或者,先将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。

10.如权利要求6或7或8所述的系统,其特征在于:

所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器之后,还利用获取的另一部分样本作为测试样本,使用生成的分类器对所述测试样本进行分类并判断分类结果的错误率是否超出设定的阈值,如不超过,则分类器可以使用,如超过,则对所述分类器进行优化处理,然后利用测试样本重新进行测试。

说明书 :

一种软件需求分析量化方法及系统

技术领域

[0001] 本发明涉及软件需求分析量化,更具体地,涉及一种与功能点分析法(FPA:function point analysis)相关的需求分析量化方法及系统。

背景技术

[0002] FPA主要解决如何对软件规模进行度量的问题。FPA由IBM的工程师Allan Albrech于20世纪70年代提出,随后被国际功能点用户协会(IFPUG:The International Function Point Users’Group)提出的IFPUG方法继承。功能点估算(Function Point Estimation)是FPA演化而来的一种用来估算项目大小的技术。经由ISO组织,已经有多种功能点估算方法成为国际标准,如:Alain Abran等人提出的全面功能点法,英国软件度量协会提出的IFPUG功能点法,软件度量共同协会提出的COSMIC-FFP法等等。随着FPA的广泛使用,IFPUG成立了认证委员会,对FPA领域专业技术人员的水平进行认证。
[0003] 一个功能点用一定规模的系统数据(内部逻辑文件(ILF)和外部接口文件(EIF))及其处理(外部输入(EI)、外部输出(EO)和外部查询(EQ))来表征,它囊括了为实现特定功能所固有和必需的需求分析、系统设计、编写文档和测试用例、编码、测试、部署、调优、培训等工作。
[0004] 现有的功能点估算方法包括以下步骤:
[0005] a)界定的软件范围;
[0006] b)将软件分解为可以被单独估算的功能点;
[0007] c)根据功能点的类型、规模和复杂度计算原始功能点数;
[0008] 功能点可以分为两类:数据功能点和事务功能点。数据功能点的规模可以用ILF和EIF的数量来表征,事务功能点的规模可以用EI、EO和EQ的数量来表征。而ILF和EIF的复杂度根据其包含的数据元素类型(DET)和记录元素类型(RET)的数目查表得到,EI、EO和EQ的复杂度根据其包含的DET和引用文件类型(FTR)的数目查表得到。每一功能点的原始功能点数FP=Σ各个复杂度等级的信息域数量×加权值,其中,复杂度等级分为高、中、低三个等级,ILF、EIF、EI、EO和EQ构成5种信息域,某一复杂度等级的信息域的加权值可以查表得到。
[0009] d)确定调整因子;
[0010] e)根据公式计算用调整因子调整后的功能点数。
[0011] 然后,用计算出的总功能点数除以估算的每人每月可以完成的功能点数,即可得估算出软件开发时间。
[0012] 但上述估算方法在计算原始功能点数时,过多依靠专家的项目经验所得的表格,没有考虑到功能点所属模块类型的影响,也没有对历史数据进行适当和充分的利用,以此估算得到的软件开发时间不够准确。

发明内容

[0013] 本发明要解决的技术问题是提供一种更为准确的软件需求分析量化方法及系统。
[0014] 为了解决上述问题,本发明提供了一种软件需求分析量化方法,包括:
[0015] 以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性;
[0016] 利用获取的样本作为训练样本训练分类器模型,生成分类器;
[0017] 确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。
[0018] 较佳地,
[0019] 所述分类器为朴素贝叶斯分类器;
[0020] 所述利用获取的样本作为训练样本训练分类器模型,生成分类器,包括:计算出每个输出类别在训练样本中出现的概率,以及对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。
[0021] 较佳地,
[0022] 如基本过程的信息域类型为内部逻辑文件ILF或外部接口文件EIF,功能复杂度属性用数据元素类型DET和记录元素类型RET的数量表征;如基本过程的信息域类型为外部输入EI、外部输出EO或外部查询EQ,功能复杂度属性用数据元素类型DET和引用文件类型FTR的数量表征;
[0023] 所述所属模块属性根据软件需求所属行业的业务功能划分确定;
[0024] 所述人员属性包括如开发人员的年龄、学历、性别、开发经验、每日或每周工作时间,及使用的语言中的一种或多种。
[0025] 较佳地,
[0026] 所述待分类项的特征属性值根据历史数据中基本过程的特征属性的取值确定,包括:
[0027] 直接将历史数据中基本过程的特征属性的取值作为待分类项的特征属性值,或者,先将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。
[0028] 较佳地,
[0029] 所述利用获取的样本作为训练样本训练分类器模型,生成分类器之后,还包括:
[0030] 利用获取的另一部分样本作为测试样本,使用生成的分类器对所述测试样本进行分类并判断分类结果的错误率是否超出设定的阈值,如不超过,则分类器可以使用,如超过,则对所述分类器进行优化处理,然后利用测试样本重新进行测试。
[0031] 相应地,本发明提供了一种软件需求分析量化系统,包括:
[0032] 样本获取模块,用于以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性;
[0033] 分类器生成模块,用于利用获取的样本作为训练样本训练分类器模型,生成分类器;
[0034] 分类模块,用于确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。
[0035] 较佳地,
[0036] 所述分类器生成模块生成的是朴素贝叶斯分类器;
[0037] 所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器,包括:根据所述训练样本,计算出每个输出类别在训练样本中出现的概率,以及对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。
[0038] 较佳地,
[0039] 所述样本获取模块获取分类器的样本时,如基本过程的信息域类型为内部逻辑文件ILF或外部接口文件EIF,功能复杂度属性用数据元素类型DET和记录元素类型RET的数量表征;如基本过程的信息域类型为外部输入EI、外部输出EO或外部查询EQ,功能复杂度属性用数据元素类型DET和引用文件类型FTR的数量表征;
[0040] 所述所属模块属性根据软件需求所属行业业务功能的模块划分确定;
[0041] 所述人员属性包括如开发人员的年龄、学历、性别、开发经验、每日或每周工作时间,及使用的语言中的一种或多种。
[0042] 较佳地,
[0043] 所述样本获取模块在获取样本时,直接采用历史数据中基本过程的特征属性的取值作为待分类项的特征属性值,或者,先将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。
[0044] 较佳地,
[0045] 所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器之后,还利用获取的另一部分样本作为测试样本,使用生成的分类器对所述测试样本进行分类并判断分类结果的错误率是否超出设定的阈值,如不超过,则分类器可以使用,如超过,则对所述分类器进行优化处理,然后利用测试样本重新进行测试。
[0046] 上述方案引用数据挖掘技术的分类算法如朴素贝叶斯分类算法,利用历史数据生成分类器,并引入功能点所属模块类型的特征,可以更为准确地估算软件开发时间,对量化软件开发过程,控制软件生命周期有良好效果。在生成分类器的过程中,可以通过测试分类器输出数据并与历史数据做比较分析,修正选择的功能点输入特征,将量化的误差控制在一定范围内。

附图说明

[0047] 图1是本发明实施例方法的流程图;
[0048] 图2是本发明实施例系统的模块图。

具体实施方式

[0049] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0050] 朴素贝叶斯算法( Bayesian,NB)是基于贝叶斯定理与特征的条件独立假设的分类算法,能够将一个未知类别的样本归类到某个预先已知分类中,贝叶斯定理如下式:
[0051]
[0052] 其中,P(h)代表没有训练数据前假设h拥有的初始概率,即h的先验概率。P(D|h)代表假设h成立时D发生的概率。P(h|D)被称为h的后验概率,即给定训练数据D时h发生的概率。
[0053] 朴素贝叶斯算法的基本思想是对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。即对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
[0054] 朴素贝叶斯分类算法定义:
[0055] 设x={a1,a2,...am}是一个待分类项,每个a是x的一种特征属性,一种特征属性可以有多种取值,类别集合C={y1,y2,...yn},计算P(y1|x),P(y2|x),...P(yn|x),如果P(yk|x)=max{P(y1|x),P(y2|x),...P(yn|x)},则x∈yk。
[0056] 由贝叶斯定理:
[0057] 假设各个特征属性条件独立,由于P(x)对于分子都是常数,使P(yi|x)最大化,就是使分子最大化。则:
[0058]
[0059] 即P(x|yi)P(yi)取最大值的分类就是x所属分类。
[0060] 本实施例基于朴素贝叶斯分类算法量化需求功能点的方法如图1所示,包括:
[0061] 步骤110,以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性;
[0062] 基本过程(Elementary Process)是IFPUG算法中的重要概念,其定义是:将功能分解为最小活动单元,使其:1)对用户有意义,2)构成一个完整的事务,3)自包含,4)使应用的业务保持持续状态。IFPUG算法中,软件需求划分为数据功能和事务功能,数据功能可分解为ILF和EIF两种信息域类型的基本过程,事务功能可分解为EI、EO和EQ三种信息域类型的基本过程,而对于每个基本过程,只能是五种信息域类型中的一种。例如,对于事务功能:“2G3G融合业务客服阶段改造”,可以分解为“在用产品查询功能”、“用户订购产品”、“用户变更产品”和“用户取消产品”4个基本过程,其中,“在用产品查询功能”的信息域类型为EQ,其他3个基本过程的信息域类型均为EI。
[0063] 功能复杂度属性可以用FPA中的复杂度估算方法,但为了得到更准确的分类结果,本实施例采用以下方式:如基本过程的信息域类型为ILF或EIF,功能复杂度属性用DET和RET的数量表征,如基本过程的信息域类型为EI、EO和EQ,功能复杂度属性用DET和FTR的数量表征。
[0064] 所属模块属性根据软件所属行业的业务功能的模块划分确定,例如,对通信行业业务功能划分的模块可以为:营业受理模块、帐务处理模块、账务管理模块、计费处理模块、信用控制模块、统一接口模块、客户管理模块、渠道管理模块和统计报表模块或其中的一种或多种。本发明对业务功能的模块划分并不拘泥于任何一种固定的模式,可以根据实际需要灵活设置。
[0065] 人员属性是开发人员的相关属性,如开发人员的年龄、学历、性别、开发经验、每日或每周工作时间和使用的语言等属性中的一种或多种。
[0066] 本实施例的分类器采用朴素贝叶斯分类器,但也可以采用其他类型的分类器,只要可以根据特征属性值来得到开发时间即可。
[0067] 待分类项的特征属性值可以直接采用历史数据中基本过程的特征属性的取值,也可以进行一些转换。如,为了增强分类效果,减少分类和训练时间,可以将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。为了方便计算,待分类项中的特征属性值较佳用数值来表示,如特征属性值的表示形式为数值区间或汉字时,运算时可以改用一个相应的数值表示(并非改变特征属性值)。
[0068] 下面以某个基本过程为例,给出从历史数据获取待分类项物特征属性值的几个示例:
[0069] 例如,
[0070] 待分类项中,信息域类型用a1表示,5种信息域类型ILF、EIF、EI、EO和EQ的特征属性值分别用数值1,2,3,4,5表示。如该基本过程的信息域类型为ILF,则a1=1。
[0071] 待分类项中,DET和RET的数量分别用a2,a3表示,如该基本过程包含的DET=12,RET=26,则a2=12,a3=26,a2,a3可以设定上限值。在另一实施例中,可以将DET和RET的数量划分为多个区间,如划分为[1,3],[4,6],[7,12]……,各区间再用数值1,2,3,……表示。
[0072] 待分类项中,所属模块属性用a4表示,上述通信行业的14个模块的特征属性值分别用1,2,3,……14表示。如该基本过程属于营业受理模块,则a4=1。
[0073] 待分类项中,开发人员的年龄用a5表示,可以划分为多个年龄段:[16,20],[21,25],[26,30],...[46,50],分别用数值1,2,3,…,7表示。如该基本过程的开发人员年龄在
25岁,则a5=2。
[0074] 其他特征属性可以按照类似方法来确定其特征属性值,不再赘述。
[0075] 历史数据中记录基本过程的开发时间可以直接作为分类器的输出类别,也可以增大其粒度,原开发时间用每人天表示时,可以改用每人周表示,如将开发时间区间:[1,6],[7,13],[14,20],…,[210,216],[217,+∞]分别对应于[1,2,3,…,31]上的相应整数,则输出类别的集合C={y1,y2,...yn}={1,2,...31}。假定某基本过程的开发时间为210,单位为每人天,则输出类别可表示为30,单位为每人周。
[0076] 分类器的错误率随训练样本的增大而减小。
[0077] 步骤120,将获取的样本作为训练样本训练分类器模型,生成分类器;
[0078] 生成分类器时,需要根据训练样本计算出每个输出类别yi在训练样本中出现的概率P(yi),对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。
[0079] 例如,共选取30000条训练样本,其中,输出类别为2的有1000条,则P(yi=2)=1000/30000=3.3%,如输出类别为2的训练样本中,信息域类型取值a1=1的有200条,则P(a1=1|yi=
2)=200/1000=20%,信息域类型取值a1=2的有50条,则P(a1=2|yi=2)=50/1000=5%,。
[0080] 步骤130,确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。
[0081] 分类时,根据公式:
[0082]
[0083] 计算出P(x|yi)P(yi)取最大值的输出类别yi,就是x所属的输出类别。其中,a1,a2,...am的值根据基本过程的相应特征属性的取值确定,在步骤120中已有说明,这里不再赘述。
[0084] 得到针对各个基本过程估算的开发时间后,将软件需求包括的各基本过程的开发时间相加即可得到该软件需求的总的开发时间。当然还可以结合一些其他的因素再做一些调整。
[0085] 在另一实施例中,为了对估算的开发时间和实际开发时间之间的误差进行控制,在步骤120之后,可以测试分类器错误率,对分类器进行优化。以减小分类器的错误率,达到误差可控的效果。
[0086] 具体地,对于在步骤120中根据历史数据获取的样本,一部分用于步骤130的训练,一部分则用作测试样本,训练集和测试集的划分可以按照3:1进行,如以30000条样本为训练样本,可以10000条样本为测试样本。生成分类器后,利用测试样本的测试结果计算分类结果的错误率:该错误率等于测试结果中错误分类的样本数与测试样本总数的比值。如果错误率小于等于阈值,则表示分类效果是满意的,分类器可以使用;如果错误率超出设定的阈值(例如,错误率阈值设为d%,d=4),则可以通过增加用于训练的样本数,删除、改变、增加特征属性,改变特征属性取值的粒度等一种或多种方法对分类器进行优化,然后利用测试样本重新进行上述测试。
[0087] 上述测试分类器错误率,对分类器进行优化的过程还可以采用N折交叉校验的方式:把从历史数据获取的样本分成N份(N可以为3、5、10等),然后每次取其中的N-1份训练,1份测试,这样进行N次测试,把每次错误率结果相加再除以N,得到的平均错误率作为分类结果的错误率。如果该错误率小于等于阈值,则分类器可以使用;如果错误率超出设定的阈值,则对分类器进行优化,然后利用测试样本重新进行上述测试。
[0088] 相应地,本实施例的软件需求分析量化系统如图2所示,包括:
[0089] 样本获取模块10,用于以基本过程为分类对象,获取分类器的样本,每一样本中,待分类项的特征属性值根据历史数据中一基本过程的特征属性的取值确定,输出类别根据历史数据中该基本过程的开发时间确定,所述特征属性包括信息域类型、功能复杂度属性、所属模块属性和开发人员属性;
[0090] 分类器生成模块20,用于利用获取的样本作为训练样本训练分类器模型,生成分类器;
[0091] 分类模块30,用于确定软件需求划分成的基本过程的各项特征属性取值,利用所述分类器进行分类,得到相应的输出类别即开发时间。
[0092] 较佳地,所述分类器生成模块生成的是朴素贝叶斯分类器;所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器,包括:根据所述训练样本,计算出每个输出类别在训练样本中出现的概率,以及对于每一特征属性,计算出该特征属性的每一特征属性值在每一输出类别下的条件概率。
[0093] 较佳地,所述样本获取模块获取分类器的样本时,如基本过程的信息域类型为内部逻辑文件ILF或外部接口文件EIF,功能复杂度属性用数据元素类型DET和记录元素类型RET的数量表征;如基本过程的信息域类型为外部输入EI、外部输出EO或外部查询EQ,功能复杂度属性用数据元素类型DET和引用文件类型FTR的数量表征;所述所属模块属性根据软件需求所属行业业务功能的模块划分确定;所述人员属性包括如开发人员的年龄、学历、性别、开发经验、每日或每周工作时间,及使用的语言中的一种或多种。
[0094] 较佳地,所述样本获取模块在获取样本时,直接采用历史数据中基本过程的特征属性的取值作为待分类项的特征属性值,或者,先将历史数据中基本过程的特征属性的取值划分为多个数值区间,将每一个数值区间作为待分类项的一特征属性值。
[0095] 较佳地,所述分类器生成模块利用获取的样本作为训练样本训练分类器模型,生成分类器之后,还利用获取的另一部分样本作为测试样本,使用生成的分类器对所述测试样本进行分类并判断分类结果的错误率是否超出设定的阈值,如不超过,则分类器可以使用,如超过,则对所述分类器进行优化处理,然后利用测试样本重新进行测试。
[0096] 另模块的相关说明请参照流程中相应的步骤说明。
[0097] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0098] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。