您的当前位置:首页正文

软件体系结构期末试题及答案

2023-03-11 来源:好走旅游网


一.名词解释

1. SOA

即service-oriented architecture,面向服务架构。它是一个组件模型,它

将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接 口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于 实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的 系统中的服务可以以一种统一和通用的方式进行交互。

2. Architecture Styles

定义为根据结构组织模式构成的软件系统族,表达了部件和他们之间的

关系。

例如客户/服务器(Client /Server)结构、浏览器/服务器(Browser/Server) 结构、正交(Orthogonal)结构、专用领域(Domain Specific Styles)、 MVC、微核(Microkernel)、反射(Reflection )、代理(Proxy )等。

3. Framework

是整个或部分系统的可重用设计,

从设计模式角度来看,框架为大粒度的可复用的部件。从体系结构角度来 看,框架是一个领域体系结构

4. MVC

MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制

Controller)。

MVC模式的目的就是实现Web系统的职能分工。

Model是应用对象,所有的操作都在这里实现,它若需要取得视图中的对象或更新视图,需通过控制器来进行处理。

View是模型在屏幕上的表示,模型在进行操作后,其结果是通过视图显示的。

Controller用于管理用户与视图发生的交互,定义用户界面对用户输入的响应方

式。一旦用户需要对模型进行处理,不能直接执行模型,而必须通过控制器间接实现的。

5. DSSA

Domain Specific Software Architecture: 特定领域软件体系结构。建立一种

基于体系结构的方法,这需要对体系结构,其一般性构件和互联,以及客户的需求按何种方式由构件来集成都要达成共识。

二.连线

三.简答

1. SA的形式化描述,常用的有哪些?

理论的形式化方法 1. Z Notation 2. CSP

3. 类属理论

4. 化学抽象机模型

2. 画图,层次结构

3. SA是?研究范畴?

软件体系结构是软件在设计构成上的基本、可供设计选择的形态和总体 结构。

A:体系结构描述语言与工具

B:产品线与标准

C:软件体系结构风格及风格应用 D:体系结构文档化

4. 层次结构有何优缺点?什么是松弛的层次结构? 优点:

1.层次的复用性

2.对标准化的支持,允许在不同层使用来自不同商家的产品 3.依赖本地化,这样做便于支持系统的可移植性和可测试性 4.可替换性,独立层次的实现能够被功能相同的模块替换。 缺点:

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

2.低效率。分层结构通常比单一层次的结构效率更低。 3.包含多余不必要的工作。 松弛的层次系统

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

(1) 每层可以使用其下面所有层的服务而不仅仅是相邻层的服务 (2) 有些服务提供给相邻的上一层,而其余的服务则提供给高于 它的所有层

2.灵活性和性能的提高以牺牲可维护性为代价 3.经常用于系统软件,而不常用于应用软件的设计 (1) 系统软件比起应用软件来很少修改

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

5. 功能与非功能特性?非功能特性的重要性

功能特性主要是直接针对客户的功能需求,多数是容易感知和判断的。 非功能特性主要包括系统的:可变性,互操作性,效率,可靠性,可 测试性,可重用性。

不成熟的客户、投资决策者、设计者往往片面追求表明功能的要求而忽略内在的结构和非功能特性。软件系统越大越复杂、生命周期越长,非功能特性就越重要。

6. OCP的思想

开放-封闭法则,软件组成实体应该是可扩展的,但是不可修改的。 OCP认为我们应该试图去设计出永远也不需要改变的模块。我们可以添 加新代码来扩展系统的行为。我们不能对已有的代码进行修改。符合该 法则便意味着最高等级的复用性和可维护性。

7. 工厂与抽象工厂的区别与联系

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

工厂方法模式:

一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例 抽象工厂模式:

多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。

8. mediator与Façade的区别与联系

 Facade模式和Mediator模式都是用于连接多个类,简化类之间的联系。  Facade模式是把大系统藏在自己后面,由自己来做一个通用的接口。使

用者不用关系下面的具体类,只要了解Facade的接口,就可以使用系统了。这几乎是最常用的设计模式了。

 Mediator也是连接大系统,但是它的客户并不是系统的使用者,而是系

统中的各个模块;相应的,它的目的只是为了降低系统中各个模块之间的依赖关系。

 所谓策略,即如何使用系统中的模块。两个模式之间更内在的关系。即他们

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

9. 画4+1视图,各个的作用

逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务。 开发视图:主要侧重于软件模块的组织和管理。

进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求。 物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、 可靠性等。

场景:可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。

10. 模式或抽象在软件领域中的作用 (主观)

四. 代码

1. 观察者模式

public class WeatherData implements Subject{ private ArrayList observers; private float temperature; private float humidity; private float pressure; public WeatherData(){ observers = new ArrayList(); } public void registerObserver(Observer o){ observers.add(o); } public void removeObserver(Observer o){ int i = observers.indexOf(o);

pressure){

}

if(i >= 0){

observers.remove(i); } }

public void notifyObservers(){ for(int i = 0; i < observers.size(); i++){ Observer observer = (Observer) observers.get(i); observer.update(temperature, humidity, pressure); } }

public void measurementsChanged(){ notifyObservers(); }

public void setMeasurements(float temperature, float humidity, float }

this.temperature = temperature; this.humidity = humidity; this.pressure = pressure; measurementsChanged();

2. 适配器模式 (1)继承型

(2)委托型

3. 单例模式

因篇幅问题不能全部显示,请点此查看更多更全内容