[筆記生肉] 教你如何使用 User Story、Tower 、 Github 進行協作開發(主講人:ihower)

直播資訊

主講人:ihower 老師

時間:5月18日 週四 20:00

時長:本次直播總時長預計30分鐘。

概要:ihower 教你如何使用 User Story、Tower 、 Github 進行協作開發。

直播筆紀

什麼是User Story

  • 使用「用戶的觀點」進行功能的描述

撰寫的秘訣

一、粒度大小很重要(要描述多大、多小的事情)

  • 舉例來說,對投資人可能用大一點的項目描述,但如果是技術團隊之間,則用較小的描述大小。
  • 拆分故事不用技術來切分,「對用戶有價值的功能」才是我們要描述的。
  • CRUD(5 個欄位),不用分開寫成 20 條 User Story。
  • 不要用零件去切,以「對用戶有價值的功能」去演進;例如:滑板 → 滑板車 → 腳踏車 → 機車 → 汽車,演化過程中每一個型態都是用戶可以使用的。

二、可以徹底完成的小故事

  • 避免籠統的描述方法。例如:「管理員可以管理產品」就太籠統了,怎麼樣叫做「管理」?應該要拆分為「管理員可以上架商品」、「管理員可以上傳多張圖片」等等。

三、描述功能需求,而不是解決方案

  • User Story 是要讓非開發人員也能看得懂,所以不需要技術規格相關的描述,像是:UI 規格、開發語言及框架。

四、辨識用戶角色

  • 角色是誰?角色可以作到些什麼事情?
  • 使用「主動語態」:「商品可以被用戶瀏覽」(X);「用戶可以瀏覽商品」(O)。
  • 用戶角色越多種,複雜度就越高。為了 MVP(Minimum Viable Product 最小可行性產品),建議將角色數量控制在兩種就好。

收集、排序多條 User Stories

X 軸:照時間分,由左至右。
Y 軸:照優先順序,由上至下。

User Stories 有兩種排序方式:「Bottom-up」、「Top-down」:

  • Bottom-up 排序法

    • 寫 10 - 20 條,照時間順序由左到右排序,並把類似目的的功能歸類在一起(例如:跟「結帳」流程有關的放一起)。
    • 接著,總結出主要活動,每一個分類都是一種角色為主。除非是有互動的情況(例如:客服系統,用戶會與管理員互動),才會歸在同一個分類。
  • Top-down 排序法

    • 列舉出主要的活動。
    • 每個活動拆分 3 條以上的用戶故事。
    • 調整優先度,由上「高優先」至下「低優先」。這樣就可以劃分出第一版 Must Have、第二版 Should Have、第三版 Could Have 三階段的項目。

如何使用 Tower

Tower:免費的線上項目管理軟件。

  • 註冊後,新建「看板項目」。
  • 定義項目流程,通常是「To-do」、「Developing」、「Done」三個主要欄位。也可以加其他欄位像是:「需求」、「第一版」等等。
  • 每一條 User Story 可以在施工階段,利用「添加檢查項」加入該 User Story 的開發細項。像是建立 Controllers、Views、Model 等等。

如何用 GitHub 進行協作開發

為什麼要使用 Git & GitHub?

  • 共享代碼。
  • 避免修改代碼時,覆蓋隊友的代碼。
  • 不幸改到同一個地方時,可以解決衝突。
  • 記錄誰改的?為什麼?
  • 版本控制,分為「穩定版本」和「開發版本」。

示範情境:Rejected,同時修改不同檔案。

  • 衝突狀況:兩人同時,A 修改後先推上去。這時候,B 在未更新專案的情況下,再將修改推上去,會遇到 rejected 的錯誤訊息。

  • 解決方式:這種時候 B 要 $ git pull 將 A 的版本拉下來,進行「自動合併」,再重新 push。

示範情境:Conflict,同時修改同一個檔案。

  • 衝突狀況:兩人同時改同一個檔案、同一段代碼,A 修改後先推上去。B 在未更新專案的情況下,執行 git push 時,同樣會遇到 rejected 的錯誤訊息。但與上一個情境不同的是,B 用 $ git pull 將最新進度拉下來時,會遇到「自動合併失敗」(Automatic merging failed);「自動合併」不是無所不能,同一個檔案的衝突狀況必須要靠手動排除。
  • 解決方式:承上,如果 B 執行 $ git status 檢視現況,會看到該檔案顯示為 both modified。打開檔案修改,決定要最後留下的版本並進行 commit,再重新推上專案即可。


示範情境:進階用法

利用 $ git checkout -b < branch 名稱 >從 Master 切出新的分支,作功能開發,完成後上傳。回到 GitHub,點擊 New pull request,通知主程式(或團隊成員)有上傳新的分支。主程式(或團隊成員)會收到 email 通知,如果確認沒有問題,可以執行 Merge pull request 將分支合併回主幹。

其他補充

SourceTree:Git 視覺化工具

  • 設定 iTerm 終端機指令,利用 $ stree 開啟 SourceTree(請先下載 SourceTree 軟件,並放置於「應用程式」資料夾中)。

    • iTerm 終端機輸入 $ atom ~/.zshrc,用 Atom 開啟 zshrc 檔進行修改。

    • 在文件尾端加入一行:alias stree='/Applications/SourceTree.app/Contents/Resources/stree'

    • command + Q 關閉 iTerms,重新開啟後,輸入 $ stree 看看能否正常開啟。
  • 除了我們習慣的終端機指令 $ git add$ git commit,我們也可以利用 SourceTree 對修改進行 commit。

程序員素養

  • 培養好習慣,不是所有檔案都要 commit!例如執行 $ rails g scaffold 會產生許多用不到的空檔案,判斷後,把不需要的檔案刪掉,再進行 commit。

其他觀察

  • 在終端機中,利用 $ vi <檔案名稱>,可以在終端機直接修改檔案。

ihower 推薦閱讀

Comments

comments powered by Disqus