概述
DevOps开发流程将会根据公司的实际情况,逐步渗透到技术中心的软件开发过程中。针对软件产品SaaS基于微服务架构实现的系统需要实行DevOps开发流程,实现大量微服务的自动化部署。
确保按时、保质、保量、快速迭代完成计划的任务,让整个组织能清楚了解项目实施的目的、影响、进度,做到项目组所有成员都理解项目实施的原因和意义,软件开发人员做到拥抱客户的需求变化。通过制度化管理来合理组织安排项目组成员的工作职责和角色转换。
软件部所有员工须严格按照本规范执行,以达到软件开发过程规范化管理的根本目的。同时,要求公司业务人员引导合作单位和客户接受并适应本规范。
根据软件开发的标准流程,结合公司实际情况先将软件项目开发主要分为三个阶段进行组织管理,分别为项目立项阶段、项目实施阶段和项目验收总结阶段。
缩略语
DevOps(Development Operations):开发运维
CI/CD(Continuous Integration/Continuous Delivery):持续集成/持续交付
管理工具
软件项目开发过程需要借助许多项目开发过程管理工具(比如,SVN,Jenkins、禅道等)对软件开发过程进行规范管理。比如,选用SVN作为源码版本管理工具;选用禅道做为软件缺陷管理工具,等等。
SVN
源码版本管理工具使用过程:
1. 项目的所有文档和程序在SVN服务器上进行管理,项目SVN目录下至少包括以下内容:
- 项目文档
包括:需求文档、PRD文档、架构文档、设计文档、数据库模型文档等。
- 基线版本
基线版本不接受随意修改,修改需要提交修改《基线版本修改申请表》,开发经理审核过后方可对其进行修改。
- 开发版本
开发版本频繁变动,包含最新代码和软件功能。
- 发布版本
发布版本指已测试通过,经历了测试环境、阶段环境和生产环境的转换的稳定版。
2. 所有文档采用SVN服务器进行管理。SVN服务器上的文档作为基线版本,不允许在未提交变更申请的情况下随意修改。
3. 所有程序源码采用SVN服务器进行管理。SVN服务器上的保存基线版本、测试版本、开发版本,软件开发工程师在开发版本下进行开发,阶段性开发完毕后,由配置管理人员进行编译,编译通过后提交到测试版本目录下,项目经理安排软件测试工程师对测试版本进行测试,测试通过后,配置管理人员进行编译,固化为基线版本,基线版本不允许在未测试通过的情况下随意修改。
Jenkins
Jenkins允许技术中心开发团队和运维团队沟通合作实现软件项目的CI/CD持续集成与持续交付。它提供大量的插件以支持软件项目的构建、部署和任何项目的自动化处理。
禅道
使用禅道执行项目开发过程管理,软件缺陷管理:
1. 管理软件功能需求。
2. 管理项目开发进度。
3. 软件缺陷管理。
4. 管理软件开发工程师信息。
JMeter
JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
项目立项
项目立项阶段主要通过以下几个步骤将新项目列入公司实施组织计划。
1. 成立公司项目评估委员会负责公司的项目立项审批。
2. 公司项目评估委员会由公司总经理或指定负责人召集,成员为公司管理层人员、营销中心总监、综合中心总监、技术总监、开发经理、财务负责人组成。
3. 公司营销中心按照公司发展要求或外部需求形成《软件项目需求说明书》,确定项目需求管理人或项目申请人。
4. 项目申请人填写《软件项目立项申请书》向项目评估委员会提出项目立项申请,主要说明项目的背景、目的、效益、成本、需求等方面,并由技术部门提供支持和技术说明。
5. 项目评估委员会收到《软件项目立项申请书》后三个工作日内,召开评估会议。给出评估结果。如果批准立项交公司技术总监组织开发。如果不批准,给出理由后立项中止。中止后的项目可根据情况重新申请。
6. 评估结果必须包括:建议项目启动日期,期望项目完成日期,项目等级系数,项目优先级(高、中、低),资源冲突程度(1~9)。对于资源冲突程度大于5的项目技术总监有权拒绝接受。
项目实施
项目立项后,进入项目实施阶段并通过以下几个过程进行规范化管理。
1. 公司批准立项的项目交由技术总监组织实施。
2. 技术总监根据资源情况和项目需求组织技术人员进行初步需求讨论会,确定项目的等级系数(可分,大、中、小,或者,3、2、1)、指定项目开发负责人。在立项后五个工作日内技术总监和项目开发负责人共同制定《软件项目开发计划》,确定项目启动日并提交项目评估委员会做反馈确认。如果项目评估委员会两个成员以上对计划有异议,项目评估委员会应该召开项目计划协调会,协调《软件项目开发计划》的修改和审核通过。如果无异议则授权技术总监按照《软件项目开发计划》执行。
3. 项目启动日后,项目开发负责人根据《软件项目开发计划》的进度每周进行一次分析汇报,形成《项目分析周报》确定项目的状态、分析风险和对策,交技术总监管控。
4. 《软件项目开发计划》必须按照软件项目实施过程分解为需求分析、系统设计过程(系统架构设计和功能模块设计)、开发编码和测试提交几个管控过程。
需求分析
项目需求分析主要包括以下过程。
1. 项目需求分析团队由技术总监负责,组成人员包括开发经理、项目负责人、部分高级开发工程师和需求提供人。
2. 需求分析第一次会议将在《软件项目开发计划》通过后,在项目启动日2个工作日内召开,提出需求的不足之处交由需求提供人完善。
3. 产品中心需求分析团队分工完成提交《软件项目需求功能列表》、《项目需求说明》及《项目关键业务流程说明》文档。
4. 需求分析应该在需求分析第一次会议后开始,并在指定时间(3个工作日*项目等级系数)内完成。
5. 需求分析过程完成后,如果需求变更,则需求提供人必须书面提出《项目需求变更通知书》,项目需求分析团队在2个工作日内完成分析反馈,确定项目变更系数,项目负责人根据需求变更情况对《软件项目开发计划》进行修订并执行版本管理。
6. 需求分析阶段完成的标志为技术总监召开文档审查和阶段总结会,时间为1个工作日。
系统设计
项目系统设计阶段,需要将复杂的系统进行架构设计,主要包括以下几个步骤:
1. 项目设计团队由技术总监负责,组成人员包括开发经理、架构师、项目开发负责人及部分高级软件开发工程师。
2. 项目设计团队在收到需求阶段文档后2个工作日内召开设计工作启动协调会,审查、反馈需求阶段文档。
3. 设计工作启动协调会明确分工、按计划完成《系统架构设计》、《系统功能模块设计》、《系统接口设计》、《系统数据库设计》、《系统操作界面说明》和《系统原型》文档。
4. 系统设计应该在启动协调会后开始,并在指定时间(5个工作日*项目等级系数)内完成。
5. 项目负责人接到《项目需求变更通知书》后,按照在指定时间(1个工作日*项目等级系数)内调整对于设计和计划。
6. 系统设计阶段完成的标志为,系统设计相关文档都编写完成,技术总监召开设计文档审查和阶段总结会,时间为1个工作日。
开发编码
项目开发编码阶段,即软件项目具体功能实现阶段,主要用以下几个步骤规范开发过程。
1. 软件开发团队由开发经理负责,组成人员包括项目负责人和软件开发工程师。
2. 软件开发团队在收到需求相关文档和系统设计相关文档后,2个工作日内召开项目开发启动会,学习理解需求文档和系统设计相关文档,并进行讨论和反馈。
3. 开发经理按照《软件项目开发计划》中的工作分解结构执行进度跟进和开发过程监控。
4. 项目负责人需负责软件系统的联调、测试,保证按照《项目关键业务流程说明》和《系统操作界面说明》文档实现。
5. 为保证编码质量和编码规范,开发经理需组织软件开发团队关键代码审查,软件开发工程师须按每功能点的粒度向开发经理提交需要审查的代码,开发经理与软件开发工程师当面解读核心代码并提出建议。
6. 跟进项目情况,软件开发工程师根据《系统接口设计》文档对接口进行单元测试、性能测试,并产生测试报告。
7. 开发经理负责做好软件系统源码目录结构和源码版本管理工作。
8. 开发编码在项目开发启动会后开始,并在计划时间内完成编码工作。
9. 开发编码阶段完成的标志为软件测试工程师接受软件的测试版本,测试版本部署在本地测试环境,开发经理召开源码提交和阶段总结会,软件开发工程师的所有代码都提交到SVN,项目负责人对里程碑版本代码进行备份管理,需要在1个工作日内完成。
测试提交
测试提交阶段是一个开发与测试的巡回过程,开发工程师提交软件功能点给测试工程师测试后,测试工程师反馈测试结果,开发工程师根据反馈结果做出修改,在不断巡回过程中,问题得到解决,直到软件所有功能实现为止。
1. 项目测试团队主要由测试工程师组成,软件开发工程师和项目负责人对测试过程进行协助和支持。
2. 测试工程师根据《项目关键业务流程说明》、《系统接口设计》和《系统操作界面说明》对软件系统进行一系列测试,主要包括:界面操作手工测试、压力测试、性能测试、系统测试等。
3. 使用本地禅道项目管理系统进行软件缺陷管理,测试过程出现的问题通过缺陷管理软件反馈给软件开发工程师,软件开发工程师接收到软件测试工程师的反馈后,对其负责的功能点出现的问题进行处理,解决后反馈给相关软件测试工程师,最终结果应是,软件测试工程师测试完成通过并接受,不通过则重播以上缺陷管理流程。
4. 测试工程师在项目开发阶段进行《软件使用说明书》的编制,接受测试版本后可以按照《软件使用说明书》进行测试。
5. 测试工程师在测试阶段编写《项目测试报告》,缺陷问题通过软件缺陷管理系统进行管理,项目负责人跟进软件缺陷问题的解决。
6. 所有软件功能实现并测试通过后,测试工程师提交完成版本的《项目测试报告》,报告由开发经理确认并签字。对应的版本将被定义为发布版本。
7. 发布版本部署到到正式环境后,测试工程师开始对正式环境的系统进行验证,如果出现问题则及时反馈给开发团队,开发团队及时做出修改调整,直到系统运行稳定、正常为止。
项目验收总结
项目总结阶段往往被忽略,本规范规定项目结束后,须执行项目总结,以回顾、学习项目实施过程中遇到的问题,总结经验教训,团队知识积累。
1. 发布版本后,项目负责人收集好所有项目过程文档,打印的相关文档需有对应负责人签字。
2. 项目负责人回顾总结《软件项目开发计划》,分析总结实际与计划差异,形成《项目计划执行情况报告》。
3. 开发经理总结项目系统设计、开发、测试过程的质量控制和软件开发工程师开发效率情况,总结经验教训并提出项目开发改进措施。
4. 技术总监总结分析成本控制、风险控制、对全部项目人员进行考核,形成《项目总结报告》。
5. 技术总监和开发经理继续完善本规范。
6. 上述工作完成后,提交项目评估委员会总结审批后公布。
附则
1. 本规范由技术中心制定并负责解释和修订。
2. 本规范由发布之日其开始执行。
附录-相关文档
序号
|
文档名称
|
01
|
《软件项目立项申请书》
|
02
|
《软件项目需求说明书》
|
03
|
《软件项目开发计划》
|
04
|
《项目分析周报》
|
05
|
《软件项目需求功能列表》
|
06
|
《项目需求说明》
|
07
|
《项目关键业务流程说明》
|
08
|
《系统架构设计》
|
09
|
《系统功能模块设计》
|
10
|
《系统接口设计》
|
11
|
《系统数据库设计》
|
12
|
《系统操作界面说明》
|
13
|
《系统原型》
|
14
|
《项目需求变更通知书》
|
15
|
《项目计划执行情况报告》
|
16
|
《项目总结报告》
|