170104-瀑布式开发与敏捷开发
瀑布式开发:
严格地把软件项目开发分割成多个阶段:需求分析、要件定义、基本设计、详细设计、编码、单体测试、结合测试、系统测试等
强调文档,在开发后期才能看到软件的模样
瀑布式把所有开发人员定义为流水线上的工人,所有人都只能接触自己工作范围内的东西,所以对客户需求理解高低不一,这种情况下编码人员比设计人员对需求变更会有更大的抵触情绪
严格的分阶段导致逆向的困难,也就是回头修改前期的错误要付出很大的代价,而它造成的影响也更大
敏捷开发:
核心是迭代
可以工作的软件 胜过 精心设计面面俱到的软件
客户合作 胜过 合同谈判
响应变化 胜过 遵循计划
简单设计,重复迭代
客户最关心的功能优先完成
根据客户对每次迭代成果的意见,进行下次迭代
开发团队有两个队伍,业务团队和技术团队。所有开发人员对项目活动的理解应该是一致的,因此沟通是非常重要的,而沟通的平衡性也很重要,如果业务一方过于强势,在项目会议上就会不断要求功能和交付日,而忽略开发人员的完成的可能性和对需求的理解程度;如果开发人员控制了沟通,项目会议上技术术语会代替业务语言,而开发人员也很难真正了解客户的真实需求。因此项目经理的调节能力很关键。
瀑布式项目管理是自上而下的命令式管理,敏捷式的管理是团队自我管理和项目经理服务式管理的结合