# 軟體工程 CH3 > 第一次用這個寫筆記,醜醜就醜醜 ### Agile Manifesto (敏捷宣言) - Individuals and interactions over processes and tools `每個人之間的互動>選擇的工具及流程` - Working software over comprehensive documentation `可用軟體>複雜文檔` - Customer collaboration over contract negotiation `與客戶的溝通>合約的協商` - Responding to change over following a plan `應對變化>遵循計畫` ### Characteristic of an Agile Process (敏捷開發之特點) - Adaptable `適應性強` - Responsive `反應靈敏` - Incremental `短時間內產量逐漸增加` ### XP : Extreme Programming (極限編程) - 敏捷開發的其中一種模型 - 使用物件導向 - 四種行為 : 1. **XP Planning** - 從創建 user story 開始 ~~`還是沒搞懂story到底是指三小,我猜就是程式的每一個段落吧`~~ - 團隊評估每個story後分配所需成本 - story 會被分為群組,以達到 **deliverable increment** `deliverable increment: story 可一步一步被實現並送出,不須等到全部完成後才能使用` - 須訂出完成日期 - 第一個 increment 完成後,根據 **project velocity** 來訂出其他 increment 的期限 `project velocity: 第一次 release 時 story 達成的數量` 2. **XP Design** - Follows the **KIS (keep it simple)** principle `白話到靠北,所以不打中文` - Encourage the use of **CRC (Class-Responsibility Collaborator) cards** `詳見第八章,所以先略` - 在設計上遇到障礙,建議使用 **spike solutions** `spike solution: 我猜表示強而有力的解法,但這樣很像廢話所以我不知道` - 鼓勵 **refactoring** `refactoring: 程式的重建,類似打掉重做的概念,可保持程式的整潔` 3. **XP Coding** - 建議在開始之前都先進行story的單元測試 `簡單來說就是前面都確認OK之後再進行下一步` - 鼓勵 **pair programming** `pair programming: 一人撰寫,一人檢查,同時可提出問題或規劃下一步` 4. **XP Testing** - 全部的 unit test 應該被自動化的框架完成 - 鼓勵 regression test `regression test: 回鍋測試,回去run前面的code,一天一測試,bug遠離我` - Acceptance tests 由客戶定義,使其能直接看見所有功能  ### Scrum - 敏捷開發的其中一種模型 - 三種主要角色 1. **Product owner** 2. **Scrum master** 3. **Development team** - 開發工作會被分成許多 packet - 測試和內容是隨著產品開發而進行的 - Work occurs in “**sprints**” and is derived from a “**backlog**” of existing requirements ~~這段真的靠北難翻~~ ``` sprint: 類似於週期,通常為1~4週,先決定好工作量後進行短期衝刺以達成目標 backlog: 產品需求清單,依據優先度列出 ```  - **Scrum meeting** 1. 時間短,大約15分鐘 2. 基本上站著 meeting 3. 每人報告**昨日做了什麼**,**遇到什麼困難**,**接下來要做什麼** - 固定時間讓客戶看 demo 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up