唐海涛 黄丝米
1. 中国电建集团华东勘测设计研究院有限公司 浙江 杭州 311122;
2. 浙江华东工程数字技术有限公司 浙江 杭州 311122;
3. 浙江省工程数字化技术研究中心 浙江 杭州 311122
对于企业信息系统管理而言,前期的任务划分和任务收发是尤为重要的,在项目初期将整个系统的任务规划好,可以使得后面的工作开展更为顺利。基于此,本文提出了一种基于NESMA方法拆解功能点的任务自动组包与收发包方法及实现。它按照NESMA方法对软件项目进行功能拆解[1],最大程度将功能拆解为最有意义的最小活动单元,计算出工作量后以任务的形式进行发包,承包方完成工作后,发包方按照拆分功能进行验收确认。该方法可以帮助企业更好地对任务进行自动组包和收发包,基于NESMA方法对功能进行拆分可以最大程度的将功能点的颗粒度变细,这对于后期任务的分工和结算帮助很大。
NESMA方法是荷兰软件度量协会(Netherlands Software Metrics Association)于1989年提出的,该方法是从用户角度来估计规模,通过量化与外部数据输入、输出或文件类型等有关的功能性处理信息,来度量软件规模的方法,不去考虑软件的具体实现[2],NESMA方法作为一种功能规模测量方法已经形成电子行业标准:SJ/T 11619-2016。NESMA方法的操作步骤为:
第一步:识别待估算应用程序的边界和范围。
第二步:识别和度量各类型的数据功能,主要包括两个逻辑文件:内部逻辑文件和外部接口文件。内部逻辑文件为本系统中维护的数据,外部接口文件是由其他外部系统维护,在本系统中引用的数据。
第三步:识别和度量各类型的业务功能,主要包括三个基本过程:外部输入、外部输出和外部查询。外部输入是对数据进行维护或者改变系统状态/行为的事务;外部输出为对数据加工后呈现或输出的事务;外部查询为对已有数据直接呈现或输出的事务。
第四步:设置规模变更因子和规模调整因子。
第五步:估算软件规模、工作量(人天)和成本。
在NESMA方法理论中,软件系统功能点是可以作为标准来衡量软件规模的[3],功能拆解的颗粒度越细,对于后期任务的分工和结算帮助越大,此时功能点就可以作为标准的计量单位,对辅助计算效率、成本有很大作用[4-5]。
对于信息系统的项目管理来说,项目前期的任务管理和工作计划的制定是关键,任务的流程和工作量的计划的定义决定了项目后期的工作开展的顺利程度。但是,在现实工作中,软件系统每个功能的复杂程度不一样,任务组包很难做到均匀分配,这样会导致工作量评估不准确,发包工作确认出现多次反复的情况。
目前项目的组包和任务收发包主要采用文档记录和人工操作的方法,这种方法存在以下不足:①拆解任务仅凭经验缺少系统方法,导致对任务包拆解颗粒度粗,收包验收任务时出现功能遗漏的情况;②在对工作量进行预估时一般采用人工计算的方式,导致计算结果不够精确,在最终收包时容易出现结算纷争;③当承包方对任务功能点和工作量提出争议时,采用传统方法来调整数据任务量大,时间成本高。
鉴于上述情况,本文提出了一种基于NESMA方法拆解功能点的任务自动组包与收发包方法及系统。采用NESMA方法对软件系统进行功能拆解,主要原则是把用户需求组合或分解为对用户最有意义的最小活动单元,再根据设置的参数估算软件规模、工作量(人天)、成本,将拆解的功能点按照系统模块以任务包的形式自动进行发包。承包方确认无误后投入人员开展工作,工作完成后发包方依照拆解功能点进行功能验收,最终根据结果双方进行结算。基于NESMA方法拆解功能点的任务自动组包与收发包设计方案包括如下步骤:
基于NESMA方法对项目的功能点进行任务组包,包括功能拆解和评估工作量,其中:
3.1.1 按照NESMA方法对软件系统的功能进行拆分并完成工作量的评估,主要原则是把用户需求组合或分解为对用户最有意义的最小活动单元。
拆解功能主要分为两步:
第一步:识别的用户需求和已确定的范围及边界,按照功能统计范围内所有需求集合,一旦确定范围就可以定义边界;
第二步:识别和度量各类型的数据功能和业务功能,主要分为两个逻辑文件和三个基本过程:内部逻辑文件ILF、外部接口文件EIF、外部输入EI、外部输出EO、外部查询EQ。
3.1.2 设置参数用于工作量的计算,参数包括工作量调整参数、工作量比例、成本单价。工作量调整参数指各个角色的预估生产率,工作量比例指各个角色的工作占比,成本单价为各个角色的单日工作成本。
(1)工作量调整参数:研发工程岗位包括需求分析、设计开发、系统测试、运维实施的每个岗位都有各自的生产率C(FP/人日),根据项目实际情况设置各个岗位的生产率。比如:设置需求分析岗位的预估生产率为10FP/人日,设计开发岗位的预估生产率为2FP/人日,系统测试岗位的预估生产率为10FP/人日,运维实施岗位的预估生产率为15FP/人日。
(2)工作量比例:设置研发过程占总工作量的比例。比如:项目管理工作站总工作量的10%,研发工作占总工作量的85%,质量保证工作占总工作量的2.5%,其他工作占总工作量的2.5%。
(2)成本单价:设置各个岗位的成本单价(元/人日)。比如:项目管理岗位成本单价为1300元/人日,所有研发工程岗位成本单价为1250元/人日,质量保证岗位成本单价为1100元/人日。
3.1.3 评估工作量,根据设置的参数,按照NESMA方法估算任务包的工作量(人天)、成本。
3.1.4 对评估完成的功能点和工作量进行任务组包,形成任务包。
基于步骤一中任务包进行发包,包括任务包确认以及投入人员分配。图1为基于NESMA方法拆解功能点的任务发包的流程图。承包方收到任务后,对工作量和成本进行确认,确认无误后开始分配投入人员,投入人员按照功能为基础开展工作。若承包方对工作量存在异议,则返回发包方对参数进行修改调整。
图1 基于NESMA方法拆解功能点的任务发包的流程图
承包方按照任务包中的功能开展工作,依次完成功能,并内部进行验证。
基于功能点进行任务收包,发包方收到承包方任务完成的信息后,对已交付的软件系统的所有功能点进行验收,图2是基于NESMA方法拆解功能点的任务收包的流程图。在开始进行验收后,发包方会根据功能点列表,依次验收功能。当单条功能点验收结果为不通过时,对该点进行记录;验收结果为通过时,直接跳转到下一条功能点进行验证。当前整个系统验证完成后,会通知承包方对不通过的功能列表进行整改,直至承包方整改完成并进行自验。所有的功能点整改完成,确认无误后,根据之前预估的软件规模、工作量(人天)、成本双方进行结算。
图2 基于NESMA方法拆解功能点的任务收包的流程图
根据上一章节的设计方案实现了基于NESMA方法拆解功能点的任务自动组包与收发包系统,该系统主要包括:功能拆解模块、工作量评估模块、发包确认模块和收包验收模块几大模块。各模块具体功能详细介绍如下:
功能拆解模块:用于对软件系统的需求进行功能拆解,根据需求内容按照模块、功能和类别进行划分。按照NESMA方法将功能分为:内部逻辑文件ILF、外部接口文件EIF、外部输入EI、外部输出EO、外部查询EQ五种类别。
工作量评估模块:用于对发包工作量评估计算,其中包括:①参数设置模块:主要是对NESMA方法中涉及的参数进行赋值,便于后续工作量的计算。参数包括:工作量调整参数、工作量比例、成本单价。②工作量估算模块:系统根据功能点列表数据及参数设置的基础数据采用NESMA方法计算整个任务包的工作量。
发包确认模块:用于发包方和承包方对任务包功能和工作量的确认。
收包验收模块:用于发包方对任务包中的功能进行验收。
该系统已投入使用并帮助公司一百多个项目完成质量提升,图3为基于NESMA方法拆解功能点的任务自动组包与收发包系统附图。
图3 基于NESMA方法拆解功能点的任务自动组包与收发包系统附图
文中主要介绍了基于NESMA方法拆解功能点的任务自动组包与收发包方法及实现。对于信息化系统而言,采用NESMA方法可以将复杂的需求最大程度的拆解为最有意义的最小活动单元,此时功能点是一个可以作为标准的计量单位,功能点的多少代表着软件的规模大小,也很好地反映出软件的复杂程度。通过拆解的功能点可以更合理的计算出人力成本和工作量,计算出工作量后以任务的形式进行发包,承包方完成工作后,发包方按照拆分功能进行验收确认。该方法可以帮助企业更好地对任务进行自动组包和收发包,对于后期任务的分工和结算帮助很大,功能点作为标准的计量单位,对辅助计算效率、成本有很大作用。