嵌入式系统软件架构设计方法

1.嵌入式系统软件架构设计的目的 

        嵌入式系统软件架构是开发大型嵌入式系统密集型软件贯穿始终的关键桥梁,同时软件架构也是软件开发的基础。架构设计的目的是:

  • 保证应用的代码逻辑清晰,避免重复的设计;
  • 实现软件的可移植性;
  • 最大限度的实现软件复用;
  • 实现代码的高内聚、低耦合。

        软件架构并非可运行软件,它是一种表达,是软件工程师能够:

  • 分析设计在满足规定需求方面的有效性;
  • 考虑体系结构可能的选择方案;
  • 降低与软件构造相关联的风险。

        在嵌入式软件架构总体设计时,应充分考虑软件的可靠性、安全性、可伸缩性、可定制性、可维护性、客户体验和市场时机等因素。

2.基于架构的软件开发方法的应用

         由于嵌入式系统是为某特定对象、特定目标而设计的一种系统,这样的系统通常具备目标明确、用途单一、质量、可靠性要求高等。在嵌入式系统中,其设计通常采用了自顶向下的设计方法,基于架构的软件设计(ABSD)可适应于嵌入式系统的软件设计方法。

        基于架构的软件设计(Architecture-Based Software Design,ABSD)方法强调有业务、质量和功能需求的组合驱动软件架构设计。ABSD是一个自顶向下,递归细化的软件开发方法,它以系统功能的分解为基础,通过选择架构风格实现质量和业务需求,并强调在架构设计过程中使用软件架构模板。ABSD方法是递归的,并不是说需求抽取和分析活动可以终止,而是应该与设计活动并行。设计活动可以从项目总体功能框架明确后就开始,可以逐步迭代、逐步完善的进行,不管设计是否完成,架构总是清晰的,有利于降低架构设计的随意性。

        嵌入式软件的需求通常是从系统角度分解而来的,因此,在采用ABSD方法时,要关注系统的需求描述。

3.属性驱动的软件设计方法

         嵌入式系统,尤其是安全攸关的系统与通常软件系统的最大不同点就是高质量属性始终贯穿于整个产品的全生命周期中。属性驱动的软件设计(Attribute-Driven Design,ADD)是把一组质量属性场景作为输入,利用对质量属性实现与架构设计之间的关系的了解(如体系结构风格、质量战术等)对软件架构进行设计的一种方法。

4.实时系统设计方法

         嵌入式系统具有众多自身的特性,这些特性通常和应用场景密切相关,而实时特性常被各类具备控制能力的系统所采用,比如工业控制、航空航天和轨道交通等领域中的嵌入式系统应同时具备高可靠性、高安全性、强实时性等。系统的实时性是这些嵌入式系统的核心特性,针对实时系统,其设计方法也有它的自身特点。实时系统设计方法(Design Approach for Real Time System,DARTS)常被应用于嵌入式系统的软件设计中。

        DARTS方法主要是将事实系统分解为多个并发任务,并定义这些任务之间的接口。该方法起源于实时系统的实时结构化分析和设计方法(Real-Time Structuring Analysis and Design,RTSAD)。RTSAD在分析阶段使用实时结构化分析(RTSA)方法,设计阶段使用实时结构化设计(RTSD)方法,但是这个方法没有考虑实时系统是由一些任务组成的这个特点。这对实时系统的这个特点,DARTS方法提供了一些分解规则和一高处理并发任务的设计步骤,还提供了一套把实时系统建造成并发任务的标准和定义并发任务间接口的指南。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊JSON

引言 JSON的概念 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,但独立于语言,这意味着它可以被许多编程语言轻松解析。JSON的简洁性和易读性使其成为Web开发中数据交换的…

jnp.linalg.norm

jnp.linalg.norm 是 JAX 中用于计算向量或矩阵的范数的函数。JAX 是一个用于高性能机器学习研究的 Python 库,它提供了与 NumPy 类似的 API,但支持自动微分和加速计算。jnp 是 JAX 的 NumPy 接口。 jnp.linalg.norm 的基本语法 jnp.linalg.norm(x, ord…

办公软件都需要学习哪些?沈阳计算机办公软件培训

学习办公软件可以提高你的工作效率和专业技能。以下是一些常见的办公软件及其需要学习的关键内容: 1. Microsoft Word 或 Google Docs(文字处理软件) 基本操作:创建、保存、打开和打印文档。文本格式化:字体、段落、…

掌握 NumPy:高效数组处理综合指南(第 2/2 部分)

照片由 兹比内克布里瓦尔 on Unsplash 一、介绍 欢迎来到我关于 NumPy 的教程的第二部分!之前,我们已经介绍了以下列表中的前 7 章。现在在这篇文章中,我们将从第 8 章一直到第 14 章。 Numpy 安装数组初始化Numpy 数组限制计算速度和内存使用…

量子计算:1 从薛定谔的猫开始

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

序列1bp插入有什么影响

1bp插入突变(1个碱基插入)在基因序列中通常会引起以下几种影响: 移码突变(Frameshift Mutation): 插入的一个碱基会改变插入点之后所有的密码子,导致读取框的移动。这种变化通常会引起整个蛋白质…

PCL 点云RANSAC+SVD提取平面

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里的思路很简单,RANSAC算法具有很不错的抗噪性,但是得到的平面仍然是基于原始数据中的点,这会导致提取出的平面不够精确;因此我们可以基于RANSAC算法提取出的点云,使用最小二乘法拟合出更为精确的平面参数。…

基于PHP的民宿管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的民宿管理系统 一 介绍 此民宿管理系统基于原生PHP开发,数据库mysql,前端jquery.js和echarts.js。系统角色分为用户和管理员。用户可以在线浏览和预订民宿,管理员登录后台进行相关管理等。(在系统…

【python】OpenCV——Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础(18)使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…

如何清理docker build的缓存

在使用 Docker 构建镜像时,Docker 会利用构建缓存来加速后续的构建过程。如果某一层及其所有上层未发生变化,Docker 就会重用这一层的缓存。虽然这可以显著提升构建速度,但有时你可能希望强制 Docker 忽略缓存,以确保从头开始重新…

JAVA小知识28:FIle类文件对象

Java 中的 File 类是 java.io 包中的一个类,用于表示文件和目录路径名的抽象表示。它提供了一些方法来操作文件和目录 一、File的创建 1.1、绝对路径 绝对路径是指从文件系统的根目录开始定位文件或目录的完整路径。它通常以根目录符号开始,在 Window…

【Mac】DMG Canvas for mac(DMG镜像制作工具)软件介绍

软件介绍 DMG Canvas 是一款专门用于创建 macOS 磁盘映像文件(DMG)的软件。它的主要功能是让用户可以轻松地设计、定制和生成 macOS 上的安装器和磁盘映像文件,以下是它的一些主要特点和功能。 主要特点和功能 1. 用户界面设计 DMG Canva…

Rocky Linux 更换CN镜像地址

官方镜像列表&#xff0c;下拉查找 官方镜像列表&#xff1a;https://mirrors.rockylinux.org/mirrormanager/mirrorsCN 开头的站点。 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/RackyLinux_Update_repo.sh #!/bin/bash # -*- codin…

自研地面站!自主开源无人飞行系统 Prometheus V2 版重大升级详解

自主开源无人飞行系统 Prometheus V2 相对于 Prometheus V1 在多方面做了重大的升级&#xff0c;今天我们将聊聊 Prometheus V2 的地面站升级。 地面站的重大提升 熟悉 Prometheus 的小伙伴们可能知道&#xff0c;V1 版本是没有专门的地面站的。而在 Prometheus V2 中&#x…

java开发技巧01

1.参数传递不要太深&#xff0c;影响阅读&#xff0c;可以抽取单独的方法。 void method001(String param){ for(){ ...... } if(){ ...... } for(){ ...... } if(){ ...... } //在此处才用到 param ......; if(param){ param ...... } } 2.不要在循环里面频繁请求数据库&…

vue3 配置全局@符号

1.下载依赖包 npm install types/node --save 2.修改vite.config.ts配置文件 import path from "path"; export default defineConfig({plugins: [vue()],resolve: {alias: {"": path.resolve(__dirname, "./src"),},}, });3.修改tsconfig.jso…

VERYCLOUD睿鸿股份亮相亚马逊云科技中国峰会2024

5月30日&#xff0c;为期两天的亚马逊云科技中国峰会在上海世博中心圆满落幕。 多位大咖现场分享&#xff0c;生成式AI时代的数据战略&#xff0c;企业级AI应用&#xff0c;最新技术、产品重磅发布&#xff0c;创新行业解决方案 …… 作为亚马逊云科技的生态合作伙伴&#x…

C语言循环中获取之前变量的值

获取上个数组变量的值 #include <stdio.h> #include <string.h>enum { GG, DD }; int main() {int bi[] {0, 0};int bi_s1[] {0, 0};for (int i 0; i < 5; i) {memcpy(bi_s1, bi, sizeof(bi));bi[GG] i * 3;bi[DD] i * 2;printf("bigg %d, bigg_s1 …

AI 是否会通过制造大量垃圾信息来污染互联网

AI 生成内容(AIGC,AI-Generated Content)可能导致大量垃圾信息在互联网上传播,这种现象被称为**“信息污染”**。以下是有关这个问题的详细讨论,包括可能的影响、原因、现状以及应对措施。 1. 影响和潜在问题 1.1 信息污染 低质量内容泛滥:AI工具能够快速生成大量低质量…

好大夫在线医生数据医生姓名科室荣誉等202406

好大夫在线医生数据医生姓名科室荣誉等 2024年6月数据&#xff0c;总共934027条数据&#xff0c;可导出为excel,csv等 好大夫在线2024-06月数据 包含简介信息&#xff01; 可见样例数据 样例数据_医生2.xlsx https://www.alipan.com/s/DBEW9MgHEPP 点击链接保存&#xff0…