考试题型:选择、简答、设计
设计模式与软件体系结构复习资料——设计模式
SEI软件体系结构讨论群定义如下:一个程序/系统构件的结构,它们之间的相互关系, 以及在设计和交付的整个过程中的原则和指导方针。
一般来说,软件体系结构定义需要考虑到系统中的构件及其它们之间的相互作用。
Kruchten指出,软件体系结构具有四个角度,它们从不同方面对系统进行描述,其中概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。
David Garlan和Dewne Perry于1995年在IEEE软件工程学报上采用如下的定义:软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。
Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。
1997年,Bass,Ctements和Kazman在《实用软件体系结构》一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,“软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。
Mary Shaw和David Garlan认为软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束。
软件体系结构包括构件(Component)、连接件(Connector)和约束(Constraint)或配置(Configuration)三大要素。
国内普遍接受的定义:软件体系结构包括构件、连接件和约束,它是可预制和可重构的软件框架结构。
构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元
连接件也是可预制和可重用的软件部件,是构件之间的连接单元
构件和连接件之间的关系用约束来描述
软件体系结构 = 构件 + 连接件 + 约束
示例:
一个药品成本计算系统(Medicine Cost Computation)
要计算一种药品的单位成本,要求输入药品的名称(Medicine Name),然后系统输出该药品的单位成本(Medicine Cost per Unit)
功能演化困难
自上而下的方法创建了符合最初需求的较好的软件系统模型。但是当系统改变或者增加新的需求时,功能结构变得越来越笨拙。
由于软件被设计为树形结构,修改与更新通常要求广泛的“剪枝”与“嫁接”,使系统维护变得越来越困难。
现实中的系统功能不容易描述
大型交互系统很难从功能方面进行刻画。
很多大型系统没有“顶部”,例如,一个涉及数据查询、数据改变与保持数据一致性的软件系统,如果按照功能化的自顶向下的设计,则该系统可能被设计成为一个基于一个唯一的“虚拟”顶点并且会产生非常复杂的结构。
功能化设计丢掉了数据与数据结构。
因为系统分解只突出问题的功能方面,数据结构对问题的影响被丢失了。
由功能设计得到的软件产品产生的可复用的代码较少。
每个程序单元的设计都仅仅考虑极为有限的需求,因为这些特定的需求不太可能出现于下个问题中,所以产生的设计与代码没有普遍性与通用性。
设计一个文档更新系统,对符合一定格式的输入文档进行更新,系统的功能描述如下:
结构化程序中包含一个主程序与其他5个函数,Input负责输入整个文件,CorrectPolitical-Error负责修改政治错误,CorrectY2KError负责修改两千年问题,Sort负责排序,Output负责将处理好的文件输出到一个文件中。
在本设计中,将输入、政治问题、两千年问题、排序、输出功能封装在5个类中,让它们实现一个统一的接口FileUpdateInterface。每个类都实现一个update()方法,以便实现以上的相应功能。
本设计中,所有的数据都被封装在各个类中,每当创建一个类的对象以后,内存都会为该对象开辟出一片内存空间。
结构化设计 | 面向对象设计 | |
---|---|---|
系统分析 | 1. 根据用户需求产生数据流图 2. 根据数据流图生成结构图 3. 使用结构化英语描述算法 4. 通过数据关系分析产生数据关系图 | 1. 建立领域模型类图 2. 根据用户需求产生用例模型 3. 用例实现 4. 建立对象互动图,包括:时序图,协作图及状态图等 |
系统设计 | 1. 数据库设计,包括数据库的正则化 2. 用户图形界面设计 3. 详细设计:函数的参数,算法,返回值 | 1. 具体的数据库设计 2. 设计元素 3. 设计系统软件体系结构 4. 设计类图 5. 设计构件 6. 用户图形界面数据 7. 详细设计,设计类,类中的方法和属性 |
关注点 | 功能,过程 | 对象,数据 |
复用性 | 低 | 高 |
所适合的软件项目 | 定义明确的项目稳定的用户需求 | 需求可能经常改变的大型项目 |
程序结构/元素 | 结构图 元素:函数 | 程序设计类图 元素:类 |
数据/操作封装 | 数据与操作分离 数据外露,所有方法均可访问数据 | 类中封装了数据和操作,只有使用该数据的封装类的相关方法访问数据 |
答:主程序-子程序体系结构使用自顶向下的功能划分的设计方法,面向对象体系结构使用面向对象的设计方法。
主程序-子程序体系结构最终得到程序结构图,面向对象体系结构最终得到设计类图。
数据流系统是一个软件系统,在该系统中,数据的可用性控制计算,过程间的数据有序流动决定了系统的结构。数据的流动方式是明确的。
数据流系统的各软件组件在无数据到达时处于休眠状态,当有数据到达时,该软件组件被激活,开始对数据进行处理。
数据流风格软件体系结构将整个软件系统看作由一系列作用在连续数据集合上的“变换”组成。数据和作用于其上的操作是互相独立的。
软件系统被分解为一些数据处理单元或称为组件,数据流控制数据处理顺序。
数据流风格软件体系结构应用于定义明确的一系列带有有序输入与输出的独立数据变换,数据传输可以是整块的数据传输或者以数据流的形式进行。
在数据流风格体系结构中的组件是可以被重复使用的,且在保证输入与输出接口都不变的情况下,可以独立修改一个组件,而不影响其他的组件。
在实现数据流风格软件体系结构的软件时,需要特别注意组件之间的同步问题。
控制流与数据流的比较:
数据流风格三种例子
特点:
示例:
考虑设计一个数字图像处理软件。
该软件应该有一个用户图形界面。并包含一些可以随时添加的过滤器(Filter),例如图像模糊(Blurring)、图像锐化(Sharpening)、图像变亮(Brightening)、发现图像边界(EdgeDetector)等,每个过滤器完成一项特定的图像处理功能。多个过滤器串联在一起可以完成一些比较复杂的功能。可以使用顺序批处理体系结构设计该系统。
Blurring对象负责对图像进行平滑滤波,然后将结果文件存入存储介质T2,同时将内容显示到用户图形界面上;
Sharpening对象对图像进行锐化滤波,然后将结果文件存入存储介质T3,同时将内容显示到用户图形界面上;
Brightening对象将图像进行亮化处理,然后将结果文件存入存储介质T4,同时将内容显示到用户图形界面上;
EdgeDetector对象对图像进行发现边界的处理,然后将结果文件存入存储介质T5,同时将内容显示到用户图形界面上。
其设计类图如图
其中ImagePro从GUI为用户图形界面,PipeLineBuilder类负责根据用户输入的要选择的图形处理项目,从4个图像处理类中选择生成相应的图像处理类。
管道-过滤器体系结构是数据流风格体系结构的一个子类型。该体系结构在形式上与顺序批处理结构相似,但是实际上它们却有本质的区别。
在管道-过滤器软件体系结构中,每个组件都有一组输入和输出,组件读入输入数据流,经过数据处理,然后产生输出数据流。这个过程通常通过对输入流数据进行增量式的"变换"或者称为"计算"来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的组件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
一个过滤器由Input Port、Filter与Output Port三部分组成。Input Port部分负责存储待处理的数据,Filter负责处理数据,Output Port负责存储已经处理完的数据。
过滤器必须是独立的主体,无须知道输入/出管道的存在。但要对输入管道和输入数据流进行限制。
管道的责任是运送数据。管道由输入流(Input Stream)与输出流(Output Stream)组成,管道组件Pipe负责将数据由Input Stream传送到Output Stream。
作用:在过滤器之间传送数据
不同的管道中流动的数据流,具有不同的数据格式,原因:数据在流过每一个过滤器时,被过滤器进行了丰富、精练、转换、融合、分解等操作,因而发生了变化。
过滤器类型分为主动型过滤器(Active Filter)和被动型过滤器(Passive Filter)。在具体的应用中,根据不同的问题,可以选择使用不同类型的过滤器。
管道-过滤器软件体系具有如下优点:
管道过滤器构成的网络,其输出的正确性与过滤器的递增处理顺序无关。
注意:
将每个过滤器的输入/输出限制为单一的,则管道-过滤器退化为顺序批处理系统(Batch sequential)。
对符合一定格式的输入旧文档进行更新。系统分为几个功能:(1)输入旧文档。(2)解决两千年问题。(3)对每个处理完的行添加注释,例如处理日期等。(4)将修正以后的文档分别写入文档new.txt并输出到屏幕。
解析:
优点
缺点
开环控制:
被控对象的输出对控制器的输出没有影响。如果过程被充分定义,而且操作完全可以重复,过程就可以在无监督的情况下运行,这样的系统被称为开环系统。
闭环控制:
被控对象的输出会反送回来影响控制器的输出,形成多个闭环。
过程控制系统:
所谓对某个过程进行控制,是指设法使该控制过程的功能或特性有效达到所期望的目标。目标可以是满足所规定的各种性能特征,也可以是在一定限制条件下,使某个代表性能的量达到或者接近最佳。
解析:b
3、使用管道-过滤器体系结构设计以下问题。要求:在设计的在线销售系统中,新的订单以消息的形式送达企业。该消息被加密,包含数字证书形式的认证信息,并且可能有重复发送消息的情况发生。系统功能包括:(1)输入客户订单消息。(2)对该消息进行解密。(3)检查认证信息。(4)检查是否有重复发送的消息,如果被复制的消息发生了,则取消重复的订单,仅保留一份订单。要求:
a、画出设计的(管道图)逻辑图
b、画出设计类图,包括所有的类的设计与方法。
c、描述每个方法的功能。
事件系统中的组件的注册、广播、调用机制:
事件系统的连接机制:
事件系统的调度策略:
事件派遣模块的功能:
负责接收到来的事件并派遣它们到其他模块。
派遣器决定派遣方式,有两种派遣方式:
这种模式称为“被观察者/观察者”,每一个模块都允许其他模块向自己所发送的某些消息表明兴趣。当某一模块发出某一事件时,它自动将这些事件发布给那些曾经向自己注册过此事件的模块。
观察者模式的各组成部分说明如下:
观察者模式的工作原理如下:
模拟锅炉的温度显示情况。假如被观察者代表锅炉,用TemperatureGUI表示。为了以不同的方法显示温度值,设计了几个观察者,摄氏温度图形显示界面CelsiusGUI对象、华氏温度图形显示界面FahrenheitGUI对象和凯文温度显示界面KelvinGUI对象,共同观察被观察者TemperatureGUI对象。
当用户在TemperatureGUI图形界面中输入摄氏、华氏或者凯文温度的时候,相应地,根据温度换算的情况,几个温度观察者界面将分别显示摄氏、华氏或者凯文温度,并且还显示温度颜色,即用不同的颜色表示不同的温度。使用观察者模式,进行设计。
解析:setChanged()
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。层次体系结构如图所示:
层与层之间的调用为单向的,即第n层中的类可以调用第n-1层中的类的方法,但是在第n-1层中的类不能调用第n层中方法。另外,也不允许隔层调用,即不允许第n层越过第n-1层而直接调用第n-2层。在实际应用中,第0层一般包含针对来自于硬件输入信息的处理过程、函数或者方法。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
层次软件体系结构还可以形象地被描述为一个鸡蛋的形状,其内层表示较为低的层,外层为较高的层。在严格的层次结构中,除了其相邻的外层以外,内层提供的功能不能被所有其他外层访问。但有时为了某种特殊目的,例如提高性能的考虑,某些内层函数不得不被输送到外层供外层使用。
层次体系结构包括但不限于下述典型的应用领域:
层次系统的基本构件:各层次内部包含的构件
连接件:层间的交互协议
拓扑结构:分层
拓扑约束:对相邻层间交互的约束
这种风格支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。
不同的层次处于不同的抽象级别:
由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。
某一层中的构件只能与同一级别中的对等实体或较低级别中的构件交互,这有助于减少不同级别中的构件之间的依赖性。
有两种通用的分层方法:
系统要求严格遵循分层原则,限制一层中的构件只能与对等实体以及与它紧邻的下面一层进行交互。第 N 层只能与第 N-1 和N+1层中的构件进行交互,第 N-1 层只能与第 N和N-2层进行交互,依次类推。
优点:修改时的简单性
当某一层被加入或被替换时,它的影响范围很有限,容易管理
缺点:过度的严格分层 效率低下
例如:网络系统中使用严格分层,但导致效率低下
因此在很多实际系统里,并不遵循严格分层的原则
松散的分层应用程序放宽了此限制,它允许构件与位于它下面的任意层中的组件进行交互第N 层不仅可以与第 N-1 层交互,而且可以与第 N-2层和第 N-3 层交互。
优点:
松散方法可以改善效率,因为系统不必将简单调用从一层转发到下一层。
缺点:
松散方法在层之间不提供相同的隔离级别,这使得在不影响较高层的情况下换出较低层变得更困难。
针对分层系统中各层次之间如何交互,分为以下两种基本的交互方式:
在由上而下模式中,外部实体与系统中的最高层交互。最高层使用较低级别层的一个或多个服务。反过来,每个较低级别都使用它下面的层,直到到达最低层。
特点
在由下而上模式中,外部实体与系统中的最底层交互,通常用来监视某些底层系统的状态变化。当被监控对象状态发生改变时,触发系统最底层的某些服务;每个较低级别回调它上面的层的服务,直到到达最顶层;在此方案中,客户端只能使用最底层的一组服务,而无法直接了解任何较高的层。
在由上而下方案中,较高层直接调用较低层,因此高层依赖于低层。
在由下而上方案中,较低层通过事件(event)、回调和委派(callbackdelegate)来与较高层通信。
目的:防止较低层依赖于较高层。
由上而下的信息和控制通常被描述成“请求”;
由下而上的方式被描述为“通知”。
在某些网络/通讯系统里,信息必须在两个方向都可以传递
优点:
缺点:
答:层次通信协议,数据库系统领域,操作系统领域
MVC体系结构将一个互动的应用分为三部分:Model、View、Controller。Model包含核心功能与数据,View为用户显示信息,Controller处理用户输入。
模型的责任
视图的责任
控制器的责任
如果用户通过一个View的Controller改变了Model,所有其他的View必须反映这个改变。
当时数据发生变化的时候,Model负责通知所有的View,数据已经改变。View可以查询Model中的数据,以发现改变,并且更新数据。
这种改变-传播机制保证了用户界面的一致性。
Controller从用户图形界面接收用户输入,然后再根据用户输入类型,调用Model的相应业务功能。然后在Model类的withdraw()方法中,访问数据库的表进行相应的处理。
由于采用了观察者机制,作为观察者的View的自动更新可由Model中的通知方法notifyObservers()执行,然后在View的update()方法中反过来查询到底是什么数据发生了变化,从而更新视图自身。
优点:
缺点:
在形式上,三层体系结构类似于MVC 体系结构,都是由三部分组成的但是实际上是不同的。
相似之处如下:
区别之处如下:
答:将观察者类中的更新方法update(Observable e)的参数类型设为Observable,在被观察者对象发生变化时,它会调用0bservable的 notifyObservers()方法,此方法调用所有的具体观察者的update()方法,从而使所有的观察者都被通知更新自己。
基本概念
任务分配
服务器(后端):与客户机通讯的接口、业务逻辑、数据管理。
服务器任务主要集中于:
客户应用程序(前端):业务逻辑、与服务器通讯的接口。
客户端主要任务:
发展历史
随着时间的推移,客户端-服务器系统也经历了一系列的变化,从早期的两层的客户端-服务器体系结构发展到三层体系结构,再到目前的多层体系结构。目前,多层的客户端-服务器体系结构已经成为Web开发的主要架构。
现在,当人们提到客户端-服务器体系结构的时候,通常指的是三层的客户端-服务器体系结构。
客户端-服务器软件体系结构是一个多样性的、基于消息的模块基础结构。其目的是改善可用性(Usability)、灵活性(Flexibility)、互操作性(Interoperability)与可伸缩性(Scalability)。
客户端被定义为是一个服务请求软件,服务器被定义为一个服务提供软件,客户端与服务器互相通信。
一层客户端-服务器软件体系结构是在20世纪70年代开始使用的基于大型机的体系结构。
用户分时使用主机,使用终端通过键盘输入数据到主机。其特点是计算机体积庞大、价格昂贵、维护成本高,等等。典型的大型机包括IBM的Unisys等。
一层的客户端-服务器软件体系结构的明显缺点:
随着时间的推移,企业中需要使用计算机的用户越来越多。为了适应新的需要,公司开始考虑将大型机的应用分成客户端与服务器两部分,这就产生了将要介绍的文件共享软件体系结构。
较早的个人计算机网络基于文件共享原理,所有的数据都集中存储在一个文件服务器中,供授权用户访问。
工作原理如下:
文件共享软件体系结构的缺点如下:
随着网络应用的发展和网络用户的迅猛增长,以及桌面GUI的出现,使得文件共享系统很快过时。通过将文件服务器替换为真实的数据库服务器,并通过用回答关系型数据库管理系统查询的方式回答客户端的请求,极大地减少了网络信息流通量,产生了两层客户端-服务器软件体系结构。
在两层客户端-服务器体系结构中,通常使用SQL实现客户端和服务器之间的通信,其中,服务器可能支持存储过程和触发器,这就意味着服务器可以被编程实现业务逻辑,而事实上,业务逻辑在服务器上运行要比在客户端上运行更合适。所以该体系结构是一个更有效的整体系统。两层客户端-服务器体系结构的结构图如图所示:
用户界面位于客户机
数据库管理服务位于服务器端,通常是存储过程/触发器的形式
业务处理过程—即业务逻辑,被分解为客户机与服务器两部分
基本构件:
连接件:
在两层客户端-服务器体系结构的内容中,
两层客户端-服务器的工作原理如下:
业务逻辑的划分比重:在客户端多一些还是在服务器多一些?
两层客户端-服务器体系结构的缺点如下:
基于以上原因,传统的客户端-服务器模式已经不能适应发展的需要,随着网络技术的普及和用户需求的进一步提高,三层客户端-服务器模式应运而生。
为了克服两层软件体系结构的局限性,人们在用户系统接口客户环境和数据库管理服务器环境之间,引入一个中间层。带有这样的中间层的体系结构被称为三层客户端-服务器体系结构(3-Tier Client/Server),如图所示。
三层客户端-服务器体系结构的内容为:
优点:
注意的问题:
两层客户端-服务器体系结构与三层客户端-服务器体系结构主要有以下方面的不同:
三层层次体系结构与三层客户端-服务器软件体系结构的主要区别是:
答:在通常的层次体系结构中所涉及的层次指的是逻辑层,而三层客户端-服务器体系结构中所涉及的层是从物理方面考虑的层。即客户端运行在PC上,服务层被部署在应用服务器上,数据库层被部署在数据库服务器上。
答:
集中目录式P2P软件体系结构采用中央目录服务器管理P2P各结点,P2P结点向中央目录服务器注册关于名称、地址、资源、元数据、所能提供的服务等自身的信息,但所有内容存储在各结点中而非服务器上。
当一个结点要查找某种服务的时候,该结点首先要连接到目录服务器,然后根据目录服务器中的信息查询以及网络流量和延迟等信息来选择与定位其他对等点。一旦找到了所要连接的结点,则直接与其建立连接,而不必经过中央目录服务器进行。
目录服务器形式上是该对等网络的“中心”。但是,实际上目录服务器除了提供各结点的基本的已注册信息之外,并不真正地承担任何其他的功能,因此,该体系结构与传统的客户端 – 服务器体系结构还是有本质的区别。
集中目录式软件体系结构的结构图如图所示。
纯P2P体系结构也被称为广播式的P2P模型,它没有集中的中央目录服务器,每个用户随机接入网络,并与自己相邻的一组邻居结点通过端到端连接构成一个逻辑覆盖的网络。每个对等结点都可以既作为客户端又作为服务器,且与它们的邻居都拥有相同的能力。每个对等结点都作为网络中的一个结点,没有中心路由器。原始的纯P2P体系结构图如图所示。
对等结点之间的内容查询和内容共享都是直接通过相邻结点广播接力传递,同时每个结点还可以记录搜索轨迹,以防止搜索环路的产生。纯P2P网络结构解决了网络结构中心化的问题,扩展性和容错性较好。
纯P2P体系结构具有如下缺点:
传统的纯P2P体系结构在运行中存在很多问题,主要体现在基于泛洪的第二代P2P网络中当网络变得很大时,系统的搜索/回答率会变得很低。
为了解决该问题,代表基于层次的第三代P2P系统在2001年应运而生。通过将对等结点分为超级结点与叶子结点两大类的方法,让超级结点形成一个建立在原来的对等网络之上的覆盖网络的方式,引入了层次的概念。
这种改良体系结构为非结构化的层次纯P2P体系结构,其网络拓扑结构如图所示。
答:P2P分布式网络体系结构由众多的参与者结点,或者称之为对等结点组成,每个结点都可以为其他参与者提供一些服务,各个参与者之间直接交互,而不需要中间网络服务器。每个结点都是资源的提供者,同时又都是资源的消费者。
答:集中目录式P2P体系结构,纯P2P体系结构,非结构化的层次纯P2P体系结构
答:集中目录式P2P体系结构的优点为,提高了网络的可管理性,使得对共享资源的查找和更新非常方便。其缺点为网络的稳定性比较差。一旦服务器失效,则该服务器下的对等结点可能全部失效。很明显,中心控制存在单点失效与不可扩展问题,同时中心目录服务器还很可能形成瓶颈问题。
目前最常使用的网格主要有以下三种:
网格计算与P2P计算的比较:
解:
网格计算体系结构,网格计算体系结构偏向整合所有资源完成一件事,对性能,服务质量,安全性要求较高,P2P软件体系结构偏向资源的共享,题目中“国家地震局决定综合利用每个站的可靠的计算资源,包括各种传感器数据,以便达到实时性的地震预报”,比较适合网格计算体系结构。
解:
网格计算强调资源整合、性能、服务质量和安全性等问题,P2P计算关注网络服务质量和支持问题。
(1)P2P软件体系结构
(2)网格计算体系结构偏向整合所有资源完成一件事,对性能,服务质量,安全性要求较高,P2P软件体系结构偏向资源的共享,电影爱好者可以通过互联网交换影片,即为电影资源的共享,比较适合P2P软件体系结构。
SOA体系结构包含的组件为服务提供者、服务消费者和服务注册器,如图所示。
SOA工作机制如下:
SOA可以有不同的实现,而Web Service 就是该体系结构的一种实现。
Web Service通过HTTP协议传递XML格式的交互信息。通过这种技术中立的方式,提供了一种在异构应用之间进行交互操作的标准方案。由于Web Service实现了SOA体系结构,所以Web Service具有如图所描述的体系结构及服务发现、绑定与执行的工作机制。
在图中:
解:
SOA可以有不同的实现,而Web Service 就是该体系结构的一种实现。
Web Services提供了一种能够在异构应用之间进行互操作的标准方案。Web Services可以被松散地组装在一起,以便实现更为复杂的业务操作。即便是原有提供简单服务的程序也可以通过互动而实现服务增值。
解:
和正常的 B2B电子商务不同的是,在SOA体系结构中,服务提供者与消费者之间不是静态绑定的,而是可以被自动发现和动态绑定的。SOA支持对企业遗留系统的复用,通过从各种异构的遗留系统中创建新的统一的服务,实现各系统之间的互操作性。
定义
云计算是一种能够通过网络以便利的、按需付费的方式获取计算资源(包括网络、服务器、存储、应用和服务等)的范型,这些资源来自一个共享的、可配置的资源池,并能够以最省力和无人干预的方式获取和释放。
基本特点
服务模型
解:
基础设施即服务、平台即服务、软件即服务
解:
Hadoop,Hadoop已被广泛用于一些商业云计算平台中,例如Amazon , Yahoo等公司都采用了Hadoop 。
试用主程序-子程序软件体系结构设计一个员工信息查询系统(Staff Information Query System),要求输入员工工号(Staff Number),输出该员工的信息(Staff Information),包括姓名(Name),部门(Department),月薪(Salary),联系电话(Phone)等。
请按要求画出数据流图和程序结构图。
使用管道-过滤器体系结构设计模拟C程序代码source.cpp的执行过程:
要求画出设计类图,包括所有的类的设计与方法。
使用观察者模式设计一个类图来模拟日常快递的领取。
在该场景中,快递公司(Express)作为被观察者,实现了被观察者(Observable)接口的方法,能够注册观察者(addObserver)、改变状态信息(setChanged)并通知观察者快递信息(notifyObservers);教师(Teacher)和学生(Student)都是观察者,实现了观察者(Observer)接口的方法,当收到通知信息时采取相应操作(update)。
请按要求画出类图及其关键属性和操作。
采用MVC体系结构(使用观察者机制)设计一个汽车销售系统。
在该场景中,汽车(CarModel)作为被观察者,实现了被观察者(Observable)接口的方法,能够通知观察者汽车的信息(notifyObservers)、注册观察者(register),并使用列表(observersList)来保存观察者;界面由用户图形输入界面(CarAuctionGUI)、汽车介绍界面(CarGUIView)、剩余数量界面(CarBitView)组成,其中CarGUIView和CarBitView都是观察者,实现了观察者(Observer)接口的方法,当收到信息时采取相应操作(update);控制器类(Controller)处理用户输入,使用actionPerformance()方法对用户输入做出响应。
要求用户输入界面和显示视图独立显示。请按要求画出类图及其关键属性和操作。