本文详细讨论了软件项目二次开发的管理流程,涵盖开发前、中、后各阶段的管理要点及困惑解答。开发前要组建团队、制定详细计划、确认需求规格、进行需求分析和技术方案设计,并考虑是否迭代开发;开发中要建立开发规范、沟通协同机制,做好进度跟踪和需求控制;开发后注重部署管理和BUG跟进。同时,解答了资源不足、多系统集成、需求不明确等常见问题,提供了解决方案和工具建议,帮助提升开发效率和质量。
一、 概述
二次开发往往都是实现客户价值点的地方,特别是行业性比较强的项目,因此二次开发的进度、质量都会直接影响
客户满意度,直接影响项目成功与否,其中开发团队人员能力、开发规范及协同、开发过程管理、开发任务的合理分
配等都会影响到进度及质量,这里推荐大家下载《星空客户化开发技术工具装备包》,指导性文档、规范性文档、模
板工具、知识学习地图等,具体下载地址为:https://pan.yunzhijia.com/s/MTIyMTUzMSw2MDk2#/share/0,帮
助规范过程管理,下面就开发前、开发中、开发后如何管理进行详细介绍,以及针对开发过程中可能面临的一些困惑
进行解答,下面都是基于多个大型成功开发管理案例进行总结出来的,希望能帮助到一线项目经理及开发管理者。
二、 开发前要如何管理?
开发前要做的所有工作都是为了后面的开发做准备的,前期工作也会影响到后面的开发的,所有开发前的各项工作也
必须做好.
前期工作包括:
1. 组建好开发团队,做好人员及角色分工
(1) 提前做好资源计划、合理调动和分配好资源
首先要根据概要需求做好工作量评估,做好开发资源计划,做好需求难易度识别,掌握好团队人员的能力分布情
况,对于开发实现难度大、影响面广、对开发能力及设计能力要求高的一定要安排骨干开发人员来实现,对于一些
影响面小、技术能力要求没那么高的可以安排经验稍微没那么丰富的人员来实现.
(2)开发负责人的任命
每个开发团队必须指定一名开发负责人,对于多人的开发团队,开发负责人不仅需要跟踪进度,定期检查开发规范
及质量,把控需求范围,还需与其他开发团队、实施团队及客户团队沟通的窗口,技术实现方案及集成方案把关
2. 必须有颗粒度很细的可执行的开发计划
(1) 当有多个开发团队时,每个团队的开发负责人都需要制定颗粒对很细的详细开发计划,最好是将任务逐层拆
解,直到不能拆解为止,最好能到天,每个任务最多不能超过3天,如果超过3天的任务是可以继续进行拆解,详
细计划参照附件1《EJS2312 客户化开发详细计划(管理岗)_技术_V1.0》
(2) 这个开发计划必须是开发负责人列出具体的开发任务清单及开发任务责任人,具体所需时间可以由具体开发人员
根据自己能力情况填写具体所需要的时间,或者是开发负责人安排好,通过开发任务责任人确认没问题后方可生
效,一定要确保这个时间表是可执行的,后面将根据这个开发计划表进行进度跟踪,大的时间节点一定不能轻易
调整,遇到风险时及时采取措施
(3) 开发任务责任人按核心人员核心开发任务的原则进行分配,核心开发人员需要扛起模块的开发任务大梁,实现客
户的核心价值
(4) 详细开发计划中必须体现出重要里程碑需求分析、需求确认、开发设计、编码、单元测试、系统测试完成确认
等,如下截图
3. 需要准备好经过客户确认的《开发需求规格说明书》
(1) 开发负责人需在详细开发计划中排出《开发需求规格说明书》完成确认时间,并推动和跟进需求规格说明书的编
写
(2) 《开发需求规格说明书》必须组织内部评审完成后,然后通过客户确认签字
(3) 开发人员需参与开发需求的沟通及技术实现评估,需协助实施人员完成《开发需求规格说明书》的编写
4. 进行需求分析,对技术难点形成《技术实现方案》、《集成方案》
(1) 开发在《需求规格说明》得到确认后,开始进行需求分析,并对实现的业务逻辑进行分析,对于复杂系统需要对
关键核心技术形成《技术实现方案》,对于多系统集成需要形成《集成方案》
(2) 集成设计方案可以参照附件2《EJS2303 集成方案设计说明书_技术_V1.0》
5. 根据项目规模及开发工作的多少,选择是否迭代开发
(1) 对于大型项目,项目周期长,开发内容多,如果一起全部上线风险大,建议最好采用分步上线、迭代开发的方
式,排计划时需按迭代需求进行安排开发计划
(2) 迭代开发要求如下:
1) 梳理客户主线需求,抓住核心需求,核心开发需求作为一期上线和开发内容,优先安排主线需求,并做开发计
划,其一期上线内容也将围绕主线展开。
2) 迭代开发二期需求的同时,修改一期BUG,
迭代开发注意事项
1) 迭代开发一期的需求一定是围绕主线展开的,能将主流程跑通。主流程中特殊场需要考虑进去不能分割开,只是
将不影响主流程放后面迭代开发实现
2) 后面的迭代需求需要实施人员能提前把需求文档整理好,否则会造成开发等需求的情况,影响后面迭代开发进度
3) 每期的迭代上线的内容需要得到客户的认可才可以展开。
4) 后面迭代的计划一定要围绕整体上线的时间进行倒排,涉及到需追加资源的要提前做好资源储备
迭代开发好处:
1) 在项目很大时,如果开发很多,通过迭代开发多期上线,可以让主线尽快上线,提高上线效率,降低项目风险
2) 迭代开发可以让客户尽早见到成果,尽早检验是否达到客户预期,如果有问题及时调整,防止走偏.
6. 准备好开发环境和测试环境。
(1) 选择协同开发平台,不进协同开发平台创建对应的开发项目(项目名称以客户名称命名),将对应的开发团队及
实施团队人员拉入协同开发平台(备注:实施人员可以协同开发平台增加和修改元数据及做实施配置)
(2) 开发环境必须根据客户购买产品的版本安装对应的产品及安装最新补丁,开发环境需要与测试环境分开,可以为一个环境的不同账套
三、 开发中要如何管理
1. 建立开发规范
对于一个开发团队甚至多个开发团队,人员众多的时候,必须有一套开发规范来约束开发人员,让开发人员都遵循
其规范,才能既保证开发效率又能保证开发过程中的开发质量,具体规范如下
1) 项目组统一使用协同开发平台(统一平台协同开发,保证高效协同及版本管控)
2) 客户化开发过程参考附件3《EJS2402 金蝶云星空客户化开发规范_技术_V1.0》,让开发人员编码时必须按其规
范执行,包括二次开发管理规范、业务对象开发规范、代码编写规范、脚本编写规范、API开发规范。
3) 开发过程代码编写是必须注意代码质量,不能在开发过程中出现影响性能的代码,开发编码参照附4《EJS2427
开发最佳实践_技术_V1.0》
2. 建立沟通协同机制
1) 开发组每天开个站立会议(时间可以精简),沟通开发进度及开发过程中存在的问题
2) 对于遇到的问题一定要及时沟通解决,需要解决的问题争取当天就解决
3) 开发组内单独建开发群,以便日常问题沟通,形成沟通记录
4) 重要会议必须要有《会议记录》,包括技术实现方案讨论、集成方案沟通、需求讨论、技术实现细节沟通等
5) 每周至少开一次开发组会议,进行每周开发进度穿透及周总结,并进行下一周开发工作部署,对一周中遇到的问
题处理情况进行回顾,当周的问题必须当周清0.
6) 开发人员在开发过程遇到技术瓶颈时,可以在开发群需求帮助,也可以及时将问题反馈给开发负责人,开发负责
人可以通过自行解决、开发组会议沟通解决,如果还得不到解决的可以在云诊所
https://vip.kingdee.com/school/clinic,申请总部夏勇给予技术支持
3. 开发团队进度汇报和开发进度日常跟踪
1) 对于多团队、多开发人员每天汇报自己当天任务完成情况及下一天计划安排(结合开发详细计划表中自己的任
务,并需要更新每个任务的完成百分比)
2) 开发负责人每天需按详细开发计划每个任务完成的时间节点及开发每个任务实际完成情况,如果存在偏差需找对
应的开发人员进行沟通,使用加班等方式来完成,如果对后续重大里程碑造成重大影响的,需采取补充资源等措施
进行解决,并需向项目经理及时反馈风险情况,及时采取措施
3) 每天跟踪需形成跟踪记录,并结合风险跟踪表一起使用,跟踪过程中需及时进行风险预警
4) 开发负责人每周需进行开发周汇报,汇报时需汇报当周开发任务完成情况,汇报里必须包含开发人员的计划开始
日期和计划结束日期,实际开始日期和实际结束日期,对于延误的任务需用红色底色标记出来,并注明补救措施
4. 做好开发过程需求控制
1) 编写的开发需求文档必须是明确、清晰,并注意版本管控,需求调整时需标注调整内容
2) 需求文档一定需要客户确认签字,未明确的需求禁止开发,减少返工带来的损失及防止需求范围扩大
3) 需求变更时必须让客户签署《需求变更单》,未签署的变更需求和未得到确认的变更需求禁止开发
四、 开发后要如何管理
1. 开发后需要注意持续的开发部署管理
(1) 需要制定部署规范,参考附件5《EJS2423 补丁更新规范指南_技术_V1.0》
(2) 需要安排专门人员根据制定的部署规范要求进行部署
2. BUG的跟进和管理
(1) BUG管理参照附件《EJS2502 缺陷管理规范_技术_V1.0》
(2) 利用缺陷管理系统进行BUG和需求管理,地址为https://ecodevops.kingdee.com,废弃过去传统的问题跟进
记录表,这个可以比较方便对问题进行跟踪,并进行统计分析
五、 二次开发管理经常面临的一些困惑问题怎么解决
1. 项目开放起来非常有难度,机构或者分销伙伴自己没有那么多资源或者合适的资源怎么办?
答复:开发资源一般年初就可以根据指标要求,预测自己所能承接多少项目,培养和储备开发资源,并且需要储备
和培养当地不错的伙伴资源,在项目合同下来前需要提前准备资源,并且一定要分析开发难度,并匹配合适的资
源.,开发资源平时也需要进行自我提能,包括学习总部给的装备包及装备包中知识地图的各种学习资料.
2. 当客户购买的系统特别多,比如有APS、CAPP、ERP、MES、OA、S-HR多个系统,这些模块存在较大的集成,
那开发计划中是先安排集成还是先做功能呢?
答复:涉及到多系统集成时开发计划应该优先安排集成,如果团队人员多时可以并行开展,但集成必须安排在前
面,理由是:1.集成在设计时本身就是从全局出发,这样保证设计时更趋于合理,设计时必须提前规划好数据
的源头是放在哪个系统,并且有些开发时业务取数还于这些源头数据有关系。 2.各模块开发层次不齐,如
果没有事先把集成规划和设计好,有些先完成的模块无法进行联调测试,会影响先完成模块的进度 3.集成做好
也是各系统能顺利完成主业务流程的前提条件。
3. 在开发时部分需求明确,部分需求不明确,这样的情况开发怎么管理?是否一定要等所有的需求都全部确定并客
户签字后才开始呢?如果要并行做这整体开发计划怎么安排呢?
答复:这种部分需求不明确的是否开发可以启动分两种情况
第一种情况:开发时间充足
根据上线的时间节点进行倒排预估完全确定后也还来得及的话,这种 情况开发就没那么着急马上开工,但需
要尽快推动需求确认。给开发留充足的开发时间
第二种情况:开发时间非常紧
如果本身开发时间就很紧,如果再等完全完成确认时间可能会来不及了,这样最好就是将明确的开发需求完成
确认,然后对确认的需求安 排开发计划,采取迭代开发的方式,一边开发,实施趁这段时间抓紧 梳理和确认需
求,等明确的需求开发完成后,这部分未明确的需求也已完成确认,这样既能满足上线要求,又能有效规避风险
4. 上面要求明细开发计划颗粒度要到天,最大颗粒度不能超过3天,但有些开发任务本身3天都做不完,这种开发任务
怎么安排呢?如何才能做到呢?
答复:方法如下:
(1) 有些大的任务项如果3天完成可能是因为比较复杂,写代码时间可能只1天,前期准备工作包括技术研究、实
现方案讨论和确定可能就需要2天,那就可以把这个任务项拆成3项,那可以计划为:“任务1”技术研发、“任
务1”实现方案讨论和确定、“任务1”编码实现这三项。虽然是完成同一个任务,但是每天做的内容是不一样的.
(2) 有可能这个任务还是颗粒度本身比较大,还可以进行WBS任务分解,拆分成颗粒度更细的任务项
5. 协同开发平台到底有什么好处?是否大项目才用,小项目是不是没必要使用呢
答复:(1)使用协同开发平台好处非常多,可以解决以下问题
1) 多团队、多人异地开发问题,不论你在哪里,只要将成功签入后,另外一个人只要通过同步马上可以
获取到最新修改后的元数据或者代码,再签出对同一单据或者代码文件进行修改或者追加
2) 协同里对元数据和源代码有进行版本管理,既可以解决冲突、解决平行扩展问题,也可以对修改的东西
进行追溯和回 滚,不担心对历史修改版本恢复问题
3) 补丁可以在线一键式构建多人成果,补丁更新非常方便,并且能有效保证补丁包的质量
4) 协同平台可以预置数据,包括单据转换、反写规则、工作流、辅助资料、权限对象、套打模板等,可以
方便将这些数据迁移到多环境
5) 协同平台可以对开发代码的质量在构建时进行检查,对有质量问题的代码进行预警并生成报告,便于代
码质量管理
(2)不论是大项目还是小项目都需要统一使用协同开发平台进行统一管理,因为协同不仅仅是解决多人开发的
问题,因为还有版本管理,可以对修改的元数据和代码进行追溯,进行补丁包更新的方式在测试环境没问题
的情况下才更新到生产环境,从而保证客户生产环境的质量及稳定性
6. 如果伙伴有第三方产品,在项目中需要做二开时对二开部分如何进行管理,伙伴不想把代码放协同平台怎么办?
答复:(1)对于伙伴第三方产品如果有二次开发,并且需要与星空产品集成,并且需要修改星空这边的元数据的,
则元数据部分必须统一使用协同平台,如果需要写插件,则新增的插件需要在协同平台进行开发,构建
时也可以统一构建到安装包里。
(2)伙伴如果不原因使用协同平台,必须给伙伴讲清楚,对于伙伴的第三方产品部分要引用的组件不需要把
源码放到协同,只需要将二开部分放入协同,这样对他们也没什么影响,也不用什么顾虑
附件.rar(5.98MB)
推荐阅读