第2章 传统与敏捷方法论
2.1 传统泛瀑布软件开发模式
2.1.1 瀑布模式
1.瀑布模式简介
2.瀑布模式特色
3.瀑布模式缺点
2.1.2 渐增模式
1.渐增模式简介
2.渐增模式特色
3.渐增模式缺点
2.1.3 雏形模式
1.雏形模式简介
2.雏形模式特色
3.雏形模式缺点
2.1.4 螺旋模式
1.螺旋模式简介
2.螺旋模式特色
3.螺旋模式缺点
2.1.5 统一开发过程模式
1.RUP模式简介
2.RUP模式特色
3.RUP模式缺点
2.2 敏捷方法论
2.2.1 Scrum
1.Scrum定义
(1).轻量的(Lightweight)
(2).简单易懂(Simple to Understand)
(3).难以精通(Difficult to Master)
2.Scrum理论
(1).透明(Transparency)
(2).检视(Inspection)
(3).调整(Adaptation)
3.Scrum基本价值观
(1).专注(Focus)
(2).尊重(Respect)
(3).承诺(Commitment)
(4).勇气(Courage)
(5).公开(Openness)
4.Scrum团队
(1).开发团队(Development Team)
(2).Scrum大师(Scrum Master)
(3).产品负责人(Product Owner,PO)
5.Scrum过程
6.Scrum仪式
(1).冲刺规划(Sprint Planning)
(2).每日Scrum(Daily Scrum)
(3).冲刺审查(Sprint Review)
(4).冲刺回顾(Sprint Retrospective)
7.Scrum的产出
(1).产品待办列表(Product Backlog)
(2).冲刺待办列表(Sprint Backlog)
(3).可交付的增量成果(Incremental Deliverable)
(4).燃尽图(Burn Down Chart)
2.2.2 XP
1.XP的13个实践
(1).全队(Whole Team)
(2).规划游戏(Planning Game)
(3).小的发布(Small Release)
(4).客户测试(Customer Test)
(5).编程标准(Coding Standard)
(6).程序代码共同拥有(Collective Code Ownership)
(7).持续集成(Continuous Integration)
(8).隐喻(Metaphor)
(9).持续步伐(Sustainable Pace)
(10).测试驱动(Test-driven Development)
(11).结对编程(Pair Programming)
(12).简单设计(Simple Design)
(13).重构(Refactoring)
2.XP团队队员
(1).程序员(Programmer)
(2).测试员(Tester)
(3).教练(Coach)
(4).客户(Customer)
2.2.3 精益
1.精益的7原则
(1).消除浪费(Eliminate Waste)
(2).强化学习(Amplify Learning)
(3).尽可能晚做决定(Decide as Late as Possible)
(4).尽可能尽快交付(Deliver as Fast as Possible)
(5).授权团队(Empower the Team)
(6).建构完整性(Build Integrity in)
(7).着眼整体(See the Whole)
2.2.4 看板
1.看板方法的主要原则
(1).从既有过程开始(Start with Existing Process)
(2).同意增量渐进的改变(Agree to Pursue Incremental,Evolutionary Change)
(3).尊重当前角色的头衔和职责(Respect the Current Process "Role" Responsibilities and Titles)
(4).鼓励各层级的领导行为(Leadership at all Levels)
2.看板方法的核心价值
(1).尊重
(2).勇气
(3).专注
(4).沟通与协同合作
(5).整体与系统化的改变
3.看板实战
(1).工作过程可视化(Visualize)
(2).限制进行中的工作(Limit Work in Progress,Limit WIP)
(3).管理流(Manage Flow)
(4).提供明确的政策(Make Policies Explicit)
(5).落实反馈循环(Implement Product-feedback Loop)
(6).根据经验改善协同合作(Improve Collaboratively,Evolve Experimentally Using Models and the Scientific Method)
2.2.5 动态系统开发方法
1.DSDM团队成员必须决定的事
(1).必要的(Musts)。
(2).应该要的(Shoulds)。
(3).可以要的(Coulds)。
(4).不要的(Won't Have)。
2.DSDM团队的核心原则
(1).用户的积极参与对项目至关重要。
(2).团队必须有权作出决定。
(3).团队必须专注于频繁的交付产品。
(4).已批准的交付产品必须都符合验收标准。
(5).必须以迭代的方式进行,且每个迭代都有增量产品。
(6).开发过程中,任何改变都必须可复原。
(7).产品需求是站在高阶思维,不是低阶的改变。
(8).全声明周期都要进行产品测试。
(9).团队经由协同合作来沟通。
2.2.6 功能驱动开发模式
杰夫·德·卢卡,提出功能驱动开发(FDD),产品功能都是在以两周为一个迭代的周期交付,并专注于下列工作:
(1).创建模型。与客户初步沟通后,确定项目范畴,并建立模型。
(2).开发功能列表。以相同的样板描述要开发的功能。
2.2.7 水晶家族
1.水晶家族的价值观
(1).高包容性(High Tolerance)。
(2).专注于人和沟通。
2.水晶家族的适用规则
(1).用渐进式开发,最长不要超过4个月。
(2).项目前后都要举办检讨会议,也可以在期中增加一次检讨会议。
2.2.8 精益与敏捷的关系
2.3 通用敏捷框架
2.3.1 敏捷项目管理模式结构
吉姆·海史密斯,提出敏捷项目管理模式结构(Agile Project Management Model Structure,APM),包括5个阶段:
(1).构想(Envision)
(2).推测(Speculate)
(3).探索(Explore)
(4).调整(Adapt)
(5).结束(Close)
2.3.2 敏捷通用过程
迈克·格里菲斯,提出的敏捷通用过程(Agile Unified Process,AUP),将敏捷开发分为5个阶段:
(1).可行性研究(Feasibility)
(2).启动(Initiation)
(3).发布规划(Release Planning)
(4).迭代(Inside Iteration)
(5).收尾(Close Out)