軟件評測師寫作專欄之設計模式和軟件系統維護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日

作者:昊洋講師

版權所有,侵權必究

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