DARTS v.s. RTSAD

简介: DARTS方法 (比较流行)DARTS(Design Approach for Real-Time System)方法强调了把实时系统分解为并发的任务,并为定义这些任务之间的接口。这个方法起源于实时系统的顺序结构化开发方法。顺序结构化开发方法在分析阶段使用RTSA方法,设计阶段使用TRSD方法,但是这个方法没有考虑实时系统是由一些并发任务组成的这个特点。针对实时系统的这个特点,DARTS方法提

DARTS方法 (比较流行)
DARTS(Design Approach for Real-Time System)方法强调了把实时系统分解为并发的任务,并为定义这些任务之间的接口。这个方法起源于实时系统的顺序结构化开发方法。顺序结构化开发方法在分析阶段使用RTSA方法,设计阶段使用TRSD方法,但是这个方法没有考虑实时系统是由一些并发任务组成的这个特点。针对实时系统的这个特点,DARTS方法提供了一些分解规则和一套处理并发任务的设计步骤,还提供了一套把实时系统建造成并发任务的标准和定义并发任务间接口的指南。

DARTS方法由以下几步组成:
1 用RTSA方法开发系统说明
在这个阶段,开发系统环境图(SCD)和状态转移图(STD)。SCD被分解成分层的D/CFD,这样就建立了STD和数据/控制转换之间的关系。这里的具体步骤于RTSA方法中的步骤相同。
2 把系统建造成并发的任务
把任务建造标准应用于分层的D/CFD,得到一个初步的TAD,TAD显示了用这个标准确认的任务。与外部设备接口的I/O数据转换任务被映射为异步的任务、周期的I/O任务或是资源监视任务。内部的数据转换被映射为控制任务、周期任务的或是异步的任务,也可以根据它们的顺序、时间或是函数的内聚标准进行合并。
3 定义任务间接口
通过分析在上一阶段确认的任务间的数据/控制流接口可以定义任务间的接口。任务间的数据流被映射为松耦合或是紧耦合的信息消息接口。事件流被映射为事件信号。数据存储被映射为信息隐藏模块。此时TAD就要更新了,能便于显示任务接口了。
在这个阶段,应该完成时间约束分析了。假设外部事件有要求的反应时间,那么就要给每个任务分配时间预算。在这个分析中事件顺序流图(ESD)能帮助分析,ESD通过显示从外部输入到系统反应之间任务执行的顺序。
4 设计每个任务
每个任务代表了一个顺序执行的程序,因此用结构化的设计方法,无论是变换分析还是事务分析,每个任务都被创建成一个模块,每个模块的功能和它与其它模块的接口都要被定义。每个模块要用PDL进行详细的描述。

设计过程的产物
设计过程会有三个产物:
l RTSA说明
l 任务结构说明
任务结构说明定义了系统中的并发任务,每个任务的功能和它与别的任务的接口都要确定。
l 任务分解
任务分解定义了每个任务如何分解为模块,描述了每个模块的功能、它与其它模块的接口以及用PDL做的详细设计。

对DARTS方法的评述
这个方法长处有如下几点:
l 这个方法强调把系统分解成并发的任务,并提供了确认这些任务的标准。强调并发在并发实时系统的设计中非常重要;
l 这个方法提供了详细的定义任务间接口的指南;
l 这个方法强调了用STD,这在实时系统的设计中也非常重要;
l 这个方法提供了从RTSA说明到实时设计的转换。对于实时系统来说,RTSA大概是使用最广泛的分析说明的方法,这方法由于有支持它的CASE工具,因此使用的比较广泛。然而,对许多设计者来说,这套方法处理于实时系统就比较困难了。DARTS方法直接针对这一点,提供了一些分解规则和一套处理并发任务的设计步骤,使软件设计者可以从RTSA说明来设计由并发任务组成的软件设计。
这个方法的不足有以下几点:
l 虽然DARTS方法用IHM来封装数据存储,但是它并没有象NRL和OOD完全做到了这一点。实际上,它是用结构化的设计方法把任务创建成了程序模块。
l 用的一个潜在问题就是,如果RTSA阶段的工作没有做好,创建任务就非常困难。RTSA的另一个问题就是,它不能提供为如何分解系统提供更多的指南。DARTS方法推荐在开发DFD之前先开发STD(例如,在考虑功能前先考虑控制)。

扩展和变化
在大的系统中,通常在进行任务分解前先把系统分解成子系统是非常重要的。DARTS方法的一个扩展就是把一个系统分解成子系统的方法,这个方法支持分布式的实时应用软件,这个方法叫做DARTS/DA。
DARTS方法在信息隐藏方面的弱点被ADARTS和CODARTS方法处理了。ADARTS和CODARTS方法用DARTS方法任务创建标准来确定任务,但是在结构化设计阶段,它们用模块创建标准来确认模块,取代了IHM。这些标准是基于NRL(Naval Research Laboratory)f方法的模块创建标准的,这些标准是被OOD(Object-Oriented Design)的对象创建标准所支持的。
为了处理用RTSA方法时存在的潜在问题,CODARTS方法用COBRA分析建模方法取代了RTSA。COBRA用到了和RTSA一样的符号,但是为开发行为模型,它用到了一个选择策略.

 

 

 

RTSAD方法
RTSAD(Real-Time Structured Analysis and Design)方法是对传统的结构化分析和设计方法的补充扩展,专门用于开发实时系统。RTSA是自顶向下的实时结构化分析方法,用于系统的需求分析阶段,主要有两个不同的派别:Ward/Mellor和Boeing/Hatley。近来出现了第三种方法ESML(Extended System ModelingLanguage),它则希望汇合前面两种方法的优点专门用于实时系统的结构化分析。
RTSA主要对传统的结构化分析方法扩充了行为建模部分,它通过状态转换图STD刻画系统的行为特征,并利用控制转换Control transformation与数据流图集成在一起。
结构化设计是利用内聚和耦合原则进行程序设计的一个方法,它通过事务和变换两种策略将RTSA的分析结构DFD/CFD转换为程序结构图。
RTSAD方法主要由以下几个步骤:
1 建立Context Diagram
根据用户的需求描述,画出系统的内外关系图。这个图形定义了整个系统的内外关系,确定了系统的边界以及和外部环境的信息交换,构成进一步分解的基础。
2 开发DFD/CFD
对于给定的问题,没有细节性的过程用来帮助完成DFD/CFD图,只能给出一些指导性的意见。原则上是由外向里、自顶向下去模拟问题的处理过程,通过一系列的分解步骤,逐步求精地表达出整个系统的内部关系。建立分层的数据流图时应注意以下几个问题:父图和子图关系、编号、平衡规则、文件的局部性及分解程度(即底层数据流图的确定)。
3 开发STD-Cspec
DFD/CFD中的控制节点用于启动或关闭其他的处理加工,利用有限状态机的概念,状态转换图的形式可以描述每个控制节点的内部规格。
4 定义Pspec
在分层的数据/控制流图中,子图及数据流、文件等都说明了父图的加工,实际上就是给出了定义,但最底层的流图中的加工不能再通过子图做进一步的描述,所以必须有一个加工小说明来定义底层流图中的加工。
小说明应该精确的描述一个加工做什么,包括加工的条件、加工逻辑、优先级别、执行频率、出错处理等细节,其中最基本的部分是加工逻辑。特别注意,在分析阶段的任务是理解和表达用户的需求,而不是具体考虑系统如何实现,所以对加工应说明做什么,而不是用程序设计语言来描述具体的加工过程。理想的说明应该严格而精确,又能被不同类型的人员所理解。通常采用自然语言来表达。此外,一般采用结构化英语、判定表和判定树等作为描述小说明的方法。
5 定义数据字典
包括数据流、控制流和数据存储。
6 复查精化数据流图
应该对需求分析阶段得到的数据流图认真复查,并且在必要时精化;复查的目的是确保系统的输入数据和输出数据符合实际。不仅要确保数据流图给出了目标系统的正确的逻辑模型,而且应该使数据流图中每个处理都代表一个规模适中相对独立的子功能。
7 提取控制节点群
这是实时控制系统关键的一步。一般一个DFD/CFD的数据流图,基本上以一个或若干个控制节点为中心,然后其他的处理加工以Trigger、Enable/Disable、Activator三种触发方式依附于它。这些依赖于状态触发的转换与控制对象组合成一个控制节点群,我们将控制节点群组合为一个Super-Process,并与其他正常节点一起组成转换和事务结构的两种网络拓扑结构,这样我们就有办法按照事务中心和变换分析两种策略去映射程序结构,而把控制节点群的内容当作下一层要处理的结构,其映射规则就按照转换STD的方式进行。
8事务和变换结构映射
这一步骤主要映射程序的总体结构,确定处理加工群的数据流图具有变换特性还是事务特性,按照事务中心和变换分析两种策略引导出程序的总体结构。
9 控制节点群结构映射
这一步主要是映射我们在第二步中识别抽取的控制节点群,包括将control的STD映射为对应的结构,以及Control和Process之间的关系映射为对应的结构两部分。
10 用启发式规则精化软件结构。
对第一次分割得到的软件结构,总可以根据模块独立原理进行精化。为了产生合理的分解,得到尽可能高的内局,尽可能松散的耦合,最重要的是,为了得到一个易于实现、易于测试和易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。
11导出接口并进行模块描述
当评审复查也通过后,我们的软件结构也就确定下来了。最后要对组成结构的每个模块进行接口定义规格描述。对于接口,要描述输入和输出,以及调用和被调用的模块;同时要说明每个模块的功能目的和相关属性,例如执行时间、优先级别、使用资源等相关信息。

设计过程的产物
分析阶段完成后输出的产品有:
l 系统内外关系图Context Disgram
l 分层数据/控制流图hierarchy of D/CFD
l 功能事件列表
l 状态转换图
l 小型规格说明(PSPECS, CSPECS)
l 数据字典
在设计阶段完成后,输出的产品有:
l 系统结构图(structure chart)
l 模块规格说明

对RTSAD方法的评述
这个方法长处有如下几点:
l RTSAD方法在广泛的工程中被应用,对应用这个方法的经验非常多;
l 有许多CASE工具支持RTSAD方法;
l 用D/CFD有助于理解和检查系统;
l RTSAD方法强调使用状态转移图/表,这在实时控制系统的分析中非常重要,因为在实施控制系统中状态往往不是孤立的;
l RTSAD方法中对于模块进行分解是采用的关于模块内聚和耦合标准有利于设计出高质量的模型。
这个方法的不足有以下几点:
l RTSAD方法关于如何进行系统分解的规则太少,通常不同的开发者会对系统产生不同的分解方法;
l RTSAD方法中需求分析和设计的边界比较模糊;
l RTSAD方法可以用来设计独立的任务,但是受限于设计并发的系统;
l RTSAD方法在信息隐藏方面比较弱。

扩展和变化
ESML(Extended System Modeling Language)是RTSAD方法的扩展,它试图合并Ward/Mellor和Boeing/hatley方法。
COBRA(Concurrent Object-Based Real-Time)分析建模方法也是RTSAD方法的扩展,它用到了和Ward/Mellor和Boeing/hatley方法一样的符号,但是它在开发系统的行为模型时用到了一个选择性的策略。
Ward/Mellor方法支持事件但是不支持条件,Boeing/hatley方法支持条件但是不支持事件。ESML与COBRA克服了这个限制,这两个方法既支持条件又支持事件。NRL(Naval Raserach Laboratory)方法相似。   

目录
相关文章
|
6月前
|
存储 消息中间件 API
FreeRTOS入门教程(堆和栈)
FreeRTOS入门教程(堆和栈)
186 0
|
4月前
|
Java Spring
Spring中那些BeanPostProcessor在Bean实例化过程中的作用
Spring中那些BeanPostProcessor在Bean实例化过程中的作用
48 1
|
2月前
|
弹性计算 前端开发 Java
通义千问API:让大模型写代码和跑代码
基于前面三章的铺垫,本章我们将展示大模型Agent的强大能力。我们不仅要实现让大模型同时使用多种查询工具,还要实现让大模型能查询天气情况,最后让大模型自己写代码来查询天气情况。
59559 448
通义千问API:让大模型写代码和跑代码
|
8月前
|
Java
成功解决:ERROR StatusLogger No log4j2 configuration file found.
成功解决:ERROR StatusLogger No log4j2 configuration file found.
|
4月前
|
存储 安全 编译器
【C++初阶】引用&内联函数&auto关键字&范围for循环&nullptr
从上篇文章我们开始分享C++的一些入门基础知识,讲到了关键字、命名空间等一些基础问题,今天我们继续分享一些基础知识,让大家更深入的入门C++。
|
10月前
|
存储 SQL 关系型数据库
MySQL——存储过程和函数
MySQL——存储过程和函数
Mac终端使用oh-my-zsh中文乱码
[oh-my-zsh](https://ohmyz.sh/)是个好东西,我就不多介绍了。 但是默认却对中文支持不太好,有时候在服务器端查看中文会显示乱码。
|
安全 芯片
ISO7816 接口调试与使用
ISO7816 是一种标准化的接触式的智能卡通信协议,用于读写接触式智能卡,例如PSAM、SAM、手机的SIM卡等皆符合该协议标准。ISO7816是一种半双工串行通信接口,由VCC, RESET, CLK, IO, VPP(保留接口,不使用)组成。本文以平头哥芯片的ISO7816接口为样例,介绍ISO7816的基础知识(主要包扩iso7816-3, iso7816-4),以及如何快速上手开发调试。
755 0
ISO7816 接口调试与使用
|
Android开发
StackTrace简述以及StackTraceElement使用实例
MainActivity如下:package cc.pp; import android.os.Bundle; import android.app.
1132 0