软件开发项目工时估算方法和装置、计算机设备和介质与流程
1.本发明涉及计算机技术领域,特别是涉及一种软件开发项目工时估算方法和装置、计算机设备和介质。
背景技术:
2.项目工时估算是项目管理的核心任务之一,为项目可行性、预算、周期规划等提供依据。不同于传统制造类行业,软件开发类项目由于其各种不确定性,如客户需求的模糊性、开发工具的多样性(开发语言、环境、跨系统通信等)、软件测试的不可控性等,往往很难对项目工时进行有效的预估和管理。
3.相关技术中的软件开发项目工时评估方法一般是基于功能点度量方法(function point analysis),采用ifpug或nesma软件估算标准,由管理人员手动将项目需求说明书拆分成功能点,然后基于专家经验或历史数据,建立规则模型或神经网络模型,对项目的总工时进行预估。然而,该方法在项目推进的实际情况中,存在以下问题:1)同一类的功能点在历史项目开发过程中,会随着技术迭代逐渐模块化,从而降低其在今后的项目中所需的开发工时;而现有方法均无法处理上述情况,从而导致单点工时估算结果偏高;2)软件开发项目的需求有很高的几率会随着开发的推进而发生变化,导致功能点或其影响因子随之变化;若在项目工时统计时没有针对性的处理,很难将实际开发填报的工时与功能点匹配,从而影响训练数据的准确性;3)软件联调、测试等阶段,由于不可控性太高,导致debug或返工所需的工时波动极大,若简单按单功能点进行历史数据统计,误差过大,影响最终结果的准确性。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
5.为了解决上述问题至少之一,本发明第一方面提供一种软件开发项目工时估算方法,包括:
6.响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;
7.响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的开发功能点的功能工时;
8.响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。
9.进一步的,所述响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点进一步包括:
10.响应于用户的第二操作根据所述软件开发项目需求说明书的节点格式拆解至少两级的开发功能点。
11.进一步的,响应于用户的第五操作调整所述开发功能点。
12.进一步的,所述响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时进一步包括:
13.响应于用户的第六操作计算各最低等级的开发功能点的工时和各次低等级的开发功能点的基础工时;
14.响应于用户的第七操作分别设置各次低等级的开发功能点的调整因子、并根据各次低等级的开发功能点的调整因子按照预设的第一公式获取各次低等级的开发功能点的调整参数;
15.响应于用户的第八操作分别根据各次低等级的开发功能点的调整参数获取各次低等级的开发功能点的功能工时。
16.进一步的,所述响应于用户的第六操作计算各最低等级的开发功能点的工时和各次低等级的开发功能点的基础工时进一步包括:
17.根据预设置的开发工时表,所述开发工时表包括各最低等级的开发功能点和对应的工时点,响应于用户的第六操作从所述开发工时表中查各最低等级的开发功能点对应的工时点并利用预设的基础工时公式获取各次低等级的开发功能点的以获取基础工时。
18.进一步的,所述响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时进一步包括:
19.响应于用户的第九操作设置所述各次低等级的开发功能点的测试参数、并根据所述各次低等级的开发功能点的功能工时和测试参数获取各次低等级的开发功能点的测试工时;
20.响应于用户的第十操作设置所述各次低等级的开发功能点的联调参数、并根据所述各次低等级的开发功能点的测试工时和联调参数获取各次低等级的开发功能点的联调工时;
21.根据各次低等级的开发功能点的联调工时获取所述项目总工时。
22.进一步的,所述估算方法还包括:
23.响应于用户的第十一操作接收开发过程中已完成开发的次低等级的开发功能点的实际工时,根据预设置的第三公式获取对应次低等级的开发功能点的功能点校正因子,并根据所述校正因子更新所述调整参数;
24.响应于用户的第三操作重新获取各未开发的最低等级的开发功能点的工时,并获取各未开发的次低等级的开发功能点的功能工时;
25.根据已完成开发的次低等级的开发功能点的实际工时、以及各未开发的次低等级的开发功能点的功能工时,响应于用户的第四操作根据预设的测试参数和联调参数使用预设置的总工时估算模型更新所述项目总工时。
26.进一步的,所述第三公式为:
[0027][0028]
vaf
′
=vaf
×
γ
uf
[0029]
其中,γ
uf
为功能点校正因子,t
uf_real
为已完成开发的次低等级的开发功能点的实
际工时,t
basic
为所述次低等级的开发功能点的基础工时,step为调整步长,vaf为调整参数,vaf
′
为更新后的调整参数;
[0030]
所述调整步长为:
[0031]
step=min(ε1,ε2,
……
εf);
[0032][0033]
其中,ε为所述次低等级的开发功能点的偏移系数,t
uf_real
为次低等级的开发功能点的实际工时,t
uf
为次低等级的开发功能点的功能工时,t
basic
为次低等级的发功能点的基础工时。
[0034]
进一步的,所述估算方法还包括:
[0035]
响应于用户的第十二操作接收开发完结项目中各次低等级的开发功能点的实际测试工时、根据预设置的第四公式更新所述测试参数;
[0036]
响应于用户的第十三操作接收开发完结项目中各次低等级的开发功能点的实际联调工时、根据预设置的第五公式更新所述联调参数。
[0037]
进一步的,所述第四公式为:
[0038][0039]
tc
′
=tc
×
γ
test
[0040]
其中,γ
test
为测试校正因子,t
test
为测试总工时,n
bug
为所述次低等级的开发功能点的平均bug数量,t
bug
为解决单个bug的平均花费工时,t
uf_real
为所述次低等级的开发功能点的实际功能工时,step为调整步长,tc为测试参数,tc
′
为更新后的测试参数;
[0041]
和/或
[0042]
所述第五公式为:
[0043][0044]
ic
′
=ic
×
γ
unit
[0045]
其中,γ
unit
为联调校正因子,t
unittest
为联调总工时,t
ut_real_f
为所述次低等级的开发功能点的实际测试工时,step为调整步长,ic为联调参数,ic
′
为更新后的联调参数;
[0046]
本发明第二方面提供一种应用第一方面所述的估算方法的软件开发项目工时估算装置,包括拆解单元,单点工时估算单元和总工时估算单元,其中,
[0047]
所述拆解单元,被配置为响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;
[0048]
所述单点工时估算单元,被配置为响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时;
[0049]
所述总工时估算单元,被配置为响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。
[0050]
本发明第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序
被处理器执行时实现第一方面所述的估算方法。
[0051]
本发明第四方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的估算方法。
[0052]
本发明的有益效果如下:
[0053]
本发明针对目前现有的问题,制定一种软件开发项目工时估算方法和装置、计算机设备和介质,通过单点工时估算模型获取软件开发项目的各最低等级的开发功能点的工时和各次低等级的开发功能点的功能工时,在考虑测试参数和联调参数的情况下,通过总工时估算模型获取项目总工时,从而弥补了现有技术中存在的问题,有效提高软件开发项目工时估算的准确性,具有广泛的应用前景。
附图说明
[0054]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0055]
图1示出本发明的一个实施例所述估算方法的流程图;
[0056]
图2示出本发明的一个实施例所述估算装置的结构框图;
[0057]
图3示出本发明的另一个实施例所述的一种计算机设备的结构示意图。
具体实施方式
[0058]
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
[0059]
根据相关技术中存在的问题,本发明的一个实施例提供了一种软件开发项目用时估算方法,包括:响应于用户的第一操作导入软件开发项目文档,并响应于用户的第二操作按照预设任务拆解开发功能点;响应于用户的第三操作使用预设置的单点工时估算模型获取各第一的开发功能点的工时,并获取第二任务的开发功能点的功能工时;响应于用户的第四操作根据预设的用时参数、以及各第二任务的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。
[0060]
在本实施例中,预设任务为根据任务级别进行划分,例如以树形结构进行任务级别划分,从最高等级到最低等级进行划分,其中高等级包括低等级,层层拆解,将最基础的开发功能点作为最低等级的第一任务,将次低等级的开发功能点作为第二任务,通过单点工时估算模型获取软件开发项目的各第一任务的开发功能点的工时,并获取第二任务的功能工时,在考虑实际软件开发中测试和联调的用时参数的情况下,通过总工时估算模型获取项目总工时,从而实现对软件开发用时的估算,能够弥补相关技术中存在的问题,有效提高软件开发项目用时估算的准确性,具有广泛的应用前景。
[0061]
在一个具体的实施例中,如图2所示为本实施例应用的估算装置,包括拆解单元、单点工时估算单元和总工时估算单元,通过“拆解开发功能点—估算各开发功能点的单点
工时—估算开发软件项目的总工时”对软件项目的开发用时进行逐步估算以准确估算总工时。如图1所示,下面以开发智慧园区的安防监控系统的软件项目为例进行说明。
[0062]
第一步,导入软件开发项目需求说明书。
[0063]
在本实施例中,软件开发项目文档为软件开发项目需求说明书,将软件开发立项的软件开发项目需求说明书作为估算装置的输入导入估算装置,例如用户通过在估算装置的人机交互界面上传软件开发项目需求说明书。所述软件开发项目需求说明书包括软件开发的立项报告,包括不同级别的功能单元的划分,例如以树结构进行划分,具体的,本实施例的安防监控系统包括四个等级:第一等级为完整可独立运行的业务系统,实现形式可以是打包售卖的系统、或第三方接入的子系统等,在本实施例中为安防系统;第二等级为可复用的,具备一定业务逻辑的业务模块,各模块之间有标准的协议接口,为第一等级安防系统的子等级,例如包括车载模块、消防模块和门禁模块;第三等级为实现业务模块中某一业务组件或微服务的功能模块,为第二等级模块化功能的子等级,例如门禁模块的子等级包括人脸识别单元和扫码单元,即第二任务;第四等级为面向开发的、可量化的功能子模块,为第三等级功能模块的子等级,即第一任务,例如人脸识别单元的子等级包括前端功能、后端功能和数据库,前端功能包括前端逻辑、交互逻辑、涉及页面和报表等功能节点,后端功能包括后端算法、模型开发和训练,数据库包括人脸库的建立和定制指标。即响应于用户的第一操作导入软件开发项目需求说明书。
[0064]
第二步,根据项目需求说明书按照预设等级拆解开发功能点。
[0065]
在本实施例中,通过估算装置的拆解单元对项目需求说明书进行拆解,例如用户通过在估算装置的人机交互界面点击“拆解”按钮按照预设等级进行开发功能点拆解并输出具有至少两级开发功能点的功能点列表,具体的,根据项目需求说明书的格式进行拆解,例如根据项目需求说明书中设置的word文档的节点格式进行拆解,或者例如根据项目需求说明书中设置的关键字进行识别以实现开发功能点的拆解。即响应于用户的第二操作按照预设等级拆解开发功能点。
[0066]
为进一步提高拆解准确性,在一个可选的实施例中,响应于用户的第五操作调整所述开发功能点。
[0067]
在本实施例中,考虑到由估算装置的拆解单元对项目需求说明书的自动拆解可能存在不准确或遗漏的问题,用户可以通过手动操作对功能点列表进行修改和调整,有效提高拆解准确性。
[0068]
本实施例将功能点列表输入项目工时填报管理系统,以便实际开发工作中按正确的维度收集工时填报数据,并进行进一步的估算。
[0069]
第三步,使用单点工时估算模型获取各次低等级的开发功能点的功能工时。
[0070]
在本实施例中,根据功能点列表,利用单点工时估算模型分别获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时,例如对第四等级的各功能点进行工时估算,并获取第三等级的各功能点的功能工时。即响应于用户的第三操作使用预设置的单点工时估算模型获取各的最低等级的开发功能点工时,并获取次低等级的开发功能点的功能工时。具体包括以下子步骤:
[0071]
首先,分别计算各次低等级的开发功能点的基础工时。
[0072]
在本实施例中,根据预设置的开发工时表,所述开发工时表包括各最低等级的开
发功能点和对应的工时点,从所述开发工时表中查各最低等级的开发功能点对应的工时点并利用预设的基础工时公式获取各次低等级的开发功能点的基础工时。
[0073]
具体的,仍以安防监控系统为例进行说明,例如第三等级的人脸识别单元包括前端功能、后端功能和数据库,其中,前端功能包括的第四等级开发功能点为:10个前端页面,每个页面包括20张报表,每个页面包括10个业务逻辑以实现搜索和展示功能,每个页面包括5个表单,例如黑名单和白名单;后端功能包括的第四等级开发功能点为:后端算法业务逻辑开发、后端算法模型建立、后端算法模型训练;数据库包括的第四等级开发功能点为:库建立和库指标,例如包括5个指标。即人脸识别单元的包括的第四等级的开发功能点包括:10个前端页面、200张报表、100个业务逻辑、50个表单、后端算法业务逻辑开发、后端算法模型建立、后端算法模型训练、库建立和5个库指标。本领域技术人员应当理解,不同的第四等级开发功能点对应不同的开发工时,本实施例通过预设的开发工时表,包括软件开发过程中涉及的各第四等级开发功能点以及对应的单位开发工时,例如,一个页面的单位开发工时为1人天,一个报表的单位开发工时为0.1人天,一个业务逻辑的单位开发工时为0.1人天,一个表单的单位开发工时为0.5人天,后端算法业务逻辑开发的单位开发工时为0.5人天,后端算法模型建立的单位开发工时为1人天,后端算法模型训练的单位开发工时为1人10天,库建立的单位开发工时为0.2人天,库指标的单位开发工时为0.1人天。
[0074]
根据各第四等级开发功能点和对应的单位开发工时能够获得每个第四等级开发功能点的工时,并进一步获得各第三等级开发功能点的基础工时:
[0075][0076]
其中,f表示第三等级(例如人脸识别单元)开发涉及的各第四等级开发功能点,nf表示第四等级开发功能点,tf表示与各第四等级开发功能点对应的单位开发工时。
[0077]
其次,分别设置各第三等级开发功能点的调整因子、并根据调整因子计算各第三等级开发功能点的调整参数。
[0078]
在本实施例中,根据功能点估算法(function point analysis)的思路,设置各第三等级开发功能点的调整因子以对其进行调整。具体的,分别评定各影响因子对第三等级开发功能点的调整因子的影响程度(di),影响程度分为0-5级:即0-毫无影响、1-偶然影响、2-适度影响、3-一般影响、4-重要影响、5-强烈影响。本实施例的影响因子包括但不限于:1)数据通讯,指开发软件项目直接与处理器通讯的程度;2)分布式数据处理,指开发软件项目在内部组件之间的信息传递程度;3)性能,即吞吐量、处理时间等指标对开发的影响;4)大业务量配置,即计算机资源对开发软件项目开发的影响程度;5)事务处理率,即业务交易处理速度对系统设计、实施、安装和支持等的影响;6)在线数据输入,即数据通过交互的方式输入系统的程度;7)最终用户效率,即对开发软件项目的人文因素及使用的边界程度等的考虑程度;8)在线更新,即内部逻辑文件被在线更新的程度;9)复杂处理,即逻辑处理对开发软件项目开发的影响程度;10)可复用性,即开发软件项目系统中的应用和代码经过特殊设计、开发和支持,可以在其他应用系统中复用的程度;11)易安装性,即开发软件项目系统的转换和安装容易度对开发的影响程度;12)易操作性,即开发软件项目对运行的影响程度;13)多场地,即系统经特殊设计、开发可以在多个组织、多个地点应用的程度;14)支持变更,即开发软件项目在设计上考虑支持处理逻辑和数据结构变化的程度。分别按照各影响
因子对第三等级开发功能点的调整因子的影响程度(di)计算第三等级开发功能点的调整因子:
[0079]
vaf=0.01
×
∑di+0.65
[0080]
其中,∑di为14项影响因子的影响程度di的累加和,0.65为调整阈值。
[0081]
基于计算得到的调整因子,分别计算第三等级开发功能点的功能工时:
[0082]
t
uf
=t
basic
×
vaf
[0083]
其中,t
basic
为第三等级开发功能点的基础工时,vaf第三等级开发功能点的调整因子。
[0084]
第四步,使用总工时估算模型获取项目总工时。
[0085]
在本实施例中,考虑到软件项目开发过程中的测试和联调,将用时参数进一步细化为测试参数和联调参数,具体包括如下步骤:
[0086]
首先,设置所述各次低等级的开发功能点的测试参数、并根据所述各次低等级的开发功能点的功能工时和测试参数获取各次低等级的开发功能点的测试工时。
[0087]
在本实施例中,基于上述步骤获得的各第三等级开发功能点的功能工时,还考虑测试对软件项目开发的工时影响。具体的,对各第三等级的开发功能点的测试参数(tc)进行评估:1)当估算装置为首次使用,即没有项目经验的情况下,将tc预估一个常量作为初始值,例如1;2)当估算装置已经具有项目经验的情况下,即tc为经过项目经验迭代获取的估计值。
[0088]
此时,第三等级开发功能点的测试工时为:
[0089]
t
ut
=t
uf
×
tc
[0090]
其中,t
uf
为第三等级开发功能点的功能工时,tc为测试参数。
[0091]
其次,设置所述各次低等级的开发功能点的联调参数、并根据所述各次低等级的开发功能点的测试工时和联调参数获取各次低等级的开发功能点的联调工时。
[0092]
在本实施例中,基于上述步骤获得的考虑了测试影响的测试工时的情况下,还考虑联调对软件项目开发的工时影响。具体的,对各第三等级开发功能点之间的联调进行考虑并评估联调参数(ic),根据联调参数计算各第三等级开发功能点的联调工时:
[0093][0094]
其中,t
ut_f
为开发功能点f的功能工时,ic为联调工时,ic大于1。
[0095]
最后,根据各次低等级的开发功能点的联调工时获取所述项目总工时。
[0096]
在本实施例中,所述项目总工时为:
[0097][0098]
其中,t
unit
为第三等级开发功能点的联调工时,u包括软件开发项目所有第三等级开发功能点。
[0099]
即响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。
[0100]
至此,完成对软件开发项目的总工时的估算。本实施例通过单点工时估算模型获取软件开发项目的各最低等级的开发功能点的工时和各次低等级的开发功能点的功能工
时,在考虑测试参数和联调参数的情况下,通过总工时估算模型获取项目总工时,从而弥补了现有技术中存在的问题,有效提高软件开发项目工时估算的准确性,具有广泛的应用前景。
[0101]
考虑到进一步提高软件开发项目工时估算的准确性,在一个可选的实施例中,所述估算方法还包括:响应于用户的第十一操作接收开发过程中已完成开发的次低等级的开发功能点的实际工时,根据预设置的第三公式获取对应次低等级的开发功能点的功能点校正因子,并根据所述校正因子更新所述调整参数;响应于用户的第三操作重新获取各未开发的最低等级的开发功能点的工时,并获取各未开发的次低等级的开发功能点的功能工时;根据已完成开发的次低等级的开发功能点的实际工时、以及各未开发的次低等级的开发功能点的功能工时,响应于用户的第四操作根据预设的测试参数和联调参数使用预设置的总工时估算模型更新所述项目总工时。
[0102]
在本实施例中,通过已完成开发的第三等级开发功能点的实际工时修正功能点校正因子,并根据功能点校正因子修正调整参数,从而进一步估算未开发或未完成开发的第三等级开发功能点的功能工时,即通过实际工时修正未完成的第三等级开发功能点的估算工时,从而在软件开发项目开发过程中不断调整各第三等级开发功能点的的功能工时和总工时。
[0103]
具体步骤如下:
[0104]
首先,根据已完成开发的第三等级开发功能点的实际工时,通过预设置的第三公式获取对应第三等级开发功能点的功能点校正因子,并根据所述校正因子更新所述调整参数。
[0105]
在本实施例中,在实际开发过程中,将实际工时填入项目工时填报管理系统中,并利用实际工时实现对功能点校正因子的校正。其中,所述第三公式为:
[0106][0107]
vaf
′
=vaf
×
γ
uf
[0108]
其中,γ
uf
为功能点校正因子,t
uf_real
为已完成开发的第三等级开发功能点的实际工时,t
basic
为所述第三等级开发功能点的基础工时,step为调整步长,vaf为调整参数,vaf
′
为更新后的调整参数;
[0109]
所述调整步长为:
[0110]
step=min(ε1,ε2,
……
εf);
[0111][0112]
其中,εn为各第三等级开发功能点的偏移系数,t
uf_real
为第三等级开发功能点的实际工时,t
uf
为第三等级开发功能点的功能工时,t
basic
为第三等级的开发功能点的基础工时。
[0113]
在本实施例中,通过各第三等级开发功能点的实际工时、以及估算的功能工时和基础工时获取各第三等级开发功能点的偏移系数,并以各偏移系数的最小值作为调整步长,进一步调整功能点校正因子以更新调整参数,从而实现通过各第三等级开发功能点的实际工时迭代调整参数,以进一步修正估算工时,从而提高估算工时的准确性。
[0114]
其次,基于获取的调整参数,重新获取各未开发的第四等级开发功能点的工时,并获取各未开发的第三等级开发功能点的功能工时。本实施例的实施方式参见前述实施例,在此不再赘述。
[0115]
最后,根据已完成开发的第三等级开发功能点的实际工时、以及各未开发的第三等级开发功能点的功能工时,根据预设的测试参数和联调参数使用预设置的总工时估算模型更新所述项目总工时。本实施例的实施方式参见前述实施例,在此不再赘述。
[0116]
值得说明的是,本修正步骤还可以用于软件开发项目的需求发生变更以后,例如软件开发项目需求说明书更新后,通过上述步骤可以重新拆解开发功能点,并将已完成的第三等级开发功能点使用实际工时,并通过已完成的实际工时修正功能点校正因子,并估算未完成的第三等级开发功能点,从而进一步提高工时估算的准确性。
[0117]
在本实施例中,通过实际工时修正未完成的第三等级开发功能点的估算工时,从而在软件开发项目开发过程中不断调整各第三等级开发功能点的功能工时和总工时。
[0118]
值得说明的是,在软件开发项目完成后,使用上述步骤进一步迭代调整参数,从而进一步提高估算准确性。例如,使用软件开发项目结束后的各第三等级开发功能点的实际工时迭代单点工时估算模型,并利用实际总工时、实际测试工时和实际联调工时修正测试参数和联调参数,从而迭代总工时估算模型。
[0119]
具体包括:
[0120]
首先,接收开发完结项目中各次低等级的开发功能点的实际测试工时、根据预设置的第四公式更新所述测试参数。
[0121]
在本实施例中,基于完结项目的实际测试工时,统计所有历史工时数据中各第三等级开发功能点的测试bug数量以及花费工时,计算各第三等级开发功能点的平均bug数量n
bug
及解决单个bug的平均花费工时t
bug
。根据各第三等级开发功能点的测试总工时t
test
计算该功能点的测试校正因子,第四公式为:
[0122][0123]
tc
′
=tc
×
γ
test
[0124]
其中,γ
test
为测试校正因子,t
test
为测试总工时,n
bug
为所述第三等级开发功能点的平均bug数量,t
bug
为解决单个bug的平均花费工时,t
uf_real
为所述第三等级开发功能点的实际功能工时,step为调整步长,tc为测试参数,tc
′
为更新后的测试参数。
[0125]
在本实施例中,进一步通过各第三等级开发功能点的实际工时、以及估算的功能工时和基础工时获取的调整步长,并通过调整步长和实际完成的软件开发项目的实际测试总工时调整测试参数,从而实现对总工时估算模型的迭代,能够提高软件开发项目的工时估算的准确性。
[0126]
其次,接收开发完结项目中各第三等级开发功能点的实际联调工时、根据预设置的第五公式更新所述联调参数。
[0127]
在本实施例中,基于完结项目的实际联调工时,统计所有历史工时数据中各第三等级开发功能点的联调工时,计算各第三等级开发功能点的联调校正因子,第五公式为:
[0128]
[0129]
ic
′
=ic
×
γ
unit
[0130]
其中,γ
unit
为联调校正因子,t
unittest
为联调总工时,t
ut_real_f
为第三等级开发功能点的实际测试工时,step为调整步长,ic为联调参数,ic
′
为更新后的联调参数。
[0131]
在本实施例中,进一步通过各第三等级开发功能点的实际工时、以及估算的功能工时和基础工时获取的调整步长,并通过调整步长和实际完成的软件开发项目的实际联调总工时调整联调参数,从而实现对总工时估算模型的迭代,能够提高软件开发项目的工时估算的准确性。
[0132]
与上述实施例提供的软件开发项目工时估算方法相对应,本技术的一个实施例还提供一种实现上述软件开发项目工时估算方法的软件开发项目工时估算装置,由于本技术实施例提供的软件开发项目工时估算装置与上述几种实施例提供的软件开发项目工时估算方法相对应,因此在前实施方式也适用于本实施例提供的软件开发项目工时估算装置,在本实施例中不再详细描述。
[0133]
如图2所示,本技术的一个实施例还提供一种实现上述软件开发项目工时估算方法的软件开发项目工时估算装置,包括拆解单元,单点工时估算单元和总工时估算单元,其中,
[0134]
所述拆解单元,被配置为响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;
[0135]
所述单点工时估算单元,被配置为响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时;
[0136]
所述总工时估算单元,被配置为响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。
[0137]
本实施例的估算装置通过拆解单元实现对软件开发项目需求说明书的各开发功能点的拆解,并利用单点工时估算单元的单点工时估算模型获取软件开发项目的各最低等级的开发功能点的工时和各次低等级的开发功能点的功能工时,在考虑测试参数和联调参数的情况下,通过总工时估算单元的总工时估算模型获取项目总工时,从而弥补了现有技术中存在的问题,有效提高软件开发项目工时估算的准确性,具有广泛的应用前景。
[0138]
本发明的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述软件开发项目工时估算方法。
[0139]
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0140]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0141]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0142]
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0143]
如图3所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图3显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0144]
如图3所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0145]
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
[0146]
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0147]
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0148]
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常
执行本发明所描述的实施例中的功能和/或方法。
[0149]
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图3所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图3中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0150]
处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种软件开发项目工时估算方法。
[0151]
在本实施例中,处理器单元16与人机交互界面协同运行,例如处理器单元实现上述软件开发项目工时估算方法,具体的,通过例如显示器24显示的人机交互界面,处理器单元16响应于用户在人机交互界面呈现的“导入”按键的操作导入软件开发项目文档,例如上传文档上传;并响应于用户在人机交互界面呈现的“功能点拆解”按键的操作按照预设等级拆解开发功能点,例如处理器单元16根据软件开发项目文档中设置的文档节点格式进行拆解,或者例如根据软件开发项目文档中设置的关键字进行识别以实现开发功能点的拆解;然后,处理器单元16响应于用户在人机交互界面呈现的“单点工时估算”按键的操作利用单点工时估算模型获取各第一任务的开发功能点工时,并获取第二任务的开发功能点的功能工时;最后,处理器单元16响应于用户在人机交互界面呈现的“总工时估算”按键的操作,处理器单元16根据用时参数、以及各第二任务的开发功能点的功能工时使用总工时估算模型获取项目总工时。
[0152]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
技术特征:
1.一种软件开发项目工时估算方法,其特征在于,包括:响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时;响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。2.根据权利要求1所述的估算方法,其特征在于,所述响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点进一步包括:响应于用户的第二操作根据所述软件开发项目需求说明书的节点格式拆解至少两级的开发功能点;和/或响应于用户的第五操作调整所述开发功能点。3.根据权利要求1所述的估算方法,其特征在于,所述响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时进一步包括:响应于用户的第六操作计算各最低等级的开发功能点的工时和各次低等级的开发功能点的基础工时;响应于用户的第七操作分别设置各次低等级的开发功能点的调整因子、并根据各次低等级的开发功能点的调整因子按照预设的第一公式获取各次低等级的开发功能点的调整参数;响应于用户的第八操作分别根据各次低等级的开发功能点的调整参数获取各次低等级的开发功能点的功能工时。4.根据权利要求3所述的估算方法,其特征在于,所述响应于用户的第六操作计算各最低等级的开发功能点的工时和各次低等级的开发功能点的基础工时进一步包括:根据预设置的开发工时表,所述开发工时表包括各最低等级的开发功能点和对应的工时点,响应于用户的第六操作从所述开发工时表中查各最低等级的开发功能点对应的工时点并利用预设的基础工时公式获取各次低等级的开发功能点的基础工时。5.根据权利要求1所述的估算方法,其特征在于,所述响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时进一步包括:响应于用户的第九操作设置所述各次低等级的开发功能点的测试参数、并根据所述各次低等级的开发功能点的功能工时和测试参数获取各次低等级的开发功能点的测试工时;响应于用户的第十操作设置所述各次低等级的开发功能点的联调参数、并根据所述各次低等级的开发功能点的测试工时和联调参数获取各次低等级的开发功能点的联调工时;根据各次低等级的开发功能点的联调工时获取所述项目总工时。6.根据权利要求3所述的估算方法,其特征在于,所述估算方法还包括:响应于用户的第十一操作接收开发过程中已完成开发的次低等级的开发功能点的实
际工时根据预设置的第三公式获取对应次低等级的开发功能点的功能点校正因子,并根据所述校正因子更新所述调整参数;响应于用户的第三操作重新获取各未开发的最低等级的开发功能点的工时,并获取各未开发的次低等级的开发功能点的功能工时;根据已完成开发的次低等级的开发功能点的实际工时、以及各未开发的次低等级的开发功能点的功能工时,响应于用户的第四操作根据预设的测试参数和联调参数使用预设置的总工时估算模型更新所述项目总工时。7.根据权利要求6所述的估算方法,其特征在于,所述第三公式为:vaf
′
=vaf
×
γ
uf
其中,γ
uf
为功能点校正因子,t
uf_real
为已完成开发的次低等级的开发功能点的实际工时,t
basic
为所述次低等级的开发功能点的基础工时,step为调整步长,vaf为调整参数,vaf
′
为更新后的调整参数;所述调整步长为:step=min(ε1,ε2,
……
ε
f
);其中,ε为所述次低等级的开发功能点的偏移系数,t
uf_real
为次低等级的开发功能点的实际工时,t
uf
为次低等级的开发功能点的功能工时,t
basic
为次低等级的开发功能点的基础工时。8.根据权利要求1-7中任一项所述的估算方法,其特征在于,所述估算方法还包括:响应于用户的第十二操作接收开发完结项目中各次低等级的开发功能点的实际测试工时、根据预设置的第四公式更新所述测试参数;响应于用户的第十三操作接收开发完结项目中各次低等级的开发功能点的实际联调工时、根据预设置的第五公式更新所述联调参数。9.根据权利要求8所述的估算方法,其特征在于,所述第四公式为:tc
′
=tc
×
γ
test
其中,γ
test
为测试校正因子,t
test
为测试总工时,n
bug
为所述次低等级的开发功能点的平均bug数量,t
bug
为解决单个bug的平均花费工时,t
uf_real
为所述次低等级的开发功能点的实际功能工时,step为调整步长,tc为测试参数,tc
′
为更新后的测试参数;和/或所述第五公式为:ic
′
=ic
×
γ
unit
其中,γ
unit
为联调校正因子,t
unittest
为联调总工时,t
ut_real_f
为所述次低等级的开发功能点的实际测试工时,step为调整步长,ic为联调参数,ic
′
为更新后的联调参数。10.一种应用如权利要求1-9中任一项所述的估算方法的软件开发项目工时估算装置,其特征在于,包括拆解单元,单点工时估算单元和总工时估算单元,其中,所述拆解单元,被配置为响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;所述单点工时估算单元,被配置为响应于用户的第三操作使用预设置的单点工时估算模型获取各最低等级的开发功能点的工时,并获取次低等级的开发功能点的功能工时;所述总工时估算单元,被配置为响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述的估算方法。12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-9中任一项所述的估算方法。
技术总结
本发明公开了一种软件开发项目工时估算方法和装置、计算机设备和介质,其中一实施例的估算方法包括:响应于用户的第一操作导入软件开发项目需求说明书,并响应于用户的第二操作按照预设等级拆解开发功能点;响应于用户的第三操作使用预设置的单点工时估算模型获取各次低等级的开发功能点的功能工时;响应于用户的第四操作根据预设的测试参数和联调参数、以及各次低等级的开发功能点的功能工时使用预设置的总工时估算模型获取项目总工时。本发明提供的实施例通过单点工时估算模型获取软件开发项目的各次低等级的开发功能点的功能工时,在考虑测试参数和联调参数的情况下,通过总工时估算模型获取项目总工时,有效提高准确性。确性。确性。