羅德興老師的教學歷程檔案 - 101-2 軟體工程 - 軟體工程期中考試複習
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    軟體工程期中考試複習

    軟體工程期中考試複習

    A. TERMINOLOGY

    1.      CMMI

    2.      SWEBOK

    3.      SDLC

    4.      XP

    5.      RUP

    6.      MDA

    7.      CIM

    8.      PIM

    9.      PSM

    10.  PM, PMBOK,

    11.
    UML

    12. Structured Method

    13. DFD

    14. DD

    15. Prototype Model

    16. Incremental Model

    17. Spiral Model

    18. Feasibility Analysis

    19. Alpha 測試、 Beta測試
    20. Change Management



    B. UML 建模 (請參考第六章習題解答 Ch06.doc的圖)

    一、是非題(對的標“T”,錯的標“F”)
    (F)1. 在UML中,子系統可以用版型 <<subsystem>>的類型表示。
    解析:子系統是包 (的版型,而不是類型的版型。
     
    (F)2. 兩個類型之間如果存在關聯關係,則最多只能有一個關聯關係。
    解析:兩個類型之間可以有多個不同的關聯關係。
     
    (T)3. 在設計類型圖時,可以不用對類型圖中的每一個關聯來加以命名,但如果需要命名的話,最好用一個“動詞”給關聯命名。
    (T)4. 如圖1所示,活動Gesture和Stream audio可以併發進行。

    (T)6. 如果Package P依賴於Package Q,則表示Package P中至少有一個元素以某種方式依賴於Package Q中至少一個元素。
    (F)7. 瀑布式(Waterfall)軟體發展方法由W.Royce於1960年提出,這種方法是一種系統的和循序漸進的軟體發展方法,其開發流程是屬於疊代式(Iterative)的。
    解析:瀑布式軟體發展方法不屬於叠代式開發。
    (T)8. 在關聯上加限定符可以把多重性是一對多的關聯轉變為一對一的關聯。
    解析:利用限定元把多重性從n降爲10..1,是使用限定元的一個目的。
    (T)9. 在下面的使用個案圖中,範例A與B之間有延伸關係,C與D之間有包含關係,除此之外A、B、C、D沒有與別的個案有關係。則範例A個案,即是可以獨立存在的個案,但個案C不能保證一定是一個完整的個案。
    (T)10.在合作圖中表示訊息時必須要有訊息循序號。
     
    二、選擇題(每題選一個正確答案)
    (D)1. 類型和參與者(actor)的關係類型似於下面哪種類型的關係?
       (A)聚集(aggregation)和組合(composition)
       (B)關聯(association)和鏈結(1ink)      
       (C)RUP和UML
       (D)Package和子系統(subsystem)
    解析:參與者是類型的版型,子系統是包的版型。

    (C)2. 在如圖3所示的個案圖中,label b表示的是下面四個選項中的哪一個?
    (A)include    (B)uses    (C)extend    (D)generalization
    (A)3. Innovation公司正在 Rose開發插入元件,使得Rose可以把OOA/OOD模型以各種圖形格式導出,例如JPEG格式、BMP格式、GIF格式等。在導出時,會根據不同的演算法來生成相應的圖形文件,這些演算法很複雜。 上述這些演算法,在下面這些圖中,哪個圖是最適合的?
    (A)活動圖      (B)狀態圖     (C)類型圖     (D)範例圖
    解析:活動圖可以用來敍述演算法的細節。

    (B)4. 如圖4和圖5所示是某訂票系統的類型圖(部分)和循序田(部分),其中循序圖中缺了兩個類型名稱,用XXX和YYY代替,請問XXK和YYY分別可以是哪個類型?   
    (A)XXX:BoxOffice,YYY = TourCoordinator
    (B)XXX;TourCoordinator,YYY = BoxOffice   
    (C)XXX:Ticket,YYY = Sale   
    (D)XXX: Sale,YYY = Ticket

    (A)5. 在如圖6所示的原始類型圖中,根據liskov替換原則,只要可以使用Engine類型的物件,就可以使用SportsEngine類型的物件,也就是說,在這個類型圖中,Vehicle類型的物件可以使用SprtsEngine類型的物件。請問如何改進這個類型圖,使得只有SportsVehicle類型的物件才能使用SportsEngine類型物件。如圖7所示哪個類型圖是符合需求的?
     
    解析:在實際專案開發中,應該學會這種設計方法。
    (A)6. 下面四種類型的圖中,哪種圖可以描述一個範例中多個物件之間的相互合作關係以及合作流程中的行為次序?   
    (A)互動圖    (B)狀態圖    (C)物件圖    (D)範例圖

    (D)7. 如圖8∼11所示的幾個模型圖中,哪一個能正確表示出一個員工(Employee)最多有一個經理(Manager),某些經理管理多個員工,某些經理不管理任何員工”這樣的意思?

    (C)8. 在博物館管理系統中,有三個範例,分別是“購買入場票”,“預訂入場票”、“登記畫家”,其中“購買入場票’是高風險、高附加業務價值的範例;“預訂入場票”是低風險、高業務價值的範例,“登記畫家”是低風險、低業務價值的範例。在開發時準備採用疊代式開發,先執行其中的一個範例,那麼首先應執行哪個範例?   
    (A)“登記畫家”範例         (B)“預訂入場票”範例
    (C)“購買入場票”範例       (D)三個範例中的任意一個都可以
    解析:在軟體發展時,應該先執行高風險的範例。

    (C)9. 如果要對一個企業中的工作流程建模,下面四個圖中哪個圖是最有用的?   
    (A)互動圖    (B)類型圖    (C)活動圖    (D)部署圖
    解析:活動圖除了可以敍述演算法外,也可以敍述企業的業務流程。

    (B)10.如圖12∼15所示的四個設計中,哪一個設計中所表示的Package之間的依賴關係是最不好的?
    解析:Package之間的依賴關係不要形成迴路依賴關係。

    (B)11.在課程註冊系統中,下面哪組方法名和類型名的命名是最合理的?(每組中前面的 方法名,後面的 類型名稱)
    (A)register( ),VectorStudent    (B)register( ),Student
    (C)reg( ),VectorStudent      (D)reg(),student
    解析:選項A中類型名稱VectorStudent規定了要使用Vector這種資料結構,這是一種不好的設計方法,如果將來類型的內部執行用了別的資料結構,則還需要改類型名。VeetorStudent類型的命名規定了執行的細節,與類型的封裝性相互矛盾;選項Dstudent類型的名字以小寫字母開頭不好,一般類型的名習慣是以大寫字母開頭,另外方法名reg是簡寫,也不如用register明確。
     
    (C)12.如圖16所示,類型PaymentController必須執行哪些方法?
    (A)create,process,reserve,acknowledge,commit
    (B)process,reserve,acknowledge,commit
    (C)payment,save 
    (D)payment,create,save
    解析:建立物件的訊息不需要執行,如圖中的create訊息,不管是在訊息發送者物件所屬的類型中,還是在訊息接收者物件所屬的類型中都是如此。


    (D)13.電腦(Computer)是由中央處理器、記憶體、軟碟、硬碟、顯示器、鍵盤、滑鼠等所組成。那Computer類型和其他類型(CPU、RAM、FloppyDrive、HardDisk、Monitor、Keyboard、 Mouse)之間的關係是:
    (A)一般化關係(Generalization)    (B)執行關係(Realization)    
    (C)包含關係(1nclusion)          (D)聚集關係(Aggregation)
    解析:在UML中,範例之間有包含關係,類型與類型之間沒有包含關係。


    (A)14.參考圖17和下面的編碼 ,下面哪句話是正確的?   
    (A)XXX可以是Frog或Kangaroo,但XXX不能是 Fish   
    (B)XXX可以是Fish或Frog,但XXX不能是 Kangaroo   
    (C)XXX可以是Fish或Kangaroo,但XXX不能是 Frog   
    (D)XXX可以是Fish或Frog或Kangaroo

    public class JungleSimulator{
    Private XXX aVar
    public void simusate( )
       aVar.jump( )
       }
    }

    解析:Jumpable介面中聲明了jump()方法,而類型Frog和類型Kangaroo執行了Jumpable介面,所以選項爲A


    (B)15.參考如圖18所示的設計圖,工程師(Engineer)根據他們的工作時間可以分 全時的(FullTime)和兼職的(PartTime)兩種,根據他們的專業可以分為軟體工程師和硬體工程師。在起始設計中,整個類型階層架構沒有靈活性,如果要增加一種新專業的工程師,則在類型FullTimeEngineer和類型PartTimeEngineer下面都要增加子類型。如果要改進這種設計,以便能很容易地增加新的專業的工程師,則在A、B、C、D這四個設計中,哪種設計最合理?
     

    (D)16.參考圖23,下面哪種敘述是正確的?
    (A) Component是類型,ImageObserver是狀態,Component執行了ImageObserver。
    (B) Component是類型,ImageObserver是介面,Component和ImaeeObserver是關聯關係。
    (C) Component是類型,ImageObserver是狀態,Omponent和ImageObocrver是關聯關係。
    (D) Component是類型,ImageObserver是介面,Component執行了ImageObserver。
     
    三、複選題(每題選出所有正確答案)
    (BD)1. 下面哪些敘述是錯誤的?
    (A)訊息可以從被動物件(passive object)發送到主動物件(active object)。
    (B)在狀態圖中,動作(action)可以被中斷,但活動(activity)不能被中斷。
    (C) 在構件圖中,一個元件和一個介面之間可以有執行(realization)關係,也可以有依賴(dependency)關係。
    (D) 狀態圖不適合於敘述跨多個範例的單一物件的行為,而適合敘述多個物件之間的行為協作。
    解析:訊息在物件之間發送,與物件本身是主動物件還是被動物件無關。訊息可以在被動物件之間發送,也可以在主動物件之間發送,可以從主動物件發送到被動物件,也可以從被動物件發送到主動物件,所以選項A的敍述是正確的。
     
    (AB)2. 如圖24所示,給定的物件可以同時在哪些狀態中?  
    (A)Testingdevices和Command     (B)Selfdiagnosis和Waiting   (C)Testingdevices和Selfdiagnosis (D)Waiting和Command
     
    (ABC)3. 在狀態圖中可以表示下面哪些概念?
    (A)動作(action)     (B)事件(event) 
    (C)轉移(transition) (D)類型(class)
    解析:狀態圖是針對物件的狀態的,不涉及類型的概念,所以選項D不對。
     
    (ABC)4. Object公司準備開發一個新的OO系統,由於開發費用和時間的限制,這個新OO系統將使用已有的一個非00的遺留系統(1egacy system)所提供的一些功能,因此需要和這個非00系統整合。Objects公司也預見到,以後這個非00的遺留系統將會被放棄,新的00系統將逐步執行目前非00系統所提供的功能。那麽在考量系統架構層面的問題時,下面哪些做法是可以接受的?
    (A)定義一個介面,對遺留系統中所提供的功能來加以封裝。
    (B)採用階層架構,組成新系統的類型單獨放在某一層中。
    (C) 採用階層架構,定義一些類型來解決OO系統和遺留系統之間可能存在的不匹配問題,並把這些類型放在某一層中。
     
    (AC)5. 如圖25所示,下面哪些敘述是不正確的?  
    (A) 對於每門課程(Course),只能有一個教師(Instructor);對於每個教師可以不教課程或教多門課。
    (B) 對於每個學生(Student)可以學習任意多門的課程,對於每門課程可以有任意人數的學生。
    (C)一個教師 (Instructor)可以是一個或多個系(Department)的系主任(chairperson).
    (D)學院(School)和學生之間的關係是聚集(aggregation)關係
    解析:這個題目不難.需要注意的是,對於多重性的表示,no..n的意義是一樣的。
     
    (AB)6. 下面哪些是“純”OO程式設計語言?
    (A)Smalltalk   (B)Eiffel   (C)Objective-C (D)C++
     
    (A)7. 根據下面的編碼 ,判斷(A),(B)、(C)、(D)中哪些敘述是正確的?

    Public class HouseKeeper{
      Private TimeCard timecard;
      Public void colockIn(){
         timeCard.PUNCH()
      }
    }

    (A)類型HouseKeeper和類型TimeCard之間存在關聯(Association)關係。
    (B)類型HouseKeeper和類型TimeCard之間存在泛化(Generalization)關係。
    (C)類型HouseKeeper和類型TimeCard之間存在執行(Realization)關係。
    (D)類型HouseKeeper和類型TimeCard之間存在包含(inclusion)關係。
    解析:注意類型與類型之間沒有包含關係,選項D在任何情況下都是不成立的
     
    (AC)8. 根據如圖26所示的狀態圖,下面哪些敘述是正確的?
    (A)圖中的productselected表示的是一個事件。
    (B)圖中的productselected表示的是一個活動。
    (C)圖中的sufficientamount表示的是一個警戒條件。
    (D)圖中的sufficientamount表示的是一個併發狀態。


    (BD)9. 與某些OO程式設計語言中介面的含義不同,UML中的介面只包含操作,不包含屬性(UML規範說明1.5版本,P3∼50)。根據UML中介面的含義,下面哪句話是錯誤的?
    (A)UML中的介面是可被一般化的元素,即可以定義某一介面的子介面。
    (B)UML中的介面可以參與單向關聯,介面可以是單向關聯的來源端。
    (C)UML中的介面可以參與單向關聯,介面可以是單向關聯的目的端。
    (D)UML中的介面可以參與雙向關聯。
    解析:如果介面是單向關聯的起源端,則介面中會有屬性,這與UML中的介面的定義矛盾,所以選項B這句話是錯誤的;選項D這句話的錯誤原因與選項B一樣。
     

    (AC)10.下面哪些建模元素不能在合作圖(collaboration diagram)中表示出來?
    (A)狀態(state)    (B)訊息序號(message numbering)
    (C)活動(activity)   (D)多重物件(multi object)
     
    (BD)11.圖27中沒有使用到哪些概念?
    (A)重載(overload)       (B)控制焦點(focusOfcontr01)
    (C)限制(constraint)     (D)生命線(lifeline)
    解析:訊息2.12.2顯示ODBCProxy類型中的setValues方法是重載的;{transient}是運作在Transaction類型的匿名物件上的限制
     


    四、填充題(在空格上填入相應的內容,中文或英文回答都可以)
    1. RUP軟體發展流程的特色是:範例驅動(use case驅動)以架構為核心、疊代和增量式開發。

    3. 如圖28所示的類型圖中,“/works for company”這個關聯前有一斜線,表示該關聯是衍生(derived關聯。

    4. 範例(use case)和參與者(actor)之間的連線稱作關聯,是關係的一種。

    5. RUP把軟體發展生命周期分為多個迴路(Cycle),每個迴圈由四個連續的階段(Phase)組成。這四個階段是起始(1nception)階段細部化(Elaboration)階段建構(或construction階和移交(Transition)階段

    7. 如圖29所示,如果需要敘述類型User Group和類型User之間的關係本身的某些特性,這些特性既不適合放在類型UserGroup中,也不適合放在類型User中,那麼可以建立一個關聯類型來敘述這些特性,並透過一條虛線使這個類型和這個關係相關聯。

    8. 如果把一個類型的類型名稱寫成斜體字,則表示這是抽象類型,即不能由這個類型來直接產生實例。

    9. 在軟體發展的不同階段使用的類型圖具有不同的抽象階層。一般類型圖可分三個階層,即概念層、說明層和執行層。

    10. 類型的實例是物件,範例的實例是腳本(或情景、場景、情節、劇本、scenario
     

    C. 物件導向方法
     

    1. 物件導向方法用「物件」分解取代了傳統方法的「功能」分解。

    2. 在物件導向的軟體中,「類別」是對具有相同資料和相同操作的一組相似物件的定義;「實例」是由某個特定的類別所描述的一個物件。

    3. 將下列各對事物之間的關係 (繼承、聚集或一般關聯)寫在括弧內。

    (1)小汽車──裕隆牌小汽車。                   (繼承)

    (2)人員──員工。                                       (繼承)

    (3)圖書館──期刊閱覽室。                        (聚集)

    (4)書──圖書館館員。                               (一般關聯)

    (5)小汽車──司機。                                   (一般關聯)

    (6)讀者──借出的書。                               (一般關聯)

    (7)班級──學生。                                       (聚集)

    (8)教師──教授。                                       (繼承)

    (9)丈夫──妻子。                                       (一般關聯)

    (10)列車──餐車。                                     (聚集)



    4.
    判斷下列各項是類還是類別的實例,答案寫在括弧內。
    (1)我的小汽車。                                           (實例)

    (2)人員。                                                       (類別)

    (3)王曉明。                                                   (實例)

    (4)交通工具。                                              (類別)

    (5)教授。                                                       (類別)

    (6)資工系。                                                   (實例)

    (7)工人。                                                       (類別)

    (8)臺灣大學學生。                                       (類別)

    (9)日本。                                                       (實例)

    (10)噴氣式戰機。                                         (類別)

    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應