当前位置: 首页 > article >正文

系统架构设计师教程 第16章 16.3 嵌入式系统软件架构设计方法 笔记

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

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

● 保证应用的代码逻辑清晰,避免重复的设计;

● 实现软件的可移植性;

● 最大限度的实现软件复用;

● 实现代码的高内聚、低耦合。

16.3.1 基于架构的软件设计开发方法的应用

基于架构的软件设计 (Architecture-Based Software Design,ABSD) 方法强调由业务、质量 和功能需求的组合驱动软件架构设计。

ABSD是一个自顶向下,递归细化的软件开发方法,它 以系统功能的分解为基础,通过选择架构风格实现质量和业务需求,并强调在架构设计过程中使用软件架构模板。

16.3.2 属性驱动的软件设计方法

属性驱动的软件设计 (Attribute-Driven Design,ADD) 是把 一组质量属性场景作为输入,利用对质量属性实现与架构设计之间的关系的了解对软件架构进行设计的一种方法。

ADD 是一种定义软件体系结构的方法, 该方法将模块分解过程建立在软件必须满足的质量属性之上。

1.ADD 开发方法的质量属性

1)质量属性

质量属性是指反映软件产品某一方面质量的特征或特性。

在嵌入式系统中,质量属性重点关注的是可靠性、安全性、可用性、可修改性、性能、可 测试性、易用性和可维护性等。

2)质量场景

质量场景是描述质量属性需求的一种规范,是一种面向特定的质量属性的需求。质量场景 通常由刺激源、刺激、环境、制品、响应和响应度量等6个部分组成。

● 刺激源:指生成刺激的实体(计算机、人);

● 刺激:指某事物,当其到达系统后需要对其加以考虑;

● 环境:指刺激发生时的各种条件;

● 制品:指系统或系统的一部分;

● 响应:指刺激到达后采取的反应;

● 响应度量:指能够以某种方式对响应进行度量。

2.ADD开发过程

采 用 ADD 方法进行软件开发时,需要经历评审、选择驱动因子、选择系统元素、选择设 计概念、实体化元素和定义接口、草拟视图和分析评价等七个阶段

16.3.3 实时系统设计方法

实时系统设计方法 (Design Approach for RealTime System,DARTS) 主要是将实时系统分解为多个并发任务,并定义这些任务之间的接口。在分析阶段使用实时结构化分析 (RTSA) 方法,设计阶段使用实时结构化 设计 (RTSD) 方法

1.DARTS开发方法的基本概念

1)RTSAD 方法

RTSAD方法是对传统结构化分析和设计方法的补充扩展,专门用于开发实时系统。

实时结构化分析 (RTSA) 是自顶向下的实时结构化分析方法,主要对传统的结构化分析方法扩充了行为建模部分,它通过状态 转换图 (STD) 刻画系统的行为特征,并利用控制转换 (Control Transformation) 与数据流图集 成在一起。

实时结构化设计 (RTSD) 是利用内聚和耦合原则进行程序设计的一个方法,它通过事务和 变换两种策略将 RTSA 的分析结构DFD/CFD转换为程序结构图。

2)任务结构化标准

任务结构化标准可以为设计人员将实时系统分解为并发任务的时候提供帮助。确定任务过程中主要考虑的问题是系统内部功能 的并发特性,定义一组并发任务间接口。

3)信息隐藏

信息隐藏作为封装数据存储的标准来使用。信息隐藏模块用于信息数据存储和状态转换表 的内容和表示。

4)任务架构图

RTSAD 设计方法使用任务架构图来显示系统分解为并发任务的过程,以及采用消息、事件 和信息隐藏模块形式的任务间接口。

2.DARTS开发过程

DARTS 方法由以下5部分组成。

1)用实时结构化分析方法 (RTSA) 开发系统规范

开发系统环境图 (SCD) 和状态转换 图 (STD)。

2)将系统划分为多个并发任务

3)定义任务间接口

4)设计每个任务

5)设计过程的成果

3.DARTS开发方法的评价

DARTS开发方法的主要优势:

● 强调把系统分解成并发的任务,并提供了确认标准。

● 提供了详细的定义任务间接口的指南;

● 强调了用任务架构图 (STD) 的重要性,

● 提供了从RTSA规格到实时设计的转换。


http://www.kler.cn/news/353401.html

相关文章:

  • 2024软考网络工程师笔记 - 第10章.组网技术
  • 新型电力系统精细化时序模拟分析软件
  • Docker设置日志滚动
  • leetcode动态规划(九)-0-1背包理论基础
  • PHP 正则验证A-Z且排除某字母
  • 多签机制简明理解及实例说明
  • 代码随想录算法训练营第十七天|Day17二叉树
  • 【ChatGPT】如何通过 Prompt 优化 ChatGPT 的输出
  • 解锁C++多态的魔力:灵活与高效的编码艺术(上)
  • 【私有云盘搭建】Portainer CE部署NextCloud,轻松实现公网访问
  • Java 8 的内存结构
  • 基于MATLAB的语音信号处理系统
  • CV图像处理小工具——json文件转mask
  • 06_实现watch
  • 【排序】——2.快速排序法(含优化)
  • 开源项目低代码表单FormCreate重写内置的请求方法,实现中间件和附带token
  • 类间方差,分割地物
  • 基于SSM的医院药品管理系统
  • 【人工智能-初级】第2章 机器学习入门:从线性回归开始
  • 【C语言】文件、结构体综合应用:小型学生成绩管理
  • Qt:图片文字转base64程序
  • 云栖实录 | 智能运维年度重磅发布及大模型实践解读
  • Docker配置网站环境
  • Redis 消息队列:实现、操作与性能优化
  • 【SSM详细教程】-01-Spring容器以及配置详解
  • C#从零开始学习(Head First C#)