- 5.2.1 主治医师模式(Chief Programmer Team,Surgical Team)
- 5.2.2 明星模式(Super-star Model)
- 5.2.3 社区模式(Community Model)
- 5.2.4 业余剧团模式(Amateur Theater Team)
- 5.2.5 秘密团队(Skunk Work Team)
- 5.2.6 特工团队(SWAT)
- 5.2.7 交响乐团模式(Orchestra)
- 5.2.8 爵士乐模式(Jazz Band)
- 5.2.9 功能团队模式(Feature Team)
- 5.2.10 官僚模式(Bureaucratic Model)
- 5.3.1 写了再改模式(Code-and-Fix)
- 5.3.2 瀑布模型(Waterfall Model)
- 5.3.3 瀑布模型的各种变形
- 5.3.4 Rational Unified Process统一流程(RUP)
- 5.3.5 老板的驱动流程(Boss-Driven Process)
- 5.3.6 渐进交付的流程(Evolutionary Delivery),MVP和MBP
- 5.3.7 其他流程介绍
第5章 团队和流程
5.1 非团队和团队
团队有共同的特点:
1.团队有一致的集体目标,团队要一起完成目标。一个团队的成员不一定要同时工作,
例如接力赛跑。
2.团队成员有各自的分工,互相依赖合作,共同完成任务。
5.2 软件团队的模式
5.2.1 主治医师模式(Chief Programmer Team,Surgical Team)
5.2.2 明星模式(Super-star Model)
5.2.3 社区模式(Community Model)
5.2.4 业余剧团模式(Amateur Theater Team)
5.2.5 秘密团队(Skunk Work Team)
5.2.6 特工团队(SWAT)
5.2.7 交响乐团模式(Orchestra)
5.2.8 爵士乐模式(Jazz Band)
5.2.9 功能团队模式(Feature Team)
很多软件公司的团队最后都演变成功能团队,简而言之,就是具备不同能力的同事们平等协作,共同完成一个功能。
在这个功能完成之后,这些人又重新组织,和别的角色一起去完成下一个功能。他们之间没有管理和被管理的关系。大型软件公司里的不少团队都是采用这种模式。这些功能小组也称为Feature Crew,小组内的交流比较频繁。
5.2.10 官僚模式(Bureaucratic Model)
5.3 开发流程
我们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
5.3.1 写了再改模式(Code-and-Fix)
5.3.2 瀑布模型(Waterfall Model)
5.3.3 瀑布模型的各种变形
5.3.4 Rational Unified Process统一流程(RUP)
要完成一个复杂的软件项目,团队的各种成员要在不同阶段做不同的事情,这些不同类型的工作在RUP中叫做规程(Discipline)或者工作流(Workflow)。
业务建模
用例。
需求
有了用例之后,开发人员和用户要分析并确认软件系统得提供什么样的功能来满足用户 的需求,功能有什么约束条件,如何验证功能满足了用户需求。这就是需求工作流的作 用。
分析和设计
分析和设计工作流将需求转化成系统的设计。这一步结束之后,团队成员就能知道系统有哪些子系统、模块,它们之间的关系是怎样的。
实现
在实现工作流中,工程师按照计划实现上一步产出的设计,将开发出的组件,连同验证模块提交到系统中。同时,工程师们集成由单个开发者所产生的结果,通过手工或自动化手段,把可执行的系统搭建出来。
测试
测试工作流要验证现阶段交付的所有组件的正确性、组件之间交互的正确性,以及检验所有的需求已被正确地实现。在这个过程中,发现、报告、会诊、修复各种缺陷,在软件部署之前保证质量达到预期要求。
部署
部署工作流的目的是生成最终版本并将软件分发给最终用户。
配置和变更管理
配置和变更管理工作流负责管理RUP各个阶段产生的各种结果(例如源代码控制系统管理和备份各种源文件),要记录修改人员、修改原因、修改时间等属性,有些团队还可以考虑并行开发、分布式开发等。
项目管理
软件项目管理工作流平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功地在各个阶段交付达到要求的产品。
环境
环境工作流的目的是想软件开发组织提供软件开发环境,包括过程和工具。
RUP把软件开发分成几个阶段,一个大阶段的结束称为一个里程碑(Milestone),每个阶段内可以有几个迭代,以比较灵活的形式实现本阶段的任务。
初始阶段
此阶段的目标是分析软件系统大概的构成,系统与外部系统的边界在哪里(我们的系统究竟和什么别的外部实体打交道),大致的成本和预算是多少,系统的风险主要来自哪里。成功度过初始阶段的项目会达到生命周期目标(Lifecycle Objective)里程碑。
细化阶段
它的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,按优先级处理项目中的风险。团队要确定项目的具体范围、主要功能、性能、安全性、可扩展等非功能需求。同时为项目建立支持环境,包括创建开发案例、创建模板并准备工具。细化阶段结束时,项目达到了第二个重要里程碑:生命周期结构(Lifecycle Architecture)里程碑。
构造阶段
在这一阶段,团队开发出所有的功能集,并有秩序地把功能集成为经过各种测试验证过的产品。构造阶段结束时是第三个里程碑:初始功能(Initial Operational)里程碑。此时的产品版本也常被称为“beta”版。
交付阶段
这时候,团队工作的重点是确保软件能满足最终用户的实际需求。交付阶段可以有迭代,基于用户的反馈,团队利用这些迭代对系统进行修改、调整。除了对功能的调整,团队还要注意处理用户设置、安装和可用性等问题。在交付阶段的终点是第四个里程碑:产品发布(ProductRelease)里程碑。
5.3.5 老板的驱动流程(Boss-Driven Process)
5.3.6 渐进交付的流程(Evolutionary Delivery),MVP和MBP
5.3.7 其他流程介绍
5.4 练习与讨论
转载自原文链接, 如需删除请联系管理员。
原文链接:《构建之法》读书笔记——第5章 团队和流程,转载请注明来源!