iT邦幫忙

DAY 12
1

打造軟體團隊系列 第 12

打造軟體團隊(11): 搭配IT工具-Source code control: SVN, GIT.

前面談完了團隊建立與軟體專案管理, 針對建立團隊的流程, 與軟體開發流程做了敘述. 接下來進入另一個主題"搭配IT工具".
前面談完了團隊建立與軟體專案管理, 針對建立團隊的流程, 與軟體開發流程做了敘述.在軟體專案管理的章節中, 雖然號稱是"軟體專案管理", 不過我幾乎沒用到PMP 的知識. 因為談的是"軟體團隊內"相關的專案管理部分, 並沒有包含整個專案團隊, 基本上在專案團隊中還是可以遵照PMP的準則去進行, 並沒有任何牴觸的地方. 再者, PMP有許多大大都是這方面的專家, 小的不敢在關公面前耍大刀, 所以關於PMP的部分就不多做探討. 接下來就進入另外一個大主體"搭配IT工具".拍手

市面上有許多的IT工具可以輔助一個軟體團隊的運作, 要錢的不少, 免費的也很多. 要使用哪些工具, 就看你的預算和工具本身和你的流程契合度而定. 基本上我覺得既然是軟體開發團隊, 應該就有能力架構一些免費的工具, 而不用花錢去買昂貴的套裝軟體來用 (開發專案管理軟體的公司不要打我, 錢很多又怕麻煩的公司還是可以買啦! XD). 不過由於免費的, 所以工具和工具間的整合, 就得花一些心思去完成了. 從本篇開始, 我會介紹一些IT工具, 包含 SCM, Project Management, Issue Tracking system, KM, e-Learning, File Server 以及其他相關的管理工具. 我的重點會放在系統與流程的整合, 以系統與系統間的搭配. 至於每個系統如何安裝, 如何使用, 我覺得這個很容易就可以找到相關的資訊, 所以我頂多簡單的帶過. 使用IT工具的最終目的, 是希望能夠讓"大部分"的流程都自動化的進行, 尤其是 Daily build, Weekly build 這些例行性工作.讚

首先談到SCM, 這是軟體開發團隊最重要的資產-Source Code的保存中心. 它提供版本控管追蹤, 權限控管, 協同作業等功能. 前面章節有提到建議使用的SCM為SVN或GIT. 也有大概敘述一下兩者的不同與選用的考量, 不管你使用哪套, 有幾個點是可以抓出來討論的:
(1)權限控管: 要與軟體團隊的角色配合, 比如只有軟韌體工程師可以修改程式碼, 其他人只能閱讀. 在SVN 和 GIT 都有 Groups / Users 的設計讓你達到這樣的功能. 你只要針對Groups 去設權限即可.
(2)帳號整合: 因為我們採用多套免費系統的大雜燴, 所以帳號整合是個問題, 當然你也可以每套系統有自己的帳號和密碼, 但缺點是你必須一個一個手動建立帳號, 而且使用者要不就是不能更改密碼, 如果可以更改密碼就會有密碼同步的問題. 所以最好還是有一套帳號整合的機制, 讓所有的系統都使用同一套認證機制, 這裡我採用的是PAM模組. 目前我選的系統大部分都有支援PAM, 沒有的也可以透過外掛來支援. 另外你如果自己有網域, 有Directory service, 也可以透過LDAP 來認證.拍手
(3)與外部GIT Sync: 如果你使用的是GIT, 又基於GPL license 的 Open Source 的軟體去開發, 就有Open source 的義務, 你就必須考慮到 GIT Sync 的問題. 看你是要直接跟外部的GIT 連結, 開一個 Branch 去開發, 或是自己內部架 GIT Server, 另外再用別的環境去跟外部GIT Server Sync 都是可以考慮的方法.
(4)Lock/Unlock: 如果你希望你的SCM在Build code 期間不要被其他人修改, 直到軟體發行後再開放, 你就可以加入 Lock/Unlock 的機制. 在SVN, GIT 都可以透過Hook 做到. (Hook 是個很好用的東西, 你可以透過他在commit 前後, update code 等時間點做一些"手腳") 讚
(5) Auto build: 讓系統自動build code, 你只要寫好一些build code 的 Script 再配合上Cron或windows schedule 這類定時器, 就可達到這目的. 而SCM的部分則是要有Command line 的方式讓你可以在Script 中操作. 這部分對 SVN, GIT來說都是基本功能.
(6)版號結合: 與你所訂的版號規則做結合, 因為我們的目標是讓Build code 自動化, 所以除了在你的Source code 塞入版號外, 你還要有自動Update 版號的機制, 每次build code 時讓系統自動去更新版號, 自動Commit Code, 你可以寫在環境變數內, 也可以寫在Source code 內, 最後再透過Sed, awk 等指令去自動分析更改即可.
(7) Tag: 每次Build 的時候, 為你的版本貼上一個Tag 方便將來追蹤, 這個透過Command line script 就可以達成.
(8)備份: 定時為你的SVN, GIT 備份, 如果儲存空間對你來說不是問題, 建議天天都能做備份, 當然備份時能做成差異性備份以及考慮到異地備援會更好.
(9) Code Reviw : 前面有提過, 為了提高軟體品質, 可以進行Code review. 如果使用 SVN 或 GIT 你可以安裝 Review board 來達成你的目的. Review board 可以強迫所有的Code 都要經過review 後才能 Commit.
(10) 自動產生Release Note: 可以讓工程師在Commit code 時順便寫好Release Note. 方法是透過Log, 先定義好Log 的格式, 如Bug ID, Feature ID, 問題描述, 修改內容等, 透過Hook 去檢查格式, 符合才能上傳. 最後在發行版本時, 就可以透過抓系統Log, 自動將軟體的Release Note 產生出來.開心
(11) 訊息通知: 可以去抓Mailer 來使用. 基本上review board 和 Mailer 都是通過Hook 去達成的. 什麼時候需要訊息通知? 需要Review code 的時候, 有人改了你的Code 的時候..., 這些都可以修改Mailer 相關的Hook 去達成.
(12) 與Project Management Server, Issue tracking system 整合: 看你選用的系統而定, 讓你可以知道每個Feature 或 Bug 完成的版號為何. 透過系統可以直接了解修改了哪些Code. 這對維護與管理而言非常有幫助.灑花

PS: 對於系統廠而言, 軟體的開發主要是架構在既有的平台上, 如Linux, Android, WINCE, 以及各式各樣的RTOS. 有些作業系統是Open Source 而且有固定在維護的官方網站. 這種情況下, 在選擇SCM時建議可以選擇跟官網使用一樣的SCM, 因為官方絕對已經先考慮過最適合的SCM了.
PS2: 針對SVN, GIT的一些功能, 有興趣的朋友歡迎跟我討論!


上一篇
打造軟體團隊(10): 軟體專案管理-軟體版本的測試與維護.
下一篇
打造軟體團隊(12): 搭配IT工具-Project Management, Issue tracking system
系列文
打造軟體團隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言