完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最开始人们心目中的过程应该是这样的:
如何将需求变成软件 中间的“开发过程”开始很简单,只是硬件的一个配置。但这个配置越来越多,当这个配置多到难以理解时,就变成魔法了。这个魔法威力强大,但是神秘,且不可控。人们面对旺盛的需求,渴望解开魔法的面纱,将它牢牢控制在手心。于是各种开发模式纷纷登场。 瀑布模型瀑布模型是一个经典模型,不用废话,它一定在你心里。
(Waterfall Model) 各个环节都通过文档衔接,这样每个环节就可以独立了。但很快人们发现好多问题
V模型后来V模型出现了。V模型是瀑布模型的变种,其实我也把它归类为瀑布模型。 不确定V模型都做了哪些改变,似乎只是这样变了一个姿势,该做的事情一样不差,但是通过这个姿势,凸显了测试和开发环节的对应关系。表达了——都是软件开发环节的一部分,测试一样很重要。 (V model) 我不确定专门的测试部和QA是否是在这个过程中出现的,但可以看出,V模型试图解决瀑布模型中的问题2。 参考:https://en.wikipedia.org/wiki/V-Model 原形模型在瀑布模型中第一个环节就是“需求分析”,这个环节的产物决定着最终产品的走向,需求的重要不言而喻。有一个出镜率非常高的图,非常准确的描述了错误需求的结果。 ( demand-error) 原形要解决的问题就是需求不准,避免需求经过长时间的开发,浪费了大量的金钱和人力,得到的软件还不是用户所期望的。 原形模型采用的方式是:开发团队在分析需求的时候,尽快开发出一个用户看得到的原形,让用户尽早感受到效果。其实原形模型更多的是一种沟通方式,只是有人不丢掉原形,在原形的基础上继续开发,才被定位为原形模型。不过原形的开发过程时间紧,任务重,结果非常粗糙,重用的成本一般很高,建议还是丢掉。 在制作原形的时候,有时会做得很逼真,用户可以像真的系统一样操作,只是后台的逻辑都是假的;有时会做的很简洁,只是一些图片。据说iPad的开发过程使用了原形,那个时候的原形仅仅是一个木板,上面画了几个按钮,想要做什么就在上面假装点点,想象着它完成了想要的操作。只要有好的沟通效果,形式不重要。 经过这一轮操作,用户基本就确定了自己想要什么了,完美的解决了瀑布模型中问题1。 参考:https://en.wikipedia.org/wiki/So ... rowaway_prototyping 迭代模型迭代模型的思路是分解需求。看似简单的分解操作,却得到了三个好处:
(Iterative model) 这个图上每个迭代我都画成了V模型,实际并不一定是V模型,任何适宜模型都可以。 迭代模型将大的需求变成小的需求,让问题的复杂度降低了很多,瀑布模型中各种设计文档的作用开始减弱了,缓解了瀑布模型中问题3。 参考:https://en.wikipedia.org/wiki/It ... emental_development 敏捷敏捷核心关键词:快速交付,持续重构;演进的需求和方案;自组织且跨功能的团队。 快速交付,持续重构
(traditional demand analysis) (agile demand analysis) 这个图确实很形象的表达了敏捷和传统开发方式比较,增加了演进的过程,但是大家可能没有注意到需求是什么。 一般出现这个图时的需求是:一个舒适快捷的载人工具。 因为用户不确定最终产品的样子,用户只有一个对产品的期望。开发也不确定各个材料具有什么性能,所以用演进的方法来探索答案。看起来浪费了很多金钱和时间在和汽车不太相关的东西上,这个其实是寻找答案的成本。如果不演进,可能需要5个汽车的成本才能搞定,而演进只花费了两个滑板、一个自行车、一个摩托、一个汽车的成本,所以算下来还是很划算的。这里不确定的需求是采用演进的原因。 如果需求是确定的——有四个轮子,有发动机,有顶棚和方向盘的汽车。我们应该可以直接使用第一个流程,第一个流程能节省更多的钱和时间。敏捷并没有说所有的需求都要演进,确定的需求还是设计的好,不确定的需求就需要演进。 但是作为一个需求,一般不会所有的东西都是确定的,比如这个需求里面仅仅要求有四个轮子,轮子是否需要有轮胎呢?在轮子的开发上还是需要敏捷,同理其他模块也一样。 最终的开发过程应该是,由总工程师设计车架(汽车的架构),将需求中的四个轮子、发动机、顶棚和方向盘连接起来,之后多个项目组并行开发其他模块,各个项目组都可以使用敏捷开发各自不确定的模块。大家是否找到了软件的影子,其实我们都是这么干的。比如一个全新的系统,我们会规划一个用户管理服务、基本数据服务、XX业务服务…… 自组织且跨功能的团队将自组织(Self-Organizing)和传统的命令控制(Command and Control)比较一下,如图: 自组织与传统命令控制的比较 Command and Control组织方式下,只有Project Manager关心进度,其他人员专职负责各自分配的任务。 一个复杂的组织就像一个复杂的机器;组织是各个岗位的人组成的,机器是各个位置的螺丝钉组成的;一个优秀的机器,依赖于每个螺丝钉都非常牢靠,一个优秀的组织也依赖于每个岗位的人能非常专业。 一万小时定律说:1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。每个人的精力都是有限的,为了能在某个领域专业起来,必定需要在这个领域长时间专职投入。 所以Command and Control还是挺科学的,它将复杂的组织化繁为简,让每个岗位都专注得在自己的位置上尽职的发挥着光和热,成为优秀的罗螺丝钉,再用优秀的螺丝钉做优秀的机器。 可是,人终归不是一个螺丝钉,他有血有肉,有想法,有个性;工作也不是铁板上打出来的那个孔,一成不变。所以现实中工作和人的匹配总不是那么合适。 在Self-Organizing组织方式下,每个人都致力于项目的目标,团队成员互相尊重,每个人都专注于工作,开放,团队成员有勇气站出来参与该项目。这里最关键的就是每个人都致力于项目的目标。如果只有Project Manager直接关注目标,其他人很难知道自己做的内容和目标之间有什么关系,就不能对这个目标做太多的努力。类似一个开发人员开发了一个定时任务需求,测试人员需要等待若干小时才能测试一次。如果开发人员提供一个手工触发的接口,测试人员的工作效率就会提升很多。所以看清楚全局的目标和问题能很大的提升生产力,敏捷的每日站会就在为这个而努力。 自组织内容比较多,有兴趣的可以阅读一下参考链接。总的来讲在自组织的团队中,每个人心中都有一个信念:为了部落。 参考: https://en.wikipedia.org/wiki/Agile_software_development https://www.infoq.cn/article/what-are-self-organising-teams https://cloud.tencent.com/developer/article/1370521 总结每一个模型都是在已有模型的基础上不断演进的,后来的模型都在继承已有模型优势的基础上解决已有模型的问题。 敏捷继承了以前模式的各种优点,它没有否定其他模式,它是在改进其他模式。敏捷也被质疑,认为对人的要求太高,实施难度大,但确实解决了不少问题。从这个角度看瀑布就像是一把石斧,敏捷是一把钢斧,他们都是砍柴的,但是钢斧在所有斧子中从多方面做了改进。 《深入核心的敏捷开发》第10章结语——剑道中有这样一个心决:守、破、离。 书里讲的是学习新东西的过程,我想我们在工作过程中,除了守(学习和使用敏捷),还要破(发现使用过程中的各种问题,寻求解决方法),总有一天会离(创建新的模式)。 所以当前敏捷是王道,但是未来一定会出现更好的模型。 评分
|
||
相关推荐
|
||
谁知道这个16脚的芯片是什么型号2-15脚输出的互补的450KHZ方波电流达到200MA
481 浏览 0 评论
588 浏览 0 评论
1254 浏览 0 评论
1157 浏览 0 评论
开源项目!基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测
687 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 04:15 , Processed in 0.558859 second(s), Total 82, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号