[信息与通信]第9章系统设计技术.ppt
《[信息与通信]第9章系统设计技术.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]第9章系统设计技术.ppt(88页珍藏版)》请在三一办公上搜索。
1、第9章系统设计技术,9.1 引言9.2 设计流程9.3 系统设计的形式化方法9.4 需求分析与规格说明9.5 系统分析与体系结构设计9.6 质量保证思考与练习题,9.1 引 言,多数真正的嵌入式系统的设计实际上是很复杂的,其功能要求非常详细,且必须遵循许多其他要求,如成本、性能、功耗、质量、开发周期等。大多数嵌入式系统的复杂程度使得无法由个人设计和完成,而必须在一个开发团队中相互协作来完成。这样就使得开发人员必须遵循一定的设计过程,明确分工,相互交流并能达成一致。设计过程还会受到内在和外在因素的影响而变化。外在影响包括如消费者的变化、需求的变化、产品的变化以及元器件的变化等。内在影响包括如工作
2、的改进、人员的变动等。,9.2 设 计 流 程,9.2.1 嵌入式系统的开发过程嵌入式系统是专用的计算机系统,运行在特定的目标环境中,需要同时满足功能和性能等方面的要求。在嵌入式系统的开发过程中,要考虑到实时性、可靠性、稳定性、可维护性、可升级、可配置、易于操作、接口规范、抗干扰、物理尺寸、重量、功耗、成本、开发周期等多种因素。良好的设计方法在嵌入式系统的开发过程中是必不可少的。首先,好的方法有助于规划一个清晰的工作进度,避免遗漏重要的工作,例如性能的优化和可靠性测试对于一个合格的嵌入式产品而言是不可或缺的。其次,采用有效的方法可以将整个复杂的开发过程分解成若干可以控制的步骤,通过现代一些先进
3、计算机辅助设计工具的辅助,我们可以按部就班、有条不紊地完成整个项目。,图9-1 嵌入式系统开发的一般过程,1系统定义阶段系统定义阶段需要确定系统开发最终实现的目标、实现目标的可行性、实现目标应采用的策略、估计完成系统开发所需的资源和成本、制定工程进度安排计划。这一阶段的工作主要包括了系统定义、可行性分析、需求分析和规格说明四方面的内容。其中,需求分析是指从用户那里搜集系统的非形式描述。以此为基础经过进一步提炼得到系统的规格说明,并以此来设计系统的体系结构和系统构件。,通常,用户仅了解和关心实际使用问题和需要具备的功能,但是往往不能完整、准确地表达这种需求,更不清楚怎样利用计算机去实现所需的功能
4、。为了对系统进行准确无误地定义,就要求开发人员和用户之间充分交流,开发人员需要详细考察,最终得出经用户确认的、明确的系统实现逻辑模型。需求可分为功能部分和非功能部分。非功能性需求包括了性能、价格、物理尺寸和重量、功耗等方面的因素。,确认需求最好的方法是建立模型。模型可以使用原始数据来模拟功能,并可以在计算机上运行。模型还应让用户了解系统是如何工作的,以及用户如何与系统交互。通常,系统的非功能模型可以让用户了解系统的特性。对一个大型的系统进行系统定义和需求分析是一件繁琐的工作,可以从先获取相对少量的、简单的信息入手。表9-1演示了一个简单的需求表格的样本。,表9-1 需求表格样本,*名称给项目取
5、一个好的名称,可以使设计目的更加明确,也便于交流、讨论时使用。*目的用最精炼的语言来描述清楚系统需要满足的需求。*输入和输出系统的输入和输出包含了大量的细节,如数据类型,包括模拟信号、数字信号、机械输入等;数据特性,包括周期性或非周期性数据、用户的输入、数据位数等;I/O设备类型,包括按键、ADC、显示器等。*功能功能的描述可以从对输入到输出的分析中得出,如当系统接收到输入时,执行哪些动作?用户通过界面输入的数据如何对该功能产生影响?不同功能之间如何相互作用?,*性能系统控制物理设备或者处理外界输入的数据都需要花费一定的时间。在大部分情况下,嵌入式系统在计算时间上都有要求,因此从系统定义和需求
6、分析开始,这种性能的要求就必须明确,并在执行过程中加以认真考虑,以便随时检查系统能否满足其性能要求。系统的处理速度通常又是系统实用性和成本的主要决定因素。在大多数情况下,软件的性能在很大程度上决定了系统的性能。,*生产成本产品的成本会影响其价格。成本包含两个主要部分:生成成本,包括购买构件以及组装费用等;不可再生的工程成本,包括人力成本以及设计费用等。生产成本主要包括的是硬件成本。通过对硬件成本的估计,可以大略估计产品形成后的价格;或者,基于产品最终的粗略价格来计算构建系统可以使用的硬件构件,因为价格最终会影响系统的体系结构。*功耗由电池供电的系统必须对功耗问题认真考虑。而系统的功耗需要在设计
7、开始时就要至少有一个粗略的了解。通常,基于这种了解可以使开发者决定系统是采用电池供电还是采用市电。,*物理尺寸和重量产品的物理尺寸和重量因使用领域的不同而不同。例如,对飞机上的电子设备,其重量应严格限制。又如,手持设备对系统的物理尺寸和重量都有严格限制。对系统的物理尺寸和重量有一定的了解有助于系统体系结构的设计。需求分析需要对其内部一致性进行检查。规格说明可以使设计者花费最少的时间和精力创建一个工作系统。规格说明应该足够明晰,以便别人可以验证它是否符合系统需求并且完全满足客户的期望;亦不能有歧义,设计者应知道什么是他们需要构造的。设计者可能碰到各种不同类型的由于不明确的规格说明而导致的问题。如
8、果在某个特定的状况下的某些特性在规格说明中不明确,那么设计者就可能设计出错误的功能。,2总体设计阶段总体设计是设计的第一步,其目的是描述系统如何实现由系统定义规定的那些功能。它需要解决嵌入式系统的总体构架,从功能实现上对软硬件进行划分;在此基础上,选定处理器和基本接口器件;根据系统的复杂程度确定是否使用操作系统,以及选择哪种操作系统;此外,还需要选择系统的开发环境。,本阶段应提供系统总体设计报告,推荐一个基本的软硬件配置方案,包括系统中各模块间的接口关系。确立总体方案时,要使用系统流程图或其他工具,描述每一种可能的系统组成,估计每一种方案的成本和效益,最终使总体方案建立在充分权衡各种方案利弊的
9、基础上。总体设计中对系统体系结构的描述必须同时满足功能上和非功能上的需求。一般地,功能约束在构建系统总体框图时集中考虑,而非功能约束在构建硬件和软件体系结构时考虑。在构建体系结构时对非功能约束的估算部分来源于经验,而建造一个简化的模型往往有助于做出更精确的估算。,3构件设计阶段构件通常包括硬件和软件两部分。构件设计使得构件、体系结构和规格说明相一致。一些构件是标准的,可以直接使用,如CPU和存储器。如果采用标准数据库,我们就可以用标准例程对该数据库进行访问。这些数据库中的数据不仅使用预定义的格式,而且被高度压缩以节省存储空间。在这些访问函数中使用标准软件不仅节约设计时间,而且有可能较快地实现像
10、数据解压缩这样的专用函数。,在大部分情况下,我们必须自己设计一些构件,如使用集成电路设计PCB、做大量定制的编程等。在设计期间,我们经常会利用一些计算机辅助设计工具和开发平台,并且对每个构件都需要进行功能和性能等方面的测试。嵌入式系统的设计还要求有较高的设计技能,在设计软件时要非常小心地读/写存储器以减小功耗。由于存储器访问是主要的功耗来源,因此存储器事务必须精心安排以避免多次读取同样的数据。,4系统集成阶段系统集成阶段的工作包括将测试完成的软件系统装入制作好的硬件系统中,进行系统综合测试,验证系统功能是否能够准确无误地实现,各方面指标是否符合设计要求,最后将正确无误的软件固化在目标硬件中。在
11、系统集成阶段通常会发现错误。按阶段构建系统并正确运行选好的测试,可以更容易地找出这些错误。如果每次只对一部分模块排错,则可以更容易地发现和识别较简单的错误。也只有在早期修正这些简单的错误,才能发现那些只有在系统高负荷时才能确定的、较复杂、较含混的错误。因此,我们必须确保在体系结构和构件设计阶段尽可能容易地按阶段组装系统和相对独立地测试系统功能。,9.2.2 设计流程设计流程是指在系统设计期间应遵遁的一系列步骤,其中的一些步骤可以由工具软件完成,如编译程序或者CAD系统;其他的步骤只可用手工完成。本节将讲述设计流程的基本特性。1瀑布模型图9-2演示了瀑布模型,这是一个为软件开发过程提出的模型。,
12、图9-2 软件开发的瀑布模型,瀑布开发模型由五个主要阶段构成:需求分析,确定目标系统的基本特点;体系结构设计,将系统的功能分解为主要的构件;编码,编写程序段并将其集成;测试,检测错误;维护,修改软件以适应环境变化,并改正错误,进行系统升级。各阶段的工作和信息总是由高级的抽象到较详细的设计步骤单向流动(只有少量的到高一级的反馈)。自顶向下的设计可以使得在早期设计阶段就对要完成的系统有很好的预见,但大多数的设计者并没有完全遵循这种自顶向下的设计顺序。很多的设计项目要进行试验和更改,就需要有从下到上的回溯。瀑布模型对于理解其他设计流程对它的改进是很重要的。,图9-3 软件设计的螺旋模型,2螺旋模型图
13、9-3演示了螺旋模型。,3逐步求精,图9-4 逐步求精开发模型,4分层设计流程许多复杂的嵌入式系统自身是由更多的小设计组成的。完整的系统可能需要有效的软件构件、专用的集成电路(ASIC)等,而且这些部件反过来可能由尚需设计的更小的部件组成。从最抽象的完整系统设计到为个别部件的设计,设计流程随着系统中的抽象层次而变化。流程的实现阶段从规格说明到测试,本身是一个完整的流程。在一个大项目中,每一个流程可能会由单独的人或小组来完成,每个组必须依靠其他组的结果。各个分组从上级小组获得要求,同时上级小组依靠各个分组的设计质量和测试性能。充分交流在这样的大项目中非常重要。其设计流程如图9-5所示。,图9-5
14、 嵌入式系统分层设计工作流程,5并行工程当众多的设计者一起设计一个大系统时,非常容易偏离完整的设计流程,导致每个设计者对自己在设计流程中的角色产生狭隘的看法。并行工程试图采用一种更宽的方法,使整个流程优化。对于并行工程而言,缩减设计时间是一个重要的目标,它为设计流程的很多方面提供了捷径,例如,可靠性、性能、功耗等。特别需要指出的是,要从并行工程中获得最多收益通常需要删除设计和制造之间的隔阂。为了获得最优结果,需要注意以下几点:(1)交叉功能组应包括来自不同学科的成员,包括制造业、硬件/软件设计和市场营销等。,(2)并行产品实现过程的活动是并行工程的中心。同时做几件事,例如同时设计几个不同的子系
15、统,减少设计时间是关键性的。(3)递增的信息共享和使用将有助于减少并行产品的实现导致意外的可能性。一旦新的信息可用,它就被共享并且集成到设计中。交叉功能组对于及时和高效的信息共享是很重要的。(4)综合的工程管理保证有人对整个工程负责,而且这种职责决不能在工程的某一方面一旦完成就放弃。(5)提供商尽早地和不间断地参与有助于充分利用提供商的能力。(6)客户尽早地和不间断地关注有助于确保产品能最好地满足其需要。,6其他软件工程的方法直接影响到设计流程。目前,软件开发过程结合了面向对象的方法和第四代工具。该方法针对嵌入式系统还在不断完善。在基于面向对象的开发过程中,开发组成员可以遵循并行过程的方法,并
16、发地设计组件。例如,一个小组设计设备驱动程序,另一个小组设计错误处理程序,还有一个小组设计应用程序。第四代软件工具能够根据较高级的设计规范生成代码,例如,自动报表生成、自动高级图形生成、创建数据库查询以及在创建网站时自动生成HTML代码等。,9.3 系统设计的形式化方法,9.3.1 UML简介,面向对象的规格说明可以看成互补的两个方面:(1)面向对象的规格说明允许用精确地模拟真实世界的对象和它们之间的交互方式来描述系统。(2)面向对象的规格说明提供一个基本的原语集,可以用特殊属性来描述系统,而不管系统构件和真实世界对象的关系如何。,1UML基本元素UML最基本的元素是对象和类,对象是类的实例。
17、另外,对象和类之间可能存在着各种不同的关系。类具有属性和行为。活跃类是能实现独立控制线程的类。对象可能有被赋予特定的值的属性。匿名对象属于某一个类但没有标识名。程序包是系统的组织单元,可能包括类定义、对象等。状态在状态图中描述行为。物理处理器是硬件部件。构件是实现一组接口的系统的物理组成部分。我们常常发现,在一个对象或类中会多次用到一些元素的特定组合。我们可以对这些组合命名,这样的一个定义在UML中称为模板(stereotype)。,表9-2 UML基本元素,图9-6 UML基本元素,2UML图UML的基本元素可以通过多种方式组合到一起,使用图形组可以完成以下建模任务:软件可视化、数据设计、算
18、法设计、软件设计、软件说明书、软件开发过程、工业过程等。表9-3列出了几种基本的UML图。图9-7给出了这些图的示例。,表9-3 UML 图,图9-7 UML图示例,图9-7 UML图示例,9.3.2 结构描述结构描述用于定义系统的基本构件。面向对象设计的首要构件自然是对象。一个对象包括定义其内部状态的属性集。当使用程序设计语言实现时,这些属性通常是一种数据结构中的变量或常量。有时,我们会在属性名后加上类型声明,但不总是对属性指定类型。图9-8说明了一个用UML符号表示的描述显示器(如CRT屏幕)的对象。折角页状图标中的文字是注释,它不对应于系统中的对象。在这里,属性是保存显示器内容的像素数组
19、。对象有两个特征:它有唯一的标识名以及它是一个类的成员。,图9-8 UML表示法中的对象,1类类是类型定义的一种形式从同一个类导出的所有对象尽管其属性可能有不同的值,但它们都有相同的性质。类定义了对象可能有的属性,也定义了对象与外界交互的操作。使用编程语言,操作将变成用来控制对象的一小段代码。图9-9所示是Display类的UML描述。Display类定义了对象中的pixels属性,当对象将一个类实例化时,对象就有了自己的存储空间,以便同一个类的不同对象有自己的属性值。其他的类能检查和修改类的属性。,图9-9 UML表示法中的类,2选择合适的界面显然,选择界面是面向对象设计中非常重要的决策。正
20、确的界面必须提供访问对象状态的方法(因为属性不能直接访问)和更新状态的方法。对象的界面必须通用,以充分利用它的性能。然而,过分通用会使对象庞大而缓慢。大而复杂的界面同样会使定义类的工作对于设计者来说难以理解和使用。,对象和类之间存在若干种类型的关系:关联发生在彼此通信但没有从属关系的对象间。聚集描述由较小的对象组成的复杂对象。组合是一种聚集类型,其中所有者不允许访问构件对象。泛化允许我们通过其他类定义类。,3类和对象的软件实现因为UML用于设计的很多阶段,所以它不是一种程序设计语言。因此,它的概念有时看起来很抽象。它有助于在程序设计语言中使用类和对象前理解其抽象概念。首先,我们用直接支持面向对
21、象技术的C+语言实现Display类和d1对象。下面是Display类的定义:,class Display pixels:pixeltypeIMAX,JMAX;public:Display()/*一个创建类的结构体的实例*/pixeltype pixel(int i,int j)return pixelsi,j;/*为清楚起见无限制地检查*/void set_pixel(pixeltype val,int i,int j)pixelsi,j=val;,在C+中,操作被称为方法。它包括参数列表、返回类型和方法的代码。C+代码比UML规格说明包含更多的细节,这是因为我们使用C+实现类,而UML描述
22、仅仅抓住系统的本质特征。Display类的例化为对象d1:Display d1;d1的例化在内存中建立了为d1保存像素值的数据结构。例如,类中定义的方法能调用d1,以控制它的像素值:apixel=d1.pixel(0,0);/*获取pixel 0,0的值*/object.method()的表示法说明正在运行特定对象的方法。确保特定方法可以在给定对象上使用是一种类型检查操作。,在非面向对象语言(如C语言)中实现类和对象具有一定的挑战性,但是仍能做得相当好。下面是一种描述Display类的属性和操作的方法:/*这些操作都在一个二维pixels数组上执行*/pixel pixelval(pixel*
23、px,int i,int j)return pxi,j;void set_pixel(pixel*px,pixeltype val,int i,int j)pxi,j=val;,这里我们选择不定义像素数组的显式类型,因为它是一个基本二维数组;在其他情况下,可用结构体定义对象的属性。我们定义了两个函数来实现操作,注意,与C+代码相比这些函数有额外的参数,第一个参数是我们要操作的数组。在面向对象语言中,像object.method()这种形式的符号用来运行特定对象的操作。当用C语言实现这个类时,我们必须自己写代码将方法的操作运用于代表对象的数据集。这意味着,在C语言的实现中,通常将对象的所有数据保
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 信息 通信 系统 设计 技术

链接地址:https://www.31ppt.com/p-5615549.html