为加强对软件项目开发工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高定开发效率和效益,特制定软件开发流程管理制度。
第一章、总则
为保证日常工作正常有序的进行,让开发中各个环境更紧凑,更可控,需要尽可能实现项目管理的正规化,工作过程的流程化,以便提高软件质量,按期交付。
1、软件开发总体遵循项目管理和软件工程的基本原则。
2、项目管理涉及项目立项、项目计划和监控、配置管理。
3、软件工程涉及需求分析、系统设计、软件实现、系统测试、用户测试、试运行、系统验收、系统上线和数据迁移、产品维护。
第二章、阶段成果
根据软件工程的过程,制定以下工作流程,并规定了各个重要环节需要提交的交付物。各阶段需提交的文档:
1、立项:项目申请表,软件需求报告或设计方案。
2、需求分析:项目研发主计划、需求规格说明书
3、总体设计:概要设计说明书或功能模块描述
4、详细设计:详细设计说明书,包括软件接口说明、单元测试计划。
5、软件实现:软件功能说明、源代码说明或者注释
6、产品测试:测试、测评报告
7、产品发布:产品说明书、使用手册
8、产品维护:问题反馈记录
9、项目总结:提交客户方的项目总结和公司项目汇报的PPT。
软件过程成果表:
阶段 | 形成文档 | 职责及文档成果描述 | 负责人 | 涉及范围 | 备注 |
---|---|---|---|---|---|
需求阶段 | 项目立项报告(Word) | 明确甲乙双方责任及义务,需求方签字确认 | 项目经理 | 验收报告 | |
业务需求说明书(Word) | 需求定义,阐述业务范围及内容,开发组负责制定最优技术设计方案 | 项目经理/分析员 | 验收报告 | 大部分业务建模和需求,少部分分析设计 | |
项目开发计划(Project) | 用户、领导、项目组都了解项目进度 | 项目经理 | 验收报告 | ||
设计阶段 | 业务流程图体系设计书、详细设计说明书(Word/Visio) | 项目组成员分配任务,并召开讨论会议,讨论项目的技术架构和可能存在的技术难点,梳理业务流程,统一开发规则和风格等 | 项目经理/分析员 | 验收报告 | |
数据库关系设计图、流程图(PowerDesigner) | 便于项目开发 | 分析员 | 大部分分析设计,部分实施编程及测试,开始考虑部署 | ||
任务分配文档(Word) | 明确每个组员的开发任务及职责 | 项目经理 | 过程报告 | ||
问题说明报告(Word) | 让用户、领导及组员及时了解和发现问题 | 项目经理 | 过程报告 | ||
业务变更文档(Word) | 记录开发过程中用户提出的业务需求变更情况 | 分析员 | 过程报告 | ||
测试阶段 | 项目测试方案及报告(Word) | 记录项目测试的方法、验证系统功能与性能的记录 | 测试员 | 验收报告 | |
用户使用手册(Word) | 方便用户使用软件而提供的使用说明书 | 测试员 | 验收报告 | 反复测试直至系统稳定 | |
系统切换报告 | 系统部署后的操作记录 | 项目经理 | 过程报告 | ||
用户培训报告 | 用户培训文档 | 项目经理 | 过程报告 | ||
上线及运行 | 项目验收报告(Word) | 记录甲乙双方签订项目验收报告 | 项目经理 | 验收报告 | 部署及维护 |
项目总结性报告 | 项目组通过此项目总结经验及不足 | 项目经理 | 总结报告 |
第三章、岗位设置
岗位 | 工作内容 | 责任 |
---|---|---|
项目经理 | 1. 选定项目组成员,成立项目组,安排任务分工 2. 与客户进行沟通和协调(业务需求或非业务需求方面),以及需求调研工作。 3. 制定开发主计划,包括需求、设计、编码、测试这几个阶段的计划。 4. 估计项目工作量 5. 制定小组开发进度表,对组内人员工作进度监控。 6. 和客户进行沟通,进行需求调研,记录需求分析文档,开编写系统总体设计方案 7. 对文档的质量进行检查。把关 8. 对组内成员的工作进行指导 | 1. 对客户的沟通协调工作负责; 2. 对软件的开发效率、质量、费用负责 3. 对用户的需求分析的质量负责; 4. 对系统总体设计、详细设计文档质量负责 5. 制定小组开发进度表,对组内人员工作进度监控。 |
软件设计师 | 1. 负责系统的模块设计,详细设计文档 2. 给制界面原型demo等,设计功能使用的具体描述、行为者、前置条件、后置条件、UI描述、业务流程/子流程/分支流程,界面说明等。完成大部分的前端设计,小部分的后端设计。 3. 负责技术难度大的模块的代码或者公用模块代码的编写、维护 4. 对自己负责模块的详细设计、代码编写。 5. 对小组内人员进行技术指导 | 1. 对组内人员的开发效率负责; 2. 对产品整体风格负责; 3. 对项目整体设计流程负责; 4. 对自己模块的开发效率和质量负责。 |
程序员 | 1. 与项目经理沟通确认某个模块的需求和实现方法 2. 负责某个模块的代码编写、维护 3. 对其他模块的代码的维护 4. 负责与测试人员的交互,处理测试人员反馈的问题 | 1. 对自己模块的开发效率和质量负责。 |
测试工程师 | 1. 根据用户需求分析和系统总体设计,编写测试文档和测试用例。 2. 对系统的功能、性能、异常进行测试。 3. 编写测试文档和操作指导手册。 | 1. 对测试的质量负责 2. 对测试文档和操作手册的质量负责。 |
根据公司目前的开发过程主要分为分析、开发、测试三个阶段。分析阶段完成用户需求文档的编写,系统总体设计的编写;开发阶段完成设计文档的编写,代码的编写、代码的维护。测试阶段完成系统的测试,测试文档及其他材料。通过逐渐的调整岗位,明确工作职责,逐步实现项目经理,软件设计师,程序员,测试工程师的岗位设置。
第四章、项目立项
1、分析人员进行应用调查与分析,确认软件的应用需求。
2、成立项目评审会,开发总监、部门经理和指定人员必须参加。对项目进行可行性研究,编写项目建议书,评估项目的难度和工作量,形成可行性研究报告。
3、根据项目配置的优劣成立项目开发组,制定软件开发计划,确定项目经理,由部门和项目经理共同来确定具体项目配置,知识技能要求,团队成员及团队的角色。
第五章、项目计划与监控
1、以项目为单位,项目经理负责整个项目的计划、组织和控制。
2、在整个项目过程中,项目经理定期检查项目进度和完成情况,调整人员分工和安排。
3、项目计划需要变更时,需要明确变更内容并及时汇报。项目经理需要说明客户变更原因并将变更说明提交公司领导审核,以便根据变更内容及时调整计划。。
第六章、需求分析
1、对用户提出的需求进行分析汇总,梳理用户的业务流程和详细的功能定义。
2、做出简单的界面原型,与客户进行有效的沟通, 编写需求详细说明书。
3、根据现有条件进行估计,制定项目进度,制定详细的软件开发计划。
第七章、总体设计
1、在该阶段确定总体结构和软件开发架构,文件命名规范,编码规范。可按软件需求划分成子系统,也可直接定义目标系统的功能模块及各个功能模块的关系。
3、确定软件模块结构,给出每个功能模块的功能描述、数据接口描述,并完成系统概要设计说明书。
4、完成数据库的设计,并编写数据库设计说明书。
5、完成的文档需提交公司进行归档管理。
第八章、详细设计
1、调整前一步设计的不足,确认各模块之间的详细接口信息。
2、设计功能使用的具体描述、行为者、前置条件、后置条件、UI描述、业务流程/子流程/分支流程,界面说明等。
3、确定模块内的数据流或控制流,对每个程序模块必须确定所有输入、输出和处理功能。
4、汇总并提交所有相关文档,审核确认质量和进度。
第九章、软件实现
1、项目组根据概要设计说明书、详细设计说明书制定系统实现计划
2、有条件的情况下保证开发、测试和生产环境独立。选择软件工具,明确项目成员的职责分工,按照编码规范和详细设计实现软件功能。
3、代码应满足结构良好,清晰易读,且与设计一致,符合编码规范。
4、开发人员需要软件实现过程中编写软件功能说明,源代码说明。软件功能说明文档应说明项目名称、编号、软件名称和版本号,软件功能、主要功能实现过程。源代码说明应说明项目编号、软件名称、功能,全局变量、数据库字典、函数功能、接口。该文档包含在源代码文件中,以注释形式存在。
5、项目组进行单元测试和集成测试。开发人员处理测试人员反馈的测试问题,并以书面形式反馈主要问题及解决办法,直至系统运行稳定。
6、汇总并提交所有相关文档,提交公司备案。
第十章、软件测试
1、根据单据测试和集成测试两个过程,制定测试计划。按阶段设计测试实例,并将测试结果记录,未通过的的反馈给开发人员调整。
2、完成测试文档、操作手册、安装维护手册的编写。
第十一章、用户培训
1、准备用户培训计划、培训手册
2、确定培训时间、培训地点,向用户进行系统使用培训、操作指导及提供软件操作手册。
3、保留培训签到表,用户意见等存档。
第十二章、系统上线
1、 制定上线计划,确定上线工作时间表,部署的环境。
2、上线操作步骤以及问题处理步骤;
3、根据软件特点、客户需求进行软件部署,并记录软件部署和运行结果;
4、项目组根据系统运行请款对系统进行优化,记录系统的运行情况、系统问题和处理后的版本。
第十三章、系统验收
1、验收工作准备,按要求整理项目成果物,打印装订成册,并提交客户方。
2、系统主要使用部门及信息技术部门联合成立项目验收小组,从需求功能及技术需求层面对系统进行综合评估和项目成果物的审核,根据验收情况形成系统验收报告
3、应用部门及信息技术部门负责人根据系统试运行情况签署验收意见。
第十四章、产品维护
1、调出项目主要开发人员,按照合同要求安排维护人员对系统进行技术支持。
2、系统需求变更或调整,记录变更原因和软件及源代码的版本控制,按照软件变更要求对系统进行维护。
第章十五、源码和文档
1、源代码/文档管理采用版本控制软件SVN。
2、按项目的阶段性完成源代码、文档的上传。项目负责人每天对代码进行检查,开发总监或部门经理定期进行抽查。
3、文档分为项目文档和个人文档,文档上传前进行归类和汇总。
第十六章、质量检查
1、项目负责人每天要检查成员的工作完成情况,特别是新员工的工作进展;
2、工作抽查制度:不定期的进行抽检,并将检查对象、检查时间、检查内容、检查结果反馈给被抽检人。
3、内部审核制度:针对业务需求、概要设计(功能界面、数据库)或疑难问题组织评审会,提出意见或解决方案。
第十七章、文档规范
1、需按照软件实施的阶段落实成果物,参照《软件过程提交成果表》。
2、如果客户有特殊要求,请按照客户要求的规范完成。并将最终的问题提交公司归档备份。
阶段 | 提交成果 | 详细内容 |
---|---|---|
立项 | 项目申请表 | 项目名称、编号及简要描述;申请部门、申请人及联系方式;项目背景和目标阐述;预期效益分析;初步时间进度安排。 |
软件需求报告或设计方案 | 业务需求概述(涉及业务流程和关键业务点);用户角色分析及需求描述;功能需求清单;非功能需求;初步技术选型和架构设想。 | |
需求分析 | 项目研发主计划 | 项目整体时间表(明确阶段起止时间);里程碑设定及交付成果;项目资源分配;风险评估及应对措施。 |
需求规格说明书 | 详细业务流程描述(流程图和文字说明);功能需求详细定义(输入、输出、处理逻辑等);界面原型设计;数据需求分析;性能需求指标及测试方法。 | |
总体设计 | 概要设计说明书或功能模块描述 | 系统架构设计(软件层次结构、模块划分及相互关系);功能模块概述;接口设计;数据结构设计;技术选型说明。 |
数据库设计说明书 | 数据库概念模型设计(ER 图);数据库逻辑结构设计(表结构、字段类型、约束条件等);数据库物理结构设计(存储方式、索引设计等);数据备份和恢复策略。 | |
详细设计 | 详细设计说明书 | 每个功能模块详细设计(算法、流程控制、数据处理等);界面设计细节;接口实现细节;错误处理机制设计;单元测试计划。 |
软件接口说明 | 外部接口说明(与其他系统接口协议、数据格式等);内部模块间接口说明(调用方式、参数传递等);接口测试计划和方法。 | |
软件实现 | 软件功能说明 | 项目名称、编号、软件名称和版本号;软件功能概述;主要功能实现过程;软件运行环境要求。 |
源代码说明 | 项目编号、软件名称、功能描述;全局变量说明;数据库字典说明;函数功能说明;接口说明。 | |
单元测试和集成测试报告 | 测试环境描述;测试用例执行情况;问题及缺陷记录;问题解决情况。 | |
产品测试 | 测试报告 | 测试范围和目标;测试方法和策略;测试结果分析;系统质量评估。 |
测试文档 | 详细测试用例文档;测试过程记录文档;测试环境配置文档。 | |
操作手册 | 系统概述;安装和配置说明;操作指南;常见问题解答。 | |
安装维护手册 | 系统安装步骤;系统维护方法;系统升级方法。 | |
用户培训 | 用户培训计划 | 培训目标和对象;培训内容和课程安排;培训方式和方法;培训考核方式。 |
培训手册 | 侧重于培训内容,可包括案例分析、实际操作指导等。 | |
培训签到表 | 记录参加培训人员名单和签到情况。 | |
用户意见 | 收集用户在培训过程中的意见和建议。 | |
系统上线 | 上线计划 | 上线时间表;上线准备工作;上线步骤和流程;风险评估及应对措施。 |
上线操作步骤及问题处理步骤 | 详细上线操作指南;问题处理流程;回退方案。 | |
软件部署记录和运行结果 | 记录软件部署过程和结果;系统运行结果记录。 | |
系统验收 | 项目成果物(整理装订成册) | 需求规格说明书、设计文档、测试文档、操作手册、安装维护手册等所有项目相关文档整理装订。 |
系统验收报告 | 验收背景和目的;验收依据;验收内容和方法;验收结果分析;验收结论。 | |
产品维护 | 问题反馈记录 | 记录用户反馈问题和意见;问题处理情况;问题跟踪记录。 |
变更原因及软件和源代码版本控制记录 | 记录系统变更原因和需求来源;软件和源代码版本控制记录。 | |
项目总结 | 提交客户方的项目总结 | 项目概述;项目成果总结;项目经验教训;对客户的建议。 |
公司项目汇报 PPT | 以 PPT 形式向公司汇报项目情况,包括背景、目标、过程、成果、经验教训等。 |
第十八章、软件变更
为规范软件变更与维护管理,特制定本制度。
(本制度适用于应用系统开发完毕并正式上线,移交给客户方之后的运行支持及系统变更工作。)
1、系统变更工作可分为功能完善维护、系统缺陷修改、统计报表生成。
2、需求部门提出系统变更需求,开发部技术支持人员根据重要性和紧迫性做判断,确定其优先级和影响程度,并进行相应处理,同时将变更需求整理成系统变更申请表。
3、系统变更实现过程按照软件开发过程规定进行,遵循软件开发过程统一的编码标准和版本控制,并经过测试通过才能完成部署和上线。
4、在系统变更完成后,开发人员需将系统变更表的执行结果找业务部门负责人签字后,提交至公司进行归档管理。