SCADE Display(OpenGL)软件设计文档生成工具的设计考虑

news2024/11/25 4:55:22

SCADE Display(OpenGL)软件设计文档生成工具的设计考虑

2018年6月

引言

本文档描述在SCADE Display软件设计文档生成工具(以下简称为SDYSDDGEN)的设计过程中考虑到的一些问题及其解决方案。

2 目标

SDYSDDGEN的目标设定为:

  1. 生成SCADE Display软件模型的软件设计文档(以下简称为SDYSDD)
  2. SDYSDD要符合DO-178B/C或GJB438B对软件设计文档的要求
  3. SDYSDD要符合用户单位的软件设计文档模板的要求
  4. SDYSDD使用中文或英文
  5. SDYSDD的文件格式是MS OFFICE的word或excel
  6. SDYSDD易于导入到DOORS

3 术语

SCADE Display的官方工具SDYReporter生成的文档使用表1中的术语。

表1

术语

定义

SGFX file

A file that corresponds to a display specification.

OGFX file

A file describing a part of a display specification and that can be used as a reference object.

layer

A layer is composed of a set of objects and has a transparent background. Superimposing layers allows to display complex images.

object

primitive

A basic figure component (a point, a line segment, a polygon, an

arc, etc.) defined by vertices.

SDYSDD的英文版也使用表1术语,但primitive不再被称为object,即从object中分出primitive。

SDYSDD的中文版使用表2术语。

表2

术语

定义

SGFX文件

与表1相同。

OGFX文件

与表1相同。

图层

与layer相同。

图件

图组件,与表1的object对应。

图元

基础图组件,与表1的primitive对应,但不被称为图件。

4 文件结构

SCADE Display软件模型用以下文件表达:

  1. 1个SGFX文件
  2. 0到N个OGFX文件

SDYReporter每次生成的文档只能对应一个SGFX文件或一个OGFX文件。

实际工程中一个子系统(如座舱显示系统中的PFD)对应一个SCADE Display项目(project),该项目一般由一个SGFX文件和多个OGFX文件组成。工程的项目开发计划一般要求编制一份软件设计文档。

SDYSDD允许针对一个SCADE Display项目生成一份软件设计文档,即包括SGFX文件和所有相关的OGFX文件。

5 层次结构

SGFX文件的层次结构如图1所示。

 图1

OGFX文件的层次结构如图2所示。

图2

与SGFX文件相比,OGFX文件没有图层。但SDYReporter生成的文档仍有一个图层。

SDYSDD不包含这个虚拟的图层。

SDYReporter生成的层次结构图示不包含primitive。如果一个图层中只有primitive,文档中出现以下语句:

No hierarchy object defined.

SDYSDD的层次结构图示也不包含图元,否则图示太大。

6 标识符

GJB438B规定:“应赋予每个软件设计单元一个项目唯一的标识符”。一些实际工程中也在软件设计标准制定了相关的准则。

对于同一个图组件,SDYReporter使用了三种标识符,例如:

  1. ADI_masked_parts
  2. 1.1.1.ADI_masked_parts
  3. symbology_layer/PFD/ADI/ADI_masked_parts

上例中用户定义的是第一种标识符,SDYReporter派生了后两种标识符,这样不能满足项目唯一的要求。

SDYSDD有以下两种选项:

  1. SDYSDD直接使用用户在建模时定义的标识符,不加任何前缀。

SDYSDD对用户定义的标识符增加表达层次编号的前缀。例如,前例中的ADI_masked_parts改为1-1-1-ADI_masked_parts。

7 接口设计

SDYReporter生成的文档中有题为“Layer Variable Dictionary”的章节描述图层的变量字典。其中包含以下5个小节:

  1. Constants
  2. Inputs
  3. Outputs
  4. Locals
  5. Local constants

根据DO-178B和GJB438B对接口设计的规定,SDYSDD设置了题为“接口设计”的章节,其层次结构如下:

  1. SGFX接口(或称为外部接口)
    1. 图层XXX的接口
      1. 输入变量
      2. 输出变量
    2. ……
  1. OGFX接口(或称为内部接口)
    1. OGFX-XXX的接口
      1. 输入变量
      2. 输出变量
    2. ……

SDYSDD处理Constants、Locals、Local constants的方法待定。

SDYReporter生成的变量特性表中的一项特性称为“Value”。SDYSDD 把它改为“Init value”。

8 详细设计

8.1 图构件的设计说明

SDYReporter用表格描述图构件的设计说明。例如:

上例在SDYSDD中的描述如下:

与SDYReporter相比,SDYSDD的特色是:

  1. 每个图构件的设计说明是一个单独的章节;
  2. 用需求标识符(格式可由用户指定,例如:[SDD-1])指明需求描述;
  3. 使用关键词“应”(英文版用shall)指明表格是图构件的需求规格;
  4. Property的名称与SFGX/OGFX文件一致(例如,用Rotate angle而不是Angle);
  5. 增加SDYReporter未列出的属性(例如Static properties和Static init);
  6. 指明图构件的图像是参考而不是需求。

8.2 图像

SDYReporter生成的图构件的图像是孤立的,未体现它在图层中的方位。例如:

 SDYSDD中的对应图像是:

 

8.3 图构件的属性值

 SDYReporter生成的属性值有时与SFGX/OGFX文件不一致。例如:

而在SFGX文件中的值是:

 在未搞清差别原因之前,SDYDDGEN采用SFGX文件中的值。

8.4 SFGX文件中图构件属性的不确定性

SDYReporter把图构件分为不同类型(type)。我们从实例中看到有以下类型:

  1. Line、text、arc等图元
  2. 各种container

每一个类型的属性个数在SDYReporter生成的表格中似乎是固定的。但是,在SFGX文件中某些属性不是固定出现的。例如,类型为shape的表格中最后一项是Tessellate concave primitive,中间还有一项是Halo color。而在SDY示例PrimaryFlightDisplay.sgfx中没有这两项。如果通过SDY界面把Tessellate改为True:

 那么在PrimaryFlightDisplay.sgfx中就出现了这两项:

而且在其他类型(如rectangle)中也出现了这两项。

如果是新建的SDY R16工程,SGFX文件中的shape、rectangle等必定有这两项。由此可见:

  1. PrimaryFlightDisplay.sgfx来源于老版本
  2. SDY R16允许shape、rectangle等图构件包含或不包含haloColor和tessellate这两项属性

由于SDY的手册中既没有列出所有类型,也没有列出每种类型的所有属性,SDYSDDGEN只能依据特定的SFGX文件生成属性规格表。

8.5 Plugs expression的n/a

SDYReporter生成的表格第三列是Plugs expression,对于某些属性该列的值是n/a。这实际是SDY的使用规则规定的,即SDY规定某些属性不能有Plugs expression。

由于这不是用户设计可选的内容,SDYSDDGEN不对Plugs expression生成n/a。

8.6 图件的子辈列表

SDYSDDGEN象SDYReporter一样列出图件的子辈列表。目前把它作为注释。例如:

待定问题:(1)是否要把图件的子辈列表作为需求?(2)如果作为需求,是否要移到架构设计章节?

9 环境参数表

SDYReporter生成的文档中有以下5张表描述环境参数:

  1. Color table
  2. Texture table
  3. Line width table
  4. Line stipple table
  5. Font table

实际工程中,这些参数一般在系统设计时确定环境参数。例如,座舱显示系统中的所有分系统使用系统选定的环境参数表。因此,SDYSDD中不包含这5张表。也可由用户选择是否包含。

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

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

相关文章

面向对象程序设计 C++总结笔记(1)

面向对象程序设计 学习方法 理解基本原理掌握程序设计方法加强动手实践 课程目标 理解面向对象程序设计的基本原理,掌握面向对象技术的基本概念和封装性、继承性和多态性,能够具有面向对象程序设计思想。掌握C语言面向对象的基本特性和C语言基础知识&…

就在20号!袋鼠云春季生长大会邀您共观数智生机,我们云上见

如今,数字经济正逐步走向深化应用、规范发展、普惠共享的新阶段,数字经济与实体经济深度融合、基础软件国产化替代成为数字时代主潮流。 「 2023 袋鼠云春季生长大会」乘风而起,带您走近大数据基础软件——数栈,低代码数字孪生世界…

Hadoop之Yarn篇

目录 ​编辑 Yarn的工作机制: 全流程作业: Yarn的调度器与调度算法: FIFO调度器(先进先出): 容量调度器(Capacity Scheduler): 容量调度器资源分配算法&#xff1…

【面试题】对 JSON.stringify()与JSON.parse() 理解

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 重新学习这两个API的起因 在本周五有线上的项目,16:30开始验证线上环境。 开始…

【数据挖掘与商务智能决策】第十一章 AdaBoost与GBDT模型

11.1 AdaBoost模型简单代码实现 1.AdaBoost分类模型演示 from sklearn.ensemble import AdaBoostClassifier X [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] y [0, 0, 0, 1, 1]model AdaBoostClassifier(random_state123) model.fit(X, y)print(model.predict([[5, 5]]))[0…

使用 Urch 让 Ubuntu 原生远程控制功能稳定可靠

有些时候,使用远程控制能够简化不少运维和操作的事情。 本篇文章分享如何通过开源工具 “Urch(Ubuntu Remote Control Helper)” 让 Ubuntu 原生的远程控制(远程桌面)功能稳定可靠。 方案已经经过 Ubuntu 22.04 LTS …

JVM之低延迟垃圾收集器

目录 低延迟垃圾收集器 概要 各款收集器的并发情况 Shenandoah收集器 Shenandoah相比G1的改进之处 链接矩阵 定义 优点 Shenandoah收集器的工作过程 Brooks Pointer 转发指针技术 转发指针的优缺点 Shenandoah 性能测试 Shenandoah 总结 ZGC 收集器 ZGC的Region的…

编译原理第一章

编译原理笔记 文章目录编译原理笔记day1什么是编译?编译器的结构词法分析概述词法分析的主要任务语法分析概述主要目的主要任务具体实例语义分析概述主要目的主要任务中间代码生成和编译器后端常用的中间表示形式目标代码生成器代码优化器day1 什么是编译&#xff…

Mysql 学习(一)基础知识(待更新)

文章目录服务端处理客户端请求启动项系统变量启动项和系统变量的区别常见的字符集字符集比较规则服务端处理客户端请求 客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果&am…

Idea使用样式主题

目的 花里胡哨的idea显示主题 安装插件 在preferences>plugins中搜索“Material Theme”安装两个中的一个 重启>设置>选择主题 对比度(多选) Contrast Mode:对比度模式,目录结构,选项卡等非文本选择前后的颜色对比度。…

Docker部署RabbitMQ(单机,集群,仲裁队列)

RabbitMQ部署指南 1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜…

【论文阅读】(20230410-20230416)论文阅读简单记录和汇总

(20230410-20230416)论文阅读简单记录和汇总 2023/04/09:很久没有动笔写东西了,这两周就要被抓着汇报了,痛苦啊呜呜呜呜呜 目录 (CVPR 2023): Temporal Interpolation Is All You Need for Dynamic Neural Radiance …

RPC 漫谈:序列化问题

RPC 漫谈:序列化问题 何为序列 对于计算机而言,一切数据皆为二进制序列。但编程人员为了以人类可读可控的形式处理这些二进制数据,于是发明了数据类型和结构的概念,数据类型用以标注一段二进制数据的解析方式,数据结…

echarts formatter如何自定义百分比小数位置,比如取整数。{b} {d}%

echarts formatter如何自定义百分比小数位置,比如取整数。{b} {d}% 一、现状 我有一个 pie 的图表,option 中的 formatter 是这样的: label: {show: true,position: outside,fontSize: 12,formatter: {b} {d}% },图表数据是这样的 二、需…

获取本地电脑连接的所有WIFI密码(适合Windows 11/10/8/7)

背景 如果你的心入职同事问你公司WIFI密码是多少,恰好这时你也忘记密码,用次方法可以实现得到WIFI密码。 如果你忘记现在在WIFI密码,也可以用此方法获取。 实现 1. 使用管理员权限打开 cmd.exe 2. 获取本机所有连接的 WIFI 用户配置 ne…

如何交叉编译程序:以freetype为例

【记录所学】 本博客为学习Linux开发时的笔记。主要记录如何交叉编译程序。 内容会首先介绍程序运行的一些基础知识,其次介绍常见错误的解决方法,然后介绍交叉编译程序的万能命令,最后以一个实际例子介绍如何交叉编译程序。 简要说明&#…

使用篇丨链路追踪(Tracing)很简单:链路实时分析、监控与告警

作者:涯海 前文回顾: 基础篇|链路追踪(Tracing)其实很简单 使用篇|链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选 在前面文章里面,我们介绍了…

快排非递归 归并排序

递归深度太深会栈溢出 程序是对的&#xff0c;但是递归个10000层就是栈溢出 int fun(int n) {if (n < 1){return n;}return fun(n - 1) n; }所以需要非递归来搞快排和归并&#xff0c;在效率方面没什么影响&#xff0c;只是解决递归深度太深的栈溢出问题 有的能直接改&am…

2023年Android开发现状~

随着Android 开发行业的快速发展&#xff0c;市场需求也在不断提升&#xff0c;导致低端Android 开发市场就业大环境不好、行业趋势下滑&#xff0c;使得不少初中级的Android开发开始失业&#xff0c;找不到工作。 为什么这么说&#xff1f; 现在不像2012年——2018年的这段期…

性能调优通用逻辑

调优准备 定目标&#xff1a;根据线上预估访问量评估单场景QPS及混合场景QPS&#xff0c;和对应的RT值 环境区分&#xff1a; 测试环境单机压测进行链路问题排查问题&#xff0c;通常需要把单机打到CPU到100%&#xff0c;如果CPU到不了100%且请求已经各种超时或RT高于目标值…