# 軟體工程期中考古整理 ###### tags: `SE` `NTUT` [TOC] ## 106 1. Describe the noton of the following terms: (a). WBS(Work Breakdown structure) > WBS 是把一個項目,按一定的原則分解,項目分解成任務,任務再分解成一項項工作,再把一項項工作分配到每個人的日常活動中,直到分解不下去為止。 > 即:項目→任務→工作→日常活動 2. Software process model (a). What are the four fundamental software engineering activities > Software specification:where customers and engineers define the software that is to be produced and the constraints on its operation. > > Software development:where the software is designed and programmed > > Software validation:where the software is checked to ensure that it is what the customer requires. > > Software evolution:where the software is modified to reflect changing customer and market requirements. > (b). What are the five major stages of the waterfall model > Requirements analysis and definition > System and software design > Implementation and unit testing > Integration and system testing > Operation and maintenance (c\). Describe the advantages and disadvantages of the incremental development process > advantages: > 需求變更時,cost 較低,容易取得用戶 feedback、rapid deliving(快速交付)。 > > disadvantages: > process not visible、太過頻繁的變更可能會破壞架構,不太適合太大或過於複雜的系統。 > 3. Software process improvement (a). Brefly describe the nottion of process maturity and the cycle(i.e., major activities) of process improvement. > 流程的成熟度,用來評斷一個流程是否完善,是否還有改進空間。 > ![](https://i.imgur.com/EhUy0EM.png) (b). What are the 5 stages of CMMI(Capability and Maturity Model Integration) > 1. Initial:Processes are unpredictable > 2. Managed:Processes are planned > 3. Defined:Processes are well characterized and understood > 4. Quantitatively Managed:Processes are controlled > 5. Optimizing:Continually improved > ![](https://i.imgur.com/ZbIRrng.png) 4. Scrum processs (a). Draw the Scrum process and show the major activities > ![](https://i.imgur.com/WvByWD4.png) (b). What are the three main roles in Scrum > Product Owner:負責決定軟體開發的功能。 > Scrum Master:負責提倡以及確保 Scrum 在團隊中順利進行。 > Development Team:負責需求的軟體建置開發、部署。 (C\). What are the produced artifacts in the Scrum process > product backlog > sprint backlog > Burn-down chart 5. Plan-driven and Agile methods (a). Give 2 practial problems that could occur when apply an agile approach to devlop a long-lifetime system > 過多的變更導致原本的架構被破壞,維護上沒有詳細的說明文件。 (b). What factors can influence the choice the approach, plan-driven or agile method, for sortware system development or maintenance > 系統的大小 > 系統的複雜度 > 軟體的開發時間 (c\). Discuss why the agile methods can produce a working software while reducing the overhead of documentation or maintenance > 1. 因為 Agil 提倡多與用戶互動,透過短期且快速的產品支付,得到客戶的 feedback,最後產出的產品就會越接近客戶的需求。 > > 2. Agil 提倡人與人的面對面討論,如此一來即使不用詳盡的文件,也能夠知道自己必須做甚麼,不管是開發團隊或是與業務或 PO 等。 > > 3. 透過重構代替繁重的設計文件,透過重構依然能夠得到設計良好的程式。 > 6. Extreme programming(XP) (a). Describe the following principles or practices of XP - Refactoring > 一種對程式碼進行改進而不影響功能實現的技術,XP需要開發人員在聞到程式碼的壞味道時,要對程式碼進行適當的重構。重構的目的是降低變化引發的風險,使得程式碼優化更加容易。 - Test-first development > 先寫測試再寫程式,一方面是為了維持程式的可測試性,另一方面是有了測試才能安全重構。一般所寫出來的測試就跟使用案例很接近。 > 7. Requirementss Engineering (a). What are the major activites in the requirment engineering process > 1. Requirements elicitation and analysis(啟發與分析) > 2. Requirement specification(規格) > 3. Requirements validation(驗證) > 4. Requirements management(管理) (b). Describe the concept of traceability in requirements management. How can the traceability of requirements be used in the software development process > 追朔矩陣裡的每個小系統與其他系統的關係互相影響矩陣,當需求變更時,可以輕易地知道這項改動會影響到那些系統。 (c\). Draw a diagram to explain the process of requirements change management > ![](https://i.imgur.com/Byj8h02.png) 8. Requirements validation (a). Identify at least 3 types of checks that should be carried out for validating the requirements. > validity 符合客戶需求 > consistency 需求一致性 > completeness 需求完成度 > realism 可以實作且不會超出預算 > verifiability 可測試性 (b). Specify 3 techniques that can be used individually or in with one another to validate the requirements. > Requirements reviews > Prototyping > Test-case generation > ## 107 1. Describe the notaion of the following terms:**(new)** (a). CMMI(Capability and Maturity Model Integration) > CMMI 是一種改進過程的方法,其目的是協助提升組織的績效。 > (b). Code Smell > 程式碼中的任何可能導致深層次問題的症狀都可以叫做程式碼異味。 > 2. Software process model (a). (106-2-b) (b). (106-2-c) 3. Scrum processs (106-4) 4. Extreme programming (a). (106-6) (b). What are the possible benefits of using Test-Driven Development(TDD) approach > 你會更加站在使用者的角度去看你將要完成的產品,你要儘可能想到使用者所有進行的操作。而不是從程式設計師的角度想使用者應該會如何去使用我們的產品。 > > 測試案例是在對功能進行測試,在寫程式碼之前先寫測試案例,可以對我們編寫程式碼提供指導性的參考,防止我們漏掉一些功能。 > > 使我們對自己程式碼有了信心,因為我們事先設計好的所有測試案例都 Pass 了。 > > 如果在更改程式碼後測試案例不能通過,我們可以根據不能通過的測試用例精確的定位問題,並輕而易舉的解決的這個 bug。 > 5. Requirementss Engineering (a). (106-7-a) (b). What are the types of check that should be carried out for validating requirements? Specify the requirements validation techniques that are commonly used.(106-8-\*) (c\) (106-7-c) 6.