对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理_第1页
对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理_第2页
对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理_第3页
对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理_第4页
对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件项目管理流程总结 1 风险评估 2 成本预算 3 客户沟通的过程 4 需求分析 5 面向对象程序设计 略 6 开发管理 7 产品交付 一 一 风险评估风险评估 软件项目风险是指在整个项目周期中所涉及的成本预算 开发进度 技术难度 经济可行 性 安全管理等各方面的问题 以及由这些问题而对项目所产生的影响 项目的风险与其 可行性成反比 其可行性越高 风险越低 软件项目的可行性分为经济可行性 业务可行 性 技术可行性 法律可行性等四个方面 而软件项目风险则分为产品规模风险 需要风 险 相关性风险 管理风险 安全风险等六个方面 1 产品规模风险产品规模风险 项目的风险是与产品的规模成正比的 一般产品规模越大 问题就越突出 尤其是估算产 品规模的方法 复用软件的多少 需求变更的多少等因素与产品风险息息相关 1 估算产品规模的方法 2 产品规模估算的信任度 3 产品规模与以前产品规模平均值的偏差 4 产品的用户数 5 复用软件的多少 6 产品需求变更的多少 2 需求风险需求风险 很多项目在确定需求时都面临着一些不确定性 当在项目早期容忍了这些不确定性 并且 在项目进展过程当中得不到解决 这些问题就会对项目的成功造成很大威胁 如果不控制 与需求相关的风险因素 那么就很有可能产生错误的产品或者拙劣地建造预期的产品 每 一种情况对产品来讲都可能致命的 这些的风险因素有 1 对产品缺少清晰的认识 2 对产品需求缺少认同 3 在做需求分析过程中客户参与不够 4 没有优先需求 5 由于不确定的需要导致新的市场 6 不断变化需求 7 缺少有效的需求变化管理过程 8 对需求的变化缺少相关分析等 3 相关性风险相关性风险 许多风险都是因为项目的外部环境或因素的相关性产生的 控制外部的相关性风险 能缓 解策略应该包括可能性计划 以便从第二资源或协同工作资源中取得必要的组成部分 并 觉察潜在的问题 与外部环境相关的因素有 1 客户供应条目或信息 2 交互成员或交互团体依赖性 3 内部或外部转包商的关系 4 经验丰富人员的可得性 5 项目的复用性 4 技术风险技术风险 软件技术的飞速发展和经验丰富员工的缺乏 意味着项目团队可能会因为技巧的原因影响 项目的成功 在早期 识别风险从而采取合适的预防措施是解决风险领域问题的关键 比 如 培训 聘请顾问以及为项目团队招聘合适的人才等 关于技术主要有下面这些风险因 素 1 缺乏培训 2 对方法 工具和技术理解的不够 3 应用领域的经验不足 4 对新的技术和开发方法应用不熟悉 5 管理风险管理风险 尽管管理问题制约了很多项目的成功 但是不要因为风险管理计划中没有包括所有管理活 动而感到惊奇 在大部分项目里 项目经理经常是写项目风险管理计划的人 他们有先天 性的不足 不能检查到自己的错误 因而 使项目的成功变得更加困难 如果不正视这 些棘手的问题 它们就很有可能在项目进行的某个阶段影响项目本身 当我们定义了项目 追踪过程并且明晰项目角色和责任 就能处理这些风险因素 1 计划和任务定义不够充分 2 对实际项目状态不了解 3 项目所有者和决策者分不清 4 不切实际的承诺 5 不能与员工之间的进行充分地沟通 6 安全风险安全风险 软件产品本身是属于创造性的产品 产品本身的核心技术保密非常重要 但一直以来 我 们在软件这方 面的安全意识比较淡薄 对软件产品的开发主要注重技术本身 而忽略了专 利的保护 软件行业的技术人员流动是很普遍的现象 随着技术人员的流失 变更 很能 会导致产品和新技术的泄密 致使我们的软件产品被它公司窃取 导致项目失败 而且在 软件方面关于知识产权的认定目前还没有明确的一个行业规范 这也是我们 软件项目潜在 的风险 7 回避风险的方式回避风险的方式 1 以开发方诱导能保证需求的完整 使需求与客户的真实期望高度一致 再以书面方便 形成 用户需求 这一重要的文档 避免疏漏造成的损失在软件系统的后续阶段被逐步地 放大 2 设立监督制度 项目开发中任何较大的决定都必须有客户参与进行的 在该项目中项 目监督由项目开发中的质量监督组来实施 3 需求变更需要经过统一的负责人提出 并且要用户需求的审核领导认可 需求变更应该 是定期而不是随时的提出 而且开发方应该做好详细的记录 让客户了解需求变更的实际情 况 4 控制系统的复杂程度 过于简单的系统结构 对用户来使用比例会有明显的折扣 甚 至造成软件寿命过短 反之 软件结构的过于灵活和通用 必然引起软件实现的难度增加 系统的复杂度会上升 这又会在实现和测试阶段带来风险 适当控制系统的复杂程度有利 于降低开发的风险 5 从软件工程的角度看 软件维护费用约占总费用的 55 70 系统越大 该费用 越高 对系统可维护性的轻视是大型软件系统的最大风险 在软件漫长的运营期内 业务 规则肯定会不断发展 科学的解决此问题的做法是不断对软件系统进行版本升级 在确保 可维护性的前提下逐步扩展系统 6 设定应急计划 每个开发计划都至少应该设定一个应急预案去应对出现突发情况和不 可遇知的风险 回到目录 二 二 成本预算成本预算 1 成本预算方式成本预算方式 1 自上而下的预算方法 自上而下的预方法主要是依据上层 中层项目管理人员的管理经验进行判断 对构成项目 整体成本的子项目成本进行估计 并把这些判断估计的结果传递给低一层的管理人员 在 此基础上由这一层的管理人员对组成项目的子任务和子项目的成本进行估计 然后继续向 下一层传递他们的成本估计 直到传递到最低一层 使用此预算方式 在上层的管理人员根据他们的经验进行的费用估计分解到下层时 可能 会出现下层人员认为上层的估计不足以完成相应任务的情况 这时 下层人员不一定会表 达出自己的真实观点 不一定会和上层管理人员进行理智地讨论 从而得出更为合理的预 算分配方案 在实际中 他们往往只能沉默地等待上层管理者自行发现问题并予以纠正 这样往往会给项目带来诸多问题 自上而下更适用于项目启动的前期 与真实费用相差在 30 70 之间 Scrum 使用自上而下的成本预算方式 它不会立即精确地确定成本 而是以最大限度容纳 客户对未来产品要求所产生的变更 2 自下而上的预算方法 自下而上方法要求运用 WBS Work Breakdown Structure 工作分解结构 对项目的 所有工作任务的时间和预算进行仔细考察 最初 预算是针对资源 团队成员的工作时间 硬件的配置 进行的 项目经理在此之上再加上适当的间接费用 如培训费用 管理费用 不可预见费等 以及项目要达到的利润目标就形成了项目的总预算 自下而上的预算方法 要求全面考虑所有涉及到的工作任务 更适用于项目的初期与中期 它能准备地评估项目 的成本 与真实费用相差在 5 10 之间 注解 注解 WBS WBS是面向提交成果对项目的分解 从提交成果的列表可以确定每个提交成果需要执行 的活动 Scrum会对WBS进一步细化 把一个迭代分解为一个或多个的工作包 再把工 作包分解为细小的开发任务 一般开发任务的开发周期在15个工作小时以内 2 确定项目支出确定项目支出 总体成本预算就是结合下列多个成本预算方式综合计算的开发成本 1 零基数预算 在成本预算的初期应该使用零基数的计算原则 而不可以使用类似于 以上一年总体费用 加上 20 这样粗略的方式计算项目成本 2 软硬件成本 物品成本 物品成本是指类似于 服务器 RAM 硬盘 CPU NIC 卡 RAID 簇 成本 维护成本 机 房租金 光纤通讯成本 软件成本等的成本 计算成本时需要考虑组装硬盘需时的长短 技术人员需要具备的质素 产品供应商能否提 供保证质量 管理时是否需要额外的管理人员这些多方因素 3 软件许可证成本 4 外包成本 当使用类似 视频 短信 移动电信类服务 门户网站等子项目时可以考虑以外包形式完 成 以降低开发成本 5 人力资源成本 计算人力资源成本时应该使用以最高和最低的工作效率估算平均效率的方式 计算出人力 资源的平均成本 6 维修保养成本 回到目录 三 三 客户沟通的过客户沟通的过程程 从客户沟通的方向出发来看 软件项目可分为 需求识别 方案定制 项目实施 项目结 束等 4 个不同的阶段 各个阶段都具有不同的沟通重点 1 需求识别阶段需求识别阶段 1 文本沟通 在需求识别的前期 应该通过问卷 原型展示 界面展示 逻辑处理展示 准化文档模板 等方式进行全方位多角度的分析 随时将不明确之处反馈给客户 以期待客户解答 并以文 本记录的方式建立需要分析书 并要求客户审核需求分析书 以达到需要分析与客户的真 实期望高度一致的结果 2 业务逻辑沟通 在进行业务沟通时 应该了解客户的行业语言 以促进业务分析的过程 越过应用需求和 开发之间的鸿沟 沟通过程提倡以草图或者可视信息化的方式进行 针对不同层面的企业 用户提供最适合的操作界面 以多角度的方式思考问题 要抓住需求重点 尤其是客户方领 导所关注的创新类和实用类需求 3 需求变更的规范化管理 需求变更在软件开发类项目中是可以理解的 但必须对需求变更做好规范化的管理 以避免 出现需求无止境变更的风险 需求变更必须由统一的负责人提出 并且由用户需求的审核领 导者认可 需求变更的提出应该是定期而不是随时的 开发方应该做好详细的文本记录 让 客户了解需求变更的实际情况和开发方为之所付出的成本代价 2 方案定制阶段方案定制阶段 该阶段项目的主要任务是与客户共同制定一个以前期明确的需求 双方的资源 项目开始 的阶段 实施的时间约定 项目费用限制等为基础的具有可操作性的项目计划 从本阶段开 始争取客户全面参与项目的管理 并以双方的共同利益考虑项目实施的具体计划与风险规 避 3 项目实施阶段项目实施阶段 在该阶段 软件项目团队应该与客户共同领导项目的实施 同时 项目团队应实时评估客户 满意度 并通过持续改进的方式提高客户满意度 还应要求客户参加必要的培训 以及在必要 时检查项目产品 在出现客户的需求变更前 应主动与客户沟通交流 使客户充分了解项目 的每个环节 以及变更带来的影响 减少需求变更 如果出现客户需求变更 应与客户一起共 同解决由变更引起的成本 进度 质量变化 4 结束阶段结束阶段 该阶段主要进行项目成果的移交 并把系统交付给维护人员 帮助客户实现商务目标 结 清各种款项 完成这些工作后应该进行项目评估 审核此项目的成果并总结项目经验 5 售前人员注意事项售前人员注意事项 在产品型项目作为开发成果时 相关销售人员应该注意 对产品的推销不应该过分承诺 如果过分承诺 会给后续的项目实施带来困难 一旦承诺没有兑现 也会降低客户满意度 影响 今后合作 如果有附加承诺 一定要以文本形式记录 让实施项目经理知晓并传达给项目组 成员 注解 在软件项目中注解 在软件项目中 需要明确以下四种客户角色需要明确以下四种客户角色 A 要明确最终使用部门和用户 要去了解他们现有的工作方式 要让他们知道项目的目标 框架 知道项目要解决他们的哪些困难 但绝对不是全部困难 这样可以较好的控制项目范围 B 要明确需求的提出者 他或者他们要能够代表最终客户群体 提出产品需求的这类客户 要具有一定的技术 业务能力和权威 能够真正代表最终客户团队的意愿和想法 最好有IT 基础 能够用IT语言描述问题和需求 以利于双方的沟通 协作 避免产生歧义 C 要明确做需求确认的中层领导 他要把握方向 软件开发项目是解决实际生产或者管理 问题 同时 也是领导系统建设的具体实现 做需求确认的客户领导 既要了解高层领导的系 统建设要点和方向 又要谙熟具体业务和生产管理实际 如果是这样的客户领导来把 握和 决策 对企业软件开发项目的顺利进展作用非凡 D 要明确谁来对成品提意见 谁来验收 项目验收环节 是项目的收尾环节 如果验收的人 对项目初期的需求目标不了解 会从态度和产品实际使用效果上对验收产生负面的影响 对 提供产品的企业关闭项目非常不利 根据实践总结 由需求提出人和确认人来做项 目的验 收工作 能够促进项目的顺利完成 避免延期 回到目录 四 四 需求分析需求分析 1 需求分析的过程需求分析的过程 需求过程包括需求开发和需求管理 2 个部分 1 需求开发就是对开发前期的管理 与客房的沟通过程 可以分为 4 个阶段 需求获取 需求分析 编写需求和需求验证 2 需求管理 就是软件项目开发过程中控制和维持需求约定的活动 包括 变更控制 版本控制 需求跟踪 需求状态跟踪 2 需求的层次需求的层次 需求的层次包括 业务需求 用户需求 功能需求 非功能需求等 4 个方面 3 需求开发阶段的重点需求开发阶段的重点 1 提取业务对象 业务对象是指系统使用的真实对象 例如一个供应链管理 Supply Chain Management 简 称 SCM 业务对象主要包括 生产批发商 零售商 送货商 顾客多个层次 2 提取业务流程 在了解业务逻辑的过程中 应该列举出所开发软件模块的各自职能 并细化每个工作流程 深入分析业务逻辑 3 性能需求 在分析的前期应该注意客户对所开发软件的技术性能指标 如存储容量限制 运行时间限 制 安全保密性等 4 环境需求 环境需求是指软件平台运行时所处环境的要求 如硬件方面 机型 外部设备 数据通信 接口 软件方面 系统软件 包括操作系统 网络软件 数据库管理系统方面 使用方面 使用部门在制度上 操作人员上的技术水平上应具备怎样的条件 5 可靠性需求 对所开发软件在投入运行后发生故障的概率 应该按实际的运行环境提出要求 对于重要 的软件 或是运行失效会造成严重后果的软件 应提出较高的可靠性要求 6 安全保密要求 在需求分析时应当在这方面恰当地做出规定 对所开发的软件给予特殊的设计 使其在运 行中 其安全保密方面的性能得到必要的保证 7 用户界面需求 为用户界面细致地规定到达的要求 8 资源使用需求 开发的软件在运行时和开发时所需要的各种资源 9 软件成本消耗与开发进度需求 在软件项目立项后 根据合同规定 对软件开发的进度和各步骤的费用提出要求 作为开 发管理的依据 10 开发目标需求 预先估计以后系统可能达到的目标 这样可以比较容易对系统进行必要的补充和修改 4 需求分析的任务需求分析的任务 需求分析的主要任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型 其流程如下 1 确定对系统的综合需求 功能 性能 运行 扩充需求 2 制作产品需求文档 PRD 3 分析系统的数据需求 概念模型 数据字典 规范化 4 导出目标系统的详细的逻辑模型 数据流图 数据字典 主要功能描述 5 开发原形系统 6 从 PRD 提取编制软件需求规格说明书 SRS 注解 注解 SRS格式格式 1 引言 2系统概述 项目背景 系统目标 核心业务流程 3 术语说明 4 系统结构 架构图 功能图 5 主体功能与业务逻辑 重点 6 接口需求 内部 外部接口 7 网络总体设计 拓 扑网络 主机 组网 8 运行环境 Linux Windows IIS WebLogic Tomcat OLAP OLTP JDK 8 0 NET Framework 4 0等 回到目录 五 五 面向对象程序设计 略 面向对象程序设计 略 1 设计原则设计原则 1 SRP 单一职责链 每个类都应该只负责做一件事 2 OCP 开封闭合原则 软件的实体 类 模块 函数等 应该是可以扩展的 但是不可修改的 3 LSP 替换原则 子类必须能替换他们的基类型 4 DIP 依赖倒置原则 高层模块不应该依赖于低层模块 二者都应该依赖于接口与抽象类 抽象不应该依赖于细 节 细节应依赖于对象 5 ISP 接口隔离原则 不应该强迫客户依赖于并未使用的接口 而应该把胖接口分离 2 实现实现 UML 建模建模 1 业务对象的提取 2 根据 SRS CRC 等实现用况建模 3 实现业务顺序图 4 建立类图 根据用况图建立对象之间的关联 5 绘制活动图 实现协作图 状态图 回到目录 六 六 开发管理开发管理 1 建立项目计划建立项目计划 1 设计总体架构 针对系统的实施需要 采取适当的且成熟的框架结构 2 控制可扩展度 扩展度过大 将提高系统的复杂程度 延长开发时间 扩展度过低 会直接影响系统的二 次开发与维护 控制系统的可扩展性 能提高开发效率 降低系统维护的难度 3 建立基础设施 合理分配部署软 硬件等基础设施所需要的时间与成本 例如 服务器的订购安装 光纤 接入 软件平台订购 4 划分开发任务 利用 WBS Work Breakdown Structure 工作分解结构 对可交付结果进行分类与划 分 每个项目都能划分为多个不同阶段 每个阶段又可以分为多个工作包 Work Package 工作包是 WBS 里最小的可交付结果 最后从工作包中分解出多个开发任务 列表 5 部署开发进度 一个项目应该按进度划分为多个开发阶段 每个阶段的开发周期一般在 30 60 个工作日 以内 在此阶段内应该与客户举行协商会议 制定产品路线图 在开发过程中邀请客户积 极参与并提出反馈意见 然后把该时段内的开发任务按照开发难度 依赖性 重要性等多 方条件划分为多个迭代周期 在 Scrum 敏捷软件开发原则中 应该把每个迭代任务进一步细分为多个开发任务列表 再开发任务分配给组员各自负责 而开发时间应该控制在 15 个工作小时以内 如果开发 时间超出 15 个工作小时 应该考虑把开发任务再度细化 开发任务建议应该由组员自主 选择 而不要使用强制分配的方式 5 测试项目成果 每个工作包都应该同步部署测试工作 提高项目的质量 对出错 BUG 的工作包应该由测 试人员以文本方式记录 向开发人员展示错误所在 让开发人员及时进行修改 2 管理开发团队管理开发团队 1 组建团队 按照工作任务与项目时间的前提条件建立团队 按团队职责分配人员 一般团队人数应该 控制在 8 12 人之间 当团队人数超过 15 人时 应该考虑把团队分解成 2 个独立团队 负责不同的开发任务 2 分配开发任务 在每个迭代周期内 一般是 15 30 个工作日 应该把每个工作包进一步细分为多个开 发任务 再开发任务分配给组员各自负责 开发时间应该控制在 15 个工作小时以内 如 果开发任务的开发时间超出 15 个工作小时 应该考虑把任务再度细化 而开发任务应该 以自由选择的方式分配给每个组员 3 监督开发进度 在迭代的前期举行一次会议 让组员了解开发的进展及流程 并以自主选择的方式分配开 发任务 期间可使用 Microsoft Project 等工具记录开发流程的进展 在每个工作包完成 开发后应该进行性功能的测试 并以文本方式记录测试结果 每天举行一次 15 分钟的站立会议 让组员交待昨天已完成的开发任务 当天将要做的任 务 与开发过程中所遇到的问题 并在每周末举行一次例行会议 交待总体进程 在迭代末期举行一次冲刺会议 总结项目的进展 交行已完成的任务 回顾该迭代周期内 所遇到的问题 为下一个迭代做好准备 4 系统测试 对每个已完成的工作包进行适时的测试 保证系统质量与性能 对测试结果进行文本的记 录 并把测试结果与绩效工资收入挂钩 并以真实数据计算组员的绩效收入 5 解决开发中所遇到的问题 对开发人员进行前期培训 可适当按工作能力分配任务 指导组员的开发 当遇到问题时 应该在当天的站立会议时即时提出 并在 15 个工作小时内解决所遇到的问题以防止问题 进一步扩大 3 监管产品质量监管产品质量 1 质量需要的是计划 设计而并非审查的 在产品建立的初级 必须与 质量保证 QA 的部门进行协商 以正式文档的方式 决定恰当的质量策略和标准 2 在开发过程中使用 TDD 测试驱动开发 的模式 提高开发质量 测试人员应该以 文本方式记录 bug 并与开发人员共同工作的 把突出的缺陷演示给开发人员 以提高修 改的效率 3 在每个迭代的结束时进行一次产品效果的演示 从客户 使用者 高层领导中收集反 馈信息 在团队内部举行评审会议 分析测试结果 了解产品性能 为下次迭代所需要做 的改进做好计划 4 修改项目计划修改项目计划 1 在产品需要识别阶段 应该以文档形式记录产品功能与开发流程 在开发计划需要修 改时 应该与客户共同探讨 让客户了解计划修改对项目进度所造成的影响 2 项目计划的修改应该由统一的负责人提出 并且由用户需求的审核领导者认可 需求 变更的提出应该是定期而不是随时的 3 计划的变更应该做好详细的文本记录 让客户了解需求变更的实际情况和开发方为之 所付出的成本代价 回到目录 七 七 产品交付产品交付 1 项目的后期审核项目的后期审核 在项目开发最终完成后 对开发人员来说可算是放下工作的重担 但对项目经理来说这往 往是项目的关键时刻 前期的风险评估 成本预算 需求分析 软件设计都是为了引导项 目走向这一时刻 此时所有的目光都将投向项目管理人员 你可能发现大量而琐碎的工作 将要在几个小时内完成 此刻项目经理更需要保持清醒与镇定 把最后的工作视为微型项 目来对待 细致地对项目进行后期的审核 分析项目成果 项目团队的效率 可交付产品 的价值 以此审核结果可作为项目管理经验总结的一部分 2 质量评审质量评审 在项目交付前 应该把项目交给相关的 质量保证 QA 部门进行质量评审 并邀请典型 用户感受产品的质量 3 项目的最终交付项目的最终交付 正常情况下在项目的前期就会订立项目交付的协议 项目交付方式分为非正式验收与正式 验收两种 一般在项目完成后都会先进行非正式验收 让客户体会项目的质量并提出反馈 意见 最后在客户肯定产品质量后再以书面协议的形式进行正式的产品验收 4 项目的最终报告项目的最终报告 在项目的最后 应该制定项目的最终报告 此报告可以视为是对该项目一个记录 但报告 不必包含项目的所有方面 一般最终报告应该包含以下方面 1 最初引进项目时的初期项目视图 2 对该项目的价值评估及支持性信息 3 项目的范围 4 项目的开发流程及 WBS 5 项目的会议记录 6 项目变更的报告及变更的理由 7 与项目相关的沟通过程文件 8 项目的审核报告与客户验收报告 9 项目成员的表现报告 10 项目的最终成果 产品研发过程常见问题产品研发过程常见问题 目录目录 产品研发过程常见问题 1 缺乏统一的管理平台 产品研发过程常见问题 2 难以量化的需求开发与管理 产品研发过程常见问题 3 跨部门协作困难 产品研发过程常见问题 4 多项目管理挑战多 产品研发过程常见问题产品研发过程常见问题 1 缺乏统一的管理平台 缺乏统一的管理平台 随着软件开发实践的不断深入 应用生命周期管理越来越被业界接受为一种经过实践 检验的 可以创造高品质的应用程序的 可靠的软件开发模式 但是 要实施整个应用程 序生命周期管理是非常复杂的 我们必须借助一些工具来帮助我们完成整个生命周期的管 理 让我们先来回顾一下绝大多数软件研发团队的典型工作情景 让我们先来回顾一下绝大多数软件研发团队的典型工作情景 场景场景 1 工具满天飞 工具满天飞 很多研发企业的管理平台非常分散 不同团队和个人使用工具不同 我们常常可以看 到 产品部门收集需求使用 Word Excel 项目经理制定项目计划 进行任务划分和分配 使用 Project 开发部门管理任务和缺陷使用 Jira URTracker 测试部门管理测试任务使 用 TestDirector TestLink 配置管理使用 VSS SVN CVS CC 等等 这些平台相互是 独立的 不仅不可以信息共享 部门之间还产生了有明显的信息壁垒 完全靠手工操作实 现信息传递 场景场景 2 研发过程衔接不畅 研发过程衔接不畅 公司的需求管理 计划管理 缺陷跟踪 测试管理等等各种研发活动 使用不同公司 开发的无法整合的工具 这些不同来源的工具 既无法共享项目信息 给使用上带来很多 不便 又无法在各种不同类型的数据之间建立关联 导致一些高级管理功能无法实现 比 如要实现需求跟踪 就需要整合需求管理 任务管理 测试管理三个系统 场景场景 3 一个 一个 BUG 引发的血案引发的血案 软件开发人员软件开发人员 1 通过代码走查发现一个 BUG 需要将这个 BUG 记入缺陷跟踪系统 软件开发人员软件开发人员 2 代码的作者代码的作者 需要根据这个缺陷判断需要如何修改 并评估修改的工 作量 如果是普通的 BUG 只需要开发人员进行修改即可 一旦发现是深层次的 BUG 涉 及到数据结构的调整 界面的调整甚至软件架构的调整 这将牵动研发团队的项目经理 系统架构师 数据库管理员 界面设计人员 产品经理 项目经理 项目经理 收到开发人员的汇报 很不幸的发现这个问题需要在缺陷跟踪系统中将相 关的人员统统拉到一起才可以解决问题 产品经理 产品经理 需要根据缺陷评估即将投入的人力成本和由此引发的后果 系统架构师 系统架构师 评估架构调整的成本并拿出可行性方案 数据库管理员 数据库管理员 调整数据结构 并为由此带来的数据结构升级准备方案 界面设计人员 界面设计人员 重新调整界面 并为原来统一的风格如何调整伤透脑经 软件开发人员软件开发人员 3 最终确定最终确定 FIX BUG 的人员的人员 根据最终收到的修改方案 制定修改计 划并进行 BUG 的修改 而且该软件开发人员制订的开发计划需要让相关人员能准确的掌 握 BUG 修改的进度 因为他的计划制约了后续的每一步工作 版本经理 版本经理 根据修改结果发布一个测试版本 并知道版本中已包含了此次修改 测试人员 测试人员 在拿到该版本后需要对这个 BUG 导致的代码修改设计针对性的测试用例 这个测试用例可能是自动测试用例 也可能是人工测试用例 总之测试人员需要在测试管 理系统来记录这个 BUG 修改的验证过程 版本经理版本经理 又出现了又出现了 一切就绪后 向客户发布版本时还需要提供 release notes 以 指明该版本中的这个改动 假设该 BUG 对用户可见 技术支持 技术支持 收到版本经理发布的版本 操作手册以及相关的 FAQ 做好给客户提供支 持的准备 QA 仔细分析代码走查发现的所有 BUG 原因 如果是典型问题 还需要将该问题写 入开发经验库 并通过知识共享的形式分享给所有团队成员 项目经理项目经理 囧囧 一切却还没有结束 项目经理的职责还需要从组织级的角度把控项目过 程和研发全进程 一个开发人员的代码如果被统计出问题较多 应该对该开发人员开发的 代码采取补救和预防措施 要么加强测试 要么给他一些培训 要么他根本不适合这个职 位应该走人 对于这个开发人员的上司 他应该如何评价这个犯错的下属 因为几个 BUG 就认为他的工作不称职显然是不正确的 还有他如何衡量这个开发人员的工作量 是否是 该员工工作量太多导致了该员工的代码质量不高 他还想知道该员工在引入这个 BUG 时当 时的工作任务是否过于紧迫 当然 他也可能想分析一下这个典型的 BUG 引入会导致多少 额外的工作量产生 这 也太麻烦了吧 一切就只是因为一个开发人员的某行代码的 BUG 引发的血案 拜托 这就是研发工作的特点 好吗 理由很简单 没有一个集中管理 统一 高度整合的管理平台 解决方案推荐解决方案推荐 工欲善其身 必先利其器 软件企业也是如此 要做到高效的软件开发和过程管理 必须选择运用灵活高效 统一整合的开发管理工具 TechExcel DevSuite 是一款高度集成 灵活可扩展的研发管理平台 实现了在同一平 台下从产品的概念形成 需求分析 项目规划 任务跟踪到开发测试等全生命周期的管理 有效且协同地控制需求 资源 工期和质量 帮助研发团队快速改进软件开发过程 提高 产品质量和工作效率 一个平台即解决所有工具问题一个平台即解决所有工具问题 DevSuite 平台不但包含了项目人员 架构师 开发人员和测试人员等所有人员对应的 支持功能 增强了软件开发团队中的沟通与协作 举个例子 项目经理在定制项目计划时 可以直接使用需求内容 在做计划的同时又可以给研发人员分配任务 研发人员在接到任 务时可以直接查看相关联的客户需求 而测试人员在遇到缺陷时可以自动提交 Bug 并且 能实时查看 Bug 的修复进度 统一的平台既节省了所有员工的工作量 也保证了信息的一 致性 同时也使得项目研发的所有历史都可追踪到 也就是说 研发过程的每一个阶段轻而易举的实现业务关联 如用户需求与产品功能 定制项目可关联 产品功能与项目规划 开发任务 测试用例 测试任务可关联 测试任务 与 BUG 可关联 开发任务与源代码可关联 知识条目与需求 功能 任务均可关联等等 当然必须地要提一下 DevSuite 平台还适用于跨地域 跨时区协同开发 支持分布式 研发团队 实现高效率的沟通与协作 产品研发过程常见问题产品研发过程常见问题 2 难以量化的需求开发与管理 难以量化的需求开发与管理 在软件项目的开发过程中 需求管理贯穿了软件项目的整个生命周期 在软件项目管 理中需求工程是软件开发的第一步 是关键的一步 也是最难把握的一步 需求管理做得 好坏直接影响到软件的质量 甚至软件项目的成败 从软件的项目立项 研发 维护 用 户的经验在增加 对使用软件的感受有变化 以及整个行业的新动态 都为软件带来不断 完善功能 优化性能 提高用户友好性的要求 在项目管理过程中 项目经理经常面对用户的需求变更 如果不能有效处理这些需求 变更 项目计划会一再调整 软件交付日期一再拖延 项目研发人员的士气将越来越低落 将直接导致项目成本增加 质量下降及项目交付日期推后 这就决定了项目组必须拥有需 求管理策略和有效的落地 让我们一起来回顾一下实际研发过程中 通常会面临到的需求管理挑战 让我们一起来回顾一下实际研发过程中 通常会面临到的需求管理挑战 1 缺乏需求的集中管理缺乏需求的集中管理 按照需求工程的说法 在进入开发环节之前 开发团队和客户之间需要形成一份完整 的需求规格说明书 详细地说明目标软件的各种需求 这其中包括功能性需求 非功能性 需求和其他各种约束 在典型的瀑布模型中 需求规格说明书是在需求分析阶段完成的 然而 由于软件外部环境的变化 很少有哪个项目在需求分析阶段就能将所有可能的需求 准确无误地包含进来 并且在开发阶段不需要修改 一句话 需求的变更是不可避免的 需求的变更也需要及时地反应到需求管理中 除此之外 在实际的敏捷软件开发中 对开发而言 需求的来源不一定像瀑布模型那 样完善的需求规格说明书 而通常有以下几种 1 客户初始的业务需求 很多客户可能只会告诉我们 它想做一个系统或者工具平台 大致是什么样子 应该具备哪些功能 但这种需求往往比较抽象 缺乏细致的分析 这种 需求可能源自于一次交谈 或者一封 Email 形式上并不正式 2 客户对项目快速原型的反馈意见 对于需求 在实际项目开发中 客户关注的业务 功能 项目经理关注的是抽象设计 而开发人员关注的却是具体实现 在项目初期 客户 往往也不是很清楚他们要什么 或者理想中的产品到底最后会是什么样的 界面布局 操 作流程等等 这一点 在新产品的开发中尤为明显 这时候 就需要开发团队能够按照现有的理解快速地开发一个原型 作为开发团队和 客户讨论和分析需求的共同基础 原型能够帮助用户更好地发掘和定义需求 客户对于原 型的论证作为反馈意见也可以使开发团队更加直观和感性地认识客户的需求 3 客户对每个迭代周期发布的版本的修改建议 如果该企业采用的是敏捷开发 每个迭代周期都要发布一个可用的版本给客户 该版 本尽可能多地实现了当前迭代周期内的需求以及之前迭代周期内遗留下来的需求 客户要 验证需求的实现是否符合他们的要求 并提出修改意见和建议 4 客户在研发周期中的需求变更 需求来源的特殊性决定了软件开发过程中需求管理的特殊性 尤其是对于一个同时承 担数个小项目的开发团队而言 不同的项目需求是由不同的开发人员或 QA 分别进行管理 和跟踪的 缺乏集中的管理 对于需求的跟踪也比较原始 往往是手工整理需求邮件和需 求列表 然后形成简单的需求文档 在需求查询和状态维护方面存在明显不足 2 需求变更频繁需求变更频繁 软件开发的显著特点之一就是灵活性 机动性 对变化的快速响应能力 尤其是敏捷 开发过程 需求变更更为频繁 敏捷开发的口号是拥抱需求变化 也就是说 开发团队对 于客户提出的需求变更通常是抱以欢迎的态度 尽管这些变更可能会给项目计划和项目进 度带来麻烦 但这种观念上的转变更能体现开发团队和客户之间合作的诚意 客户在迭代周期中的变更大致可以分为五种类型 添加新需求 删除本次迭代周期内 的需求 删除之前迭代周期内的需求 更改本次迭代周期内的需求 更改之前迭代周期内 的需求 这就是说 开发团队需要实时高效地管理这些变更 并且将需求变更涉及到的迭 代周期内项目计划和人员安排变更的影响最小化 3 缺乏有针对性的需求管理流程缺乏有针对性的需求管理流程 传统的需求管理过程 尤其是其中的变更控制过程是针对那些组织机构清晰 只能定 义明确的传统软件项目 其流程相对比较严谨和死板 同时 为了弥补需求变更对项目进 程带来的影响 开发人员常常需要快速的进行功能修改和增加 而没有遵循统一的流程控 制 从而常常使得软件开发的有序性被破坏 人为地增加了工作量 这就需要有更为高效 和精简的需求管理过程以及相应的工具支持 4 需求 测试用例 需求 测试用例 Bug 管理脱节管理脱节 软件开发中 需求和测试用例是紧密联系的 通常来说 一条需求只有通过了所有针 对该需求的测试之后才能说这条需求的实现真正实现了 而测试的结果是产生 Bug 报告 如果针对某条需求的一个测试用例没有通过测试 换句话说 也就是产生了一个 Bug 这 就说明该需求根本没有完成 同时 需求的变更直接影响到与该需求相关的测试用例的更 新 继而影响到现有 Bug 的状态的更新 然而现实情况却是 大多数敏捷开发团队都没有 实现需求 测试用例和 Bug 的一体化管理 我们希望在需求 测试用例和 Bug 之间建立一种动态的联系 能够实时地更新三者的 状态 并且实现三者之间状态的动态联动 从而减少开发团队在管理和维护需求 测试用 例和 Bug 时的工作量 5 缺乏量化的项目管理反馈缺乏量化的项目管理反馈 企业在项目管理中 需求的频繁变更对项目管理者评估需求 制定迭代周期内的项目 计划都是个巨大的挑战 管理者在需求评估经验和能力上的不足 以及管理者对团队成员 开发能力认识不足容易造成需求评估出现大的误差 虽然这种误差是不可避免的 但是我 们希望可以通过历史评估数据的反馈来帮助项目管理者积累经验 逐步修正和调整自己的 判断和评价体系 从而尽可能减小由于评估误差引起的项目风险 而没有工具的支持 历 史的准确数据则很难获取 总结以上问题 显而易见 需求管理是软件项目中一项十分重要的工作 据调查显示 在众多失败的软件项目中 由于需求原因导致的约占到 45 因此有效的需求管理是企业 软件开发项目顺利达成目标的重要支撑条件 如何理解项目开发的目的和用途 梳理用户 需求 监控需求变化 进行需求确认 对需求风险进行防范 并利用工具进行有效的实施 需求管理工具 方能推进软件项目良性发展 达到用户与软件开发企业的双赢 有效的需求管理方法与工具有效的需求管理方法与工具 方法一 量化需求管理方法一 量化需求管理 如前所述 企业研发项目通常规模巨大 涉及部门众多 需求功能描述文件中包含众 多内容 若仅仅只用整篇的文档来指导开发和测试工作 很容易引起任务分配的混乱 当发 生需求变更时 也很难追溯历史版本 TechExcel 公司推出的 DevSuite 产品研发管理软件 从实践中提炼出一个行之有效的 解决方法 用规范点 Specification 以下简称 Spec 量化需求 正规表达每一个功能单 元 只需打开 需求功能描述书 的 WORD 文档 就可以利用插件 将其中的功能单元 逐条地复制出来 在需求管理系统 DevSpec 中直接生成 Spec 相对于需求 Spec 是更 面向技术人员的语言 客户业务需求可以在平台中进行集中管理 并以需求结构化和条目化的形式管理需求 为需求的评估 追踪与变更管理提供了基础 同时 通过系统强大的页面自定义能力 我 们可以管理需求的来源 难度 实现时间 实现成本等 这些信息为需求优先级的评估 提供了量化的指标 帮助项目经理准确的排布需求优先级 让团队优先实现最重要 最紧 急 客户价值最高的需求 此外 需求说明书 分析设计文档 评审记录等 均可以以附件形式保存 且能对文 档的版本进行有效的管理 方法二方法二 有序管理需求变更 有序管理需求变更 在实际项目中 实现需求变更的成本随着开发进度呈指数级增长 需求变更的流程化 管理能保障正常的开发进度 将变更及时反应到开发和测试等部门 以下描述的是一个典型过程 如图 1 一项变更请求在需求管理系统中被提交后 与之 关联的各个部门 如市场 项目管理 产品研发 QA 测试等 都会有相关人员接到系统 通知而介入 他们将组成评估团队 根据实施难度 周期 费用 对其他机制的影响等指 标 对该变更进行全面考察和评估 DevSpec 提供了专门的变更管理视图 在这里 我们可以管理各个项目中的需求变更 任务 不论是需求增加 减少或是改变 我们都会为之建立一条变更记录 在这条变更记 录中 记录了变更的来源 原因 具体描述和变更成本 收益估算 这些信息可以成为变 更评估的标准与依据 每个变更任务均可以和在变更中受影响的需求相关联 包括增加的 减少的和变更的 需求 通过需求变更列表 我们可以清晰的看到项目中当前有多少变更任务 影响了哪些 需求 也能够察看到整个项目周期中总计发生了多少变更 总计影响了多少需求条目 方法方法三 标准的需求管理流程三 标准的需求管理流程 需求管理的整个过程都可以用标准 有效的工作流控制起来 如需求变更流程的设定 通常包括请求 复查 讨论 调整 批准和拒绝等状态 只有具备权限的项目成员才能改 变状态 按照预设的流程 各方审批全部通过后 该变更才能被接受 DevSuite 提供了灵活的工作流程定制和管理能力 图形化工作流引擎将工作流图形转 变为工作流脚本 因此项目管理员可以在图形化界面中 轻松快速的定制项目组项目管理 流程 如上图中红色框内为需求的工作流程 用户可以根据公司的实际业务流程 定制符合 需要的需求流程图 系统可以同时定义多条项目工作流程 以适应不同规模 不同类型的 项目 方方法四 需求有效驱动开发与测试法四 需求有效驱动开发与测试 在理想的研发管理平台中 需求管理与所有规划 开发 测试管理过程相集成 因此 需求的正规表达 Spec 以及围绕 Spec 正在或将要进行的开发任务和测试任务 都能被纳 入综合考虑的范畴 便于评估团队估算该变更造成的 牵一发而动全身 的潜在影响 有时 还要结合商业需求进行考量 为了赶上产品的最佳发布时机 有些变更将被拒绝 变更请求被批准后 与之相关联的开发 测试任务都会在系统中被一一标记出来 以 提醒程序和测试部门的相关负责人 引发这些任务的需求已经变更 请他们做出相应的调 整处理 在系统中跟踪这些任务的进展 可以实时掌握该变更的落实情况 变更完成后 也可以核算它对开发周期和费用的实际影响 与评估时的预测相对比 找出差异的原因 为将来更准确地评估提供参考 DevSuite 提供了变更标识功能 通过变更标识子任务 我们可以选择受影响的开发 测试任务 建立变更标识子任务 该子任务将以旗帜形式反映到开发 测试任务中 变更 标识子任务不但能够标识变更 还能够帮助团队进行变更反馈 通过文字记录和状态改变 任务负责人员可以将需求变更对于任务的影响及时回馈给需求管理人员 另外 对于需求 实际改变的内容 需求负责人员可以创建变更推送子任务 通过邮件系统 可以将变更信 息发送给该需求的干系人 方法五 方法五 需求指导项目规划与执行需求指导项目规划与执行 纵使项目最初都有比较全面的计划 延期仍然会时常发生 即便是在管理机制比较成 熟的大型研发企业中 跳票也不可避免 通常情况下 导致跳票主要有以下几点原因 功 能设计规划过多 很多又无法删除 如不增加开发时间 产品几乎不能完成 缺乏有经验的 管理或开发人员 不能准确估计工作量 任务执行缺乏规范 开发人员随意更改功能设计 影响整体进度 过高的人员流动率 导致知识的流失 任务不能及时跟进 针对以上问题 只要从量化需求入手 有序管理需求变更 用正规表达 可量化的 Spec 来指导项目规划 编程和测试 就能把风险降到最低 基于结构化的 Spec 集合 可以将项目分解为多个子项目 将 Spec 直接分配到各自 对应的子项目中 以此来规划和估算子项目的工作量 项目管理人员为每个子项目分配资 源 安排优先顺序 确定项目里程碑 在项目执行时 可以为每一个 Spec 产生出一系列开发任务 自定义的工作流机制确 保每一个任务从提交到最终解决的生命周期都严格符合业务流程 保证任何时刻都有唯一 的负责人 状态和截止日期 这样 不仅能规范产品研发过程 还能降低人员流动带来的 风险 任务的流转及相关知识文档 如源代码 设计资源等 都得到系统完整的记录 还 能与任务关联 便于追溯 一旦有人离开项目 接替的人员能够查看任务和文档信息 迅 速弥补人员空缺 DevSuite 需求管理视图提供产品版本树管理 产品经理可以创建新产品和版本 每个 需求和功能点可以在多个产品和版本实现 通常一个产品的各个功能可能会分布在不同的 项目中实现 项目经理如何在产品发布的时候知道每次发布实现了那些功能 各个功能点 的负责人是谁 通过 DevSpec 视图提供的产品版本树功能 项目经理可以轻松的过滤出 每个发布版本实现了那些客户需求 支持产品的版本规划 当收集到的需求经过评审等规定流程决策后 将需求与规划好 的产品版本关联起来 通过产品版本视图可以直接追踪到需求与产品版本的关系 未决定 开发的需求可以不设定版本 等决定后再关联相应产品版本 产品研发过程常见问题产品研发过程常见问题 3 跨部门协作困难 跨部门协作困难 产品研发在企业中是一项综合性的工作 存在着大量需要跨部门协作的工作 几乎需 要所有的职能部门都将参与其中 据研究发现 目前企业中多达 50 以上的工作都适用于 跨部门协作管理 而正如此却带来了部门协作困难 全局监控难 资源协调难等等各种各 样的问题 这些问题几乎困扰着现在所有的研发企业 不管他们在组织方式上是采用项目 结构 职能结构还是矩阵结构 跨部门协作困难的挑战无处不在 部门协作困难面临的挑战 部门协作困难面临的挑战 1 缺乏对产品开发统一的认识 首先 各部门对产品开发的成功标准缺乏一致的认识 比如技术部门认为只要产品顺 利转入测试就成功了 测试部门只关注产品的检测与执行测试任务 质保部门理解的成功 则是产品研发流程和质量的稳定 而市场部门则关注产品何时上市 销量如何 各部门在 产品开发过程中缺乏一致的目标是带来跨部门协作困难的根源之一 更有甚者 产品开发 被认为只是研发部门的事 其它部门只是义务配合一下 这与产品开发活动的本质就相差 太远了 2 缺乏有效的跨部门协同机制 产品开发的主体是研发部门 每个部门却是各有所规 各有各的服务流程和工作规范 如果没有建立与营销 项目管理 测试 质保等部门建立有效的协同机制 对客户 市场 的响应就会比较慢 同时 对于企业内容来讲 如果没有信息共享的工作平台 开展并行 工程困难 开发周期长 很难详细掌握各开发项目的进度 每个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论