---
# System prepended metadata

title: 軟體工程期中考古整理
tags: [NTUT, SE]

---

# 軟體工程期中考古整理
###### 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. 