一种软件开发效率的获取方法
技术领域
本发明涉及计算机软件技术领域,更具体地,涉及一种软件开发效率的获取方法。
背景技术
软件研发流程中,每个需求卡片都有多个环节需要流转,如需求、开发、测试、上线。如何正确、客观、高效评估这些过程的效率是每个研发人员非常关注的,比如,开发用时、测试用时、开发测试时间比等。
现有方案统计开发、测试时间及开发测试时间比时,普遍采用手工记录开发启动时刻、结束时刻及测试启动时刻、测试结束时刻等,然后手动计算出各环节的持续时间,根据各环节的持续时间获取软件开发效率。统计过程费时费力且容易造成数据不准确。因此,现有获取软件开发效率的方法存在研发各环节时间统计不准确、手工统计度量数据费时费力、过程数据展现不直观、自动化程度低等缺点。
发明内容
为克服现有通过人工获取软件开发效率存在的自动化程度低的不足,本发明提供一种软件开发效率的获取方法。
本发明提供一种软件开发效率的获取方法,包括:
S1、在软件研发开始时,创建标记;所述标记用于记录软件研发所处的阶段;
其中,软件研发所处的阶段至少包括开发阶段和测试阶段;
S2、当软件研发所处的阶段发生变化时,修改所述标记,并记录标记的修改时刻;
S3、根据记录的所述修改时刻,获取软件研发的开发用时和测试用时,并根据所述开发用时和测试用时,获取开发时间占比,将所述开发时间占比作为软件开发效率。
优选地,所述根据记录的所述修改时刻,获取软件研发的开发用时和测试用时的具体步骤包括:
根据记录的所述修改时刻,获取第一开发用时和第一测试用时,和/或获取第二开发用时和第二测试用时;
所述第一开发用时为软件研发广义的开发阶段所用的时间;
所述第一测试用时为软件研发广义的测试阶段所用的时间;
所述第二开发用时为软件研发狭义的开发阶段所用的时间;
所述第二测试用时为软件研发狭义的测试阶段所用的时间;
相应地,所述根据所述开发用时和测试用时,获取开发时间占比具体包括:
根据所述第一开发用时和第一测试用时,获取第一开发时间占比;和/或根据所述第二开发用时和第二测试用时,获取第二开发时间占比。
优选地,根据所述第一开发用时和第一测试用时,获取第一开发时间占比的具体步骤包括:
将所述第一开发用时与所述第一测试用时之和作为第一用时和,获取所述第一开发用时与所述第一用时和的比值,将所述比值作为所述第一开发时间占比。
优选地,根据所述第二开发用时和第二测试用时,获取第二开发时间占比的具体步骤包括:
将所述第二开发用时与所述第二测试用时之和作为第二用时和,获取所述第二开发用时与所述第二用时和的比值,将所述比值作为所述第二开发时间占比。
优选地,所述根据记录的所述修改时刻,获取所述第一开发用时的具体步骤包括:
从全部所述修改时刻中,获取所述标记被修改为待开发的第一启动时刻和被修改为待测试的第一结束时刻;
根据所述第一启动时刻和所述第一结束时刻获取所述第一开发用时。
优选地,所述根据所述第一启动时刻和所述第一结束时刻获取所述第一开发用时的具体步骤包括:
当所述第一启动时刻和所述第一结束时刻均为一个时,将所述第一结束时刻与所述第一启动时刻的时间差作为所述第一开发用时;
当所述第一启动时刻为一个且所述第一结束时刻为多个时,将时间顺序为最后一个的第一结束时刻与所述第一启动时刻的时间差作为所述第一开发用时;
当所述第一启动时刻和所述第一结束时刻均为多个时,对于任一所述第一启动时刻,将时间顺序相邻的下一第一启动时刻之前时间顺序为最后一个的第一结束时刻作为第一中间结束时刻,将所述第一中间结束时刻与该任一所述第一启动时刻的时间差作为第一中间用时;将全部所述第一中间用时之和作为所述第一开发用时;
当所述第一启动时刻为一个且未获取到第一结束时刻时,将当前时刻与所述第一启动时刻的时间差作为所述第一开发用时。
优选地,所述根据记录的所述修改时刻,获取所述第一测试用时的具体步骤包括:
将所述第一结束时刻作为第二启动时刻;
从全部所述修改时刻中,获取所述标记被修改为待上线的第二结束时刻;
将所述第二结束时刻与所述第二启动时刻的时间差作为所述第一测试用时。
优选地,所述根据记录的所述修改时刻,获取所述第二开发用时的具体步骤包括:
从全部所述修改时刻中,获取所述标记被修改为开发中的第三启动时刻和被修改为待测试的第三结束时刻;
根据所述第三启动时刻和所述第一结束时刻获取所述第二开发用时。
优选地,所述根据所述第三启动时刻和所述第三结束时刻获取所述第二开发用时的具体步骤包括:
当所述第三启动时刻和所述第三结束时刻均为一个时,将所述第三结束时刻与所述第三启动时刻的时间差作为所述第二开发用时;
当所述第三启动时刻为一个且所述第三结束时刻为多个时,将时间顺序为最后一个的第三结束时刻与所述第三启动时刻的时间差作为所述第二开发用时;
当所述第三启动时刻和所述第三结束时刻均为多个时,对于任一所述第三启动时刻,将时间顺序相邻的下一第三启动时刻之前时间顺序为最后一个的第三结束时刻作为第二中间结束时刻,将所述第二中间结束时刻与该任一所述第三启动时刻的时间差作为第二中间用时;将全部所述第二中间用时之和作为所述第二开发用时;
当所述第三启动时刻为一个且未获取到第三结束时刻时,将当前时刻与所述第三启动时刻的时间差作为所述第二开发用时。
优选地,所述根据记录的所述修改时刻,获取所述第二测试用时的具体步骤包括:
从全部所述修改时刻中,获取所述标记被修改为测试中的第四启动时刻和被修改为待上线的第四结束时刻;
将所述第四结束时刻与所述第四启动时刻的时间差作为所述第二测试用时。
本发明提供的一种软件开发效率的获取方法,通过自动获取开发用时和测试用时,从而获得开发用时占比,将开发用时占比作为软件开发效率,自动化程度高、效率高,无需人工手动统计、计算,大幅节省人力投入,保证数据准确性,获得准确的软件开发效率,可高效率实现为项目成员提供开发效率总结、项目问题发现以及实施改进提供数据支持。
附图说明
图1为本发明实施例一种软件开发效率的获取方法的流程图;
图2为本发明实施例一种软件开发效率的获取方法获取的第一开发用时的示意图;
图3为本发明实施例一种软件开发效率的获取方法获取的第二开发用时的示意图;
图4为本发明实施例一种软件开发效率的获取方法获取的第一测试用时的示意图;
图5为本发明实施例一种软件开发效率的获取方法获取的第二测试用时的示意图;
图6为本发明实施例一种软件开发效率的获取方法获取的第一开发时间占比的示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明的描述中,需要说明的是,除非另有说明,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
首先对本发明实施例涉及的名词进行说明。
按照逻辑顺序,完整的软件研发所处的阶段包括:需求阶段、开发阶段、测试阶段和上线阶段。
按照逻辑顺序,细分的软件研发所处的阶段依次为以下阶段:需求池、待开发、开发中、联调中、待测试、测试中、待上线。
需求阶段,即需求池阶段。
在软件研发中,开发阶段包括广义的开发阶段和狭义的开发阶段。相应地,测试阶段包括广义的测试阶段和狭义的测试阶段。
广义的开发阶段包括待开发阶段、开发中阶段和联调中阶段。狭义的开发阶段包括开发中阶段和联调中阶段。广义的测试阶段包括待测试阶段和测试中阶段。狭义的测试阶段仅包括测试中阶段。
上线阶段,即待上线阶段。
需求池阶段,表示软件研发仍处于需求阶段,还不具备进行开发的条件。
待开发阶段,表示需求池阶段已结束,软件研发已具备进行开发的条件,但还未进行开发。
开发中阶段,表示待开发阶段已结束,软件研发处于正在开发的阶段。
联调中阶段,表示开发中阶段已结束,软件开发已完成,正在进行联调。
待测试阶段,表示联调中阶段已结束,软件联调已完成,等待进行测试。
测试中阶段,表示待测试阶段已结束,软件研发处于正在测试的阶段。
待上线阶段,表示测试中已结束,软件已通过测试,处于上线前的等待阶段。
在软件研发中,由于开发、联调中可能存在问题,导致软件研发会从待测试阶段返回到待开发阶段、开发中阶段或联调中阶段。
开发阶段和测试阶段共同构成了软件的生产阶段。因此,广义的生产阶段由广义的开发阶段和广义的测试阶段构成,狭义的生产阶段由狭义的开发阶段和狭义的测试阶段构成。
通过开发阶段的用时与整个生产阶段或测试阶段的用时的比例,可以反映开发阶段与测试阶段的用时的对比关系,从而反映出软件的开发效率。
图1为本发明实施例一种软件开发效率的获取方法的流程图。如图1所示,一种软件开发效率的获取方法包括:步骤S1、在软件研发开始时,创建标记;标记用于记录软件研发所处的阶段;其中,软件研发所处的阶段至少包括开发阶段和测试阶段;步骤S2、当软件研发所处的阶段发生变化时,修改标记的值,并记录标记的修改时刻和修改后的值;步骤S3、根据记录的修改时刻和修改后的值,获取软件研发的开发用时和测试用时,并根据开发用时和测试用时,获取开发时间占比,将开发时间占比作为软件开发效率。
需要说明的是,通过软件研发***对软件研发进行过程控制。本发明提供的软件开发效率的获取方法基于软件研发***实现。
具体地,步骤S1,在软件研发开始时,软件研发***创建标记,将标记和软件研发过程中产生的文档、数据等在软件研发***中流转。
标记记录软件研发所处的阶段。标记的不同值分别代表需求池、待开发、开发中、联调中、待测试、测试中、待上线阶段。可以将软件研发所处的阶段的名称作为标记的值。例如,软件研发处于开发中阶段时,标记的值为开发中。
步骤S2,当软件研发所处的阶段发生变化时,修改标记。
根据软件研发所处的阶段,标记被相应修改为需求池、待开发、开发中、联调中、待测试、测试中、待上线。
当前软件研发阶段结束时,软件研发***将标记从软件研发的当前阶段的名称修改为下一阶段的名称,并将标记从当前阶段的研发人员流转到下一阶段的研发人员。
在修改标记时,软件研发***记录标记的修改时刻。
在实际的软件研发中,可以将软件的需求卡片的状态作为标记。需求卡片可以反映软件的需求类型、场景、描述、原因、验收标准、需求生命周期、需求关联等。需求卡片是软件研发各阶段研发人员进行相应研发工作的依据,会在各阶段研发人员之间流转。因此,可以将需求卡片作为标记,通过需求卡片的状态反应软件研发处于的阶段。
因此,标记的修改时刻,反映了软件研发所处的各阶段的开始时刻和结束时刻。
步骤S3,通过标记的修改时刻,软件研发***可以获取软件研发的开发阶段的开始时刻和结束时刻,获取测试阶段的开始时刻和结束时刻,并通过开发阶段的开始时刻和结束时刻获取开发阶段耗费的时间,即开发用时,通过测试阶段的开始时刻和结束时刻获取开发阶段耗费的时间,即测试用时。
软件研发***获取开发用时和测试用时后,根据开发用时和测试用时,可以获得开发时间占比。通过开发时间占比,反映开发用时与测试用时的对比关系,从而获得软件开发效率。
通常情况下,软件研发中希望测试用时相对较少,而开发用时较多。因为在这种情况下,没有在测试上耗费较多的时间,在开发上耗费较多的时间,说明软件开发效率更高。
本发明实施例通过自动获取开发用时和测试用时,从而获得开发用时占比,将开发用时占比作为软件开发效率,自动化程度高、效率高,无需人工手动统计、计算,大幅节省人力投入,保证数据准确性,获得准确的软件开发效率,可高效率实现为项目成员提供开发效率总结、项目问题发现以及实施改进提供数据支持。进一步地,通过标记获取的软件研发各阶段的起止时间点,都存储在软件研发***中,可以实现每天例行获取开发用时、测试用时和软件开发效率,获取过程完全自动化,无需人工干预。
基于上述实施例,根据记录的修改时刻,获取软件研发的开发用时和测试用时的具体步骤包括:根据记录的修改时刻,获取第一开发用时和第一测试用时,和/或获取第二开发用时和第二测试用时;第一开发用时为软件研发广义的开发阶段所用的时间;第一测试用时为软件研发广义的测试阶段所用的时间;第二开发用时为软件研发狭义的开发阶段所用的时间;第二测试用时为软件研发狭义的测试阶段所用的时间;相应地,根据开发用时和测试用时,获取开发时间占比具体包括:根据第一开发用时和第一测试用时,获取第一开发时间占比;和/或根据第二开发用时和第二测试用时,获取第二开发时间占比。
具体地,通过步骤S1可以获取广义的开发阶段的用时和广义的测试阶段的用时,即第一开发用时td1和第一测试用时tt1;也可以获取狭义的开发阶段的用时和狭义的测试阶段的用时,即第二开发用时td2和第二测试用时tt2;还可以同时获取第一开发用时td1和第一测试用时tt1,以及第二开发用时td2和第二测试用时tt2。
第一开发用时td1表示广义的开发阶段所用的时间,为待开发阶段、开发中阶段和联调中阶段所用的时间之和。
第一测试用时tt1表示广义的测试阶段所用的时间,为待测试阶段和测试中阶段所用的时间之和。
第二开发用时td2表示狭义的开发阶段所用的时间,为开发中阶段和联调中阶段所用的时间之和。
第二测试用时tt2表示狭义的测试阶段所用的时间,为测试中阶段所用的时间。
相应地,当通过步骤S1获取第一开发用时td1和第一测试用时tt1时,步骤S2具体包括:通过第一开发用时td1和第一测试用时tt1时,获取第一开发时间占比。第一开发时间占比,反映了广义的开发阶段的用时与广义的测试阶段的用时的对比关系,从而反映了软件开发效率。
当通过步骤S1获取第二开发用时td2和第二测试用时tt2时,步骤S2具体包括:通过第二开发用时td2和第二测试用时tt2时,获取第二开发时间占比。第二开发时间占比,反映了狭义的开发阶段的用时与狭义的测试阶段的用时的对比关系,从而反映了软件开发效率。
基于上述实施例,作为一种可选实施例,根据第一开发用时和第一测试用时,获取第一开发时间占比的具体步骤包括:将第一开发用时与第一测试用时之和作为第一用时和,获取第一开发用时与第一用时和的比值,将比值作为第一开发时间占比。
具体地,获取第一开发用时td1和第一测试用时tt1后,计算第一开发用时与第一测试用时之和,即第一用时和tp1。第一用时和tp1为广义的生产阶段的用时。
tp1=td1+tt1
根据第一开发用时td1和第一用时和tp1,获取第一开发时间占比tr1。
第一开发时间占比tr1直接反映了广义的开发阶段的用时占广义的生产阶段的用时的比例,间接反映了广义的开发阶段的用时与广义的测试阶段的用时的对比关系,直接反映了软件开发效率。
作为另一种可选实施例,也可以将第一开发用时td1与第一测试用时tt1的比值作为第一开发时间占比tr1。
此时,第一开发时间占比tr1直接反映了广义的开发阶段的用时与广义的测试阶段的用时的对比关系,间接反映了广义的开发阶段的用时占广义的生产阶段的用时的比例,间接反映了软件开发效率。
基于上述实施例,作为一种可选实施例,根据第二开发用时和第二测试用时,获取第二开发时间占比的具体步骤包括:将第二开发用时与第二测试用时之和作为第二用时和,获取第二开发用时与第二用时和的比值,将比值作为第二开发时间占比。
具体地,获取第二开发用时td2和第二测试用时tt2后,计算第二开发用时与第二测试用时之和,即第二用时和tp2。第二用时和tp2为狭义的生产阶段的用时。
tp2=td2+tt2
根据第二开发用时td2和第二用时和tp2,获取第二开发时间占比tr2。
第二开发时间占比tr2直接反映了狭义的开发阶段的用时占狭义的生产阶段的用时的比例,间接反映了狭义的开发阶段的用时与狭义的测试阶段的用时的对比关系,直接反映了软件开发效率。
作为另二种可选实施例,也可以将第二开发用时td2与第二测试用时tt2的比值作为第二开发时间占比tr2。
此时,第二开发时间占比tr2直接反映了狭义的开发阶段的用时与狭义的测试阶段的用时的对比关系,间接反映了狭义的开发阶段的用时占狭义的生产阶段的用时的比例,间接反映了软件开发效率。
基于上述实施例,根据记录的修改时刻,获取第一开发用时的具体步骤包括:从修改时刻中,获取标记被修改为待开发的第一启动时刻和被修改为待测试的第一结束时刻;根据第一启动时刻和第一结束时刻获取第一开发用时。
具体地,根据标记的修改时刻,获取广义的开发阶段的开始时刻和结束时刻。广义的开发阶段的开始时刻,即第一启动时刻ts1;广义的开发阶段的结束时刻,即第一结束时刻tf1。根据第一启动时刻ts1和第一结束时刻tf1,获取广义的开发阶段的用时,即第一开发用时td1。
获取第一启动时刻ts1的具体步骤包括:从全部修改时刻中,获取标记被修改为待开发的修改时刻,将每一该修改时刻作为第一启动时刻ts1,即广义的开发阶段的开始时刻。
获取第一结束时刻tf1的具体步骤包括:从全部修改时刻中,获取标记被修改为待测试的修改时刻,将每一该修改时刻作为第一结束时刻tf1,即广义的开发阶段的结束时刻。
基于上述实施例,根据第一启动时刻和第一结束时刻获取第一开发用时的具体步骤包括:当第一启动时刻和第一结束时刻均为一个时,将第一结束时刻与第一启动时刻的时间差作为第一开发用时;当第一启动时刻为一个且第一结束时刻为多个时,将时间顺序为最后一个的第一结束时刻与第一启动时刻的时间差作为第一开发用时;当第一启动时刻和第一结束时刻均为多个时,对于任一第一启动时刻,将时间顺序相邻的下一第一启动时刻之前时间顺序为最后一个的第一结束时刻作为第一中间结束时刻,将第一中间结束时刻与该任一第一启动时刻的时间差作为第一中间用时;将全部第一中间用时之和作为第一开发用时;当第一启动时刻为一个且未获取到第一结束时刻时,将当前时刻与第一启动时刻的时间差作为第一开发用时。
需要说明的是,由于在软件研发中,软件研发可能会从待测试阶段返回到待开发阶段、开发中阶段或联调中阶段,因此,可能存在多个广义的开发阶段的开始时刻或广义的开发阶段的结束时刻。此外,在获取软件开发效率时,软件研发可能处于待开发阶段、开发中阶段或联调中阶段,广义的开发阶段没有结束,没有进入待测试阶段,因而获取不到进入待测试阶段的时间,即第一结束时刻。
需要针对上述情况,根据第一启动时刻ts1和第一结束时刻tf1,获取不同情况下的第一开发用时td1。
一般情况下,第一启动时刻ts1和第一结束时刻tf1均为一个,此时,第一开发用时td1为第一结束时刻tf1与第一启动时刻ts1的时间差,即第一结束时刻tf1与第一启动时刻ts1之差。
td1=tf1-ts1
当软件研发从待测试阶段返回开发中阶段或联调中阶段时,会修改标记为开发中或联调中,从开发中阶段或联调中阶段再次进入待测试阶段时,会再次将标记修改为待测试,从而又产生一个第一结束时刻tf1。如果多次从待测试阶段返回开发中阶段或联调中阶段,且相应地多次从开发中阶段或联调中阶段进入待测试阶段时,会产生多个第一结束时刻tf1。
此时,第一启动时刻ts1为一个且第一结束时刻tf1为多个,从多个第一结束时刻tf1中,取时间顺序为最后一个的第一结束时刻tf1,将时间顺序为最后一个的第一结束时刻tf1与第一启动时刻ts1的时间差作为第一开发用时td1。
当软件研发从待测试阶段返回待开发阶段时,会修改标记为待开发,从而又产生一个第一启动时刻ts1;从待开发阶段再次进入待测试阶段时,会再次将修改标记为待测试,从而又产生一个第一结束时刻tf1。如果多次从待测试阶段返回待开发阶段,且相应地多次从联调中阶段进入待测试阶段时,会产生多个第一结束时刻tf1和多个第一结束时刻tf1。
此时,第一启动时刻ts1和第一结束时刻tf1均为多个。因此,可以将每个从待开发阶段进入待测试阶段的过程作为一个广义子开发阶段,从而将广义的开发阶段分为多个广义子开发阶段。每一广义子开发阶段对应一个第一启动时刻ts1和一个第一结束时刻tf1,根据广义子开发阶段的第一启动时刻ts1和第一结束时刻tf1,可以获取第一中间用时。对全部第一中间用时求和,求和的和值为第一开发用时td1。
由于按时间顺序,下一广义子开发阶段的第一启动时刻ts1在当前广义子开发阶段的第一结束时刻tf1之后,因此,对于获取的任一第一启动时刻ts1,获取该第一启动时刻ts1时间顺序相邻的下一第一启动时刻ts1之前的全部第一结束时刻tf1,将该第一启动时刻ts1时间顺序相邻的下一第一启动时刻ts1之前的全部第一结束时刻tf1中时间顺序为最后一个的第一结束时刻tf1作为第一中间结束时刻,即该任一第一启动时刻ts1对应的第一结束时刻tf1。通过上述过程,可以获取每一第一启动时刻ts1对应的第一结束时刻tf1,从而获取每一广义子开发阶段的第一中间用时,然后对全部第一中间用时求和,获得第一开发用时td1。
当软件研发的广义的开发阶段没有结束时,没有进入待测试阶段,获取不到第一结束时刻tf1。此时,将获取软件开发效率时的当前时刻作为第一结束时刻tf1,获取该当前时刻与第一启动时刻ts1的时间差,将该时间差作为第一开发用时td1。
基于上述实施例,根据标记的修改时刻获取第一测试用时的具体步骤包括:将第一结束时刻作为第二启动时刻;从全部修改时刻中,获取标记被修改为待上线的第二结束时刻;将第二结束时刻与第二启动时刻的时间差作为第一测试用时。
具体地,根据记录的修改时刻,获取广义的测试阶段的开始时刻和结束时刻。广义的测试阶段的开始时刻,即第二启动时刻ts2;广义的测试阶段的结束时刻,即第二结束时刻tf2。根据第二启动时刻ts2和第二结束时刻tf2,获取广义的开发阶段的用时,即第一开发用时tt1。
获取第二启动时刻ts2的具体步骤包括:第一结束时刻tf1,为待测试状态的开始时刻,也是广义的开发阶段的结束时刻和广义的测试阶段的开始时刻,将获取的第一结束时刻tf1作为第二启动时刻ts2。
获取第二结束时刻tf2的具体步骤包括:从全部修改时刻中,获取标记被修改为待上线的修改时刻,将该修改时刻作为第二结束时刻tf2,即广义的测试阶段的结束时刻。
第二启动时刻ts2和第二结束时刻tf2均为一个,获取第二结束时刻tf2与第二启动时刻ts2的时间差,即第二结束时刻tf2与第二启动时刻ts2之差,将该时间差作为第一测试用时tt1。
tt1=tf2-ts2
基于上述实施例,根据记录的修改时刻获取第二开发用时的具体步骤包括:从全部修改时刻中,获取标记被修改为开发中的第三启动时刻和被修改为待测试的第三结束时刻;根据第三启动时刻和第一结束时刻获取第二开发用时。
具体地,根据标记的修改时刻,获取狭义的开发阶段的开始时刻和结束时刻。狭义的开发阶段的开始时刻,即第三启动时刻ts3;狭义的开发阶段的结束时刻,即第三结束时刻tf3。根据第三启动时刻ts3和第三结束时刻tf3,获取狭义的开发阶段的用时,即第二开发用时td2。
获取第三启动时刻ts3的具体步骤包括:从全部修改时刻中,获取标记被修改为开发中的修改时刻,将每一该修改时刻作为第三启动时刻ts3,即狭义的开发阶段的开始时刻。
获取第三结束时刻tf3的具体步骤包括:从全部修改时刻中,获取标记被修改为待测试的修改时刻,将每一该修改时刻作为第三结束时刻tf3,即狭义的开发阶段的结束时刻。
基于上述实施例,根据第三启动时刻和第三结束时刻获取第二开发用时的具体步骤包括:当第三启动时刻和第三结束时刻均为一个时,将第三结束时刻与第三启动时刻的时间差作为第二开发用时;
当第三启动时刻为一个且第三结束时刻为多个时,将时间顺序为最后一个的第三结束时刻与第三启动时刻的时间差作为第二开发用时;
当第三启动时刻和第三结束时刻均为多个时,对于任一第三启动时刻,将时间顺序相邻的下一第三启动时刻之前时间顺序为最后一个的第三结束时刻作为第二中间结束时刻,将第二中间结束时刻与该任一第三启动时刻的时间差作为第二中间用时;将全部第二中间用时之和作为第二开发用时;
当第三启动时刻为一个且未获取到第三结束时刻时,将当前时刻与第三启动时刻的时间差作为第二开发用时。
需要说明的是,由于在软件研发中,软件研发可能会从待测试阶段返回到待开发阶段、开发中阶段或联调中阶段,因此,可能存在多个狭义的开发阶段的开始时刻或狭义的开发阶段的结束时刻。此外,在获取软件开发效率时,软件研发可能处于待开发阶段、开发中阶段或联调中阶段,狭义的开发阶段没有结束,没有进入待测试阶段,因而获取不到进入待测试阶段的时间,即第一结束时刻。
需要针对上述情况,根据第三启动时刻ts3和第三结束时刻tf3,获取不同情况下的第二开发用时td2。
一般情况下,第三启动时刻ts3和第三结束时刻tf3均为一个,此时,第二开发用时td2为第三结束时刻tf3与第三启动时刻ts3的时间差,即第三结束时刻tf3与第三启动时刻ts3之差。
td2=tf3-ts3
当软件研发从待测试阶段返回联调中阶段时,会修改标记为联调中,从联调中阶段再次进入待测试阶段时,会再次将标记修改为待测试,从而又产生一个第三结束时刻tf3。如果多次从待测试阶段返回联调中阶段,且相应地多次从联调中阶段进入待测试阶段时,会产生多个第三结束时刻tf3。
此时,第三启动时刻ts3为一个且第三结束时刻tf3为多个,从多个第三结束时刻tf3中,取时间顺序为最后一个的第三结束时刻tf3,将时间顺序为最后一个的第三结束时刻tf3与第三启动时刻ts3的时间差作为第二开发用时td2。
当软件研发从待测试阶段返回开发中阶段时,会修改标记为开发中,从而又产生一个第三启动时刻ts3;从开发中阶段再次进入待测试阶段时,会再次将修改标记为待测试,从而又产生一个第三结束时刻tf3。如果多次从待测试阶段返回开发中阶段,且相应地多次从开发中阶段进入待测试阶段时,会产生多个第三结束时刻tf3和多个第三结束时刻tf3。
此时,第三启动时刻ts3和第三结束时刻tf3均为多个。因此,可以将每个从开发中阶段进入待测试阶段的过程作为一个狭义子开发阶段,从而将狭义的开发阶段分为多个狭义子开发阶段。每一狭义子开发阶段对应一个第三启动时刻ts3和一个第三结束时刻tf3,根据狭义子开发阶段的第三启动时刻ts3和第三结束时刻tf3,可以获取第二中间用时。对全部第二中间用时求和,求和的和值为第二开发用时td2。
由于按时间顺序,下一狭义子开发阶段的第三启动时刻ts3在当前狭义子开发阶段的第三结束时刻tf3之后,因此,对于获取的任一第三启动时刻ts3,获取该第三启动时刻ts3时间顺序相邻的下一第三启动时刻ts3之前的全部第三结束时刻tf3,将该第三启动时刻ts3时间顺序相邻的下一第三启动时刻ts3之前的全部第三结束时刻tf3中时间顺序为最后一个的第三结束时刻tf3作为第二中间结束时刻,即该任一第三启动时刻ts3对应的第三结束时刻tf3。通过上述过程,可以获取每一第三启动时刻ts3对应的第三结束时刻tf3,从而获取每一狭义子开发阶段的第二中间用时,然后对全部第二中间用时求和,获得第二开发用时td2。
当软件研发的狭义的开发阶段没有结束时,没有进入待测试阶段,获取不到第三结束时刻tf3。此时,将获取软件开发效率时的当前时刻作为第三结束时刻tf3,获取该当前时刻与第三启动时刻ts3的时间差,将该时间差作为第二开发用时td2。
基于上述实施例,根据标记的修改时刻获取第二测试用时的具体步骤包括:从全部修改时刻中,获取标记被修改为测试中的第四启动时刻和被修改为待上线的第四结束时刻;将第四结束时刻与第四启动时刻的时间差作为第二测试用时。
具体地,根据标记的修改时刻,获取狭义的测试阶段的开始时刻和结束时刻。狭义的测试阶段的开始时刻,即第四启动时刻ts4;狭义的测试阶段的结束时刻,即第四结束时刻tf4。根据第四启动时刻ts4和第四结束时刻tf4,获取狭义的开发阶段的用时,即第一开发用时tt2。
获取第四启动时刻ts4的具体步骤包括:从全部修改时刻中,获取标记被修改为测试中的修改时刻,将该修改时刻作为第四启动时刻ts4,即广义的测试阶段的开始时刻。
获取第四结束时刻tf4的具体步骤包括:从全部修改时刻中,获取标记被修改为待上线的修改时刻,将该修改时刻作为第四结束时刻tf4,即广义的测试阶段的结束时刻。
第四启动时刻ts4和第四结束时刻tf4均为一个,获取第四结束时刻tf4与第四启动时刻ts4的时间差,即第四结束时刻tf4与第四启动时刻ts4之差,将该时间差作为第二开发用时tt2。
tt2=tf4-ts4
下面通过一个实例说明本发明提供的一种软件开发效率的获取方法的效果。图2为本发明实施例一种软件开发效率的获取方法获取的第一开发用时的示意图。图3为本发明实施例一种软件开发效率的获取方法获取的第二开发用时的示意图。图4为本发明实施例一种软件开发效率的获取方法获取的第一测试用时的示意图。图5为本发明实施例一种软件开发效率的获取方法获取的第二测试用时的示意图。图6为本发明实施例一种软件开发效率的获取方法获取的第一开发时间占比的示意图。
一周(从2017年11月22日至11月30日)内每天例行获取的第一开发用时、第二开发用时、第一测试用时和第二测试用时分别如图2至图5所示。图2至图5中,横坐标表示获取软件开发效率的时间,横坐标轴上的每个点表示一天;纵坐标表示用时,单位为秒。根据实际需要,横坐标可以细化。例如:横坐标轴上的每个点表示一小时,但不限于此。根据实际需要,纵坐标的单位也可以为分、小时或天,但不限于此。
根据一段时间(2017年9月20日至9月29日)每天例行获取的第一开发用时、第二开发用时、第一测试用时和第二测试用时,可以获取这段时间内的软件开发效率。如图6所示,横坐标上每天对应的四个柱状图形从左到右依次表示当天获取的第一开发用时、第二开发用时、第一测试用时和第二测试用时,曲线为第一开发时间占比,反映了软件开发效率。图6中,横坐标表示获取软件开发效率的时间,横坐标轴上的每个点表示一天;左侧的纵坐标表示用时,单位为秒;右侧的纵坐标表示百分率。根据实际需要,横坐标可以细化。例如:横坐标轴上的每个点表示一小时,但不限于此。根据实际需要,左侧纵坐标的单位也可以为分、小时或天,但不限于此。
图6可以将获取的第一开发用时、第二开发用时、第一测试用时、第二测试用时和根据第一开发用时、第二开发用时、第一测试用时、第二测试用时获得的软件开发效率展示在一幅图上,直观地反映软件开发效率。
本发明实施例通过将获取的第一开发用时、第二开发用时、第一测试用时、第二测试用时和软件开发效率自动进行直观的展示,便于及时掌握软件开发效率,控制软件研发的过程,提高软件研发的质量和效率。
最后,本发明的上述实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。