0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式软件开发常用的开发模型介绍

Q4MP_gh_c472c21 来源:嵌入式基地 作者:嵌入式基地 2021-10-21 14:40 次阅读

瀑布模型

该模型是由上至下一次性完成整个项目的开发方式。该模型一共分为6个阶段,如图所示:

6d31d264-31ce-11ec-82a8-dac502259ad0.png

在瀑布模型的开发过程中需要严格的按照这条线执行,只有完成当前阶段之后才能够进行下一阶段的开发任务。

优点

该模型划分出了每个阶段的检查点,当一个阶段开发完成之后,开发人员的精力可以全部的投入下个阶段,有利于提高开发效率,便于项目的管理。

比较适用于前期的软件开发与小型软件系统的开发中。缺点

无法评估项目进度。因为不知道哪个阶段会造成项目的延期

无法适应用户的需求变更,只能等到项目完成后,用户才能够看到项目结果快速原型模型

快速原型模型与瀑布模型相反,项目初期根据用户的需求快速构建一个可以运行的系统原型,之后向用户展示,由用户进行审核,提出意见,然后逐步丰富项目需求。当需求真正确定后,才正式进行项目开发。模型如图所示:

6d744dc4-31ce-11ec-82a8-dac502259ad0.png

优点

解决需求不明确带来的风险,适用于不能提前确定项目需求的项目缺点

不利于开发人员对产品进行扩展迭代模型

迭代模型又被称作为增量模型或演化模型,它将一个完整的软件拆分成不同的组件,之后对每个组件进行逐步的开发测试,每当完成一个组件就会向客户进行展示,让客户确认该组件功能与性能是否达到要求,最终确定无误,将组件集成到软件体系结构中。整个开发工作被分为为一系列短期、简单的小项目,称为一系列迭代,每一个迭代都需要经过需求分析、软件设计、编码、测试这几项过程,其开发过程如图所示:

6db71410-31ce-11ec-82a8-dac502259ad0.png

优点

第一个可交付版本的软件所需的成本与时间较小

能够适应客户的需求变更,当需求变化时,只需要修改某一个组件即可。缺点

如果对用户需求的变更没有整体的规划,可能会变化为“边做边开发”的模式。

最终集成各个组件时,可能会出现集成失败的风险。喷泉模型

该模型主要采用面向对象技术。当客户需求基本类似时,在开发过程中可以采用面向对象的开发方式,将相同的模块全部封装起来,以便于下次功能开发时使用。模型如图所示:

6e150084-31ce-11ec-82a8-dac502259ad0.png

优点

支持软件重用,并且开发过程无间隙性,分析、设计编码无明显边界,可交叉迭代进行。使软件在无法排除重大风险时有机会停止,以减小损失。缺点

由于喷泉模型在各个阶段是重叠的,即每个对象都有分析、设计和编码阶段,所以需要大量开发人员。

大量开发人员不利于项目的管理。

该模型需要严格管理文档,会增加审核的难度增大。螺旋模型

螺旋模型融合了瀑布模型,快速原型模型,该模型最大的特点就是引入了其他模型所没有的风险分析。

螺旋模型将开发过程都分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,在每个周期开始之前都会进行风险分析。在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。模型如图所示:

6e83d3d8-31ce-11ec-82a8-dac502259ad0.png

该模型共有四个象限,每个象限的含义如下:

制订计划:确定软件目标,制订实施方案,并且列出项目开发的限制条件。

风险分析:评价所制订的实施方案,识别风险并消除风险。

实施工程:开发产品并进行验证。

客户评估:客户对产品进行审核评估,提出修正建议,制订下一步计划。优点

螺旋模型强调风险分析,对每个演化层出现的风险都所了解,继而做出应有反应。因此特别适合用于庞大、复杂并且具有高风险的系统。螺旋模型支持用户需求的动态变化有助于提高产品的适应能力。缺点

过多的迭代次数会增加开发成本,延迟提交时间。敏捷模型

在现代社会的开发中,由于业务会经常快速的变化,因此会导致在软件开发之前经常是无法得到详细完整的开发需求,没有完整的开发需求,传统的软件开发模型也就无法适用。

敏捷开发模型的提出就是为了解决该问题。该模型以客户的需求为核心,采用迭代,循序渐进的方法进行开发。

软件项目在构建初期会被拆分为多个相互联系而又独立运行的子项目,然后迭代完成各个子项目。开发过程中,各个子项目都要经过开发测试。当客户有需求变更时,敏捷模型能够迅速地对某个子项目做出修改以满足客户的需求。在这个过程中,软件一直处于可使用状态。

该模型更重视人在软件开发中的作用。软件开发过程中,各个部门需要紧密的合作沟通,为适应软件需求的频繁改变,客户可以全程参与到开发过程中。

敏捷开发模型的价值与原则

个体和交互重于过程和工具

可用软件重于完备文档

客户协作重于合同谈判

响应变化重于遵循计划优点

用户很快可以看到一个基线架构版的产品

敏捷注重市场快速反应能力,客户前期满意度高。缺点

注重人员的沟通

忽略文档的重要性

如果项目人员流动大太,会增加项目维护难度

软件之前版本的可重现性、可回溯性较低

对于较大的项目,人员越多,面对面的有效沟通越困难。因此,该模型适用于小型项目的开发。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19110

    浏览量

    304841
  • 软件
    +关注

    关注

    69

    文章

    4929

    浏览量

    87409
  • 模型
    +关注

    关注

    1

    文章

    3229

    浏览量

    48811

原文标题:超全!嵌入式软件开发常用的开发模型(附详细流程图)

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式工程师常用开发工具有哪些?

    仿真器可以模拟复杂的微控制器和外设,帮助工程师在早期阶段进行软件开发和调试。这大大缩短了开发周期,降低了开发成本。 总之,嵌入式工程师需要熟练掌握这些
    发表于 12-20 15:29

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着
    的头像 发表于 12-09 09:38 236次阅读

    一文了解嵌入式软件开发的对象

    以前应用场景很单一,嵌入式开发可能谈不上面向对象开发。但现在,做嵌入式开发,没有面向对象开发,你就有点落伍了。 本文结合个人经验和周立功《抽象接口技术和组件
    的头像 发表于 11-15 10:31 326次阅读
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的对象

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3331次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试<b class='flag-5'>介绍</b>

    你认为嵌入式软件开发的尽头是什么?

    嵌入式软件开发的“尽头”是一个富有哲理且多维度的概念,因为它不仅关乎技术发展的极限,还涉及到行业应用、市场需求、技术融合与创新等多个方面。从几个不同的视角来看
    的头像 发表于 09-18 09:42 462次阅读
    你认为<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的尽头是什么?

    嵌入式开发常用软件有哪些?

    嵌入式开发常用软件有哪些? 对于初学嵌入式的朋友们,会想要了解嵌入式软件开发常用
    发表于 09-09 15:22

    节点、跨平台开发,AWFlow让嵌入式开发变得更简单

    国产化趋势对嵌入式软件开发构成挑战,导致软件移植和适配需求激增,影响开发效率。AWFlow软件通过节点化和跨平台
    的头像 发表于 08-02 08:25 361次阅读
    节点<b class='flag-5'>式</b>、跨平台<b class='flag-5'>开发</b>,AWFlow让<b class='flag-5'>嵌入式开发</b>变得更简单

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于嵌入式
    的头像 发表于 07-31 09:25 698次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>与AI整合

    嵌入式软件开发招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 编辑 寻求:嵌入式软件工程师 要求:3年以上开发经验,音视频领域应用层开发 地址:北京市昌平区 邮箱:10
    发表于 07-26 13:44

    嵌入式开发者的未来

    和测试这些产品的硬件和软件。汽车行业:现代汽车包含大量的嵌入式系统,例如车载娱乐系统、发动机控制单元、自动驾驶系统等。在这个领域,工程师可以从事嵌入式软件开发、系统集
    的头像 发表于 06-23 08:10 364次阅读
    <b class='flag-5'>嵌入式开发</b>者的未来

    AMD Vitis™ Embedded嵌入式软件开发套件的功能和特性概述

    Vitis Embedded 是一款独立的嵌入式软件开发套件,主要用于为 AMD 自适应 SoC 和 FPGA 中的 AMD 嵌入式处理子系统(基于 ARM 的子系统和 AMD MicroBlaze)
    的头像 发表于 04-08 10:50 920次阅读
    AMD Vitis™ Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>套件的功能和特性概述

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 679次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发
    的头像 发表于 01-22 15:27 2277次阅读

    基于功能安全的汽车嵌入式软件单元验证技术研究

    ,对满足功能安全ASIL等级的汽车嵌入式软件单元验证技术进行详细介绍,从而提高软件质量,减少软件安全隐患,对汽车
    的头像 发表于 01-07 11:27 1049次阅读
    基于功能安全的汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>单元验证技术研究