2011年8月28日 星期日

軟體專案管理之 PM Server

這是我 2005/05/09 寫的文章,再拿來回味一下。
經過六年了,很多的軟體管理的軟體都成熟很多,安裝上更方便,
可以依據不同的專案,客製化軟體專案的配置管理(Software Configuration Management)。


什麼是 PM Server

PM Server 其實是我們自訂的名稱,故名思意,PM Server Project Management Server,他的用意即在管理專案,有什麼需要管理的,就把他包含進來。

但還少了二個意思,就是「數位化與自動化」,專案管理中,有許多溝通與文件的傳遞,數位化帶給我們許多這方面的便利,不僅提高溝通的速度、減少溝通的力氣,而且還記錄了這些溝通的過程,所以一旦我們需要回顧一些「歷史資料」、「Lesson Learn」時,數位化即供了我們一個非常便利的入口,也就是知識與經驗的管理;在我們過去的經驗裏,我們常常需要有人當「佈屬者」的角色,這個角色是個經常性且週而復始的工作,如果能有一個工具能代替這個角色,那麼我們的資源不就可以運用在更好的地方嗎?所以引入「自動化」的意義便在這裏,自動化建構、自動化測試、自動化佈屬、自動化產生報告,你看!多麼美妙的事啊!但這已不再是一個夢想,而已經是個事實。

 
軟體工程流程

如果談PM Server就不能不談軟體工程,因為PM Server是完全針對軟體工程的理論所設計的。當然,理論歸理論,我們還是要「down to earth」,也就是設計一套屬於、而且適合公司的流程。

圖表 1顯示我們公司現行的軟體工程流程,通常是由Tester提報問題單後,交付Programmer進行程式的修改,而Progammer修改完成後,會進行版本控管的同步化,再交由Depolyer進行建構版本與佈屬到「內部測試環境」,完成後,就由測試人員進行整合測試,假設測試成功後,就會再交由Depolyer進行建構版本與佈屬到「客戶測試環境」,假設客戶測試成功後,就再由Depolyer進行建構版本與佈屬到「正式環境」。

如此周而復始的工作流程中,我們可以發現,Deployer的工作量非常大,而且都是一些重複性的工作,因此為可以減少甚至代替這個角色,我們可以引入「自動化」來解決這個問題。


圖表 1 現行軟體工程流程

如圖表 2,當我們引進「自動化建構版本」之後,我們可以讓PM Server定時自動完成建構版本的工作,如此,不僅可以取代Depolyer的角色,更讓我們的資源可以投入在真正有用的地方。




圖表 2 自動化後的軟體工程流程

接下來的章節會針對PM Server內部所包含的功能、工具及網址逐一進行說明。

Issue Tracking

功能

分派、追蹤、管理、監控問題。

在專案中,有許許多多的問題需要有人來解決,而專案管理者又常常需要知道問題目前的狀態為何?如果能記錄與自動化分派問題那就更好了。

所以,Issue Tracking主要的功能即在這裏,他可以幫忙分派問題,讓專案管理者可以追蹤、管理問題,更可以讓一些關心這個問題的人或長官來監控這個問題。

工具

我們目前所提供的工具有「JIRA」。
相關資訊請參閱網址(http://www.atlassian.com/software/jira/)

 

Version Control System

功能

文件與Source Code管理與同步化,管理變更,追蹤變更。

文件與Source Code的同步化與版本管理一向是專案管理中很重要的部份,而且由於我需求的變更,我們常常地在變更我們的文件與Source Code,但我們也常常忘記「為什麼要改這份文件?為什麼要多這一行程式碼?」,因此我們需要提供一個系統來管理文件與Source Code的變更與同步化。
 

工具

我們目前所提供的工具有「CVS」、「ViewCVS」、「WinCVS」,「CVS」為Open Source團體常用的版本同步化系統(Version Control System),但由於CVSServer的形態,並沒有Web介面,因此我們又再找到另外一項工具「ViewCVS」,ViewCVSCVSWeb介面,提供我們以Web的方式觀察目前在儲存庫(Repository)中的模組(module)的版本,並且提供diffWeb介面,讓管理者可以追蹤Source的演變過程。有了ServerWeb介面,我們還需要一個可以真正地存取模組、更新版本的客戶端(Client)工具,這就是「WinCVS」,WinCVS包含針對CVS Server上的模組進行版本控制與同步化的功能。需要強調的是以上三項工具都是免費的。

Auto Build Management
 

功能

自動化建構、自動化發佈版本、自動化佈屬、自動化產生文件、自動化單元測試。

自動化建構,即持續整合在CVS上的程式版本,包含Daily BuildNight Build與手動啟動建構。
自動化發佈版本,即自動化產生.jar.war.ear,讓Deployer可以手動進行佈屬。
自動化佈屬,即佈屬至Application Server(ex. WeblogicWebShpere)
自動化產生文件,包含產生JavaDoc、編譯報告、佈屬報告、單元測試報告。
自動化單元測試,配合JUnit可以進行自動化單元測試。

工具

我們目前所提供的工具有「LuntBuild」、「Ant」、「JUnit

Deployment

Application Server

功能

整合測試、接受度測試

工具

我們目前所提供的工具為「WebShpere」。



Database Server

功能

整合測試、接受度測試



張貼留言