第五章主要讲软件团队
团队的特点:
1.有一致的集体目标,要一起完成这个目标,一个团队的成员不一定要同时工作。
2.团队成员有各自的分工,互相依赖合作,共同完成任务。
软件团队的模式:
1.主治医师模式
首席程序员“主刀”,负责处理主要模块的设计和编码,其他成员“为主刀医师服务”,即从各种角度支持主治医生的工作。该模式往往退化为“一个学生干活,其他学生打酱油”。
2.明星模式
主治医生模式运用到极致,可以蜕化为明星模式。如何让团队利益最大化,而不是明星利益的最大化,如何让团队的价值在明星陨落之后仍然保持是这个模式要解决的问题。
3.社区模式
社区很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。该模式的好处就是“众人拾柴火焰高”,但是如果大家都只来烤火,不去拾柴;或者捡到的柴火质量太差,最后火也熄灭了。
4.业余剧团模式
个人在团队中听从一个中央指挥的指导和安排。在学生实践项目或培训项目中,这种事情经常发生。
5.秘密团队
软件团队进行一些秘密的软件项目。该模式的好处是团队内部有极大的自由,没有外界的干扰,团队成员有极大的投入。
6.特工团队
软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而紧迫性的问题。
7.交响乐团模式
家伙多,门类齐全;各司其职,各自有专门场地,演奏期间没有聊天、走动等现象;演奏都靠谱,同时看指挥的;演奏的都是练习过多次的曲目,重在执行。
8.爵士乐模式
不靠谱;没有现场指挥;人数较少。
9.功能团队模式
具备不同能力的同事们平等协作,共同完成一个功能。
10.官僚模式
几个人报告给一个小头目,几个小头目报告给中头目,依次而上。
瀑布模型适用于以下情况:
1.如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证
2.产品模块之间的接口、输入和输出能很好地用形式化的方法定义和验证
3.使用的技术非常成熟,团队成员都很熟悉这些技术
4.负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流
第6章主要是讲敏捷流程,敏捷流程是一系列价值观和方法论的集合。
敏捷流程相较于传统的软件模型来说,更加注重个人和交流,软件的可用性,与客户的合作和响应变化。
敏捷开发的原则:1.时间尽早;2.响应变化;3.持续更新;4.共同合作;5.有上进心;6.面对面交流;7.有指标;8.可持续;9.关注更新;10.简化;11.自我管理;12.提高效率。
通过这次阅读,我意识到了团队开发的重要性。以前我们都只是自己写自己的代码,但那时我们写的都是一些小程序,自己还能应付过来,但是以后如果开发软件的话,自己肯定是不能忙得过来的,这就体现了团队开发的重要性。分工合作,提高效率,这正是我们所需要的。