当前位置:文档之家› 《软件体系结构与设计》考点

《软件体系结构与设计》考点

《软件体系结构与设计》考点
《软件体系结构与设计》考点

《软件体系结构与设计》考点-王同喜

一、简答题(3*10’=30’)

1.软件设计与软件编码的区别?

软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。

软件编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码

整个软件开发过程是由架构师或者系统分析师来设计,而编码是由程序员来搞定,程序员一般只是完成某一功能模块

2.软件体系结构的模式有哪几种?含义?(如:分层模式)

抽象分层体系结构模式(层次体系结构模式)是一种软件体系结构模式,它将系统水平分割为多个抽象的层次。分层风格的体系结构是将系统组织成一个层次结构,每一层为上层提供服务,并作为下层的客户端。在分层风格的体系结构中,上层可以调用下层的服务。

TCP/IP网络是层次模式的最著名例子,TCP/IP共包含以下5个概念层:物理层、网络接口层、互联网层、传输层、应用层。

分层风格的体系结构有许多优点:(1)支持基于抽象程度递增的系统设计:使设计者可以把一个复杂系统按递增的步骤进行分解;(2)支持功能增强:因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;(3)支持复用:只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法;(4)可替换性。

但是,分层风格的体系结构也有弱点,如如更改行为的重迭等等。

调用/返回模式

异步消息通信模式

带回复的同步消息通信模式

3.软件体系结构风格常见的有哪些。主程序子程序风格、过滤器、管道

软件体系结构风格:能够用来具体描述软件系统控制结构和整体组织的一种体系结构,能够表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口。

常见的软件体系结构风格有:管道-过滤器风格、面向对象风格、事件驱动风格、分层风格、主程序/子程序、黑板系统等

主程序/子程序,传统的主程序/子程序组织结构模式将功能分解为一个控制层次,其中“主”程序调用一组程序构件,这些程序构件又去调用其他构件。很多系统的主要组织结构反映了所使用的编程语言的特点。对于一个没有模块化支持的语言,系统通常会被组织成一个主程序和一系列子程序的集合。主程序担当子程序的驱动器,为子程序提供一个控制环路,使子程序以某种次序顺序执行。主程序/子程序体系结构的构件分布在网络中的多台计算机上,则构成远程过程调用体系结构。

4.重构(迭代)的含义?与重新设计的区别?

1.重构改进软件设计

2.重构使软件更容易理解

3.重构帮助找到bug

4.重提高编程速度

5.重构并不是重新设计,而是对软件内部结构的一种调整,目的在于不改变软件可观察行为的前提下,调整其结构。

5.软件设计类有哪些?分别起什么作用?(编辑类领域类逻辑类控制类

持久类系统类)

外部类:在软件系统外部并通过接口连接到系统的类。外部用户类通过接口连接到用户交互类,与之交互;外部系统类通过接口连接到代理类,与之通信;外部设备类为设备I/O边界类提供输入或接受其输出。

边界类:用户交互对象直接与人类用户通信,从用户获取输入,通过标准

I/O设备(如键盘、显示器和鼠标)向用户提供输出;(操作员交互)代理对象通过接口连接到外部系统并与之通信,隐藏了通信的细节;(抓取和放置机器人代理)设备I/O边界对象对一个硬件I/O设备提供软件接口。(ATM读卡器接口)

实体类:存储数据,并通过它们提供的操作为这些数据提供有限的访问。(例子:账户类,传感器数据等)

控制类:提供了实现一个用例对象的总体协调。(例子:账户管理员类)

应用逻辑类:业务逻辑对象用于处理一个客户端请求的特定业务的应用逻辑,尽可能相互独立变化的业务规则封装(隐藏)到分离的业务逻辑对象中;(取款交易管理类)算法对象封装问题域中使用的算法。(巡航器)服务对象为其他对象提供服务,通常在面向对象的架构和应用中提供。(目录服务)

6.软件过程模型,每种模型的特点

所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段

提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。

过程模型总分为五大类:

1.惯例过程模型。

2.瀑布模型(又叫作生命周期模型)。

3.增量过程模型: 包括增量模型、RAD模型。

4.演化过程模型: 包括原型开发模型、螺旋模型、协同开发模型。

5.专用过程模型: 包括基于构件的开发模型、形式化方法模型、面向方面的软件开发模型

7.设计模式(应用场景)

设计模式描述了待解决的重复出现的设计问题,对问题的解决方案以及解

决方案工作的上下文。因此,设计模式是一个壁垒的粒度更大的复用模式。设计模式主要分三个类型:创建型、结构型和行为型。

创建型是指将对象实例化,这类模式都提供一个方法,将客户从所需要的

实例化的对象中解耦。

其中策略模式使用场景:要达到某一个目的,根据具体的实际情况,选择

合适的方法。适合于实现某一个功能有多种方案可以选择的情景

单件模式使用场景:用于创建独一无二的,只能有一个实例的对象,单件

模式给了我们一个全局的访问点,和全局变量一样方便又没有全局变量的缺点。

工厂模式使用场景:创建新对象,且该对象需要被被封装。(其中抽象工厂模式的应用场景:定义一个负责创建一组产品的接口,这个接口内的每一个方法都负责创建一个具体产品。抽象工厂的方法通常以工厂方法的方式实现。)结构型:把类和对象组合到更大的结构中

其中装饰者模式使用场景:增加行为到包装对象上,在不改变对象自身的

基础上,在程序运行期间给对象动态的添加职责,比如说点了一杯咖啡,添加其它调料的过程,或者类似于在炒菜的过程中,加油加盐加料酒的过程。

代理模式使用场景:使用代理模式创建对象,让代表对象控制某对象的访

问,被代理的对象可以是远程的对象,创建开销大的对象或者需要安全控制的对象。

外观模式使用场景:通过实现一个提供更合理的接口的外观类,可以将一个复杂的子系统变得容易使用,不仅简化了接口,也将客户从组件中解耦适配器模式使用场景:包装某些对象,让它们的接口看起来不像自己而像是被的东西,将类的接口转为想要的接口,以便实现不同的接口;就像你买了港版手机,附带的港版的充电器,你需要一个转接头才能使用,这个转接头的功能就类似于适配器。

行为型:类和对象如何交互和分配职责

其中模板模式使用场景:适用于算法的结构保持不变,同时由子类提供部分实现的情况。常被架构师用于搭建项目的框架,架构师定好了骨架,程序员继承了骨架的结构之后,负责往里面填空。

命令模式使用场景:有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的操作是什么,将对象的请求者从命令的执行者中解耦。使用此模式的优点还在于,command对象拥有更长的生命周期,可以在程序运行的任何时刻去调用这个方法。

迭代器模式使用场景:需要顺序访问一个组合内的多个对象的时候使用。

观察者模式使用场景:帮你的对象知悉现状,不会错过该对象感兴趣的事情,对象甚至可以在运行时决定是否需要继续被通知,就像你关注了京东商城某款产品的降价信息,当该商品降价,你就会通过短信或者邮件获得通知,而不用你每天都登陆去看了,这种情况下,京东商城就是主题(subject),作为客户的你就是观察者了。

状态模式使用场景:解决某些需要场景的问题。

8.面向对象设计原则

迪米特法则一个软件实体对其他实体的引用越少越好,或

者说如果两个类不必彼此直接通信,那么

这两个类就不应当发生直接的相互作

用,而是通过引入一个第三者发生间接交互

9.4+1视图

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

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

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

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

场景视图。

系统工程师首先接触物理视图,然后转向进程视图;用户、顾客、数据分析专家从逻辑视图入手;项目经理、软件配置人员则从开发视图来看待"4+1"视图。

10.软件质量属性有哪些

可维护性:在软件部署之后它能被更改的程度。

可修改性:在最初开发期间和最初开发之后软件能够被修改的程度。

可测试性:软件能被测试的程度。

可追踪性:每一个阶段的产品能够被追踪到上一个阶段产品的程度。

可伸缩性:在最初部署之后系统能够成长的程度。

可复用性:软件能够被复用的程度。

性能:系统满足其性能目标的程度,例如吞吐量和响应时间。

安全性:系统抵御安全威胁的程度。

可用性:系统能够解决系统失败问题的程度。

1.某小型企业欲开发一个基于WEB的考勤管理系统,客户对系统的要求不明

确,在这种情况下,采用哪种模型?【极限编程】

2.若把整个软件开发流程分为有效验证及评审构成,那么这个是什么模型?

【螺旋】

3.面向对象分析的任务不包括?【建模各对象的状态】

4.某服务器软件系统,对可用性和性能要求较高,以下什么设计可提高系统

的可用性?【主动冗余】,提高性能?【队列调度】

5.4+1视图用来描述系统的体系结构,那么该系统中,系统工程师侧重于?

【部署视图】,用户侧重【逻辑视图】

6.下列那一阶段,对软件架构的关注最多?【设计与实现】

7.采用面向对象设计的银行信息系统,账户类应该设计为什么类?【实体类】

,账户管理员?【控制类】

8.某游戏公司欲开发一款即时战略游戏,设计目标之一是能够支持玩家各自

创建地图,采用什么风格?【解释器】

9.某软件公司,服务端处理软件其核心是对客户端的消息的处理,包括

HTTP……,该公司架构师该采用什么风格?【管道过滤器】

10.Windows操作系统的图形界面,架构风格是?【黑板】

11.JAVA语言倡导一次编写到处运行,新架构上分析,属于什么风格?【虚拟

机】

12.某服务器软件对可用性、性能、可修改性要求较高,下列什么设计可提高

可修改性?【信息隐藏】提高性能?【队列调度】

1.主程序子程序、管道过滤器这两种风格的特点?这两种风格对系统的算法

变更、功能变更、性能、数据表示的变更有什么影响?描述软件体系结构风格有哪些(见第3题)

2.画架构示意图(类及类之间的关系)

3.区分度~~~~(>_<)~~~~

相关主题
文本预览
相关文档 最新文档