软件评测师写作专栏之设计模式和软件系统维护24

各位学员大家好,大家在学习软件工程知识时,肯定会学到设计模式和软件系统四种维护的基础知识,为了让大家快速掌握这方面的知识点,接下来就带领大家一起来学习一下!

例题1:系统交付后,修改偶尔会出现乱码的问题,该行为属于( )维护。

A、正确性

B、适应性

C、完善性

D、预防性


【昊洋解析】:本题考查系统维护的基础知识。

常见的系统维护主要包括以下四种:

1)、正确性维护(改正性维护):指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误,即更正交付后发现的错误。这方面的维护工作量要占整个维护工作量的17%~21%。所发现的错误有的不太重要,不影响系统的正常运行,其维护工作可随时进行,而有的错误非常重要,甚至会影响整个系统的正常运行,其维护工作必须制定计划,进行修改,并且要进行复查和控制。

2)、适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%~25%。由于目前计算机硬件价格不断下降,各类系统软件层出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求,企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。进行这方面的维护工作也要像系统开发一样,有计划、有步骤地进行。

3)、完善性维护:为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。这些功能对完善系统功能是非常必要的。另外,它还包括对处理效率和编写程序的改进,这方面的维护占整个维护工作的50%~60%,比重较大,也是关系到系统开发质量的重要方面。这方面的维护除了要有计划、有步骤地完成外,还要注意将相关的文档资料加入到前面相应的文档中。

4)、预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。例如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。这方面的维护工作量占整个维护工作量的4%左右。

很多学员分不清楚适应性维护和预防性维护,我们来进行以下区分:当环境已经发生了改变,就需要进行适应性维护,当环境还没有改变,为了应对未来的改变就是预防性维护。

题干中明确指出系统交付后,修改偶尔会出现乱码的问题,所以该行为属于正确性维护,故该题目的正确答案为:A。


例题2:下图是( 1 )设计模式的类图,该设计模式的目的是( 2 ),图中,Decorator和Component之间是( 3 )关系,ConcreteDecorator和Decorator之间是( 4 )关系。


1、A、适配器   

B、桥接   

C、装饰   

D、代理

2、A、将一个类的接口转换为客户期望的另一种接口,使得原本因接口不匹配而无法合作的类可以一起工作

B、将一个抽象与其实现分离开,以便两者能够各自独立地演变

C、为一个对象提供代理以控制该对象的访问

D、动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能

3、A、依赖和关联  

B、依赖和继承 

    C、关联和实现  

D、继承和实现

4、A、依赖   

B、关联   

C、继承   

D、组合

【昊洋详解】:本题考查设计模式的基础知识。

选项中出现的四种设计模式分别为:

1)、适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2)、桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。

3)、装饰模式(Decorator):指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。目的是动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生成子类更加灵活。

4)、代理模式(Proxy):为一个对象提供代理以控制该对象的访问。

其实从类图的单词Decorator也可以判断出该设计模式为装饰模式。当然这是一种取巧的做题方法,不过如果能善于利於单词的特殊性,就可以很快地选择出正确答案。另外也可以从类图的关系中判断出这是装饰模式的特点:图中Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这个对象添加一些职责;Decorator维持一个指向Compnonent对象的指针,并定义一个与Component接口一致的接口;ConcreateDecorator向组件添加职责。

装饰模式可以动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能。这是2018年在上午考察的真题,建议大家把题目中出现的四种设计模式的类图和目的都仔细学习一下。

故该题目的第一空的正确答案为C,第二空的正确答案为D。

 

类之间一共存在六种关系(各种关系按照从强到弱顺序):泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 。

1)、泛化关系(继承关系):是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。图示是带空心三角箭头的实线,箭头指向父类。

2)、实现关系:是一种类与接口的关系,表示类是接口所有特征和行为的实现。图示是带空心三角箭头的虚线,箭头指向接口。

3)、组合关系:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系。图示是带实心菱形的实线,菱形指向整体。

4)、聚合关系:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系。图示是带空心菱形的实心线,菱形指向整体。

5)、关联关系:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。图示是带普通箭头的实心线,指向被拥有者。

6)、依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。图示是带箭头的虚线,指向被使用者。

综上所述:Decorator和Component之间有一个带空心三角箭头的虚线和带普通箭头的实心线,所以应为实现与关联的关系。ConcreteDecorator和Decorator之间是一个带空心三角箭头的实线,所以是继承(泛化)关系。故该题目的第三空的正确答案为C,第四空的正确答案也是C。


巩固练习题

(1)下图是(1 )设计模式的类图,该设计模式的目的是(2 ),图中, Abstraction和RefinedAbstraciton 之间是(3 )关系,Abstraction 和Implementor之间是( 4 )关系。


1、A、适配器   

B、桥接  

C、装饰  

D、代理

2、A、将一个类的接口转换为客户期望的另一种接口,使得原本不匹配的接口而无法合作的类可以一起工作

B、将一个抽象与其实现分离开,以便两者能够各自独立地演变

C、动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能

D、为一个对象提供代理以控制该对象的访问

3、A、依赖   

B、关联  

C、继承    

D、聚合

4、A、依赖   

B、关联  

C、继承    

D、聚合


(2)、由于硬件配置的变化,如机型,终端或打印机等导致软件系统需要进行修改维护,这类维护属于()。

A、改正性      

B、适应性        

C、完善性    

D、预防性


(3)对现有软件系统中一些数据处理的算法进行改进,以提高效率,从而更快地响应用户服务要求。这种行为属于()维护。

A、正确性    

B、适应性    

C、完善性    

D、预防性


练习题参考答案

(1)解析:本题考查设计模式的基础知识。

选项中出现的四种设计模式分别为:

1)、适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2)、桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。

3)、装饰模式(Decorator):指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。目的是动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生成子类更加灵活。

4)、代理模式(Proxy):为一个对象提供代理以控制该对象的访问。

大家可以看到,这也是一道真题,选项中出现的四种设计模式没有变,所以这四种设计模式的重要性可见一斑,大家一定要熟悉掌握。题目考察的是桥接模式,类图如下所示:


其中Abstraction定义抽象类的接口,维护一个指向Implementor 类型对象的指针。RefinedAbstraction扩充由Abstraction定义的接口。Implementor定义实现类的接口,该接口不一定要与Abstraction 的接口完全一致; 事实上这两个接口可以完全不同。一般来说,Implementor接口仅提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作。Concretelmplementor实现Implementor接口并定义它的具体实现。

故该题目的第一空的正确答案为B,第二空的正确答案也为B。

从例题的详解中可知六种类图关系之间的图示表示,Abstraction和RefinedAbstraciton 之间用的是一个带空心三角箭头的实线,所以是继承(泛化)关系。Abstraction 和Implementor之间是带空心菱形的实心线,所以他们之间是聚合关系。故该题目的第三空的正确答案为C,第四空的正确答案是D。

 

(2)解析:本题考查系统维护的基础知识。

常见的系统维护主要包括以下四种:

1)、正确性维护(改正性维护):指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误,即更正交付后发现的错误。

2)、适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%~25%。由于目前计算机硬件价格不断下降,各类系统软件层出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求,企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。进行这方面的维护工作也要像系统开发一样,有计划、有步骤地进行。

3)、完善性维护:为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

4)、预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。

很多学员分不清楚适应性维护和预防性维护,我们来进行以下区分:当环境已经发生了改变,就需要进行适应性维护,当环境还没有改变,为了应对未来的改变就是预防性维护。

题干中明确指出由于硬件配置的变化,如机型,终端或打印机等导致软件系统需要进行修改维护,这属于环境已经发生了变化,需要进行适应性维护,故该题目的正确答案为:B。

 

(3)解析:本题考查系统维护的基础知识。

常见的系统维护主要包括以下四种:

1)、正确性维护(改正性维护):指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误,即更正交付后发现的错误。

2)、适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。

3)、完善性维护:为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

4)、预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软/硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。

题干中明确指出对现有软件系统中一些数据处理的算法进行改进,以提高效率,从而更快地响应用户服务要求。这属于改善性能而进行的修改,需要进行完善性维护,故该题目的正确答案为:C。

写于2020年10月9日

作者:昊洋讲师

版权所有,侵权必究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章