﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我的地盘我作主-文章分类-系统设计</title><link>http://www.blogjava.net/leedo/category/9152.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 04:11:24 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 04:11:24 GMT</pubDate><ttl>60</ttl><item><title>UML 在嵌入式系统设计中的应用</title><link>http://www.blogjava.net/leedo/articles/38069.html</link><dc:creator>阳光</dc:creator><author>阳光</author><pubDate>Wed, 29 Mar 2006 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/leedo/articles/38069.html</guid><wfw:comment>http://www.blogjava.net/leedo/comments/38069.html</wfw:comment><comments>http://www.blogjava.net/leedo/articles/38069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leedo/comments/commentRss/38069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leedo/services/trackbacks/38069.html</trackback:ping><description><![CDATA[
		<table align="center" border="0" cellpadding="0" cellspacing="0" width="760">
				<tbody>
						<tr>
								<td class="title" align="center" height="56" valign="middle">
										<b>
												<font color="#ff0000" size="3">UML 在嵌入式系统设计中的应用<!-- #EndEditable --></font>
										</b>
								</td>
						</tr>
						<tr>
								<td class="formtitle" align="center" height="40">
										<!-- #BeginEditable "2" -->作者：黄承安 
      张 跃 文章来源：电子技术应用<!-- #EndEditable --></td>
						</tr>
				</tbody>
		</table>
		<table align="center" border="0" cellpadding="0" cellspacing="0" height="65" width="760">
				<tbody>
						<tr>
								<td class="content" height="65">
										<!-- #BeginEditable "3" -->
										<table class="content" align="center" border="0" width="85%">
												<tbody>
														<tr>
																<td class="content" valign="top">
																		<p class="content" align="left">  </p>
																		<b>摘要：</b>介绍了ＵＭＬ及将ＵＭＬ应用于嵌入式系统设计中的作用和意义；分析了在嵌入式系统设计中应用ＵＭＬ的基本步骤和难点；结合车载ＧＰＳ终端系统的设计，描述了一个ＵＭＬ的具体应用过程。
            <p class="MsoNormal"><span style="font-family: 宋体;">    
            <b>关键词：</b></span>ＵＭＬ（统一建模语言） 
            嵌入式系统设计 车载ＧＰＳ系统</p><p style="text-indent: 30px;">嵌入式系统设计是一个软、硬件结合的协同设计（Ｈａｒｄｗａｒｅ／Ｓｏｆｔｗａｒｅ 
            Ｃｏ－ｄｅｓｉｇｎ），需要不同技术背景的人共同开发。<img src="http://www.uml.org.cn/UMLApplication/images/200432521572734.gif" align="right" border="0" height="262" hspace="1" vspace="1" width="324" />这
就带来了一个问题，如何使这些具有不同技术背景和专长的人联合开发、协同设计。在软、硬件设计领域中，统一建模语言ＵＭＬ（Ｕｎｉｆｉｅｄ
Ｍｏｄｅｌｉｎｇ
Ｌａｎｇｕａｇｅ）采用一种简单而直观的图形化方式描述系统设计中的各个问题和细节。不同技术背景的设计师只需懂得简单的ＵＭＬ符号就可以轻易地与对方交
流、共同设计。正是因为这些特点，在嵌入式系统设计中使用ＵＭＬ建模并书写文档通常可以起到事半功倍的效果。</p><p style="text-indent: 30px;">本文将重点讨论如何在嵌入式系统设计中使用ＵＭＬ技术，并用车载ＧＰＳ终端项目作为实例来具体演示采用ＵＭＬ的嵌入式系统设计过程。</p><p style="text-indent: 0px;"><b>１ 
            统一建模语言ＵＭＬ及其特点</b></p><p style="text-indent: 30px;">１．１ 统一建模语言ＵＭＬ</p><p style="text-indent: 30px;">统
一建模语言ＵＭＬ是可视化建模语言中的一种。它将模型中的信息用标准图形元素直观地显示，使用户、开发人员、测试人员、管理人员和其他涉及项目的人员可以
更好地交流。最常用的可视建模语言有Ｂｏｏｃｈ法、对象建模技术（ＯＭＴ）和统一建模语言ＵＭＬ。其中ＵＭＬ是ＡＮＳＩ和ＯＭＧ组织所采用的标准，被世界
上绝大多数公司所接受。<br /><img src="http://www.uml.org.cn/UMLApplication/images/200432521573580.gif" border="0" height="242" hspace="10" vspace="10" width="549" /><br />
                <span class="main1">ＵＭＬ是Ｇｒａｄｙ 
            Ｂｏｏｃｈ、Ｊａｍｅｓ 
            Ｒｕｍｂａｕｇｈ和Ｉｖａｒ 
            Ｊａｃｏｂｓｏｎ等许多科学家的集体智慧结晶。可以对任何静态结构和动态行为进行系统的建模，适用于系统开发的不同阶段。采用ＵＭＬ进行设计具有以下优势：</span></p><span class="main1"><p style="text-indent: 30px;">·不同背景的开发人员和设计师可以互相交流；</p><p style="text-indent: 30px;">·可视化描述比较直观；<img src="http://www.uml.org.cn/UMLApplication/images/200432521573621.gif" align="right" border="0" height="333" hspace="1" vspace="1" width="320" /></p><p style="text-indent: 30px;">·简单易学、易用；</p><p style="text-indent: 30px;">·是行业标准，被绝大多数业内人士认同；</p><p style="text-indent: 30px;">·有利于保存系统设计的精髓以供下次开发使用（而不仅仅是一堆电路图和代码）；</p><p style="text-indent: 30px;">·有利于项目的回溯、测试。</p><p style="text-indent: 30px;">１．２ ＵＭＬ框图</p><p style="text-indent: 30px;">作为一种可视化建模语言，ＵＭＬ中的所有语素是一个个框图。设计人员就是用这一个个框图描述整个系统的设计。ＵＭＬ模型的框图主要有以下几种：</p><p style="text-indent: 30px;">·Ｂｕｓｉｎｅｓｓ Ｕｓｅ 
            Ｃａｓｅ框图和Ｕｓｅ 
            Ｃａｓｅ框图，前者主要描述整个机构的功能，后者主要从用户的角度描述系统的功能。所以后者通常用于与系统客户交流，提取用户的需求。</p><p style="text-indent: 30px;">·Ｃｌａｓｓ框图，这一种是静态图，描述系统中的类。在此框图中可以体现类的主要内容和功能、类之间的结构和相互关系。</p><p style="text-indent: 30px;">·Ｓｔａｔｅ 
            Ｃｈａｒｔ框图提供了建模对象的各种状态及它们之间的转换关系。它提供建模系统的动态功能。这些框图广泛用于建立实际的系统，将会生成系统的全部代码。</p><p style="text-indent: 30px;">·Ａｃｔｉｖｉｔｙ框图与Ｓｔａｔｅ 
            Ｃｈａｒｔ框图同样描述系统的动态功能，但它着重于显示系统的功能流，显示Ｕｓｅ 
            Ｃａｓｅ框图中某个案例（Ｃａｓｅ）的事件流。它定义了工作流从何时开始、哪里开始、按什么顺序发生、最终在哪结束。<img src="http://www.uml.org.cn/UMLApplication/images/200432521574360.gif" align="right" border="0" height="235" hspace="1" vspace="1" width="372" /></p><p style="text-indent: 30px;">·Ｓｅｑｕｅｎｃｅ框图显示了Ｕｓｅ 
            Ｃａｓｅ框图中各对象的具体功能流程。Ｓｅｑｕｅｎｃｅ框图演示了业务过程的细节。值得注意的是，这个框图只显示对象，不显示类。即Ｓｅｑｕｅｎｃｅ框图是针对某个特定情况、特定对象进行的描述。</p><p style="text-indent: 30px;">·Ｃｏｌｌａｂｏｒａｔｉｏｎ
框图与Ｓｅｑｕｅｎｃｅ框图同样描述对象间的相互关系。但它并不像Ｓｅｑｕｅｎｃｅ框图那样以时间顺序描述，而是着重显示对象与角色之间的交互。其目的是
让质量保证工程师和系统建筑师分析对象之间处理过程的分布情况。如果分布不合理，系统建筑师可能考虑重新分配处理工作。</p><p style="text-indent: 30px;">·Ｃｏｍｐｏｎｅｎｔ框图显示模型的物理视图，也显示系统中软、硬件组件及其相互关系。</p><p style="text-indent: 30px;">·Ｄｅｐｌｏｙｍｅｎｔ框图则显示了系统的物理布局和各组件的位置及配置方法。</p><p style="text-indent: 30px;">这些框图为系统的分析、设计、建模提供了多种图形表达形式，可应用于开发的不同阶段。它们的有机结合可以构建一个完整而一致的系统。下面针对于车载ＧＰＳ终端这个具体项目说明ＵＭＬ在嵌入式系统设计中的具体应用。</p><p style="text-indent: 0px;"><b>２ 
            ＵＭＬ在车载ＧＰＳ终端设计中的应用</b></p><p style="text-indent: 30px;">２．１ 
            车载ＧＰＳ终端系统简介<img src="http://www.uml.org.cn/UMLApplication/images/200432521574371.gif" align="right" border="0" height="334" hspace="1" vspace="1" width="293" />　　　　　</p><p style="text-indent: 30px;">车
载ＧＰＳ终端是置于机动车内的实时定位装置，如图１所示。它的应用对象是需要定位、调度的车队，例如：运输车队和出租车等。车辆可以通过终端和ＧＰＳ卫星
进行实时、准确的定位，并通过无线通讯网络上报远程的中心系统。中心可以通过终端远程监视车行轨迹，甚至在特殊情况下通过终端控制车辆。同时，终端还可以
起到车载电话的作用，并可在车辆遇险时进行报警。另外，通过终端车辆还可以接收少量的调度信息。</p><p style="text-indent: 30px;">２．２ 需求分析</p><p style="text-indent: 30px;">在对系统进行需求分析时，可以使用Ｕｓｅ 
            Ｃａｓｅ图进行功能上的需求分析。Ｕｓｅ 
            Ｃａｓｅ图分角色（Ａｃｔｏｒ）和案例（Ｃａｓｅ）两部分。角色是与系统交互的人或物，而案例是系统提供的功能块。使用Ｕｓｅ 
            Ｃａｓｅ观察系统能够将系统实现与系统目标分开，有助于开发人员了解最重要的部分，满足用户需求，而不会沉浸于实现细节。</p><p style="text-indent: 30px;">对于车载ＧＰＳ终端，主要的角色有两种：车载终端用户和监控中心用户。终端用户可以报警，打车载电话等；而监控中心可以查询车辆位置，发送调度信息。其Ｕｓｅ 
            Ｃａｓｅ框图如图２所示。</p><p style="text-indent: 30px;">２．３ 规格说明</p></span><p style="text-indent: 30px;"><span class="main1">规格说明比需求分析更详细，通过ＵＭＬ设计可以使规格说明更直观、更清晰。首先，使用Ｃｌａｓｓ框图描述系统处理的数据结构。例如在车载ＧＰＳ终端的规格说明设计时可以使用Ｃｌａｓｓ框图描述需要接收的ＧＰＳ卫星信号，如图３所示。<br /><br /></span>    <span class="main1">第二，在规格说明阶段，还需要识别出系统的对象。首先以功能块划分，广泛地找出系统的主要对象；然后使用Ｃｏｌｌａｂｏｒａｔｉｏｎ框图描述它们之间的关系。图４描述了车载ＧＰＳ终端的主要对象，根据框图可以进行进一步的细化。</span></p><span class="main1"><p style="text-indent: 30px;">最后，在规格说明阶段进行系统的业务描述。即规范系统完成一定功能的主要流程。这可以利用Ａｃｔｉｖｉｔｙ框图进行。图５显示了ＧＰＳ数据到达时，车载ＧＰＳ终端系统所进行的处理流程。</p><p style="text-indent: 30px;">２．４ 系统设计</p></span><p style="text-indent: 30px;"><span class="main1">规
格说明完成后，需要对系统的各个模块及模块之间的关系仔细地分析，从而确定哪些部分使用硬件完成，哪些部分使用软件实现。在本例中，需要硬件实现的模块
有：ＧＰＳ接收模块、电源模块、用户控制模块、ＬＣＤ显示模块和ＧＳＭ通讯模块。所有的控制逻辑和数据计算全部由主控制器的软件实现。<br /><img src="http://www.uml.org.cn/UMLApplication/images/200432521574797.gif" border="0" height="680" hspace="10" vspace="10" width="543" /><br /></span>    <span class="main1">随后，系统设计分为两个分支：硬件设计及软件设计。使用ＵＭＬ的Ｃｏｌｌａｂｏｒａｔｉｏｎ图和Ｃｏｍｐｏｎｅｎｔ图对系统的硬、软件分别进行系统设计。图６用Ｃｏｍｐｏｎｅｎｔ框图描述了车载ＧＰＳ终端系统的软件系统架构。</span></p><span class="main1"><p style="text-indent: 30px;">２．５ 构件设计</p><p style="text-indent: 30px;">接下来对每一个系统构件进行详细的设计。对于某些大型工程，甚至需要把每一个构件作为一个项目，重新以需求分析、规格说明开始展开构件设计循环。在构件设计中，除了可以使用前文介绍过的各种ＵＭＬ框图外，通常还需要使用Ｓｔａｔｅ 
            Ｃｈａｒｔ、Ｓｅｑｕｅｎｃｅ这两种框图描述具体的系统流程细节。</p><p style="text-indent: 30px;">在本例中，ＧＳＭ模块共有四个状态：待命、有问题、通话中、短消息通讯中。使用Ｓｔａｔｅ 
            Ｃｈａｒｔ框图描述它们之间的转换关系，如图７所示。</p></span><p style="text-indent: 30px;"><span class="main1">Ｓｅｑｕｅｎｃｅ框图显示了一个特定对象进行特定操作时所遇到的流程。图８显示了车载终端用户甲在遇到危险按下报警按钮后系统的处理过程。<br /><img src="http://www.uml.org.cn/UMLApplication/images/200432521574112.gif" border="0" height="381" hspace="10" vspace="10" width="549" /><br /></span>    <span class="main1">２．６ 
            集成测试和部署</span></p><span class="main1"><p style="text-indent: 30px;">在集成测试时，可以联合使用所有的ＵＭＬ框图认真分析每个构件的原理，针对每一个系统功能、每一个可能发生错误的过程写出相应的测试程序，进行完整而可靠的程序测试。</p><p style="text-indent: 30px;">利用ＵＭＬ和系统的设计方法可以使传统的嵌入式系统设计告别“手工作坊”的开发方式，大大提高嵌入式系统的开发速度和产品质量，增强设计的可复用性。</p><p style="text-indent: 30px;">但是ＵＭＬ是图形化描述语言，比较适用于面向对象的程序设计；对于精确的规格设计或非面向对象的语言设计来说就不尽如人意了。在具体应用中，灵活应用注释功能，把框图对应模块所需的具体规格要求以注释的形式写在框图中，充分利用Ｓｔａｔｅ 
            Ｃｈａｒｔ和Ｓｅｑｕｅｎｃｅ这些框图来完成面向过程部分的设计。</p></span></td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/leedo/aggbug/38069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leedo/" target="_blank">阳光</a> 2006-03-29 15:52 <a href="http://www.blogjava.net/leedo/articles/38069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>