敏捷or瀑布:你还在纠结吗?

汽车ECU开发 2023-06-19 08:43


工程开发的本质与瀑布模型

自然界的系统大致可以分为两种主要的类型,一种是自然形成的,一种是人工制造的。我们在这里只关注人工制造的系统。因为其涉及到工程开发,所以,可以将其称为:工程系统(Engineering System)。工程系统实现的过程就是工程开发的过程。

所有的工程开发,起点都始于需求。无论是一部手机,还是一架飞机,甚至是一栋建筑,它们被开发出来的目的都是为了满足某种需求。因为,如果这些系统不能满足某种特定的需求,就不会有人去花费时间、金钱和体力去实现它。

需求基本确定了之后,接下来要做的就是进行设计。此时需要做的是确定这个系统使用在什么样的环境内,有哪些主要的组成部分(组件),它们之间是怎么连接(结构)的,需要满足哪些标准(原则)等。这个相当于系统架构的设计,或者是系统的详细设计。如果系统复杂到需要多个人参与设计,那么架构设计就是必不可少的。负责设计架构的人把系统分为多个子系统,并规定好每个子系统的边界和接口等一系列要求,再由相应的人进行更详细的设计。

设计完成之后,就是开始实现了。这个时候,施工队入场了,不同的人负责不同的工作。对于电子产品来说,要有软件、硬件工程师。对于建筑来说,需要泥瓦工、水电、油漆等工种。不论产品如何,这个阶段大家都是按照上面的设计来进行实现。

施工完成后,需要做的是验收。不管产品是哪一种,验收都可以分为两类:验证(Verification)和确认(Validation)。验证活动检查的是产品是不是按照设计实现了,确认检查的是产品是不是确实是用户想要的。对于建筑物来说,设计的时候是10层楼,结果盖成了9层楼,那么就是不合格的,因为不符合设计。可是如果设计的时候就注明了每层楼高2米,而客户需要的是3米的层高,那么即使验证合格了,确认环节也不合格。

在验收结束后,产品就可以交付给用户使用了。在一段时间内,产品的提供方还需要持续的对产品进行维护,产品出了问题时,产品的提供方就需要及时给解决。这个过程相当于售后的质保。

以上的过程就可以采用瀑布模型(Waterfall Model)进行表示。

瀑布模型的发展经历了几个阶段,1956年在一篇关于软件开发的论文中首次提到。在接下来的几十年里,它被不断完善,最后被美国国防部采用,作为承包商需要遵循的标准。瀑布模型描述了一种按照一定顺序处理开发过程步骤的方法。

瀑布模型中,所有的工作都是顺序的,是一层层流下来的,像瀑布的水流一样,是单向的。纯粹的瀑布模型的本质是,在进入下一个步骤之前,必须完全完成本步骤的所有任务。看起来逻辑很通顺,但实际应用的时候却可能会遇到很多问题。因为,需求(Requirement)可能不全或有错误,设计(Design)的过程中可能会出错,实现(Implementation)也可能会出错,从而导致理想的瀑布模型会不适用于很多复杂的场景。如果完全按照这种模式开发,就可能出现不断重启所有环节的情况。

实际的开发过程中,往往很少完全按照瀑布模型开展,产品一般都要经历多次迭代。我们所熟悉的水果手机也不是在一出现就这么NB的,而是从1,2,3,4……一代代发展而来的。

从上面的讨论我们可以看出,所有的工程开发都是从需求开始的,要经历需求-设计-实现-验证-维护的阶段。瀑布模型反映的就是这个本质。

敏捷开发

开发背景下的敏捷(Agile)一词最早出现在2001年的犹他州的雪鸟会议上。在这场传奇性的会议上,一些软件人士聚集在一起,讨论软件编程的革命性方法。虽然那时极限编程(与Scrum相当相似)已经建立,但许多人仍然对沉重的软件开发过程和非常长的开发时间感到沮丧。复杂的系统如航天飞机的开发时间超过了20年。

犹他州的那些人创造了敏捷宣言 [ https://agilemanifesto.org/],描述了敏捷开发的主要原则,但其根源可以追溯到20世纪60年代人们开始尝试快速开发之时。Scrum这种最流行的敏捷方法之一,也是在1995年初开发的。

《敏捷宣言》描述了12条原则,如下:

l 客户的满意是最优先的。

l 在整个开发周期中,需求可以被改变。

l 在较短的周期内频繁地交付工作软件。

l 开发人员和业务人员需要有很好的联系。

l 能够对开发人员产生信任和激励的支持性环境是关键。

l 自组织的团队是高质量的关键。

l 团队本身定期反思改进自己。

l 面对面的会议和同地办公始终是首选。

l 可以工作的软件是衡量成功的主要标准。

l 卓越的技术和强大的设计是持续关注的焦点。

l 简洁性是必不可少的。

l 可持续发展和持续的步伐是敏捷的本质。

敏捷是项目管理和开发过程的混合物。Scrum以及Kanban可以被认为是纯粹的项目管理方法。其他的敏捷方法,如测试驱动开发、结对编程和持续集成,则是在软件开发或是质量保证方面。

敏捷开发中,与软件有关的和与人有关的主题被很好的整合了。这就是敏捷的关键因素之一:工程师和他们的合作是成功的关键。对于那些习惯于以孤立的方式工作而不合作的人来说,他们无法通过Scrum这样的项目管理方式来管理。

敏捷开发方法的主要特点是通过小型团队的合作来实现快速迭代。但仍然遵循着需求、设计、实现、验证的流程,这一点与瀑布式并无不同。与瀑布式开发不同的是,它的每一轮迭代的周期要小得多,通常以周为单位。它们的创建是为了快速交付并从用户或利益相关者那里获得早期反馈。这样做的好处是,产品能更快地到最终用户手中,而且反馈也能更快地回到开发团队中。团队致力于根据反馈和优先级迅速调整方向,所以上述所有问题都通过短的反馈周期和透明度来解决。最后,团队致力于持续改进。每个冲刺结束时都有一个回顾会,每个人都有机会发言,讨论下一轮可能进行的改进。

敏捷还是瀑布?

究竟应该采用哪种开发方式?这个问题就像一个人问:应该吃蔬菜还是肉呢?如果笼统的回答,就只能是:看情况了。

不同的公司、不同的项目有不同的特点和要求,无法一概而论。简单而言,敏捷更适合那种需要不断快速试错的项目,而且对团队能力的要求很高。当需求不清楚或实现方案不清楚的时候,采用敏捷方式可以快速交付原型产品,得到客户的反馈,并能够让团队聚焦在高优先级的任务上,从而提升交付效率。

然而,对于那些需求清晰、团队规模大的项目,敏捷则并不一定能够发挥很好的作用。这种情况下,如果有很好的架构设计,每个模块或子系统的接口、边界和需求都清晰的时候,每个子团队完全可以按部就班的开展工作,每个人都有明确的职责和角色,也无需每两周就交付一个版本,只需要按照既定的里程碑工作即可。此时,传统的类似瀑布式的开发可能更为合适。尤其是在那些增量型的项目中:很多人在一个平台上修修补补,只要大家能够各司其职,有人在统一管理也就没有问题了。

敏捷在很大程度上还涉及团队精神、团队授权和合作。如果一个团队中的氛围不好,也没有得到充分授权,那么采用敏捷也无法提升效率。另外,假如每个工程师都需要同时负责多个项目的事情,敏捷也没有办法开展起来。

在有些人的眼中,瀑布就代表着落后,敏捷就代表着先进,这个未免有失偏颇。如同青菜与肉、跑车与拖拉机一样,没有好坏,只有适合与否。而且,我还从没有看到过那个项目是完全按照瀑布式开发的。所有的项目都是按照计划在最终版发布前有多个过程版本发布的,这也就是说,实际工程开发中也是按照敏捷的思想在开展的,只不过形式不同,迭代的周期不同而已。

当你的软件项目有几十个开发人员,产品规模远大于一个团队所能开发的规模,而且还需要快速地进行交付,那该怎么办?业界已经定义了一些方法来将Scrum扩展到更大的软件产品。扩展的Scrum方法包括Nexus、LeSS(Large Scale Scrum)和SAFe®(Scaled Agile Framework)。基本的思想是:小的开发团队向更高层次的团队交付,以此类推,直到完整的产品完成。可能需要一些新的规则、工件、团队和会议。

在古老的汽车行业,虽然软件越来越重要,但软件不是汽车中的唯一组件,软件还需要与硬件和机械相结合才能有用武之地,软件的开发也要匹配整车开发的时间线和SOP节点的要求

总结

  1. 1.   开发的本质都是要从需求开始,经历需求-设计-实现-验证-维护的阶段。只不过不同的项目或不同的组织选择了不同的迭代周期和开发方式。不同复杂度的产品经历的迭代轮次不同,开发周期也不同,但目的都是相同的:满足需求,交付系统!

  2. 2.   如果从大的时间尺度来看,所有被持续更新的工程系统都是逐渐增长起来的,这与敏捷的思想很接近。产品都是从简单到复杂的,功能是逐渐增长的,大楼也是一层的盖起来的,汽车在刚刚出现的时候与现在所看到的完全不同,Windows操作系统也是逐渐演进的,控制器的软件也是演进而来的。

  3. 3.   KanbanSprint等都是一种工具或方法,而工具和方法都必然有自己的适用范围,在不同的情况下,要灵活使用,没有万能的工具。

  4. 4.  选择敏捷还是瀑布,需要考虑的点很多,至少包括:团队规模,项目规模,开发需求是否明确,人员能力,人员稳定性,团队氛围,项目是否需要持续维护等。

  5. 5.  当需求明确,技术方案也明确,也就是比较简单的时候,使用瀑布。当需求不明确或技术方案不明确,使用敏捷。

  6. 6.  敏捷的好处是减少试错成本,快速交付,不断优化开发过程(资源、能力、流程等)。

  7. 7.  敏捷也是一种流程,而非没有流程。

  8. 8.  敏捷与瀑布并非对立的,如同青菜与肉一样,两者的适度结合才能有更好地产出。敏捷是一种思想和意识,而非教条。

最后,想说的两点是:

1.如果你的项目不是一锤子买卖,也就是还需要不断迭代升级和维护,那么还是老老实实写好文档。这与敏捷还是瀑布无关,因为你的团队不可能没有人员变动,人员也不可能永远都清楚地记得自己几年前做了什么。

2.看清事物本质就不会迷茫,盲目的采用敏捷并不能保证效率一定高。瀑布还是敏捷,本质上都是一种方式,灵活的在不同的时期采用不同的方式才是明智之举。固执的认为某种方式可以普适于所有情况,就是守株待兔、刻舟求剑、枉曲直凑!


end

分享不易,恳请点个【再看】

汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 163浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 201浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 170浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 126浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 202浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 82浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 494浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 142浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 108浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 538浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 68浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 78浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 187浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦