第7章软件设计与实现

上传人:m**** 文档编号:569521434 上传时间:2024-07-30 格式:PPT 页数:63 大小:253KB
返回 下载 相关 举报
第7章软件设计与实现_第1页
第1页 / 共63页
第7章软件设计与实现_第2页
第2页 / 共63页
第7章软件设计与实现_第3页
第3页 / 共63页
第7章软件设计与实现_第4页
第4页 / 共63页
第7章软件设计与实现_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《第7章软件设计与实现》由会员分享,可在线阅读,更多相关《第7章软件设计与实现(63页珍藏版)》请在金锄头文库上搜索。

1、 第第7章章 软件设计与实现软件设计与实现n面向对象设计面向对象设计n实现中有关问题实现中有关问题n开源开发开源开发n嵌入式系统的设计与实现嵌入式系统的设计与实现1n软件设计和实现是软件工程过程中的一个阶段。设计软件设计和实现是软件工程过程中的一个阶段。设计和实现活动是交叉进行的。和实现活动是交叉进行的。n设计是创造性活动,基于客户的需求识别出系统组件设计是创造性活动,基于客户的需求识别出系统组件及其关系,实现将设计转变为程序。及其关系,实现将设计转变为程序。n设计的细节层次取决于待开发系统的类型以及是否使设计的细节层次取决于待开发系统的类型以及是否使用计划驱动或敏捷开发方法。用计划驱动或敏捷

2、开发方法。n本章主要介绍如何使用面向对象方法进行设计以及实本章主要介绍如何使用面向对象方法进行设计以及实现中的有关重要问题。现中的有关重要问题。n嵌入式软件不一般的特性也是软件设计涉及到的一个嵌入式软件不一般的特性也是软件设计涉及到的一个重要方面。重要方面。27.1 面向对象设计面向对象设计n面向对象设计将面向对象分析创建的分析模型变换为面向对象设计将面向对象分析创建的分析模型变换为设计模型,它将作为软件实现的蓝图。但由于面向对设计模型,它将作为软件实现的蓝图。但由于面向对象分析与设计活动是一个迭代与演化的过程,概念与象分析与设计活动是一个迭代与演化的过程,概念与表示方法的一致性使得分析与设计

3、阶段平滑过渡。表示方法的一致性使得分析与设计阶段平滑过渡。n传统的设计方法将问题域分解成一系列功能模块来完传统的设计方法将问题域分解成一系列功能模块来完成,这些模块形成过程式软件的基本结构。面向对象成,这些模块形成过程式软件的基本结构。面向对象方法把问题域分解为一系列相互作用的对象,在此基方法把问题域分解为一系列相互作用的对象,在此基础上构造出基于对象及其交互的软件系统结构。础上构造出基于对象及其交互的软件系统结构。3 本教材作者本教材作者Sommerville认为认为面向对象设计的一面向对象设计的一般过程应有以下几个阶段:般过程应有以下几个阶段: (1)了解并定义系统上下文和与系统的外部交互

4、)了解并定义系统上下文和与系统的外部交互 (2)设计系统体系结构)设计系统体系结构 (3)识别出系统中的主要对象)识别出系统中的主要对象 (4)开发设计模型)开发设计模型 (5)定义对象接口)定义对象接口 上述活动交替进行,彼此影响,不断精化。上述活动交替进行,彼此影响,不断精化。 以下通过一个例子介绍面向对象的设计过程。以下通过一个例子介绍面向对象的设计过程。47.1.1 系统上下文与交互系统上下文与交互例:气象站系统:气象站部署在远程的区域,每个气例:气象站系统:气象站部署在远程的区域,每个气象站记录当地的气象信息,并通过卫星将这些信息象站记录当地的气象信息,并通过卫星将这些信息定期传输给

5、气象信息系统。定期传输给气象信息系统。n软件设计首先了解待开发系统与外部环境之间的关软件设计首先了解待开发系统与外部环境之间的关系,帮助确定系统提供哪些功能以便有效地与外部系,帮助确定系统提供哪些功能以便有效地与外部环境进行通信。环境进行通信。n有两个模型可以表达有两个模型可以表达系统与环境之间的关系系统与环境之间的关系: 5 系系统上下文模型上下文模型,是,是结构模型,描述系构模型,描述系统环境中的境中的实体及其关体及其关联。上下文模型可用关。上下文模型可用关联(ER)图来表示,来表示,方框表示系方框表示系统或子系或子系统。也可用。也可用UML的包的包图来表示。来表示。下下图说明了明了每个气

6、象站所在环境中都包含一个气象信息每个气象站所在环境中都包含一个气象信息系统系统,一个机,一个机载卫星系星系统和一个控制系和一个控制系统。气象站气象站气象信息系统气象信息系统卫星系统卫星系统控制系统控制系统11111nnn1气象站系统上下文气象站系统上下文6 交互模型交互模型,描述系,描述系统与外部角色有哪些交互。与外部角色有哪些交互。UML的用例模型是使用抽象方法表示系的用例模型是使用抽象方法表示系统与外部角与外部角色之色之间的交互。的交互。重新启动重新启动关闭气象站关闭气象站重新配重新配置软件置软件设定节设定节电模式电模式控制系统控制系统远程控制其远程控制其他气象站他气象站气象信息系统气象信

7、息系统报告气象数据报告气象数据报告设备状态报告设备状态气象站系统用例图(图气象站系统用例图(图7-2)教材图教材图7-3给出了该给出了该用例的模版描述用例的模版描述气象站气象站气象站气象站77.1.2 体系结构设计体系结构设计n系统与环境间交互的定义可以作为系统体系系统与环境间交互的定义可以作为系统体系结构设计的基础,还要结合业务知识和设计结构设计的基础,还要结合业务知识和设计的一般知识进行体系结构的设计。的一般知识进行体系结构的设计。n首先识别出系统的主要组件及它们之间的关首先识别出系统的主要组件及它们之间的关系,然后运用一种体系结构模式来组织这些系,然后运用一种体系结构模式来组织这些组件。

8、组件。n气象站系统运用了广播模型。气象站系统运用了广播模型。8subsystem 缺陷管理subsystem 配置管理subsystem 电源管理subsystem 通信控制通信控制subsystem 数据采集数据采集subsystem 仪器器通信链路通信链路气象站系统高层体系结构气象站系统高层体系结构当该子系统接收到当该子系统接收到“关机关机”命令,其它与该命令相命令,其它与该命令相关的子系统也能关机关的子系统也能关机97.1.3 对象识别对象识别n面向对象分析识别面向对象分析识别问题域问题域的对象,面向对象设计是的对象,面向对象设计是识别识别求解域求解域的对象。求解域的对象一部分来自于问的

9、对象。求解域的对象一部分来自于问题域,一部分来自于与设计相关的系统描述。题域,一部分来自于与设计相关的系统描述。n如何识别对象?方法同面向对象分析如何识别对象?方法同面向对象分析. 根据以上思想根据以上思想识别出的出的对象象见下下图。 10气象站气象站identifierreportWeather()reportStatus()powerSave(instruments)remoteControl(commands)reconfigure (commands)restart (instruments)shutdown(instruments)气象数据气象数据airTemperaturesgro

10、undTemperatureswindSpeedswindDirectionspressuresrainfallcollect()summarise()地表温度计地表温度计temperatureget()test()风速计风速计windSpeedwindDirectionget()test()气压计气压计pressureHeightget()test()气象站系统的对象(类气象站系统的对象(类)gt-identan-identbar-ident提供了与提供了与环境交互环境交互的接口的接口11n气象站类提供与环境之间的气象站类提供与环境之间的接口接口,它的操作反映了,它的操作反映了用例用例模型中

11、给出的交互。模型中给出的交互。n气象数据类负责处理报告气象数据指令,它的相关操作气象数据类负责处理报告气象数据指令,它的相关操作包括对数据的收集和汇总,源数据是不同仪器采集到的。包括对数据的收集和汇总,源数据是不同仪器采集到的。n其他三个类与系统中的仪器直接对应,操作就是对这些其他三个类与系统中的仪器直接对应,操作就是对这些硬件的控制。这些对象以某些特定频率自动采集数据并硬件的控制。这些对象以某些特定频率自动采集数据并在本地存储,在得到请求时将数据传输给在本地存储,在得到请求时将数据传输给“气象数据气象数据”对象。对象。127.1.4 开发设计模型开发设计模型n设计模型包含了对象类以及它们之间

12、不同类型的关系,设计模型包含了对象类以及它们之间不同类型的关系,是系统需求和系统实现之间的桥梁。是系统需求和系统实现之间的桥梁。n设计过程中的一个重要活动是决定需要什么样的设计模设计过程中的一个重要活动是决定需要什么样的设计模型和设计模型的细节层次,依赖所开发的系统类型。型和设计模型的细节层次,依赖所开发的系统类型。n不一定为系统建立所有的模型不一定为系统建立所有的模型.n一般要进行两类模型的设计:一般要进行两类模型的设计: 静静态模型模型 描述系描述系统的静的静态结构(如气象站系构(如气象站系统的的类图) 动态模型模型 描述系描述系统的的动态结构(交互、状构(交互、状态变化)。化)。13 本

13、教材作者本教材作者认为有以下有以下3个模型有助于个模型有助于为用例和体用例和体系系结构模型增加构模型增加细节: 子系子系统模型:模型:给出系出系统的的逻辑分分组,每个分,每个分组构构成一个子系成一个子系统,可使用包,可使用包图来表示。子系来表示。子系统模型模型说明明如何能将如何能将设计组织成成逻辑上相关的上相关的对象群。象群。 时序序模型:模型:说明明对象交互的象交互的时序,使用序,使用时序序图或或协作作图来表示。来表示。 状状态机模型:机模型:说明某个明某个对象如何响象如何响应事件来改事件来改变它它们的状的状态,使用状,使用状态图来表示。来表示。 下下图给出了气象站系出了气象站系统包包图以及

14、关系。包以及关系。包图加上加上类图描述了系描述了系统的的逻辑分分组。14subsystem通信控制通信控制气象站气象站subsystem数据采集数据采集气象数据气象数据仪器状态仪器状态subsystem 仪器仪器空气温度计空气温度计地表温度计地表温度计雨量计雨量计气压计气压计风速计风速计风向标风向标气象站系统(包图加上类图描述了系统逻辑分组气象站系统(包图加上类图描述了系统逻辑分组) 下图给出了气象信息系统向气象站请求汇总数据时下图给出了气象信息系统向气象站请求汇总数据时发生的的交互序列:发生的的交互序列:通信控制器通信控制器15:通信控制器:通信控制器:气象站:气象站:气象数据:气象数据re

15、quest(report)reportWeather()summarise()send(report)reply(report)acknowledge 设计的时候,应该为每个设计的时候,应该为每个重要的重要的交互(用例模型中的用交互(用例模型中的用例)创建一个时序图或协作图。例)创建一个时序图或协作图。应答应答表表示示消消息息发发送送者者不不等等待待回回复复气象信息系统气象信息系统acknowledgeacknowledgeacknowledge16 时序图用来对一组对象的交互行为建模,状态机时序图用来对一组对象的交互行为建模,状态机模型表示某个对象对不同事件的响应行为。模型表示某个对象对不同

16、事件的响应行为。 下图是气象站对象的状态图,给出了该对象如何下图是气象站对象的状态图,给出了该对象如何响应各种不同服务的请求。响应各种不同服务的请求。shutdownRunningtransmittingtestingsummarizingCollectingrestart ()shutdown()clockcollection donereportWeather()weather summary completetest completetransmission donereportStatus()remoteControl()operationConfiguringreconfigure(

17、)powerSave()configuration doneControlled响应远程控制响应远程控制的另一组消息的另一组消息177.1.5 接口描述接口描述n接口提供了一种方法,把组件基于操作的功能说明与接口提供了一种方法,把组件基于操作的功能说明与具体实现区分开来,使得任何依赖和使用接口的客户具体实现区分开来,使得任何依赖和使用接口的客户程序不必依赖于接口的具体实现,有利于接口实现的程序不必依赖于接口的具体实现,有利于接口实现的替换。替换。n接口要精确的定义,以便能由其他对象使用。接口要精确的定义,以便能由其他对象使用。n接口描述可以用接口描述可以用UML类图模板,省略属性说明,类图模板

18、,省略属性说明,interface要包含在类名部分中。要包含在类名部分中。n也可以用程序设计语言来定义接口,以便用编译器来也可以用程序设计语言来定义接口,以便用编译器来发现接口描述中的错误和不一致。发现接口描述中的错误和不一致。 18n对象与接口不是一对一的关系,一个对象会有若干接对象与接口不是一对一的关系,一个对象会有若干接口。同样,一组对象可以通过同一个接口访问。口。同样,一组对象可以通过同一个接口访问。n下图是气象站系统中定义的两个接口:下图是气象站系统中定义的两个接口:interfaceReportingreportWeather(WS-Ident):WreportreportStat

19、us(WS-Ident):SreportinterfaceRemoteControlstartInstrument(Instrument):iStatusstopInstrument(Instrument):iStatuscollectData(Instrument):iStatusprovideData(Instrument):string报告接口报告接口远程控制接口远程控制接口直接映射到气象站对象中的操作直接映射到气象站对象中的操作每一个操作都编码成每一个操作都编码成气象站对象中气象站对象中remoteControl方法所关联的一个命令字符串方法所关联的一个命令字符串197.2 设计模式设

20、计模式n模式模式(Pattern)的概念最初来自于建筑学领域,用模的概念最初来自于建筑学领域,用模式描述建筑物的建筑元素(式描述建筑物的建筑元素(Alexander,1977),概),概括了被认为是好的设计的实践经验。括了被认为是好的设计的实践经验。n模式是对问题和解决方案的基本内容的描述。模式模式是对问题和解决方案的基本内容的描述。模式是积累的经验和智慧的描述,可以帮助人们在软件是积累的经验和智慧的描述,可以帮助人们在软件开发过程中对于经常重复出现的问题制定开发过程中对于经常重复出现的问题制定成功解决成功解决的方案的方案,即解决方案可以在不同的设置下被,即解决方案可以在不同的设置下被复用复用

21、。20n94年年Gamma等等4人(简称人(简称“Gang of Four”)合著的合著的设计设计模式:可复用面向对象软件的基础模式:可复用面向对象软件的基础提出了用设计模式提出了用设计模式解决重复出现的软件设计问题,并对设计模式进行了分解决重复出现的软件设计问题,并对设计模式进行了分类描述和解释。类描述和解释。n96年由年由Buschmann等等5人合著的人合著的面向模式的软件体系面向模式的软件体系结构结构将模式跨越不同的抽象层次,提出了将模式跨越不同的抽象层次,提出了高层的体系高层的体系结构模式结构模式、中层的设计模式中层的设计模式和和低层的习惯用法低层的习惯用法。 本节本节主要针对设计模

22、式进行讨论。主要针对设计模式进行讨论。21Gamma等人定义了等人定义了模式的四个基本要素模式的四个基本要素: (1)模式名称)模式名称 (2)问题描述)问题描述 描述设计模式所解决的问题,什么情况下可以应用该描述设计模式所解决的问题,什么情况下可以应用该模式,或者说使用该模式可以在设计中避免的一些缺点。模式,或者说使用该模式可以在设计中避免的一些缺点。 (3)解决方案)解决方案 通常以图形的方式描述设计方案的组成成分(对象)通常以图形的方式描述设计方案的组成成分(对象)以及它们之间的关系、职责和协作方式。它不是一个具体以及它们之间的关系、职责和协作方式。它不是一个具体的设计描述,而是一个设计

23、方案的模版,可以用不同的方的设计描述,而是一个设计方案的模版,可以用不同的方式实例化。式实例化。 (4)结果陈述)结果陈述 说明应用该模式的结果和副作用,帮助设计者了解该说明应用该模式的结果和副作用,帮助设计者了解该模式在特定的环境条件下用是否有效。模式在特定的环境条件下用是否有效。 教材教材P121图图7-10展示了观察者模式的定义。展示了观察者模式的定义。22例例1:观察者模式:观察者模式n定义对象间的一种一对多的依赖关系,当一个对象的定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被状态发生变化时,所有依赖它的对象都得到通知并被自动更新。自动更新

24、。主体主体A:40B:25C:15D:20ABCD50250A B C D观察者观察者1观察者观察者1一个数据集的两个图形显示一个数据集的两个图形显示23interfaceSubjectAttach(observer)Detach(observer)Notify()interfaceObserverUpdate()ConcreteSubjectSubjectStateGetState()ConcreteObserverObserverStateUpdate()1 *观察者模式的观察者模式的UML模型模型24nObserver将自己注册到主体对象将自己注册到主体对象Subject中,主体对中,主

25、体对象将观察者存放在一个容器(象将观察者存放在一个容器(Container)里。)里。 n主体对象状态发生了变化,从容器中得到所有注册主体对象状态发生了变化,从容器中得到所有注册过的观察者,将变化通知观察者。过的观察者,将变化通知观察者。n观察者模式通常与观察者模式通常与 MVC模式有关系。观察者模式可模式有关系。观察者模式可被用来降低被用来降低 model 与与 view 的耦合程度的耦合程度 , 主体便是模主体便是模型加控制器,而观察者便是视图。型加控制器,而观察者便是视图。n当一个对象数据更新时需要通知其他对象,不知道当一个对象数据更新时需要通知其他对象,不知道具体有多少个对象或者不希望

26、互相间形成紧耦合,具体有多少个对象或者不希望互相间形成紧耦合,适合使用该模式。适合使用该模式。25n设计模式的使用是一个非常有用的复用形式。由于模设计模式的使用是一个非常有用的复用形式。由于模式的复杂性,为了有效的使用,设计者需要对许多设式的复杂性,为了有效的使用,设计者需要对许多设计模式有详细的了解。计模式有详细的了解。n使用一个模式时,主要复用该模式的思想,根据所开使用一个模式时,主要复用该模式的思想,根据所开发系统中需要解决的问题调整自己的实现方案。发系统中需要解决的问题调整自己的实现方案。n模式不是一个可执行组件,不像组件那样只需了解组模式不是一个可执行组件,不像组件那样只需了解组件的

27、接口。有经验的程序员才能辨别出一个模式所能件的接口。有经验的程序员才能辨别出一个模式所能适用的一般条件。因此,有效地使用设计模式需要积适用的一般条件。因此,有效地使用设计模式需要积累经验。累经验。267.3 实现问题实现问题n复用复用 开发软件时,尽可能的考虑现有组件或系统的开发软件时,尽可能的考虑现有组件或系统的复用。复用。n配置管理配置管理 开发软件是一个团队进行的项目,每个生开发软件是一个团队进行的项目,每个生成的组件都会有很多版本,若不很好的管理这些版本,成的组件都会有很多版本,若不很好的管理这些版本,将会造成混乱。将会造成混乱。n基于宿主机(基于宿主机(host computer)-

28、目标机开发目标机开发 宿主机开发的软件运行在目标机上经常有完全不宿主机开发的软件运行在目标机上经常有完全不同的环境。开发平台与运行平台的问题。同的环境。开发平台与运行平台的问题。27 7.3.1 复用(参考第复用(参考第16、17章)章)n软件复用的好处是降低总体开发成本、增加了系统的软件复用的好处是降低总体开发成本、增加了系统的可靠性并可与标准兼容,加快了软件开发速度。可靠性并可与标准兼容,加快了软件开发速度。n软件复用可以运作在不同层次上:软件复用可以运作在不同层次上: 抽象抽象层 成功成功经验的复用,抽象知的复用,抽象知识的复用,如的复用,如设计模式、体系模式、体系结构模式。构模式。 对

29、象象层 直接复用开直接复用开发平台平台库中的中的对象,要分析象,要分析对象和方法是否提供所需的功能,代替自己象和方法是否提供所需的功能,代替自己编写代写代码。 组件件层 组件提供件提供标准接口和通用的功能,通常往准接口和通用的功能,通常往往利用往利用框架(框架(Frameworks)对组件件进行行调整与整与扩展。展。 系系统层 通通过添加代添加代码或者使用系或者使用系统的配置界面来的配置界面来复用商复用商业现成成产品。品。28 复用需考虑的关键因素复用需考虑的关键因素n软件的开发进度软件的开发进度:如要快速,考虑复用现成系统而不:如要快速,考虑复用现成系统而不是单个组件。可能需适当修改需求。是

30、单个组件。可能需适当修改需求。n所预计的软件生命期所预计的软件生命期:长生命期系统要关注可维护性,:长生命期系统要关注可维护性,为适用新需求需改变组件及它们的使用方式。如果不为适用新需求需改变组件及它们的使用方式。如果不能得到源代码,避免使用外部供应商提供的组件或系能得到源代码,避免使用外部供应商提供的组件或系统。统。n开发团队的背景、技术和经验。开发团队的背景、技术和经验。n软件的可靠性及其他非功能性需求软件的可靠性及其他非功能性需求。n应用领域应用领域:某些应用领域可复用的产品较多,可重新:某些应用领域可复用的产品较多,可重新配置。配置。n系统运行的平台系统运行的平台:如:如 .NET是是

31、Microsoft平台专用的。平台专用的。29支持软件复用的方法支持软件复用的方法(教材(教材P273图图16-4)n体系结构模式体系结构模式n设计模式设计模式n基于组件的开发基于组件的开发n应用框架应用框架n遗留系统包装遗留系统包装n面向服务的系统面向服务的系统:n应用产品线应用产品线n面向方面的软件开发面向方面的软件开发n商业现成产品商业现成产品(COTS)集成集成nERP系统系统n可配置垂直应用可配置垂直应用n程序库程序库n程序生成器程序生成器n模型驱动开发模型驱动开发30 应用框架应用框架 框架(框架(Frameworks)框架是一个一般化的结构)框架是一个一般化的结构(有时称为(有时

32、称为“半成品半成品”),它包含抽象类和具体类),它包含抽象类和具体类的集合以及这些类之间的接口。的集合以及这些类之间的接口。 应用系统的构建是通过增加组件和通过对框架应用系统的构建是通过增加组件和通过对框架中的抽象类提供具体的实现(特化)来完成。中的抽象类提供具体的实现(特化)来完成。 31 Fayad and Schmidt 提出了三种类型的框架:提出了三种类型的框架: (1)系统基础实施框架)系统基础实施框架 (2)中间件集成框架)中间件集成框架 (3)企业应用框架)企业应用框架:框架嵌入了应用域知识并支持用户框架嵌入了应用域知识并支持用户应用的开发。应用的开发。 如如Web应用框架以应用

33、框架以MVC模式为基础,支持动态网站模式为基础,支持动态网站的创建。的创建。 32BrowserController管理用户请求管理用户请求模型编辑模型编辑 选择视图选择视图 Model 封装并实现功能封装并实现功能 封装内容对象封装内容对象 合并所有的合并所有的WebApp状态状态 View 格式化来自模型的数据格式化来自模型的数据 请求模型更新请求模型更新 显示控制器所选择的视图显示控制器所选择的视图ClientServerUser request or dataHTML dataView selectionDataUpdate requestExternal dataBehavior r

34、equest (state change)Web应用系统一般的体系结构应用系统一般的体系结构33 应用系统复用应用系统复用 指的是对整个系统的复用,大粒度的软件产品的指的是对整个系统的复用,大粒度的软件产品的复用。复用。 (1)商业现成产品的复用)商业现成产品的复用 商业现成产品(商业现成产品(COTS)是无需购买者作任何修)是无需购买者作任何修改即可使用的软件系统。如桌面软件、数据库管理系改即可使用的软件系统。如桌面软件、数据库管理系统等。统等。34 (2)软件产品线)软件产品线 是相关联的一组应用系统,是相关联的一组应用系统,具有相同的领域相关具有相同的领域相关的体系结构的体系结构。应用族

35、的。应用族的核心部分核心部分在每次构建一个新应在每次构建一个新应用时都要复用。用时都要复用。 对软件产品线各类特化处理需要做的工作有:对软件产品线各类特化处理需要做的工作有: 平台特化平台特化: 为不同的平台开发应用程序的不同版为不同的平台开发应用程序的不同版本。如一个应用程序可能存在本。如一个应用程序可能存在Windows 、Linux等各等各种平台上的版本,程序的功能不变,修改与硬件和操种平台上的版本,程序的功能不变,修改与硬件和操作系统的接口。作系统的接口。 35 功能特化功能特化: 为不同需求的客户创建不同的应用程为不同需求的客户创建不同的应用程序版本。序版本。 过程特化过程特化:调整

36、系统使之与特殊的业务过程配套。:调整系统使之与特殊的业务过程配套。 环境特化环境特化: 创建应用程序的版本来处理特殊的创建应用程序的版本来处理特殊的操作环境和外部设备。操作环境和外部设备。36 组件也称为构件,是一个独立的软件单元,可以与其组件也称为构件,是一个独立的软件单元,可以与其它组件构成新的软件系统。下表列出了组件的主要特征:它组件构成新的软件系统。下表列出了组件的主要特征:基于组件的复用(参考第基于组件的复用(参考第17章章) 组件特性组件特性 描述描述 标准化标准化符合某种组件模型的标准。符合某种组件模型的标准。 独立性独立性可以独立地进行组合与部署。若需要外部提供服务,可以独立地

37、进行组合与部署。若需要外部提供服务,在它的需求接口中声明。在它的需求接口中声明。 可组合性可组合性所有外部交互通过公共定义的接口进行,并提供对所有外部交互通过公共定义的接口进行,并提供对自身信息的外部访问。自身信息的外部访问。 可部署性可部署性能作为一个独立的实体在组件平台上运行。能作为一个独立的实体在组件平台上运行。 文档化文档化组件有定义接口的语法和语义,便于用户理解组件组件有定义接口的语法和语义,便于用户理解组件是否满足需求是否满足需求37n基于组件的开发为进行系统化的复用创造了机会。基于组件的开发为进行系统化的复用创造了机会。 可复用组件有两个关键特性可复用组件有两个关键特性: (1)

38、组件是可独立运行的的实体。它可以作为外)组件是可独立运行的的实体。它可以作为外部服务来引用,也可能直接包含在一个程序中。部服务来引用,也可能直接包含在一个程序中。 (2)组件所提供的服务通过其接口得到,而且所)组件所提供的服务通过其接口得到,而且所有的交互都是通过接口实现的。组件接口表现为参有的交互都是通过接口实现的。组件接口表现为参数化的过程,其内部状态是不会暴露出来的。数化的过程,其内部状态是不会暴露出来的。38UML 组件图组件图n组件在组件在UML指的是一个实际文件,它可以是数据文件、指的是一个实际文件,它可以是数据文件、源代码文件、二进制文件、可执行文件、动态连接库源代码文件、二进制

39、文件、可执行文件、动态连接库等,等,UML2.0称为工件(称为工件(artifact)。n组件图用来说明这些组件之间在编译、链接或执行时组件图用来说明这些组件之间在编译、链接或执行时的依赖关系,利用这种依赖关系能容易的分析一个组的依赖关系,利用这种依赖关系能容易的分析一个组件的变化对其他组件的影响。件的变化对其他组件的影响。n组件图中有接口和依赖关系:组件图中有接口和依赖关系:表示组件接口,对外提供可见的操作。表示组件接口,对外提供可见的操作。表示依赖关系表示依赖关系39component Calculatorinterface keyStateChanged()component Robot

40、component Calculatorcomponent Robot提供接口提供接口 需求接口需求接口组件图中表示实现关系和依赖关系的两种方式组件图中表示实现关系和依赖关系的两种方式40 component需求接口需求接口提供接口(提供接口(API)其它组件应该其它组件应该提供的服务提供的服务由该组件提由该组件提供的服务供的服务数据采集组件的接口数据采集组件的接口 Data Collector例如:例如:sensorManagementsensorDataaddSensorremoveSensorstartSensorstopSensortestSensorInitialisereportl

41、istAll组件有两类接口:组件有两类接口:41组件模型组件模型 组件模型定义了组件实现、文档书写以及部署的标组件模型定义了组件实现、文档书写以及部署的标准。这些标准为开发者确保组件的互操作性而设立。准。这些标准为开发者确保组件的互操作性而设立。 现在最为关注的组件模型有现在最为关注的组件模型有:WebServices模型,企模型,企业业Java Bean(EJB)模型,)模型,.Net模型。模型。 42基于组件的开发(基于组件的开发(CBSE过程)过程)n CBSE (Component-Based Software Engineering)过)过程如下图所示:程如下图所示:面向复用的面向复

42、用的CBSE基于复用的基于复用的CBSE组件认证组件认证组件管理组件管理组件获得组件获得组件容器组件容器领域分析师领域分析师设计人员、设计人员、实现人员、实现人员、维护人员、维护人员、市场分析师市场分析师内部和外内部和外部认证者部认证者描述人员描述人员设计人员设计人员实现人员实现人员维护人员维护人员组件库管组件库管理员、理员、 零售商、零售商、外部资源外部资源组件库管理员组件库管理员开发可复用组件开发可复用组件复用已存在的组件复用已存在的组件来开发新系统来开发新系统43n组件获得:得到面向复用的组件或开发成一个可组件获得:得到面向复用的组件或开发成一个可复用组件的过程,该组件是内部开发或从外部

43、资复用组件的过程,该组件是内部开发或从外部资源找到。源找到。n组件管理:对组件进行正确的分类与存储,以便组件管理:对组件进行正确的分类与存储,以便可复用。可复用。n组件认证:检查组件是否符合它的描述。组件认证:检查组件是否符合它的描述。44 基于组件开发的两种思路:基于组件开发的两种思路:n完成高完成高层设计,对设计中的中的组件件给出描述,以便找出出描述,以便找出可复用的可复用的组件,件,这些些组件可在体系件可在体系结构构层次上加入或次上加入或更更详细的的设计层次上加入。次上加入。n先根据需求搜先根据需求搜寻可复用可复用组件,再将件,再将设计建立在建立在获得的得的组件基件基础上。上。两种思路可

44、两种思路可结合起来。合起来。设计系统设计系统体系结构体系结构描述组件描述组件搜寻并验证搜寻并验证可复用组件可复用组件集成系统集成系统先完成架构设计的复用先完成架构设计的复用系统需求系统需求描述描述搜寻并验证搜寻并验证可复用组件可复用组件对需求作对需求作某些修改某些修改体系结构体系结构 设计设计集成系统集成系统复用驱动设计复用驱动设计45组件合成组件合成 组件合成是通过组件组装来创建新系统的过程。组件合成是通过组件组装来创建新系统的过程。合成的类型包括:合成的类型包括: 顺序合成:各个组件的提供接口组合在一起,可顺序合成:各个组件的提供接口组合在一起,可能需要编写一些额外的代码来连接这些组件。能

45、需要编写一些额外的代码来连接这些组件。 层次合成:一个组件直接调用另一个组件所提供层次合成:一个组件直接调用另一个组件所提供的服务。即一个组件的需求接口与另一个组件的提供的服务。即一个组件的需求接口与另一个组件的提供接口直接组合。接口直接组合。 叠加合成:多个组件接口集中在一起创建一个新叠加合成:多个组件接口集中在一起创建一个新组件。重复操作需要删除。组件。重复操作需要删除。 (见下页图)(见下页图)46ABABAB组件合成的类型组件合成的类型a)顺序合成)顺序合成 b)层次合成)层次合成 c)叠加)叠加合成合成47n在合成独立开发的可复用组件时,会经常面临接口不在合成独立开发的可复用组件时,

46、会经常面临接口不兼容的问题,如:兼容的问题,如: 参数不兼容:接口每一边的操作有相同的名字,参数不兼容:接口每一边的操作有相同的名字,但参数的类型和数目不同。但参数的类型和数目不同。 操作不兼容:提供接口和需求接口操作名不同。操作不兼容:提供接口和需求接口操作名不同。 操作不完备:一个组件的提供接口是另一个组件操作不完备:一个组件的提供接口是另一个组件的需求接口的子集,或者相反。的需求接口的子集,或者相反。n对所有情况,都必须通过编写对所有情况,都必须通过编写适配器组件适配器组件来解决不兼来解决不兼容的问题,可将一个组件的接口转换为另一个组件的容的问题,可将一个组件的接口转换为另一个组件的接口

47、。接口。487.3.2 配置管理配置管理n配置管理是系统开发中管理软件变更的过程,当一配置管理是系统开发中管理软件变更的过程,当一个团队的人员协同开发软件时这个过程尤为重要。个团队的人员协同开发软件时这个过程尤为重要。 一个程序一个程序员作出的修改会不会覆盖另一个人提作出的修改会不会覆盖另一个人提交到系交到系统中的工作成果?中的工作成果? 如何保如何保证每个人每个人访问的的组件是最新版本?件是最新版本? 新版本出新版本出现问题时,系,系统组件可以退回到哪个件可以退回到哪个正常版本?正常版本? n配置管理的目配置管理的目标是支持系是支持系统集成集成过程,有以下基本程,有以下基本活活动:49n版本

48、管理版本管理 对组件不同版本的追踪提供支持。对组件不同版本的追踪提供支持。n系统集成系统集成 帮助开发人员定义在创建每个系统版本时帮助开发人员定义在创建每个系统版本时所用的组件版本,这些描述可以用于编译连接需要的所用的组件版本,这些描述可以用于编译连接需要的组件,以自动构建一个系统。组件,以自动构建一个系统。n问题追踪问题追踪 提供支持允许用户报告缺陷及其他问题,提供支持允许用户报告缺陷及其他问题,允许查看谁在修复这些问题以及修复完成的时间。允许查看谁在修复这些问题以及修复完成的时间。 配置管理活动需要自动工具的支持。配置管理活动需要自动工具的支持。507.3.3 基于宿主机基于宿主机-目标机

49、开发目标机开发n开发平台或运行平台除了硬件设备,还包括安装的开发平台或运行平台除了硬件设备,还包括安装的OS、DBMS及其它支持软件。及其它支持软件。n若二者不同,需要将开发好的软件迁移到运行平台进若二者不同,需要将开发好的软件迁移到运行平台进行整个系统级的测试,或者在开发平台上搭建运行环行整个系统级的测试,或者在开发平台上搭建运行环境(如实时系统中的传感器)。境(如实时系统中的传感器)。n集成开发环境(集成开发环境(IDE)支持软件开发,它将工具和集)支持软件开发,它将工具和集成机制整合在一起协同工作。成机制整合在一起协同工作。51n对于分布式系统,需要将组件部署到目标平台上,对于分布式系统

50、,需要将组件部署到目标平台上,UML部署图用来描述软硬件部署的决策。部署图用来描述软硬件部署的决策。nUML部署图描述系统中硬件设备的配置、通信以及部署图描述系统中硬件设备的配置、通信以及在各硬件设备上组件的配置。在各硬件设备上组件的配置。nUML2.0对该图中硬件设备定义为执行工件对该图中硬件设备定义为执行工件(artifact)的节点,节点之间的连接为通信路径)的节点,节点之间的连接为通信路径(不一定是电线或电缆),路径上一般要标明通信(不一定是电线或电缆),路径上一般要标明通信协议或网络类型。协议或网络类型。 下图是银行下图是银行ATM系统的简单部署图。系统的简单部署图。52 局域网局域

51、网InternetATMATM客户机客户机银行储户银行储户ATMATM应用服务器应用服务器ATM系统简单部署图系统简单部署图 artifact客户管理客户管理artifact事务管理事务管理artifact帐务管理帐务管理ATM数据服务器数据服务器53 IC卡读卡器:卡读卡器:3个,提供给员工刷卡用,它将收集刷卡的时间信息,传给个,提供给员工刷卡用,它将收集刷卡的时间信息,传给 应用系统,并存入数据库中。应用系统,并存入数据库中。 应用服务器:用来负责从应用服务器:用来负责从IC卡读卡器中收集信息,并对管理人员提供卡读卡器中收集信息,并对管理人员提供 员工设置、考勤查询等功能。员工设置、考勤查

52、询等功能。 数据库服务器:由于该系统比较小,因此在物理上数据库服务器与应用服务器数据库服务器:由于该系统比较小,因此在物理上数据库服务器与应用服务器 合并,用来存储考勤数据。合并,用来存储考勤数据。 客户端软件:提供给管理人员使用,连接服务器,完成相应操作。客户端软件:提供给管理人员使用,连接服务器,完成相应操作。 读卡考勤系统部署图读卡考勤系统部署图547.4 开源开发开源开发n开源开发指将软件系统的源代码公布出来,允开源开发指将软件系统的源代码公布出来,允许志愿开发人员加入到开发过程中。许志愿开发人员加入到开发过程中。n开源软件的版权持有人在软件协议的规定之下开源软件的版权持有人在软件协议

53、的规定之下保留一部分权利允许用户学习、修改、增进提保留一部分权利允许用户学习、修改、增进提高软件的质量。源代码修改后,可在依照同一高软件的质量。源代码修改后,可在依照同一许可条件下再发布许可条件下再发布。 55 按照使用条件的不同,开源软件许可条件分为三类:按照使用条件的不同,开源软件许可条件分为三类: 1 GNU 通用公共许可通用公共许可GPL :也称:也称“互惠互惠”许可。许可。即使用该类许可开源软件搭建的软件,源代码也必须即使用该类许可开源软件搭建的软件,源代码也必须以相同许可证公开。以相同许可证公开。 2 GNU 宽松的通用公共许可宽松的通用公共许可LGPL: 使用该类许使用该类许可开

54、源软件搭建的软件,可以不公开自己的代码,但可开源软件搭建的软件,可以不公开自己的代码,但若对开源代码有修改,则需要将自己的代码以相同许若对开源代码有修改,则需要将自己的代码以相同许可证公开。可证公开。 3 Berkley标准许可标准许可BSD : 使用该类许可开源软件搭建的软件(包括修改)再使用该类许可开源软件搭建的软件(包括修改)再公开时,没有特殊限制,只需要申明许可。代表许可公开时,没有特殊限制,只需要申明许可。代表许可类型还有类型还有MIT等等 。567.5 嵌入式软件的设计与实现嵌入式软件的设计与实现 (参考第(参考第20章)章)n嵌入式软件系统是对环境中的事件做出响应的软件嵌入式软件

55、系统是对环境中的事件做出响应的软件/硬件系统的一部分,通常都是实时系统。硬件系统的一部分,通常都是实时系统。n实时系统是一个必须实时地对事件作出响应的软件系实时系统是一个必须实时地对事件作出响应的软件系统。它的功能正确与否取决于系统产生的结果,以及统。它的功能正确与否取决于系统产生的结果,以及产生这个结果所花的时间。产生这个结果所花的时间。n除了包含除了包含实施响施响应的特点外,的特点外,嵌入式软件和其它软件嵌入式软件和其它软件还有以下不同:还有以下不同:57n嵌入式软件往往保持持续运行直到硬件被关闭。嵌入式软件往往保持持续运行直到硬件被关闭。n和系统环境的交互是不可预测和控制的。设计是基于和

56、系统环境的交互是不可预测和控制的。设计是基于多进程的并发的。多进程的并发的。n存在影响系统设计的物理限制(如空间、重量)。存在影响系统设计的物理限制(如空间、重量)。n要和各种硬件设备交互,有的没有设备驱动软件。要和各种硬件设备交互,有的没有设备驱动软件。n安全性、可靠性占据主要地位。需使用成熟的技术。安全性、可靠性占据主要地位。需使用成熟的技术。581. 嵌入式系统设计嵌入式系统设计n嵌入式系统的设计是一个系统工程的过程,要将系统能力嵌入式系统的设计是一个系统工程的过程,要将系统能力分解为硬件实现和软件实现的组件。分解为硬件实现和软件实现的组件。n嵌入式实时软件设计设计的一般方法时基于激励嵌

57、入式实时软件设计设计的一般方法时基于激励-响应模型。响应模型。激励(激励(stimulus)是事件,响应是发送的信号或消息。)是事件,响应是发送的信号或消息。n响应时间必须在设计过程早期考虑。响应时间必须在设计过程早期考虑。激励激励/响应响应或或事件事件(而(而不是对象或功能)是系统设计的核心内容。不是对象或功能)是系统设计的核心内容。n激励有两类:激励有两类: 周期性的激励周期性的激励 在每一个在每一个时间间隔内隔内发生。如系生。如系统每每隔隔50ms检查一次一次传感器,根据感器,根据传感器的感器的值采取响采取响应行行动。 非周期性的激励非周期性的激励 激励不激励不规则的的发生,如中断。生,

58、如中断。59n实时系统需要响应不同时间里发生的激励。实时系统实时系统需要响应不同时间里发生的激励。实时系统一般被设计成一组并发协作的进程。见图:一般被设计成一组并发协作的进程。见图:传感器控传感器控制进程制进程数据处理进程数据处理进程执行机构执行机构控制进程控制进程激励激励响应响应传感器和执行器进程传感器和执行器进程传感器传感器执行机构执行机构60n设计过程:设计过程: (1)平台选择:采用的硬件和实时操作系统。(影响选)平台选择:采用的硬件和实时操作系统。(影响选择的因素包括时间和资源限制、价格、经验等)择的因素包括时间和资源限制、价格、经验等) (2)激励)激励-响应识别:识别系统必须处理

59、的一些激励和响应识别:识别系统必须处理的一些激励和相关的响应。相关的响应。 (3)时序分析:给出每个激励和响应的时间约束。)时序分析:给出每个激励和响应的时间约束。 (4)进程设计:将激励和响应聚集到几个并发进程中,)进程设计:将激励和响应聚集到几个并发进程中,为实时系统建模。为实时系统建模。 (5)算法设计:对每个激励和响应的运行设计算法。)算法设计:对每个激励和响应的运行设计算法。 (6)数据设计:定义进程间交换的信息,设计相应的)数据设计:定义进程间交换的信息,设计相应的数据结构来管理信息交换。数据结构来管理信息交换。 (7)进程调度:设计调度程序,确保进程都能及时启)进程调度:设计调度

60、程序,确保进程都能及时启动并满足时限要求。动并满足时限要求。 该过程是一个迭代过程。该过程是一个迭代过程。612. 实时系统建模实时系统建模 实时系统必须响应在不规则时间间隔内发生的事实时系统必须响应在不规则时间间隔内发生的事件,这些事件(或激励)引起系统转换到不同的状态。件,这些事件(或激励)引起系统转换到不同的状态。因此因此状态机模型状态机模型能很好的反映实时系统的行为。能很好的反映实时系统的行为。 等待等待Do:显示时间显示时间全功率全功率Do:设置功率设置功率=600w一半功率一半功率Do:设置功率设置功率=300w设置时间设置时间Do:取数取数exit:设置时间设置时间启用启用Do:

61、显示就绪显示就绪屏蔽屏蔽Do:显示等待显示等待操作操作Do:运行运行等待等待Do:显示时间显示时间全功率全功率全功率全功率一半功率一半功率一半功率一半功率定时器定时器定时器定时器计数计数门开门开门关门关门关门关启动启动门打开门打开取消或时间到取消或时间到简单微波炉的状态机模型简单微波炉的状态机模型623. 实时编程实时编程n语言必须具有访问系统硬件的能力以及能满足时序语言必须具有访问系统硬件的能力以及能满足时序的要求,如汇编语言。的要求,如汇编语言。n使用使用“系统调用系统调用”提供对软件并发性、多线程运行提供对软件并发性、多线程运行的支持。如的支持。如C语言通过调用开发平台提供的多线程语言通过调用开发平台提供的多线程库函数接口,就能使用操作系统的一些功能。库函数接口,就能使用操作系统的一些功能。n实时实时Java、Ada,包含了线程机制、异步事件处理,包含了线程机制、异步事件处理机制和时序描述。机制和时序描述。63

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号