# 軟體工程期中考古整理
###### 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.
> 流程的成熟度,用來評斷一個流程是否完善,是否還有改進空間。
> 
(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
> 
4. Scrum processs
(a). Draw the Scrum process and show the major activities
> 
(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
> 
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.