软件设计与体系结构题目与答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计与体系结构题目与答案
1.各种性能指标及如何到达各种性能指标的方法
(1)防止变异模式:是如何设计对象,子系统和系统,使这些元素内部的变化或不稳定性不会对其他元素产生不良影响。
解决方案:识别预测的变化或不稳定之处,分配职责用以创建稳定借口。
(2)依赖反转原理:把你的类从局的现实中隔离开,使他们依赖于抽象类或接口。
它促进了代码面向接口而不是实现,这通过保证对实现的低耦合来增加系统的灵活性。
2.常用的中间件有那几种类型
(1)常见的对象请求代理架构
(2)面向消息的中间件
(3)J2EE
(4)消息代理
(5)业务过程代理
3.有那些常见架构风格
(1)管道和过滤器架构风格
(2)面向对象风格
(3)隐式调用风格
(4)客户-服务器风格
(5)分层风格
(6)仓库风格
(7)解释程序风格
(8)过程控制风格
4.架构师需要的核心技能是什么
(1)涉众之间的交流
(2)技术知识
(3)软件工程学
(4)风险管理
5.什么是软件架构
软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。
软件架构描述的对象是直接构成系统的抽象组件。
各个组件之间的连接则明确和相对细致的描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。
在面向对象领域中,组件之间的连接通常用接口(计算机科学)实现。
6.什么是架构风格
一组原则。
你可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。
7.什么是架构视图
一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,从而省略了此方面无关的实体。
8.各种架构风格的组件和连接器是什么
1.管道和过滤器架构风格:
适用于需要定义一系列的执行规则数据的独立运算,组件在输入时读数据流,在输出时产生数据流
组件:称为过滤器,应用于对局部的输入流的转换,经常增长的计算,因此,在输入结束前输出就开始了
连接器:称为管道,给流提供管道,把一个过滤器的输出传输到另一个输入。
2.面向对象风格:
适用于主要问题识别和保护信息的相关主体
数据代理和他们相关的操作封装在一个抽象数据类型里面
组件:对象
连接器:功能和过程调用
3.客户-服务器风格:
适用于涉及到分布式的数据和跨越一系列的组件的处理
组件:服务器、客户端
连接器:网络
4.分层风格:
适用于设计到分布式的能够分层的组织的类的服务,每层给它的上一层提供服务,同时作为下一层的客户端。
只有仔细的从内层选择选择过程,才能用于他们接近的外层。
组件:典型的过程的集合
连接器:典型的在有限的可见性下的过程调用
5仓库风格:
适用于主要问题的建立、增加和维护复杂信息的主体部分,信息一定要能够用很多方式操作。
经常需要长期的存在。
组件:主要的数据结构能够表示出系统的正确状态,操作主要数据结构的独立组件的集合
连接器:典型的过程调用或是直接内存访问
6.解释程序风格:
适用于执行解决方案的最合适的语言或是机器不是直接可用的
组件:包括一个状态机,有一个执行引擎和三个记忆状态:当前执行引擎的状态、程序被翻译、当前被翻译程序的状态
连接器:过程调用、直接内存访问
7.过程控制风格:
适用于目的是维护特殊过程的输出属性在给定参考值的情形下
组件:过程定义、控制算法
连接器:数据流关系、过程变量、设置断点、传感器
8.隐式调用风格:
应用于涉及到组件的松耦合集,其中的每个都执行一些操作,还可能允许其他的操作组件:一个或多个事件
连接器:广播系统
9.GRASP模式的具体内容
1.创造者
分配给类B职责来创造类A的一个实例如果:
(1)B聚合A的对象
(2)B包含A的对象
(3)B记录A的对象的实例
(4)B紧密地使用A的对象
(5)B被创建时有初始化的数据传递给
2.专家
在设计对象(类)时,如果某个类能够在某方面具有完整信息,足以实现某责任,就将这个责任分配给这个类,
3.控制器
控制器是在用户接口层上的第一个对象,负责接收和处理系统的操作信息。
4.低耦合
测量存在于模块之间的依赖程度
5.高内聚
测量一个共享的模块内元素的相关性
一个单独模块执行任务的程度是功能相关的
6.多态
当相关的供选方案或行为随着类型的变化而变化时,给行为分配职责—使用多态操作—来适合行为变化的类型。
7.纯虚构
分配一系列高度聚合的职责给虚假的类或是不表现某事完成的领域问题概念的有用的类,它支持高内聚、低耦合、可重用。
8.间接
问题:如何分配职责避免直接耦合?如何减弱对象的耦合?
解决方案:分配职责给中间的调解对象来调解两个组件之间的关系。
9.防止编译
问题:如何设计对象,子系统和系统,使其内部的变化和不稳定不会对其他元素产生不良影响?
解决方案:识别设计变化或不稳定之处,分配职责用以在这些变化之外创建稳定接口。
GRASP用职责设计对象:"Designing Objects
with Responsibilities".它包含了9个基本模式: 1.信息专家(Information expert) 2.创建者(Creator) 3.高内聚(High Cohesion) 4.低耦合(Low Coupling) 5.控制器(Controller)6.多态性(Polymorphism)7.纯虚构(Pure Fabrication)8.间接性(Indirection)9.变化预防(Protected Variations)GRASP的主要特征:-对象职责分配的基本原则。
-主要应用在分析和建模上。
GRASP的核心思想的理解:自己干自己的事(职责的分配)自己干自己的能干的事(职责的分配)自己只干自己的事(职责的内聚)
10.OO设计的五个基本原则及课件中讲述的其它软件原理1.单一职责原则
这个原则和关注点分离紧密联系。
它陈述了每个对象应该只有一个理由去改变,单一聚焦在职责上。
通过依附这个原则,你避免了庞大的类的设计问题,那就像瑞士的军刀。
有了精确的对象,你再次增加了系统的可读性和可维护性。
2.开闭原则
这个原则陈述了类应该对扩展开放,对修改关闭,那样你就能够添加新的特征,扩展一个类而不用改变它内部的行为。
这个原则旨在避免破坏存在的类及依赖它的其他类,这使得你的整个应用程序中产生故障和错误的涟漪。
3.Liskov替换原则
Liskov替换原则要求你应该能够使用任何衍生出的类代替父类,不用修改就有同样的行为。
这个原则与开闭原则一致,它保证了一个衍生出的类不影响父类的行为,或者说,衍生出的类必须能够被它们的基类替代。
4.接口分离原则
这个原则是j将一个抽象方法分裂成几组职责,给这些组分配接口来防止客户端实现一个很大的接口,这个接口容纳了很多它们不使用的方法。
目的是为了让类使用相同的接口只需要实现一些具体的方法,而不是有很多方法的庞大的接口。
5.依赖反转原则
把你的类从具体的实现中隔离开,使它们依赖于抽象类或接口。
它促进了对接口而不是实现的译码,这通过保证对实现的低耦合来增加系统的灵活性。
11.企业应用架构在各层有那些主要的模式
三层架构的系统:表现层实现用户界面,在领域层实现领域逻辑,在数据源层存取数据1.表现层(Presentation):
提供服务、显示信息(如在WINDOWS或HTML页面中,处理用户请求,HTTP请求,命令行调用,批处理API)
2.领域层(Domain):
领域逻辑,系统中真正的核心。
也称为业务逻辑,它就是应用程序必须做的所有领域相关工作:包括根据输入数据或者已有数据进行计算,对从表现层输入的数据进行验证,以及根据从表现层接收的命令来确定应该调试哪些数据源逻辑。
3.数据源层(Data Source):
与数据库、系统消息系统、事务管理器及其他软件包通信。
最主要的数据源逻辑就是数据库,主要责任是存储持久数据。
/doc/e08505742.html,rman的敏捷UP 设计方法的具体步骤
(1)初始:大体上的构想、业务案例、范围和模糊评估。
(2)细化:已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估。
(3)构造:对遗留下来的风险较低和比较简单地元素进行迭代实现,准备部署。
(4)移交:进行beta测试和部署。
13.4+1视图
逻辑视图:描述架构的重要元素及它们之间的关系
过程视图:描述架构元素之间的并发和通信
物理视图:描绘主要的过程和组件是如何映像到硬件上的
开发视图:俘获软件组件内部的结构,如配置管理工具
架构用例:俘获架构的需求;和不止一种视图相关
14.应用的集成策略
15.掌握:命令模式,状态模式,装饰模式,观察者模式,策略模式,单例模式,工厂方法模式,抽象工厂模式,组合模式,适配器模式,外观模式的UML图和java代码
命令模式(别名:动作,事务)
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
状态模式(别名:状态对象)
允许一个对象在其内部状态改变时改变它的行为。
观察者模式(别名:依赖,发布-订阅)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。
策略模式(别名:政策)
定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。
本模式使得算法可独立于使用它的客户而变化。
单件模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
工厂方法模式(别名:虚拟构造)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method使一个类的实例化延迟到其子类。
抽象工厂模式(别名:配套)
提供一个创建一系列(相互依赖)对象的接口,而无需指定它们具体的类。
组合模式
将对象组合成数形结构以表示“部分-整体”的层次结构。
Composite使得用户对单个对象和组合对象的使用具有一致性。
适配器模式(别名:包装器)
将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作外观模式
为系统中的一组接口提供一个一致的界面,Fa?ade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。