体系结构作业简答

  • 格式:doc
  • 大小:30.00 KB
  • 文档页数:5

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题:简述“4+1”模型?

答:“4+1”模型是采用多视图模型的方法描述软件体系结构,为了最终能够处理赋予挑战性的,大规模的软件系统,该模型由五个视图组成:

1.逻辑视图:主演支持系统的功能需求,及系统提供给最终用户的服务,在面向对象技术中,通过抽象,封装和继承,用对象模型来代表逻辑视图,用类图来描述逻辑视图;

2.进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求,它强调并发性,分布性,系统集成和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构,系统集成人员:性能可扩充性和吞吐量等;

3.物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能,规模,可靠性等,解决系统拓扑结构,系统安装,通讯等问题。当环境改变时,物理视图对系统其他视图的影响最小;

4.开发视图:也称模块视图,主要侧重于软件模块的组织和管理,主要考虑软件内部的需求(软件开发的容易性,软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性),通过系统输入输出关系的模型图和子系统图来描述,最好采用4-6层子系统;

5.通过选择出的一些用例(场景)对体系结构加以说明,它们构成了第五个视图:场景(可以用文本表示,也可以用图形表示)可以看做是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发体系结构是,它可以帮助设计者找到体系结构的构件和他们之间的作用关系。同时,也可以用场景来分析一个特定是视图,或描述不同视图构件间是如何相互作用的;

对于不用的软件体系结构来说,侧重的角度也有所不同。逻辑视图和开发视图是描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。

软件体系结构的基本研究内容:

1、软件体系结构描述研究:软件体系结构描述语言,使用“4+1”模型描述软件体系结构和使用UML描述软件体系结构。

2、软件体系结构设计研究:

体系结构设计方法,体系结构设计原理,体系结构设计模式,体系结构设计风格

3、基于体系结构的研究开发方法

4、软件体系结构评估

5、特定领域的体系结构框架

6、软件体系结构支持工具

问:分层体系结构综述?

答:软件体系结构分为三层,分别是:表示层(提供与用户交互的界面),业务逻辑层(实现各种业务逻辑),数据访问层(负责存放和管理应用的持久性业务数据)。

这样的层次风格是从内向外提供服务的构件出发,沿着连接关系递次搜索各构件和连接子,如果形成的拓扑结构是一个有向无圈图(典型情况下是一个线性结构),那么这个系统的体系结构风格就是层次式的。这种设计风格便于将复杂的系统进行分解,对系统进行改动是,只需改动相应的那一层,因而便于系统的维护;同时也便于构件替换:只要保持接口一致,就可以将某一层的软件替换掉,也可以用不同的方法实现,而不会影响到系统的其他部分;但是并非所有系统都能以分层方式实现,对有些系统要精确地划分其抽象层次往往是十分困难的。

每个层都由一组相关的类或组件构成,共同完成特定的功能;层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的API,而下层组件不应该依赖上层组件;每个层对上层公开API,但具体的实现细节对外透明,当某一层的实现发生变化,只要他的API不变,就不会影响其它层的实现。

恰当的软件分层,将会提高软件的伸缩性,可维护性,可扩展性,可重用性,可管理性;但是并不代表分层越多就约好,对软件设计人员来说,软件分层越多,对他们的要求就越高。在设计阶段,必须花时间构思合理的体系结构。此外,软件层越多,调试也会越困难。如果应用规模比较小,业务逻辑很简单,软件层数少反而会简化开发流程并提高开发效率。

运用这种层次风格的典型应用有:开放系统互联(OSI)七层网络模型,Windows NT操作系统的内核结构。

体系结构风格大致可分为以下几类

①数据流风格:批处理序列、管道过滤器

②调用/返回风格:主程序/子程序、面向对象风格、层次结构

③独立构建风格:进程通讯、事件系统

④虚拟机风格:解释器、基于事件的系统

⑤仓库风格:数据库系统、超文本系统、黑板系统

较为经典的体系结构风格有

数据抽象和面向对象风格:

优点:面向对象的风格可以使对象之间相互隐藏自己的表示,改变自己而不会影响到其他对象

缺点:必须知道对象的标识才能进行对象间的交互;必须修改所有显式调用它的其它对象,并消除一些带来的副作用

管道和过滤器风格:

优点:使构建具有高内聚、低耦合的特点,利于软件的重用,系统维护和性能增强并且支持任务并行运行

缺点:通常导致系统成为批处理的结构,不适合处理交互的应用,增加了数据的解析和合成工作,导致系统的性能下降

基于事件的隐式调用:

优点:为软件重用提供了强大的支持,为改进系统带来了方便

缺点:不能保证进程的调用顺序,有一定程度上的数据交换问题,全局性能和资源管理也一定程度上成为要考虑的问题

分层系统:

优点:支持基于抽象程度递增的系统设计,支持功能增强,支持重用

缺点:并不是每个系统都能划分分层的模式,很难找到合适的正确的层次抽象方法

C2风格:

C2风格构件相对独立,构件间的依赖性相对减小;系统中的构件可以将任意复杂度的功能封装在一起,所有构件间的联系是通过中间件来实现通讯的

仓库风格:

在仓库风格中有中央数据结构和独立构件。中央数据结构说明当前的状态,独立构件在中央数据结构存储上操作

用例是一种描述系统需求的方法,其描述的过程就是用例建模。

用例图的主要构成元素:

1.参与者:

参与者指存在于系统外部并与该系统发生交互的人或者其他系统,他们代表的是系统的使用者或者使用环境。

2.用例:

用例表示系统所提供的服务,它定义了系统是如何被参与者所使用的,描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。

3.关联:

关联表示参与者和用例之间的对应关系,它表示参与者使用了系统的哪些服务(用例)。

类图是静态结构模型额图形化,它由各种静态关系连接器分类器元素而构成。类图是一组静态的描述模型元素相互连接的集合图形。

类图模型元素包括:

类、接口和它们的之间的关系。

面向对象原则概述:

1、开-闭原则:

定义:一个软件实体应当对扩展开放,对修改关闭。

举例:开-闭原则解决回家开灯、离家关灯过程增添电视机、收音机的问题。对象为家、灯,操作分为开、关。现在房子加上电视机、收音机等,可直接创建对象执行操作,只是添加而不修改源码。

2、里氏替换原则:

定义:子类型必须能替换基类型。

举例:里氏替换原则解决正方形替换长方形的问题。创建一个新的抽象类,强调所有子类所能做的共同行为,将继承关系改写为聚合关系。这样子类正方形就可以替换基类型了。

3、依赖倒置原则:

定义:抽象不应当依赖于细节;要针对接口编程,不要针对实现编程。

举例:依赖倒置原则解决账号、账号种类、账号状态的关系。账号不依赖于账号种类和账号状态。

4、接口分离原则:

定义:不强迫类实现它不需要的方法;使用多个专门的接口而不使用单一的总接口

举例:定制服务的出现。客户端需要什么,那么就向他提供什么,不需要的则不提供。以对付不同的客户端,减少系统维护量。

5、单一职责原则: