1、软件开发流程管理规范软件开发流程管理规范 1一、概述 2二、流程 2三、附件 3附件一、编码规范 .31、命名空间 32、命名规则 32.1 文件夹及相关文件命名规则 .32.2 数据库表命名规则 .43、代码规范 43.1 代码分层结构 .43.2 编码规范 .54、注释 64.1 注释模板设置 .64.2 手工添加注释 .74.3 注释要求 .8附件二、软件需求申请表 .9附件三、软件开发申请表 .10附件四、项目组成成员表 .11附件五、项目策划/任务书 .12附件六、WBS 表 13附件七、项目进度计划表 .14附件八、项目风险管理表 .15附件九、项目沟通计划表 .16附件十、项目会
2、议纪要 .17附件十一、项目状态报告表 .18附件十二、项目变更管理表 .19附件十三、项目总结表 .20一、概述随 着 公 司 规 模 的 扩 大 、 各 部 门 对 软 件 需 求 的 激 增 、 提 高 效 率 的 工 作 要 求 , IT 部门承接的 软 件 开 发 项 目 越 来 越 多 , 而 与 之 相 对 应 的 就 是 软 件 开 发 流 程 不 明 确 , 软 件 项 目 的 随 意 性 较 大 、 可 追 溯 性 较 差 、 可 统 计 性 模 糊 、 可 预 测 性 不 足 是 摆 在 我 们 面 前 最 直 接 的 问 题 。 为 了 适 应 公 司 的发展,IT 部
3、软件开发项目特制订本流程。二、流程由 上 图 可 以 得 出 以 下 几 个 关 键 步 骤 : 一、需求部门:I、 需 求 部 门 首 先 需 要 填 写 软 件 需 求 申 请 表 , 说 明 需 要 开 发 的 软 件 具 体 用 途 径 、 目 前 工作模式、工作不方便之处、基本功能等信息;II、待 IT 部 门 评 审 通 过 后 , 通 知 需 求 部 门 , 填 写 软 件 开 发 申 请 表 , 具 体 列 明 需 要 实 现 的 功 能 、 目 前 工 作 流 程 、 使 用 系 统 后 需 要 达 到 的 状 态 , 可 节 省 的 人 力 、 物 力 , 调 高 的 效
4、率 等信息;III、 软 件 开 发 测 试 完 成 之 后 , 接 受 IT 部 门 的 软 件 使 用 培 训 , 并 填 写 参 与 培 训 确 认 单 ; IV、 软 件 试 用 结 束 后 , 填 写 软 件 验 收 表 , 完 成 软 件 项 目 的 开 发 流 程 ; V、 在 开 发 测 试 过 程 中 , 遇 到 开 发 风 险 增 加 、 需 求 变 更 等 , 都 需 要 配 合 IT 软件开发人员填 写 相 关 的 项 目 风 险 管 理 表 和 项 目 变 更 管 理 表 。 二、IT 部门:I、积极对需求部门提出的 软件需求申请表进行评审、审批,限 3 个工作日完成
5、,及时反馈结果给需求部门;II、指导需求部门填写各类表格; III、 积 极 评 审 需 求 部 门 填 写 的 表 格 、 积 极 沟 通 , 有 效 获 得 相 对 准 确 的 需 求 , 并 填 写 完 善 ,让需求部门签字确认;IV、 进 入 开 发 流 程 后 , 积 极 填 写 项 目 成 员 组 成 表 、 项 目 策 划 任 务 书 、 WBS 表 、 项 目 进 度 计 划 表 等 ( 具 体 见 附 件 ) ;V、 积 极 开 展 人 员 培 训 和 软 件 试 用 工 作 , 编 写 完 善 的 XXX 软 件 试 用 说 明 书 , 并 要 求 相 关人员签字确认,并存
6、档处理。三、附件 附件一、编码规范 1、命名空间1. 公 共 类 库 ( 公 司 功 能 业 务 ) :(1 ) 全局公共类库:例 : ECO.Common.DBhelper/Excel/email,生 成 dll 文 件 , 添 加 至 最 小 应 用 库 可 全 程 序 引 用(2 ) 局 部 公 共 类 库 ( 主 要 区 分 公 司 ) , 命 名 方 式 为 专 有 业 务 场 景 +专 有 业 务 名 +具 体 类 名 : 例:ECO.Gp(总部)/In(国内市场)/Rb (生产) 注 : ( 公 共 类 库 ) 信 息 登 记 、 评 审 、 信 息 共 享 , 命 名 空 间
7、最 多 三 层2. 项 目 程 序 文 件 : 项 目 文 件 名 ,以 核 心 功 能 的 英 文 名 称 为 准 ,格 式 :ECO_英 文 名 词 首 字 母 大 写2、命名规则2.1 文件夹及相关文件命名规则a) 文件夹:功能文件夹,采用驼峰形式,首字母大写全称b) 窗体文件:采用驼峰形式,首字母大写全称c) 接口:I+采用驼峰形式,首字母大写全称 d) 方法名:采用驼峰形式,首字母大写全称 e) 窗体控件:同上f) 局部变量:变量类型缩写(int,fl,str )+ 驼峰形式g) 全局变量:不建议使用h) 常量:全英文大写,不建议出现在页面i) 数组:功能名称首字母小写+ 驼峰+Ar
8、rj) List 集 合 : 功 能 名 称 首 字 母 小 写 +驼 峰 +List k) 字典:功能名称首字母小写+驼峰+Dicl) Dateset: 功 能 名 称 首 字 母 小 写 +驼 峰 +Ds m) DateTable:功能名称首字母小写 +驼峰+Dt附表 1:类 型 前 缀 ( 小 写 ) +驼 峰 样 式 名 词 或 名 词 短 语 对于基本类型变量,前缀如下表:类型 前缀int intdouble doufloat flstring strbool booldatetime datbyte byt对于对象类型变量,也可以采用类似基本类型方式,如 StringBuilder
9、 类型,可使用 sb 作为 前缀开头,后跟变量名驼峰样式。 对 于 集 合 类 型 变 量 , 如 数 组 、 List、 Dictionary, 可 以 在 变 量 命 名 的 基 础 上 结 尾 加 入 集 合 类 型 简写。如,sqlList,dataDic 等。2.2 数据库表命名规则命 名 方 法 : 项 目 大 写 首 字 母 +_+功 能 ( 全 英 文 大 写 ) 【 多 单 词 组 成 的 , 取 单 词 首 字 母 大 写 组 合 】 表字段:类似变量命名索引:表名(或缩写)+_+列名+idx 注 : ID、 创 建 人 ( creator) 、 创 建 时 间 ( cre
10、ateTime) 、 状 态 ( state) 、 创 建 人 工 号 ( createID) 等字段为必须创建的字段;3、代码规范3.1 代码分层结构建 议 每 个 模 块 中 代 码 至 少 分 三 层 结 构 ,根 据 项 目 大 小 决 定 是 否 采 用 这 种 方 式 ,可 以 先 以 一 两 个 项目测试一下这种结构;表现层数据层逻辑层例如一个项目的一个模块,可以创建文件夹结构如下所示:表现层 页面 *.aspx 数据层 *.cs 逻辑层 *.cs表现层直接面向用户,逻辑层负责后端逻辑处理,数据层负责和底层数据库交互。表现层调用逻辑层代码,只有查询数据时,表现层可以直接调用数据层
11、; 逻辑层负责处理逻辑,为表现层提供调用接口,其数据操作需要调用数据层提供接口; 数 据 层 负 责 提 供 和 处 理 数 据 , 需 要 为 逻 辑 层 提 供 调 用 接 口 , 所 有 与 数 据 库 的 操 作 都 只 能 在 该 层实现。3.2 编码规范3.2.1 通用a) 类 功 能 必 须 唯 一 : 每 个 文 件 中 只 有 一 个 类 ( 不 包 括 内 部 类 )b) 行 宽 限 制 在 80 个 字 符 内 , 必 须 按 最 低 优 先 级 换 行c) 方 法 代 码 限 制 在 200 行 内d) 类 代 码 建 议 限 制 在 1500 行 内e) 方法参数过长
12、,应分行显示,逗号至于末尾f) 每行声明一个变量,且尽量赋初值,同类型必须连续写g) 复 合 语 句 都 需 加 大 括 号 , 不 要 写 在 一 行 , if、 else 尽 量 配 对 出 现 , try、 catch、 finally h) 高 扇 入 、 合 理 扇 出 ( 尽 量 不 超 过 三 层 )i) 缩 进 不 允 许 空 行j) 递 归 要 慎 用 , goto 不 允 许 使 用k) 方法内禁止更改传递过来的参数l) 实 体 类 中 变 量 应 私 有 化 , 应 包 含 每 个 变 量 的 set 及 get 方 法m) 避免三层以上嵌套循环n) 代 码 应 包 含
13、正 确 性 和 容 错 性 处 理 ( try、 catch、 finally)o) 编 程 时 应 考 虑 代 码 的 效 率 ( 时 间 、 空 间 ) , 多 循 环 内 侧 , 变 量 声 明 放 在 循 环 外p) 对 象 比 较 用 对 应 方 法 不 用 “=”, 例 如 : equals, compare to q) 计 算 尽 量 避 免 除 法r) 设计方法可重用性s) else、finally、catch、日志必须有出口 t) 堆常量统一定义,避免用常量字符串 u) 变量必须初始化3.2.2 表 现 层页面端1、 JS 代码和 CSS 代码统一放置在 html 的 hea
14、d 子元素中;2、 JS 代码需要有注释;3、页面控件有嵌套情况的,各级需要缩进,并且各级的头尾对齐;页面处理类1、页面加载时谨慎处理 Session 置空;2、 类 中 多 处 用 到 的 变 量 建 议 创 建 成 员 变 量 , 成 员 变 量 应 私 有 化 ( private) , 位 于 类 代 码 上 方 ; 3、除用于 E 前台调用的如 App.direct 方法需为 public 外,其他方法建议均为 private; 4、 Page_Load 方法:建议将页面加载方法中内容加入if (!X.IsAjaxRequest)代码块中,避免页面每次操作后都调用 Page_Load
15、方法;5、获取页面的服务端控件的值前需对控件值的 null 和空进行判断,避免空指针异常;6、避免过多或复杂的逻辑处理代码,统一调用逻辑层代码,将展现和逻辑分离;7、对数据的增删改操作不要直接调用数据层,查询可直接调用数据层代码;3.2.3 逻 辑 层1、 除 对 表 现 层 提 供 的 接 口 方 法 外 , 其 他 方 法 均 保 持 私 有 private2、对数据库数据处理调用数据处理层代码3、对串行的数据处理时事务保证4、逻辑代码容错性保证3.2.4 数据处理层1、 除 对 外 提 供 的 接 口 方 法 外 , 其 他 方 法 均 保 持 私 有 private2、对数据库的底层访
16、问(获取数据库连接、执行 sql 语句、数据库连接关闭)均调用数据 库操作帮助类3、数据处理层类中只处理数据,避免业务逻辑代码4、 sql 语句编写时避免使用 “+”5、 数 据 库 操 作 帮 助 类 中 数 据 库 操 作 的 容 错 性 和 事 务 处 理 ( 插 入 、 更 新 、 删 除 操 作 需 要 事 务 保证)4、注释编写任何代码都需要有代码注释,并且代码修改后也要修改注释,保证代码注释同步。4.1 注释模板设置在 vs 安 装 目 录 , 以 下 目 录 中 , 找 到 class.cs 文 件 , 修 改 保 存 后 , 重 启 vs, 之 后 创 建 新 类 时 即 会
17、自动产生注释。D:Program Files (x86)Microsoft Visual Studio10.0Common7IDEItemTemplatesCacheCSharpCode2052Class.zip但是修改后没有效果。4.2 手工添加注释创 建 新 对 象 可 以 手 工 添 加 注 释 : 注释写法:块注释 注释包含在/*和*/ 中,可以有多行。 行注释以/开头,可以有多行,每行前面都以/ 开头。文件头注释/* =* Copyright 2013 ECOVACS Inc. All rights reserved!* 科 沃斯 机器 人 科 技( 苏 州 )有 限公 司*=*/类
18、文件注释/*DESC : 类 功 能 描述* SINCE : .net 版 本* CREATOR: 创建 人* DATE: 创 建日 期*/方法注释/*DESC : 方 法 功 能描 述* PARAMS: 参数 说明* RETURN: 返 回值 说明* CREATOR: 创建 人* DATE: 创 建日 期*/4.3 注释要求a) 注 释 量 : 20%30%, 项 目 完 成 周 期 延 长 20% b) 注 释 地 方 : 段 前 以 及 当 行 之 后c) 上 线 之 前 无 需 版 本 号 , 上 线 之 后 需 版 本 号 , 上 线 前 统 一 为 1.0 d) 注 释 与 自 身
19、 方 法 之 间 不 为 空 , 其 他 方 法 必 须 为 空e) 注释代码在上线后全删除,上线后不允许无效代码存在 注 : 注 释 中 的 内 容 含 创 建 人 、 创 建 时 间 、 功 能 描 述 、 参 数 说 明 、 修 改 人 、 修 改 时 间 、 修 改 描 述、返回值;上线后每个源码备份空间附件二、软件需求申请表需求部门: 申请人:用途描述目前工作状态基本功能描述部门主管建议签字确认(时间)附件三、软件开发申请表需求部门: 申请人:具 体 功 能 模 块 说明目前工作流程项 目 完 成 所 能 带 来 的 预 期 效 益 ( 可 节 省 的 人 力 、 物 力 等 )部门
20、主管建议签字确认(时间)附件四、项目组成成员表项目组成成员表Project Team Members一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、项目组成员成员姓名Name项目角色Project Role所在部门Dept Name职责Responsibility项 目 起 止 日 期 Data投 入 频 度 及 工作量 Time联系电话Tel No.主管经理Superviso
21、r签字 Signature: 日期 Date:项目赞助人 Sponsor项目经理 Project Manager项 目 角 色 包 括 项 目 赞 助 人 ( Sponsor) 、 项 目 经 理 ( Manager) 、 项 目 核 心 成 员 ( Core team) 和项目非核心成员(Extended team) 。附件五、项目策划/任务书项目策划/ 任务书Project Plan/Charter一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( P
22、roject Manager) : 制 作 日 期 ( Data) :二、项目描述1、项目背景与目的(所有的项目均起始于某个商业问题,该部分简要描述这些问题)2、项目目标(包括质量目标,工期目标、费用目标和交付产品特征与特征的主要描述)3、项目里程碑计划(包含里程碑的时间和成果)4、评价标准(说明项目成果在何种情况下将被接受)5、项目假定与约束条件(说明项目的主要假设条件和限制性条件)6、 项 目 主 要 利 益 干 系 人 ( 包 括 高 管 、 客 户 、 职 能 部 门 主 管 、 供 应 商 、 项 目 赞 助 人 、 项 目 经 理 、 项 目 组 成 成 员 等 干 系 人 )姓名
23、 类别 部门 职务附件六、WBS 表WBS 表Project Work Breakdown Structure一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、工作分解结构分解代码WBS Code任务名称Task包含活动Activities Included工时估算Estimated Time人力资源Estimated HR其他资源Estimated Resources费用估计E
24、stimated Cost工期Expected Days注:以上工期及费用估算均用最可能值附件七、项目进度计划表项目进度计划表Project Schedule一、项目基本情况项 目 名 称 ( Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) :制 作 日 期 ( Data) :二、项目进度表周(Week) 0 1 2 责任人Team Memmber关键里程碑 Milestone开始Start29 30311 2 3 4 5 6 7 8 9 10
25、1112开工会 Kick-off meeting附件八、项目风险管理表项目风险表Project Risk Management一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、项目风险管理风险发生概率的判断准则高风险:60%发生风险的可能性中风险:30-60%发生风险的可能性低风险:30%发生风险的可能性序号Sequenc e NO.风险描述Risk Description发生概
26、率Happening Probability影响程度Influence degree风险等级Risk Level风险响应计划Risk Response Plan责任人Risk owner开放/关闭Open/Close d附件九、项目沟通计划表项目沟通计划表Project Communication Plan一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、项目沟通计划利益干系人S
27、takeholders所需信息Info Needed频率Frequency方法Means责任人Risk owner附件十、项目会议纪要项目会议纪要Project Meeting Minutes一、基本情况会议名称(Meeting Name) : 召集人(Called By) :会议日期(Meeting Date) : 开始时间(Start Time) :会议地点(Meeting Place) : 持续时间(Meeting Duration) :记录人(Minutes By) : 审核人(Reviewed By) :二、会议目标简要说明会议的目标,包括期望达到的结果三、参加人员(列出参加会议的人
28、员,他在项目中的头衔或角色)四、发放材料(列出会议讨论的所有项目资料)五、发言记录(记录发言人的观点、意见和建议)六、会议决议(说明会议结论)七、会议纪要发放范围附件十一、项目状态报告表项目状态报告表一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :当前项目状况 按计划进行 比计划提前 落后计划汇报周期二、当前任务状态(简要描述任务进展情况)关键人物 状态指示 状态描述三、本周期内的
29、主要活动(对本周期内的主要交付物进行总结)四、下一个汇报周期内的活动计划(描述活动需要与项目计划和 WBS 相对应)五、财务状况六、上期遗留问题的处理(说明上一个汇报周期内问题的处理意见和处理结果)七、本期问题与求助附件十二、项目变更管理表项目变更管理表Project Change Management一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、历史变更记录(按时间顺序记录
30、项目以往的每一次变更情况)序号Sequence NO.变更时间Change Date涉及项目任务Task Concerned变更要点Change To变更理由Why Requested申请人Requested By审批人Approved By三、请求变更信息(建议的变更描述以及参考资料)1、申请变更的内容2、申请变更原因四、影响分析受影响的基准计划 1、进度计划 2、费用计划 3、资源计划是否需要成本/进度影响分析? 是 否对成本的影响对进度的影响对资源的影响变更程度分类 高 中 低若不进行变更有何影响申请人签字 申请日期五、审批结果审批意见 审批人签字 日期附件十三、项目总结表项目总结表Pr
31、oject Overviews一、项目基本情况项目名称(Project Name) : 项目编号(Project Code) :制作人(Prepared by) : 审核人(Reviewed by) :项 目 经 理 ( Project Manager) : 制 作 日 期 ( Data) :二、项目完成情况总结1、时间总结开始时间:Start Date计划完成时间Expected Finish Date实际完成日期Actual Finish Date时间(差异)分析2、成本总结计划费用 实际费用成本(差异)分析3、交付结果总结计划交付结果实际交付结果未交付结果交付结果(差异)分析三、项目经验、教训总结签字 Signature 日期 Date项目赞助人 Project Sponsor项目经理 Project Manager