背景

最近看了一本嵌入式设计书籍,里面有一章是专门介绍嵌入式系统建模的,其中介绍了从需求到设计的各个流程,也对建模进行了大篇的说明。想想以前自己的编程设计,都是全凭聪明的电脑或者感觉。记得当初来杭州面试一家企业,问我工程师和码农的区别,我说我就是码农,不知道啥是工程师。
好了,不多说,那本书里面章末介绍了uml语言,我看了一下,它涵盖的图表还是很多的,我就想学习一下,希望能给自己开发带来较大的帮助。

转载正文

嵌入式系统设计是一个软、硬件结合的协同设计(Hardware/Software Co-design),需要不同技术背景的人共同开发。

这就带来了一个问题,如何使这些具有不同技术背景和专长的人联合开发、协同设计。在软、硬件设计领域中,统一建模语言UML(Unified Modling Language)采用一种简单而直观的图形化方式描述系统设计中的各个问题和细节。不同技术背景的设计师只需懂得简单的 UML 符号就可以轻易地与对方交流、共同设计。正是因为这些特点,在嵌入式系统设计中使用 UML 建模并书写文档通常可以起到事半功倍的效果。

本文将重点讨论如何在嵌入式系统设计中使用 UML 技术,并用车载 GPS 终端项目作为实例来具体演示采用 UML 的嵌入式系统设计过程。

1 统一建模语言 UML 及其特点

1.1统一建模语言 UML

统一建模语言 UML 是可视化建模语言中的一种。它将模型中的信息用标准图形元素直观地显示,使用户、开发人员、测试人员、管理人员和其他涉及项目的人员可以更好地交流。最常用的可视建模语言有 Booch 法、对象建模技术(OMT)和统一建模语言 UML。其中 UML 是 ANSI 和 OMG 所采用的标准,被世界上绝大多数公司所接受。

UML 是 Grady Booch、James Rumbaugh 和 Ivar Jacobson 等许多科学家的集体智慧结晶。可以对任何静态结构和动态行为进行系统的建模,适用于系统开发的不同阶段。采用UML进行设计具有以下优势:

不同背景的开发人员和设计师可以互相交流;

可视化描述比较直观;

简单易学、易用;

是行业标准,被绝大多数业内人士认同;

有利于保存系统设计的精髓以供下次开发使用(而不仅仅是一堆电路图和代码);

有利于项目的回溯、测试。

1.2 UML 框图

作为一种可视化建模语言,UML 中的所有语素是一个个框图。设计人员就是用这一个个框图描述整个系统的设计。UML 模型的框图主要有以下几种:

Business Use Case框图和Use Case框图,前者主要描述整个机构的功能,后者主要从用户的角度描述系统的功能。所以后者通常用于与系统客户交流,提取用户的需求。

Class 框图,这一种是静态图,描述系统中的类。在此框图中可以体现类的主要内容和功能、类之间的结构和相互关系。

State Chart 框图提供了建模对象的各种状态及它们之间的转换关系。它提供建模系统的动态功能。这些框图广泛用于建立实际的系统,将会生成系统的全部代码。

Activity 框图与 State Chart 框图同样描述系统的动态功能,但它着重于显示系统的功能流,显示 Use Case 框图中某个案例(Case)的事件流。它定义了工作流从何时开始、哪里开始、按什么顺序发生、最终在哪结束。

Sequence 框图显示了 Use Case 框图中各对象的具体功能流程。Sequence 框图演示了业务过程的细节。值得注意的是,这个框图只显示对象,不显示类。即 Sequence 框图是针对某个特定情况、特定对象进行的描述。

Collaboration 框图与 Sequence 框图同样描述对象间的相互关系。但它并不像 Sequence 框图那样以时间顺序描述,而是着重显示对象与角色之间的交互。其目的是让质量保证工程师和系统建筑师分析对象之间处理过程的分布情况。如果分布不合理,系 统建筑师可能考虑重新分配处理工作。

Component 框图显示模型的物理视图,也显示系统中软、硬件组件及其相互关系。

Deployment 框图则显示了系统的物理布局和各组件的位置及配置方法。

这些框图为系统的分析、设计、建模提供了多种图形表达形式,可应用于开发的不同阶段。它们的有机结合可以构建一个完整而一致的系统。下面针对于车载 GPS 终端这个具体项目说明 UML 在嵌入式系统设计中的具体应用。

2、UML 在车载 GPS 终端设计中的应用

2.1 车载GPS终端系统简介

车载 GPS 终端是置于机动车内的实时定位装置,如图1所示。它的应用对象是需要定位、调度的车队,例如:运输车队和出租车等。车辆可以通过终端和 GPS卫星进行实时、准确的定位,并通过无线通讯网络上报远程的中心系统。中心可以通过终端远程监视车行轨迹,甚至在特殊情况下通过终端控制车辆。同时, 终端还可以起到车载电话的作用,并可在车辆遇险时进行报警。另外,通过终端车辆还可以接收少量的调度信息。

2.2 需求分析

在对系统进行需求分析时,可以使用 Use Case 图进行功能上的需求分析。Use Case 图分角色(Actor)和案例(Case)两部分。角色是与系统交互的人或物,而案例是系统提供的功能块。使用 Use Case 观察系统能够将系统实现与系统目标分开,有助于开发人员了解最重要的部分,满足用户需求,而不会沉浸于实现细节。

对于车载 GPS 终端,主要的角色有两种:车载终端用户和监控中心用户。终端用户可以报警,打车载电话等;而监控中心可以查询车辆位置,发送调度信息。其 Use Case 框图如图2所示。

2.3 规格说明

规格说明比需求分析更详细,通过UML设计可以使规格说明更直观、更清晰。首先,使用 Class 框图描述系统处理的数据结构。例如在车载GPS终端的规格说明设计时可以使用 Class 框图描述需要接收的 GPS 卫星信号,如图3所示。


第二,在规格说明阶段,还需要识别出系统的对象。首先以功能块划分,广泛地找出系统的主要对象;然后使用 Collaboration 框图描述它们之间的关系。图4描述了车载 GPS 终端的主要对象,根据框图可以进行进一步的细化。

最后,在规格说明阶段进行系统的业务描述。即规范系统完成一定功能的主要流程。这可以利用 Activity 框图进行。图5显示了 GPS 数据到达时,车载 GPS 终端系统所进行的处理流程。

2.4 系统设计

规格说明完成后,需要对系统的各个模块及模块之间的关系仔细地分析,从而确定哪些部分使用硬件完成,哪些部分使用软件实现。在本例中,需要硬件实现的模块有:GPS 接收模块、电源模块、用户控制模块、LCD 显示模块和 GSM 通讯模块。

所有的控制逻辑和数据计算全部由主控制器的软件实现。

随后,系统设计分为两个分支:硬件设计及软件设计。使用 UML 的 Collaboration 图和 Component 图对系统的硬、软件分别进行系统设计。图6用 Component 框图描述了车载 GPS 终端系统的软件系统架构。

2.5构件设计

接下来对每一个系统构件进行详细的设计。对于某些大型工程,甚至需要把每一个构件作为一个项目,重 新以需求分析、规格说明开始展开构件设计循环。在构件设计中,除了可以使用前文介绍过的各种 UML 框图外,通常还需要使用 State Chart、Sequence 这两种框图描述具体的系统流程细节。

在本例中,GSM 模块共有四个状态:待命、有问题、通话中、短消息通讯中。使用 State Chart 框图描述它们之间的转换关系,如图7所示。

Sequence 框图显示了一个特定对象进行特定操作时所遇到的流程。图8显示了车载终端用户甲在遇到危险按下报警按钮后系统的处理过程。

2.6 集成测试和部署

在集成测试时,可以联合使用所有的 UML 框图认真分析每个构件的原理,针对每一个系统功能、每一个可能发生错误的过程写出相应的测试程序,进行完整而可靠的程序测试。

利用 UML 和系统的设计方法可以使传统的嵌入式系统设计告别“手工作坊”的开发方式,大大提高嵌入式系统的开发速度和产品质量,增

强设计的可复用性。

但是 UML 是图形化描述语言,比较适用于面向对象的程序设计;对于精确的规格设计或非面向对象的语言设计来说就不尽如人意了。在具

体应用中,灵活应用注释功能,把框图对应模块所需的具体规格要求以注释的形式写在框图中,充分利用 State Chart 和 Sequence 这些框图来完成面向过程部分的设计。

总结

看了这篇文章,基本对各个阶段的建模有了大概的了解,比如在需求阶段使用了用例图会让需求一目了然。

但是他的活动图和类图我感觉是放在详细设计里面会好一点。如果大家有什么好的学习嵌入式系统结构的意见,希望积极点评和指导!

转 嵌入式与UML建模 车载GPS相关推荐

  1. 嵌入式与UML建模 mbus通断阀

    背景 最近在调试我司一款mbus通断阀,其实当初交接,我这里是基本不需要修改的,但是人算不如天算,创新才是动力,老板看重的是你的价值...说了这么多,其实就是开发维护这碗饭,不是白吃的.事情发展到中间 ...

  2. 软设考试笔记--UML建模

    软设考试笔记–UML建模 意义: 开发一款软件,好比是建设一栋房子,如果没有设计图,肯定是不行的.在面向对象的软件设计中,也有建模设计.所以对一位优秀的软件设计师而言,掌握UML建模是必须的. UML ...

  3. UML建模详解(1)—初识UML建模

    UML建模简介:       UML(Unified Modeling Language的缩写),也称统一建模语言.是用来做软件建模的.不光是在软件的设计阶段用到,在软件的测试,部署阶段都要用到.用于 ...

  4. 用UML建模开发嵌入式软件

    摘要 针对面向对象开发与C语言的优缺点,提出一种新的方案,用面向对象的思想与开发工具进行软件的设计,用C语言进行编码,给出新方案应用实例,并在此基础上提出几种进一步优化程序性能的方法.新的方案增强了用 ...

  5. 基于Qt的车载GPS监控系统(2)需求分析

    基于Qt的车载GPS监控系统(2)需求分析 嵌入式开发培训(阶段3)嵌入式图形应用开发视频地址 冷链车载GPS监控系统 视频地址 项目实践流程: 1.设计项目需求文档 说明项目设计目的,项目功能,项目 ...

  6. 一款车载GPS定位产品后端服务器架构的填坑之路(一)

    文章名字取得有些唬人.这里说"架构"二字也是有些夸大,其实也就是实现一些简单的位置解析功能.数据存储等功能.整理出来,也只是给后来者一些借鉴.希望看到的能够去除糟粕,取其精华. 2 ...

  7. UMLChina: trufun Plato是中国唯一的UML建模工具

      在UMLChina最新发布的"厂商"栏目中,Trufun Plato是唯一的中国人自己的UML建模工具:[url]http://www.umlchina.com/Tools/N ...

  8. 车载DMI linux系统,基于嵌入式的CTCS3级车载DMI系统的设计与实现

    基于嵌入式的CTCS3级车载DMI系统的设计与实现 本文根据CTCS3级列控系统仿真实验室的实际情况,设计了一款基于嵌入式Linux操作系统的模拟CTCS3级车载DMI系统.它通过无线通信实现了车载与 ...

  9. (转)轻量级 UML 建模工具JUDE 介绍(二)

    [译]Learn UML with JUDE(二) 六. UML about Bowling 现在都准备好了,我们可以开始画diagram了.我们画什么diagram呢?你最近有去打过保龄球吗?我非常 ...

最新文章

  1. SQL数据库面试题以及答案
  2. MVC在基控制器中实现处理Session的逻辑
  3. RabbitMq 本地连接报错 org.springframework.amqp.AmqpIOException: java.io.IOException
  4. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题
  5. CMD提取文件名技巧
  6. 如何得到所有子对象_对象可能会迟到,但它永远不会缺席
  7. 建立密钥,远程登录LINUX----ssh-keygen
  8. [转载] c++list遍历_List、Set、数据结构、Collections
  9. ubuntu14.04部署kickstart
  10. 哲学家就餐问题-中断解决
  11. Android 伪装IP 亲测可行
  12. BeanUtils.populate(Object Bean,Map properties)
  13. 夯实基础,踏步云升 | 云原生 DevOps 入门必读
  14. idea 一次启动多服务配置
  15. Unity UV基于中心点旋转/缩放/位移 Shader
  16. EPUB转为PDF和书籍pdf下载
  17. mtk配置flash
  18. 计算机 优质课教案,5.3正弦函数的性质优质课一等奖教案
  19. android uinput 按键_Android 触摸屏Event上报操作
  20. zdhadljaljdjadajdjald

热门文章

  1. E25-在线扩盘需要注意的点
  2. dota2 java_电竞Dota2数据API接口 - 【战队列表】调用示例代码
  3. 常见安全产品默认口令
  4. UWB无线精准定位技术,超宽带测距通信交互,实时厘米级精度应用
  5. Button 按下效果
  6. 神经网络 mse一直不变_用深层神经网络解释大脑的运作
  7. php钉钉webhook机器人,钉钉群消息机器人Webhook接口使用方法
  8. C# 使用Vlc播放视频或者监控
  9. 第003天:APP的UI设计
  10. CSDN 写博客 word文档复制粘贴 图片粘贴 加载失败问题解决