一幅图对比软件开发框架
最近看到很有意思的一幅图:

简单说一下我的理解。
1. 瀑布
特点:
开发周期确定
客户(团队)与开发团队隔离
缺点:
客户的软件期望成本与实际成本不对称
软件交付日期容易失控(人员变动,需求变动)
适用:
开发与客户固定(需求,预算,开发周期,开发流程)
双方签署协议来保证
2.
敏捷
特点:
开发过程透明
迭代增量开发
缺点:
在预算固定的情况下(需要一个严格的分阶段付款的协议)
客户组织结构过多问题呈指数增长(需求膨胀)
适用于:
需求十分不确定
客户接受分阶段支付(比按sprint结算)
客户对接人不超过3人
3. 看板
特点:
在swimline划分成todo,doing,testing…,管理开发的日常任务。
需求可以随时插入,任务优先级也可以随时调整。
缺点:
容易产生混乱。
对产品经理与开发的要求都很高。
scrum 特点:
在2-4周内专注于一些用户故事,在此期间拒绝一切需求。其中包含:standard up,planning meeting,groom meeting,retrospective meeting等活动。
缺点:
与敏捷相同。
4. Lean
特点:
最小化浪费(build了错误的功能,rework,方案中不必要的复杂度,多任务与等待,低效的沟通,知识丢失等)
移除与项目无关的人员
尽快交付
最迟做决定
不能算是软件开发方法,更像是敏捷宣言(http://agilemanifesto.org/iso/zhchs/manifesto.html)的一个扩展。
结论:
软件开发过程没有“万金油”方案。因为要考虑的因素太多:客户的沟通方式,客户的组织结构,交付过程,收款过程等等。并且大部分客户都是一开始声明“需求确定,预算确定”,可交付过程中还是出现了频繁改动的现象。瀑布的特点是“流程化”,比较适用于交付中的财务问题,严格的协议签署来保证阶段性收款(可以分阶段交付,每阶段内实施scrum等敏捷框架);而敏捷的特点是拥抱变化,比较符合软件的本质与构建软件的过程。当然,团队建设也不容忽视,需要每人目标(周期目标,质量目标,性能目标)一致,持续交付有质量的软件才是关键。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!