软件体系结构复习综述.docx

上传人:b****8 文档编号:23616862 上传时间:2023-05-19 格式:DOCX 页数:18 大小:137.19KB
下载 相关 举报
软件体系结构复习综述.docx_第1页
第1页 / 共18页
软件体系结构复习综述.docx_第2页
第2页 / 共18页
软件体系结构复习综述.docx_第3页
第3页 / 共18页
软件体系结构复习综述.docx_第4页
第4页 / 共18页
软件体系结构复习综述.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

软件体系结构复习综述.docx

《软件体系结构复习综述.docx》由会员分享,可在线阅读,更多相关《软件体系结构复习综述.docx(18页珍藏版)》请在冰豆网上搜索。

软件体系结构复习综述.docx

软件体系结构复习综述

软件体系结构复习

名词解释:

SOA:

即service-orientedarchitecture,面向服务架构。

它是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。

这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

ArchitectureStyles:

体系结构风格是根据结构组织模式构成的软件系统,表达了部件以及他们之间的关系.

DSSA:

特定领域软件体系结构(DomainSpecificSoftwareArchitecture,)对领域分析模型中表示的需求给出解决方案,它不是单个系统的表示,而是能够适应领域中多个系统需求的一个高层次的设计。

FrameWork:

在计算机词典中解释为框架、架构等,是比architecture更为具体的描述,主要应用于具体问题,在设计模式中,表现为更有复用性的大粒度的构件,在体系结构中表现为某一领域的具体设计结构。

SAAS:

Softwareasaservice软件即服务:

是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。

DesignPattern:

设计模式=问题+解决方法+场景

ADLs:

Architecturedescriptionlanguage为体系结构提供概念性框架,也提供描述的具体语法,也提供解析、显示、编译、分析或者仿真体系结构描述使用的工具

CSP:

Communicationsequentialprocess:

这是一种形式化的描述语言,主要表现了一种基于顺序的通信处理过程。

通过CSP,可以对系统的功能行为以及系统的规划说明进入深入的刻画。

CHAM:

Chemicalabstractmechanism

MDA:

Modeldrivendesign

IOC:

Inversionofcontrol

DIP:

Dependencyinversionprinciple

ADT:

抽象数据类型(AbstractDataType)一个数学模型以及定义在该模型上的一组操作。

ADT包括数据数据元素,数据关系以及相关的操作。

设计模式连线:

1.AbstractFactory:

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

2.Builder:

采取循序渐进的方式组合较复杂的对象实例,属于对象创建型模式(创建型),将一个复杂对象的构建与它的表示分离,使得同样的过程可以创建不同的表示。

3.FactoryMethod:

定义一个用于创建对象的接口,让子类决定将那个类实例化。

FactoryMethod使得一个类的实例化延迟到其子类

4.Prototype:

用原型实例制定创建对象的种类,并且通过拷贝这个原型来创建新的对象。

5.Singleton:

保证一个类仅有一个实例并提供一个访问它的全局访问点。

6.Adapter:

将一个类的接口转换成客户希望的另外一个接口。

Adapter使得原本由于不兼容而不能一起工作的那些类可以一起工作。

7.Bridge:

将抽象部分与它的实现部分分离,使他们都可以独立地变化。

8.Composite:

动态的给一个对象添加一些额外的职责。

9.Decorator:

动态地给一个对象添加一些额外的职责,希望给某个对象而不是整个类添加一些功能

10.Façade:

为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易实现。

11.Flyweight:

运用共享技术有效地支持大量细粒度的对象。

12.Proxy:

为其他对象提供一个代理以控制对这个对象的访问。

13.ChainofResponsibility:

为解除请求的发送者和接收者之间耦合而使多个对象都有机会处理这个请求。

将这些对象连成一个链并沿着这条链传递该请求,直到一个对象处理它。

14.Command:

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志以及支持可取消的操作。

15.Interpreter:

给定一个语言,它定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

16.Iterator:

提供一种方法顺序访问一个聚合对象中各元素,而又不需暴露该对象的内部表示。

17.Mediator:

用一个中介对象来封装一系列的对象交互。

中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。

18.Memonto:

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

这样以后就可将该对象恢复到保存的状态。

19.Observer:

定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

20.State:

允许一个对象在其内部状态改变时改变它的行为。

对象看起来似乎修改了它所属的类。

21.Strategy:

定义一系列算法,把他们一个个封装起来,并且使他们可相互替换。

本模式使得算法的变化独立于使用他们的客户。

22.TemplateMethod:

定义一个操作中的算法骨架,而将一些步骤延迟到子类中。

TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

23.Visitor:

表示一个作用于某对象结构中的个元素的操作,它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作。

1

Decorator

A

Wrapsanotherobjectandprovidesadifferentinterfacetoit.

2

Strategy

B

Subclassesdecidehowtoimplementstepsinanalgorithm.

3

Façade

C

Ensureoneandonlyobjectiscreated.

4

Proxy

D

Encapsulatesinterchangeablebehaviorsandusesdelegationtodecidewhichonetouse.

5

Adapter

E

Encapsulatesstate-basedbehaviorsandusesdelegationtoswitchbetweenbehaviors.

6

State

F

Providesawaytotraverseacollectionofobjectswithoutexposingitsimplementation.

7

Iterator

G

Simplifiestheinterfaceofasetofclasses.

8

Singleton

H

Wrapsanobjecttoprovidenewbehavior.

9

Abstractfactory

I

Allowsaclienttocreatefamiliesofobjectswithoutspecifyingtheirconcreteclasses.

10

Templatemethod

J

Wrapsanobjecttocontrolaccesstoit.

答案:

1-H;2-D;3-G;4-J;5-A;6-E;7-F;8-C;9-I;10-B

 

问答题:

1、试述:

SA在国内外的发展现状和前景

关于软件体系结构的研究工作主要在国外展开的,国内到目前为止对于软件体系结构的研究尚处在起步阶段。

软件体系结构在国内未引起人们广泛注意的原因主要有两点:

 

(1)软件体系结构从表面上看起来是一个老话题,似乎没有新东西。

(2)与国外相比,国内对大型和超大型复杂软件系统开发的经历相对较少,对软件危机的灾难性体会没有国外深刻,因而对软件体系结构研究的重要性和必要性的认识还不很充分。

2、软件体系结构的功能特性和非功能特性,非功能模型的重要性

参考答案:

●软件的功能特性是指软件满足客户的功能要求,多数是容易感知和判断的。

●软件的非功能特性包括系统的可变性,互操作性,效率,可靠性,可测试性,可重用性。

重要性:

非功能特性对软件的开发维护,可操作性,资源使用有很大影响。

软件系统越大越复杂、生命周期越长,非功能特性就越重要。

3、SA对于软件的重要性表现在那些方面?

a)好的软件体系结构,是好的软件的必要条件。

b)SA有利于项目规划、需求分析、设计、实施、评估、维护升级

c)SA对SE的贡献

1)划分开发团队的组织结构

2)捕获需求

3)合理进行设计方案的选择

4)分析和描述复杂系统的高层属性

5)人员交流

6)技术进步

4、为什么说:

软件体系结构的概念不仅是几十年软件发展的反映,也是现时各类软件构成的实现。

5、SA是什么?

软件体系结构的研究范畴

参考答案:

软件体系结构是系统的一个或多个结构,它包括软件的组成元素,这些元素的外部可见的特性以及这些元素之间的相互关系。

体系结构=组件+连接件+约束。

软件体系结构的研究范畴有:

1.体系描述语言和工具:

概念性地描述了软件体系结构的框架概念,包括定义解析,显示,辨析以及系统仿真各个方面的工具,工具的建模,是通过符号的设计方式进行的。

2.产品线与标准:

产品线是一个工程问题,它由一组密集型家族系统共享的

3.软件体系结构风格及风格应用:

指一组设计词典,由关词典如何运用的限制条件及词典语义的假设。

4.体系结构文档化:

文档化的过程就是用一个或多个视图来描述一个系统结构的过程。

6、软件体系结构的层次模型,及层次结构的优缺点,什么是松弛的层次结构?

参考答案:

硬件基础层:

软件运行的物质基础

软化的硬件层:

对硬件结构和性能抽象的基础上,实现硬件的操作和控制描述

基础控制描述层:

建立在高级程序语言描述上的纯粹软件描述层,包括了高级语言所支持的所有程序控制和数据描述概念。

支持该层面的软件系统模型。

支持该层面的设计工具

资源和管理调度层:

在基础控制描述层建立的一切数据对象和操作,都需要在操作系统的协调和控制下才能实际的实现其设计的作用和功能。

系统结构模式层:

最高层次的软件结构概念,属于体系结构风格或系统级别的设计模式,最高的抽象描述层

应用层:

从纯粹应用领域出发所建立的系统结构概念。

是系统结构模式层的概念经过领域应用命名的直接引用

优点:

1.层次的复用性

2.对标准化的支持,允许在不同层使用来自不同商家的产品

3.依赖本地化,这样做便于支持系统的可移植性和可测试性

4.可替换性,独立层次的实现能够被功能相同的模块替换。

缺点:

1.改变行为的连锁效应。

2.低效率。

分层结构通常比单一层次的结构效率更低。

3.包含多余不必要的工作。

松弛的层次系统

1.是分层模型的一种变种

(1)每层可以使用其下面所有层的服务而不仅仅是相邻层的服务

(2)有些服务提供给相邻的上一层,而其余的服务则提供给高于它的所有层

2.灵活性和性能的提高以牺牲可维护性为代价

3.经常用于系统软件,而不常用于应用软件的设计

(1)系统软件比起应用软件来很少修改

(2)系统软件对性能的要求高于可维护性的要求

7、部件和连接器是什么,区别和联系

参考答案:

1.部件是软件系统的结构块单元,是软件功能设计和实现的承载体。

2.连接器是实现部件与部件之间联系的特殊机制或特殊部件

8、面向对象编程的四大原则

参考答案:

1.优先使用(对象)组合,而非(类)继承

2.针对接口编程,而非(接口的)实现

3.开放-封闭法则(OCP):

软件组成实体应该是可扩展的,但是不可修改的。

4.Liskov替换法则(LSP):

使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们

9、OCP的思想

开放-封闭法则,软件组成实体应该是可扩展的,但是不可修改的。

OCP认为我们应该试图去设计出永远也不需要改变的模块。

我们可以添加新代码来扩展系统的行为。

我们不能对已有的代码进行修改。

10、什么是MVC

参考答案:

MVC(Model/View/Controller)模式,包括三类对象。

Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。

模型是应用程序的主体部分。

模型表示业务数据,或者业务逻辑。

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

MVC式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。

使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。

11、画出4+1视图,并描述各个部分的作用

参考答案:

视图名称

(1)进程or过程视图

(2)开发视图

(3)逻辑视图

(4)物理视图

(5)场景

组件(元素)

(6)任务

模块、子系统

(7)类、类层次

(8)节点

步骤、脚本

连接工具

消息、RPC、会话、广播等

编译依赖性、with语句、include

关联、继承、约束

通信媒体、LAN、WAN、总线等

•Scenario(usecase)

•逻辑视图(LogicalView),设计的对象模型(使用面向对象的设计方法时)。

•过程视图(ProcessView),捕捉设计的并发和同步特征。

•物理视图(PhysicalView),描述了软件到硬件的映射,反映了分布式特性。

•开发视图(DevelopmentView),描述了在开发环境中软件的静态组织结构。

12、Factory与AbstractFactory的区别与联系

参考答案:

工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。

工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。

工厂方法创建一般只有一个方法,创建一种产品。

抽象工厂一般有多个方法,创建一系列产品。

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。

工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

简而言之

工厂方法模式:

1.一个抽象产品类,可以派生出多个具体产品类。

2.一个抽象工厂类,可以派生出多个具体工厂类。

3.每个具体工厂类只能创建一个具体产品类的实例

抽象工厂模式:

1.多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

2.一个抽象工厂类,可以派生出多个具体工厂类。

3.每个具体工厂类可以创建多个具体产品类的实例。

13、Mediator和Facade的区别与联系

参考答案:

Facade模式和Mediator模式都是用于连接多个类,简化类之间的联系。

1.Facade模式是把大系统藏在自己后面,由自己来做一个通用的接口。

使用者不用关系下面的具体类,只要了解Facade的接口,就可以使用系统了。

这几乎是最常用的设计模式了。

2.Mediator也是连接大系统,但是它的客户并不是系统的使用者,而是系统中的各个模块;相应的,它的目的只是为了降低系统中各个模块之间的依赖关系。

Facade模式是从上面施加策略,Mediator是从下面施加策略。

1.既然调用者只是发出命令,由Facade对象解释命并调用系统中的模块来执行命令,那么Facade对象就可以在执行时,控制各个模块之间的关系了。

由于是从调用这一端执行,所以可以说,这是从上面施加策略,或者可以说是一种主动策略。

2.Mediator知道所有的模块,和他们之间的关系。

而各个模块并不知道Mediator的存在,它们能看到的,只是一个消息系统,有事就发消息。

当然了,Mediator就在消息系统的另一端倾听。

一旦收到了某个模块的消息,他就开始调用相关的其他对象,牵动整个系统。

策略就是如此在系统内部运转,这是这次除了Mediator自己以外,没有对象知道,策略已经开始运作了。

所以可以说,这是从下面施加策略,或者可以说是一种被动策略。

14、什么是软件体系结构的形式化描述?

常用的有哪些?

参考答案:

所谓的软件体系结构的形式化描述是采用形如数学符号的语句和语义来刻画,软件整体系统的功能,行为以及软件系统的规划和说明。

常用的软件体系结构的形式化描述有:

类属理论,Znotion,CSP,CHAM

分类:

描述软件体系结构配置的ADL:

CHAM

描述软件体系结构实例的ADL:

Rapide

描述软件体系结构风格的ADL:

Wright

目标:

精确的语义描述

支持分析推理

15、模式与抽象在软件领域中的作用

模式的作用:

1)用一种标准的方式描述设计经验。

2)为设计者提供一种通用的语言。

3)增加复用性,减少设计的多样性。

4)增强设计变更的灵活性。

5)提高设计文档的质量。

6)增强设计的可理解性。

抽象的作用:

1)抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同性而暂不考虑它的细节,不考虑其他因素。

即把非本质的性质隐藏起来,只突出那些本质的性质,以减轻人们思考和注意的负担。

软件工程过程中的每一步都可以看作是对软件解决方法的抽象层次的一次细化

2)抽象过程使得设计阶段创建的对象模型仅仅用来描述系统应该做什么,但不必关心如何去做,从而清晰的划清软件设计与软件编码的界限。

3)数据抽象是面向对象设计的理论基础。

4)过程抽象忽略任务具体完成的过程,而只精确描述该任务所要完成的功能。

16、根据你已经掌握的知识经验,总结你对软件体系结构以及它在软件设计开发中作用的认识

参考答案:

软件体系结构是一种对软件本身的抽象,它包含了软件的宏观特征,基本特征,以及概念抽象,软件体系结构在软件工程与软件过程的研究与发展中,起了重要的推进作用,软件体系结构是软件整体结构的基本的可供选择的主题和基本形态。

软件体系结构的重要性主要用于在软件设计与开发的周期的各个阶段中:

1.软件项目的总体规划阶段:

软件体系结构为项目可行性分析,投资规模,风险预测等具有指导性意义

2.在项目的需求分析阶段:

让开发商与客户更加深入理解软件的模式,以及软件的规范,让客户需求得到更清晰的阐述,让设计更加明确,更加针对需求。

3.在项目设计分析阶段:

要从项目的实现角度出发,通过体系结构进行深入研究。

4.在项目实施阶段:

体系结构有助于开发人员更好的协调分工,更好的进行协作。

5.在评估阶段:

体系结构有助于进行项目质量分析,评审。

6.在系统维护与开发中,体系结构是升级与维护必须遵守的原则,有利于系统的实现升级。

程序设计题:

单例模式

参考答案:

publicclassSingleton{

privatestaticSingletonsingleton=newSingleton();

privateSingleton(){

System.out.println("已产生对象实例。

");

}

publicstaticSingletongetInstance(){

//Lazy

//ifsingleton==nullsingleton=newSingleton();

returnsingleton;

}

}

publicclassMain{

publicstaticvoidmain(String[]args){

System.out.println("Start.");

Singletonobj1=Singleton.getInstance();

Singletonobj2=Singleton.getInstance();//handle

if(obj1==obj2){

System.out.println("obj1和obj2是同一对象实例。

");

}else{

System.out.println("obj1跟obj2并非同一对象实例。

");

}

System.out.println("End.");

}

}

观察者模式

参考例子

publicinterfaceSubject{

publicvoidregisterObserver(Observero);

publicvoidremoveObserver(Observero);

publicvoidnotifyObserver();

}

publicinterfaceObserver{

publicvoidupdate(floattemp,floathumidity,floatpressure);

}

publicinterfaceDisplayElement{

publicvoiddisplay();

}

publicclassweatherDataimplementSubject{

privateArrayListobservers;

privatefloattemperature;

privatefloathumidity;

privatefloatpressure;

publicweatherData(){

Observers=newArrayList();

}

publicvoidregisterObserver(Observero){

//有新的观察者加入时

(1)Observers.add(o);

}

publicvoidnotifyObservers(){

//状态更新时,通知各observer做状态的改变

(2)For(inti=0;i

Observerobserver=(observer)observers.get(i);

Observer.update(temperature,humidity,pressure);

}

}

publicvoidmeasurementsChanged(){

//度量值发生变化时通知observer

(3)NotifyObservers();

}

publicvoidsetMeasurements(floattemperature,floathumidity,floatpressure){

this.temoreature=temperature;

this.hunidity=humidity;

this

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1