前段時間剛跳公司的SPM研發項目,在即將離別之際自己總結了在項目所得所失,感慨萬千呀,雖然該項目在我個人心中應該算一個失敗的項目(研發項目嗎,都說是無底洞),但項目的一些規範與管理方式我個人認為還是可以借鑒,比如基於Team Fundation Server的Task專案管理!言歸正傳,首先簡述一下什麼是SPM(Software Procedure Manage),SPM即軟體過程管理,我在上一篇文章中提到過軟體正常化生產,如果一個公司要實現軟體正常化生產除了資金鏈和業務線以外,最重要的就是能支撐這些生產流水線的一個平台,更深層次應該包括對這些項目生產過程中的一些宏觀與微觀的管理。
Team Fundation Server:TFS(Team Foundation Server )是一個工作流程協作的引擎,它允許一個團隊使用他們自訂的流程,並使用在項目曆史中即時收集起來的一個集中的資料倉儲。Team Foundation Server 和 Visual Studio Team System 中其它的部分一起,組成了軟體開發過程中的核心部分。我們的方法是唯一的,因為前端的設計有良好的可用性,而後端的設計整合了整個生命週期。我們主要關注於可用性,以及為個人和團隊以一種無縫的方式進入軟體開發週期。客戶關心的另外一個方面是靈活性和審核。Team Foundation Server 支援 Software Engineering Institute 的 CapaBIlity Maturity Model (CMMI) 的報表和審核的功能。通過 Team Foundation Server,組織可以自動收集必要的資訊,並產生自訂的報表,它可以協助在工業管理中定位增長點。
Task:即工作項目,我們在TFS中我們可以看到TFS是通過工作項目來對不同工作項目還區分軟體過程的一些任務的,比如使用者劇本、Bug、任務等。
上面簡單的簡介了,面下我們正式討論是如何基於Team Fundation Server的Task進行軟體生產與管理,首先我們把軟體生產按敏捷開發的方式,以迭代進行劃分。然後我們對軟體的生產人員進行劃分,我們初步定義為專案經理、程式經理、開發人員、測試人員等。而這人員在按照敏捷模式進行工作時或多或少的會接收到一些工作任務。比如分析需求、編寫使用者情境、進行設計、編碼代碼、測試功能點、修改bug等。我統統將這工作稱為Task,並且這些Task可折分,可更改的。我可以對大的Task折分成小的Task,而這個折分過程實際上就是工作任務的細節,我對這此Task添加一些屬性,比如:
標題:用來明確工作任務的人
工分:量化工作任務的價值
指派給:接收任務的人
地區:附於的項目
狀態:標識任務的進展情況
優先順序別、預計開始時間、實際開始時間,工時等等屬性。
有了這些屬性我們可以過些屬性對項目的一些KPI值進行微觀的調整,並能對通過對這些KPI調整使項目迴歸正式,另外我們可以統計這些屬性很好的形成軟體生產報告。
下面以一個例子還描述:
假如一個項目中有一個開發組長與一個開發人員,這裡開發組長除了進行基本的開發工作外還負責一些項目的基本的管理:
1、根上面的需求我們需要開發一個記事本。
2、開發組長拿到需求後,對這些需進行折分,將其折分為能在短時間(這個時間應該根據公司的情況與客戶的情況與界定)完成小Task.並將其指派給開發人員。當然所有Task屬性均為初始狀態。
3、開發人員收到相應Task,根據需求進行相關的開發,並即時更改Task的狀態,一直到任務完成。
4、開發人員完成任務,並關閉這個Task,隨之將後產生另一個task(測試人員的工作),測試人員開始進行測試(如果測試完成就可以更改這個工作項目的狀態),如果測試過程產生bug,我們這些bug與這個開發人員的task進行串連。因為我們在修改bug過程中會使用工時,也是一種工作任務。
5、項目進行到一定階段後,我們可以對這些屬性統計比如工時,我們共計使用的多少工時,項目的預工時是多少。
6、最後形成的報告,不僅可以進行彙報也是使管理員對軟體生產與管理提供一個提導。
當然這些功能我們完成可以由Project Server來做,但是我們知道Project Server主要是面向管理員的提供項目的人員,資源,進度的管理。而Tfs除了面向管理員進行基本的管理外,還面向工程人員進行軟體生產的代碼管理等功能。另外如果我們在外圍開發一些功能,形成一個大的功能集功。這樣就可做軟體規模代生產的機器了,這上面提出的這種管理方式只是基於這種機器的一種模式。
歡迎大家討論!