当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]软件体系结构是其组件中体现的系统的基本组织,彼此之间的关系以及环境的关系以及指导其设计和进化的原则。软件体系结构并不是要创建一次并将其设置为石头。相反,软件体系结构应在整个产品的一生中发展和变化。多年来,我听到工程师和经理讨论了软件体系结构应该从编码工作中出现,就好像是通过魔术一样。相信一个新兴的,干净的建筑就像相信将一包意大利面倒入开水中会导致烤宽面条面条。

软件体系结构是其组件中体现的系统的基本组织,彼此之间的关系以及环境的关系以及指导其设计和进化的原则。软件体系结构并不是要创建一次并将其设置为石头。相反,软件体系结构应在整个产品的一生中发展和变化。多年来,我听到工程师和经理讨论了软件体系结构应该从编码工作中出现,就好像是通过魔术一样。相信一个新兴的,干净的建筑就像相信将一包意大利面倒入开水中会导致烤宽面条面条。

通过实施过程中考虑然后进化的软件体系结构具有许多好处,例如:

· 充当建造的路线图

· 提供可用于培训工程师的软件图片,并向管理者和利益相关者解释该软件

· 最大程度地减少不必要的返工

· 发展成本降低

我经常看到的一个常见问题是,团队很难弄清楚如何定义他们的软件体系结构。团队可以使用五个步骤来开发和发展其软件体系结构:

· 分开软件体系结构

· 识别和追踪数据资产

· 分解系统

· 界面和组件设计

· 模拟,迭代和扩展

因此,让我们探索您可以采取的几个步骤来设计嵌入式软件体系结构。

步骤#1 - 分开软件体系结构

许多嵌入式软件团队将他们的软件体系结构视为包括应用程序代码和硬件交互的单个凝聚力体系结构。以这种方式查看体系结构并不奇怪,因为嵌入式软件工程师通常会从硬件上查看其系统。嵌入式软件是唯一的,因为它必须与硬件进行交互,这与所有其他软件工程领域都不同。虽然这是真的,但现代软件架构师将并且应将与硬件依赖性和与硬件独立的软件分开。

我称此分离为“两个架构的故事”。传统上,开发人员将设计和实施其体系结构,以使硬件的独立和依赖性层紧密结合。但不幸的是,紧密耦合的架构存在很多问题。

紧密耦合体系结构的问题

首先,它们不是很便携。例如,如果微控制器突然变得不可用,会发生什么? (芯片短缺,有人吗?)。如果代码紧密耦合,则尝试将应用程序代码移动以在新的微控制器上运行,将成为一项艰巨的努力。应用程序代码与微控制器上的低级硬件调用紧密耦合!我知道许多最近遭受了苦难的公司。如果他们没有更新架构,则必须返回所有代码,并更改与硬件相互作用的每一行。更新其体系结构的公司通过抽象和依赖注入打破了建筑耦合。

其次,几乎不可能在开发环境中而不是在目标硬件上测试应用程序的单位测试。如果应用程序代码直接拨打了硬件,则可以成功运行该测试的测试线束,或者需要在硬件上进行测试。在硬件上进行测试很慢,通常是手动的,而不是自动化过程。我看到的结果是,该软件的测试无法很好地测试,整体系统质量受到了损失。此外,交付软件可能需要更长的时间。

最后,紧密耦合的体系结构将存在可扩展性问题。紧密耦合的系统通常共享数据。随着软件系统试图增长和添加新功能,每个新功能都会添加新代码变得更加困难。组件之间的相互作用,访问共享数据的能力以及麻烦缺陷的机会急剧上升。结果,尽管开发人员为完成工作而努力工作,但功能开发仍可能停滞不前。

分隔建筑如何解决问题

将软件体系结构分为依赖硬件和独立体系结构,通过紧密耦合的体系结构解决了所有问题。例如,在硬件依赖性和独立体系结构之间创建一个抽象层,可以将应用程序代码从一个微控制器移动到下一个。抽象层打破了硬件依赖性;换句话说,应用程序不知道或关心硬件。相反,应用程序取决于接口。新的与硬件有关的组件只需满足接口的要求即可。这意味着,如果我们更改硬件,只有硬件模块会更改!不是整个代码库。

在两个体系结构之间添加抽象层也解决了单位测试的许多问题。在进行抽象层时,更容易创建测试双打和模拟将预期的数据和意外数据返回到应用程序代码。我们可以编写所有应用程序代码,甚至没有硬件!我知道这听起来对许多嵌入式软件开发人员来说是荒谬的。但是,在上周,我为正在开发的产品中添加了几个新功能,我只打开了一次硬件。我所有的开发都是使用主机计算机上的单元测试完成的!

当我们将体系结构分开并专注于最小化耦合时,扩展软件变得更加容易。但是,仅仅因为我们打破了体系结构并不意味着我们不能在每个体系结构中创建耦合和凝聚力问题。我们仍然需要确保我们遵循两个架构中的坚实原则。好消息是,它使我们能够独立专注于每个体系结构,这意味着实时和硬件约束问题无法进入核心应用程序逻辑。

我要提到的最后一个好处是,通过将依赖硬件和独立体系结构分开,我们可以专注于在硬件可用之前开发和交付应用程序。这里的好处是,可以尽早访问该应用程序并提供反馈。随后迭代应用程序并专注于确保其满足实际需求的能力变得更加易于管理。如今,太多的团队专注于首先准备硬件,而核心应用程序是事后的想法。这是设计和构建系统的方法。

结论

软件体系结构可以帮助团队控制他们的软件。新兴的软件体系结构通常会导致大球和意大利面条代码。这并不意味着我们被迫使用瀑布方法。成功的软件体系结构通常是通过迭代和进化来创建的。设计软件体系结构的第一步是认识到嵌入式系统不仅没有一个体系结构。相反,有两种体系结构:与硬件有关和独立的体系结构。有目的地分开这些架构,使开发人员能够利用现代软件技术和方法来改善市场,质量和开发成本的时间。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭