敏捷流程(第6章)
敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
现有的做法 | 敏捷的做法 |
流程和工具 | 个人和交流 |
完备的文档 | 可用的软件 |
为合同谈判 | 与客户合作 |
执行原定计划 | 响应变化 |
敏捷的步骤:
第一步:找出完成产品需要做的事情--Product Backlog
产品负责人领导大家对于待解决问题中的条目进行分析、细化、理清相互关系估计工作量等工作;每一项工作的时间估计单位可为“天”。
第二步:决定当前冲刺需要解决的事情--Sprint Backlog
整个产品的实现被划分为几个互相联系的冲刺,产品订单上的任务进一步被细化,单位被分解为小时,并附上一个相对难度系数,订单上的任务团队成员可以根据自己的情况来认领。
第三步:冲刺--Sprint
在冲刺阶段,外部人士不能直接打扰团队成员。一切交流只能通过Scrum Master来完成,有任何需求的改变都留待冲刺结束后再讨论。
冲刺期间,团队通过每日例会来进行面对面的交流,大家依次报告:我昨天做了啥、我今天要做啥、我碰到了哪些问题。
第四步:得到软件的一个增量版本,发布给用户;然后在此基础上又进一步计划增量的新功能和改进。
敏捷(Agile) | 计划驱动(Plan-driven) | 形式化的开发方法(Formal Method) | |
产品可靠性要求 | 不高,容忍经常出错 | 必须有较高的可靠性 | 有极高的可靠性和质量要求 |
需求变化 | 经常变化 | 不经常变化 | 固定的需求,需求可以建模 |
团队人员数量 | 不多 | 较多 | 不多 |
人员经验 | 有资深程序员带队 | 以中层技术人员为主 | 资深专家 |
公司文化 | 鼓励变化,行业充满变数 | 崇尚秩序,按时交付 | 精益求精 |
实际例子 | 写一个微博网站 | 开发下一版本的办公软件,给商业用户开发软件 | 开发底层正则表达式解析模块;科学计算;复杂系统的核心组件 |
用错方式的后果 | 用敏捷的方法开发登月火箭控制程序,前N批宇航员都挂了 | 用敏捷方法,商业用户未必受得了两周一次更新的频率 | 敏捷方法的大部分招数都和这类用户无关,用户关心的是:把可靠性提高到99.999%,不要让微小的错误把系统搞崩溃 |
时间: 2024-10-12 21:42:41