简介
通过对比飞机制造这种传统工程和软件工程之间的差异,将学员带入敏捷的世界。课程中依次介绍了敏捷宣言、敏捷原则、敏捷实践、敏捷团队和敏捷流程等多方面内容。并且,开创性地使用支撑图的形式,以项目管理4要素作为目标,讲解了各个敏捷实践之间的依托关系,以及实践如何为敏捷的终极目标服务。该课程是“敏捷开发系列课程”的第一课,属于敏捷开发的入门培训。
课程内容包括:
通过对比过去软件开发方式的不足,说明运用敏捷的重要性
宣导敏捷开发的精髓——核心价值观
透过支撑图,剖析众多敏捷实践之间的依托关系
讲解了敏捷推崇的团队组织架构和开发流程
以及管理者在敏捷推行中应该承担的责任和义务
自动化测试环境搭建
实践“测试驱动开发”开发代码的过程
此外,本课程不会空谈敏捷,培训过程中会展示大量的具体项目案例资料(文档和照片),让学员真切地触摸到敏捷的脉搏。并且会让学员亲自体验“测试驱动开发”的写代码过程。
目标
让学员真正理解敏捷,清楚敏捷追求的核心目标。避免未来敏捷推行时,流于形式,得不偿失。
课程时长
2天(12H)
受众人群
软件公司管理人员/技术总监/项目经理/软件工程师/测试工程师。
分享提纲
主题 | 授课内容 |
第1章 为什么要用敏捷 | 一、软件工程学与传统工程学的不同 (1)传统工程学设计过程 (2)软件设计过程与传统工程学的关键差异 二、传统派软件工程学--瀑布开发 (1)瀑布模型 (2)水土不服的瀑布开发 (3)瀑布开发的困境 三、拥抱变化--敏捷开发 (1)响应变化,而非冻结需求 (2)利用构建成本改造研发流程 |
第2章 什么是敏捷开发 | 一、敏捷的由来 (1)敏捷联盟 (2)敏捷分支 二、敏捷的核心价值观 (1)敏捷宣言 (2)敏捷原则 (3)精益软件开发原则 三、敏捷实践 (1)什么是敏捷实践 (2)各敏捷分支对敏捷实践的贡献 |
第3章 以支撑图看敏捷实践 | 该单元以支撑图的形式讲解各个敏捷实践如何互相依托,最终实现敏捷追求的高层次目标。让学员了解敏捷实践的支撑关系,未来推行时,才能合理地选择推行顺序。 一、从项目管理4要素看敏捷的追求 (1)成本 (2)质量 (3)时间 (4)范围 二、敏捷实践的支撑关系 (1)迭代开发 (2)用户故事 (3)客户参与 (4)测试驱动开发 (5)验收测试驱动开发 (6)ShowCase (7)自动化测试 (8)持续集成 (9)结对编程 (10)可持续的开发速度 (11)团队评估工作量 (12)每日站会 (13)状态墙与燃尽图 (14)开放式办公环境 (15)简单设计 (16)持续重构 (17)迭代回顾会议 |
第4章 凝结敏捷团队 | 一、敏捷团队组织架构 (1)组织架构及变体 (2)团队规模 二、自组织团队 (1)首先要有一个团队 (2)团队的形成 (3)自我改进 (4)向上给承诺 三、敏捷团队的“管理者” (1)“管理者”的定位 (2)服务与权威的平衡 (3)团结在同一目标下 (4)管理者需要坚守的底线 |
第5章 敏捷开发流程 | 一、Scrum框架 (1)主流程 (2)迭代时间线 二、关键活动与输出物 (1)需求挖掘会 (2)系统架构设计会议 (3)Story说明会 (4)验收测试用例设计 三、补充:其他重要的流程 (1)预评审流程 (2)问题单流程 |
第6章 C#语言自动化测试环境搭建 | 简单介绍VS的测试断言工具、打桩工具NSubstitute、自动化测试运行工具CruiseControl的使用。 1、VS的测试断言工具 (1) 断言 (2) VS的测试覆盖率 2、打桩工具NSubstitute (1) 设置返回值 (2) 抛出异常 (3) 设置out和ref参数 (4) 参数匹配器 (5) 其他功能 3、持续集成工具CruiseControl.NET (1) 什么是持续集成 (2) CruiseControl.NET的工作原理 (3) CruiseControl.NET的配置脚本 4、持续集成客户端CCTray 选讲内容: 1、JAVA测试框架JUnit 2、JAVA打桩工具JMock 3、Linux下的自动化测试工具以及Makefile撰写 |
第7章 测试驱动开发实践 | 本单元主要在上一单元搭建的环境基础上,实践测试驱动开发。通过案例引导学员亲自编写UT(单元测试)和ST(系统测试)用例,体验测试驱动开发的开发流程。 1、测试驱动开发的目的 2、测试驱动开发的2段流程切换 3、测试驱动开发操作实例 (1) 编写UT用例 (2) 编写通过用例的代码 (3) 使用打桩工具mockcpp控制底层函数返回 (4) 编写ST用例 |