参加对象
企业CEO/总经理、研发总经理/副总、公司总工/技术总监、研发项目经理/产品经理、PMO(项目管理办公室)成员、研发骨干、测试、QA等。
客户需求
1、 熟悉敏捷开发的流程,掌握敏捷开发关键环节活动和输出物;
2、 如何有效的进行需求的管理和分析,形成产品需求;
3、 如何做一个卓越的产品经理,要掌握哪些技能和工具;
4、 项目经理需要哪些关键的技能,如何处理需求与产品的矛盾,业务需求与产品的矛盾;
5、 如何做到高效的测试,保证软件产品的质量,需要掌握哪些技能和工具;
6、 如何构建优秀的敏捷团队,提高交付能力;
7、 怎么样有效的提高项目的研发管理以及团队成员的评价和有效绩效管理;
8、 如何提高异地办公研发项目管理,增强团队协作,构建统一的产品;
课程背景
21世纪是“快鱼吃慢鱼”的时代!
现代企业的竞争就是“速度”的竞争!!
谁能尽快开发出符合客户需求的产品,谁就是大赢家!!
如何使产品开发周期显著缩短?如何促使企业充分利用外部资源,寻求合作设计、开发和制造的机会,让新产品上市时间更快?
“敏捷化开发”是国外最新提出的着眼于速度竞争的新产品开发管理模式,其基于一系列先进的研发管理方法,采取产品开发与市场投入的速度领先战略,以获得产品开发的时间领先优势,使企业在竞争日趋激烈的环境中获取利益最大化。
软件系统的日益复杂化和用户需求、软件更新的频繁化,加之开发团队分散的工作方式,项目的沟通和平滑管理变得越来越困难。另一方面,如何在多角色分工的情况下,紧扣用户提出的需求,监控其实施,确保用户需求最终落实到产品的各个版本中去,并在产品发行和用户支持等方面提供帮助,响应用户新的需求,推动新的开发周期。
新的开发方法-敏捷开发,有助于开发人员、测试人员和管理人员更快的适应客户需求的变化,快速的发布和提交版本。使得软件的发布能更快捷的满足客户的需求。
敏捷软件开发过程中,有一些新的开发手段,把开发活动和测试活动结合起来。通过敏捷项目管理,可以更好的发挥团队特长,并行开发,合理控制软件版本,有效地提高生产率。
本课程在介绍了敏捷项目一般管理方法基础上,深入地讨论了如何将敏捷化开发应用于其它行业的产品研发活动,使学员同时掌握以上两种方法,在实际工作中能按照实际情况灵活应用。
讲师具有近二十年软件开发、软件设计、需求分析及项目管理经验,长期战斗在软件项目钱眼,精通SCRUM、极限编程及MSF并用于全公司的项目管理,参加多次CMMI5级评估,并有使用敏捷软件开发通过CMMI评估的案例。讲师有多年的授课经验,讲课深入浅出,注重引导学员思考,善于将主题内容融于简单的例子中,让学员通过体会实例掌握知识。
工作坊特色
本工作坊的主要特点是:
ü 体验式学习:大量采用体验式练习,而不是灌输知识,让团队自己生成新的理念、原则、方法等,寓教于乐,更容易被大家接受。
ü 以演练的方式学习:巧妙地将敏捷软件开发方法以研讨与演练的方式来展示,形象生动,又能把握商业模式创新的关键点。
ü 采用教练方式:采用教练而不是培训、咨询的方式,更赋能,具有激发团队潜力、向内挖掘资源等特点。
工作坊收益
· 了解敏捷开发和测试的过程
· 了解敏捷开发过程中,测试用例的编写和测试的执行过程
· 介绍如何进行重构
· 了解敏捷项目管理
培训课时:12小时
课程大纲
1、 案例分析
1.1 关键问题辨析
2、 什么是敏捷软件开发
2.1 研发中项目管理的典型问题
· 质量
· 交付周期长
· 效率低下
· 交付延期
· 交付不被市场/客户接受
2.2 软件管理方法总览
2.3 什么是敏捷项目管理
2.4 敏捷项目管理的解决之道
· 总体框架:“需求-构建-发布”的快速迭代
· 卓越交付:保证正确的构建正确的产品
· 自组织团队
· 短周期迭代
· 可工作的完成标准
· 价值驱动
· 基于反馈的改进
· 风险前移
2.5 敏捷软件开发流程展示
2.5.1 敏捷需求
2.5.2 敏捷估算与计划
2.5.3 敏捷项目监控
2.5.4 敏捷设计与实现过程
2.5.5 敏捷测试
2.5.5.1 持续集成
2.5.5.2 自动化测试
2.5.6 各阶段核心交付的展示
2.6 研讨与演练:软件开发,我们的痛点在那里?
3、 敏捷项目管理
3.1 项目敏捷团队管理-人是最重要
3.1.1 敏捷团队的三个核心角色
3.1.2 敏捷团队的角色职责
3.1.3 PO:产品负责人
3.1.4 Scrum Master工作检查单
3.1.5 TM:项目组成员
3.2 敏捷项目策划
3.2.1 敏捷估计-估算扑克
3.2.2 Delphi估算
3.2.3 研讨与演练:我的故事要多少工作量?(使用客户内部开发需求),扑克牌法
3.2.4 通过速率估算开发周期
3.3 敏捷项目计划管理
3.3.1 迭代计划会
3.4 项目过程监控
3.4.1 每日立会
3.4.1.1 为何站着开会?
3.4.1.2 每日立会成功的关键
3.4.1.3 如何召开每日立会 Standup meeting
3.4.2 燃尽图
3.4.2.1 燃烧图的团队“指纹”
3.4.3 “迭代期内无变更”
3.4.3.1 拥抱变化还是恪守承诺?
3.4.3.2 “迭代期内无变更”与研发心理学
3.4.3.3 对策:MoSCoW方法
3.4.4 故事板 Kanban
3.4.4.1 如何创建敏捷任务故事板
3.4.4.2 敏捷看板的种类和作用
3.5 项目质量管理-高质量的交付
3.5.1 “可运行软件”的标准DOD
3.5.2 评审会
3.5.2.1 评审会的行为模式
3.5.2.2 引导客户表达需求
3.5.3 回顾反思会
3.5.3.1 现实世界的反思会
3.6 研讨与演练:基于客户团队的实际痛点进行讨论,从敏捷项目管理的角度讨论解决方案
4、 敏捷软件开发-需求
4.1 业务需求的整理
4.1.1 需求的层次划分与分类
4.1.1.1 业务需求
4.1.1.2 用户需求、业务规则、质量属性
4.1.1.3 功能需求、系统需求、外部接口与约束
4.1.2 用户需求的来源
4.1.3 干系人与用户,用户的参与程度对需求质量的直接影响
4.1.4 寻找用户类,常见的分类方法
4.1.5 需求获取的常见方法
4.1.6 需求访谈
4.1.7 需求研讨会
4.1.8 需求整理:分类(BSA)与分层(AHP)
4.1.9 案例分析与演练4
4.1.10 用例法
4.1.10.1 用例定义
4.1.10.2 参与者目标清单
4.1.10.3 从业务事件发现用例
4.1.10.4 业务用例与场景
4.1.10.5 在业务用例中对干系人利益的保障
4.1.10.6 从业务用例中提取产品用例
4.1.10.7 用例模板
4.1.10.8 用例开发中的常见问题
4.1.10.9 用例的作用
4.1.11 案例分析与演练5
4.1.12 原型法(AUXURE RP)
4.1.12.1 使用原型法捕获客户的隐含需求
4.1.12.2 原型法举例
4.1.13 业务规则与术语
4.1.13.1 业务规则的分类
4.1.13.2 业务规则与需求
4.1.13.3 术语
4.1.14 寻找遗漏的需求
4.1.15 关注内部需求
4.1.15.1 DFX(DFT等需求)
4.1.15.2 RAS(性能、可靠性、可用性、可维护性)
4.1.16 整理成产品包需求
4.1.16.1 案例分享:具体系统产品需求包(特性需求清单)案例分享
4.1.17 案例分析与演练6
4.2 功能需求管理-用户故事-交付最有价值需求
4.2.1 用户建模
4.2.1.1 谁在用我的产品?
4.2.1.2 针对需求进行用户建模 (使用客户内部开发需求)
4.2.2 用户故事 = 用户 + 功能 + 价值
4.2.2.1 好故事的六个标准:Invest
4.2.2.2 切分故事
4.2.2.3 研讨与演练:将需求转换为用户故事
4.2.3 切分用户故事
4.2.3.1 当面对复杂故事的时候,把故事最简单的版本切分为单独的故事。
4.2.3.2 通过故事所操作的数据类型来切分。
4.2.3.3 通过找到简单数据输入方法和更复杂方法之间的区别来切分故事。
4.2.3.4 把对当前故事的性能的考虑转移到一个或多个新故事中。
4.2.3.5 按照创建-读取-更新-删除(CRUD)来切分故事。
4.2.4 需求优先级排序
4.2.4.1 以团队形式进行排序
4.2.4.2 用多种维度计算需求故事的优先级
4.2.4.3 案例展示:某电信企业的具体实践
4.2.4.4 超越敏捷-敏捷生态系统
4.2.4.5 研讨与演练,针对需求进行用户建模和排序 (使用客户内部开发需求)
4.2.5 非功能性需求的整理:技术故事
4.3 用户故事地图
4.3.1 为什么要建立用户故事地图?
4.3.2 用户故事地图建立的步骤
5、 敏捷软件开发-设计、实现、测试
5.1 简单设计
5.2 技术债务
5.3 团队结构与日常开发活动
5.3.1 办公环境
5.3.2 “特性小组”
5.3.3 “松结对编程”
5.3.4 “松结对编程”的小组长责任
5.3.5 “松结对编程”的工作习惯
5.3.6 结对编程的几种结对形式
5.4 TDD(测试驱动开发)及静态语法检查
5.4.1 什么是TDD
5.4.2 如何进行TDD
5.4.3 演练:对一个功能进行TDD设计
5.4.4 为什么要做代码审查?
5.4.5 编码规范
5.4.6 自动化的审查代码
5.4.7 演练:使用静态语法工具进行代码质量分析
5.4.8 系统级TDD
5.5 重构
5.5.1 重构的定义
5.5.2 为什么需要重构
5.5.3 何时需要重构
5.5.4 代码的坏味道
5.5.5 各种重构的方法
5.5.6 重复的代码
5.6 敏捷测试
5.6.1 持续集成
5.6.2 测试用例设计
5.6.3 构建管理 持续集成 发布管理
5.6.4 持续集成和每日构建
5.6.4.1 持续集成的概念
5.6.4.2 每日构建的概念和意义
5.6.4.3 每日构建的实施策略
5.6.4.4 每日构建和版本管理的集成
5.6.4.5 以每日构建为基础的发布管理和试验环境
5.6.4.6 通过每日构建和持续集成,使得版本管理不仅仅记录代码的存在和历史,更保证代码的正确性
5.6.4.7 典型案例分析
5.6.5 自动化测试
5.6.5.1 自动化测试概念,局限性
5.6.5.2 自动化测试基本理论
5.6.5.3 自动化测试实施
5.6.5.4 常用工具介绍
5.6.5.5 自动化测试成熟度
5.6.5.6 自动化测试评估
6、 产品经理、项目经理的定位、职责与能力要求
6.1 产品经理的定位选择(与公司发展时期、规模、行业、产品特点相关)
6.1.1 产品全生命周期的管理(产品/产品线经理,产品/产品线总监)
6.1.2 产品策划(产品策划经理)
6.1.3 产品开发(产品开发经理)
6.1.4 产品推广(产品行销/推广经理与产品维护经理)
6.1.5 研讨:分享学员公司产品经理的定位
6.2 产品经理的能力要求
6.2.1 应该具备的知识和技能
6.2.2 产品经理的任职资格标准
6.2.3 产品经理的资格认证
6.2.4 产品经理的培养途径和职业晋升通道
6.2.5 模板分享:产品经理素质模型及任职资格标准
6.3 研发项目经理的角色和职责
6.3.1 研发项目核心组成员的角色和职责
6.3.2 研发项目经理应具备的技能
6.3.3 研发项目经理的素质特征和性格特征
6.3.4 如何培养合格的研发项目经理
6.3.5 实例讲解:某案例公司的项目经理工作手册
6.3.6 演练与问题讨论
6.4 产品经理和项目经理应掌握的工具和技能
6.4.1 原型工具
6.4.2 甘特图
6.4.3 Project
6.4.4 估算
6.4.5 PMS项目管理工具
6.4.6 其他
7、研发项目成功的关键
7.1 研发项目成功和失败的经验教训总结
7.2 项目经理的角色转换和个人修养
7.3 结构化的产品开发流程
7.4 研发项目的团队建设和绩效管理
7.5 项目经理的培养和研发人员的职业生涯管理
7.6
8、 总结