2011年1月4日 星期二

軟體開發工程

一般軟體開發程序分為

需求整理==>系統分析==>系統設計==>程式開發==>系統測試==>系統維護

整個流程的控管稱為專案管理,所使用的標準稱為軟體標準,因為有了標準,我們才能將軟體各階段的程序與以量化,進而評估其價值與品質。以下針對各階段作一簡要描述:

1.需求整理:通常由了解市場需求或客戶為主要人員,其目的為整理未來軟體應具備之功能說明與要求(RFP)。此為所有軟體產品或專案成立時的第一要務,如果沒有完整的需求項目與功能說明及要求,之後各階段的開發也會因需求的變動而導致大量時間與成本的浪費。

2.系統分析:通常由具備專業知識(Domain Know How)之軟體人員擔任,其主要目的在於與提出需求者溝通協調,並將提出之需求,透過流程合理性加以整理成特定規格與表示方式來呈現,並與提出需求者確認,此階段常見之方式有UML 提出之Use Case、Use Case Diagram、Activity Diagram 等等,並且需提出系統所以功能及模組測試個案相關文件。

3.系統設計:通常由資深程式開發人員擔任,其具備資料庫/程式開發之專業知識與技術,此階段主要目的在於架構系統,將使用者分析資料轉述為程式流程,供程式開發人員參考並開發符合需求之系統功能。此階段為軟體開發最重要步驟,其介於使用者導向與系統導向之溝通橋樑,此階段常見之方式有UML 提出之Activity Diagram、Sequence Diagram、Table Definition 等等。

4.程式開發:由一般程式設計師擔任,此工作內容主要以系統設計定義的規範來實作,此人員完成之產物主要為程式原始碼,並且應自行完成所撰寫程式之基本測試,主要包括所有API之輸出輸入測試及確定所有程式碼均有執行到且無錯誤。

5.系統測試:通常由一般人員偕同系統分析師根據[功能及模組測試個案相關文件]進行測試,主要為驗證模組及流程之輸出入功能是否符合客戶需求,分為阿法測試及貝塔測試兩類,前者為開發人員進行之測試驗證,後者為確認無誤後交由User之驗證程序,此階段需使用錯誤處理機制詳加紀錄,主要用於確認測試之問題所屬之類型(ex. 程式bug 或 規格異動 或 畫面調整等)。

6.系統交付與上線:通常由系統分析與專案管理人員擔任,此階段通常為軟體或專案開發最難處理的階段,其原因在於使用者對系統的認知與時間誤差,導致無法明確掌握系統結案時程,此階段最需要的是溝通與協調以及問題處理的效率,因此具備善於溝通協調的系統分析人員與問題處理的程式設計師是能夠縮短此階段的時程,但現實環境卻是最難實行的,也因此成為所有軟體開發一大阻礙。

專案人生─(6)專案團隊的組成類型

以下將「專案經理」的強弱和「專案成員」的強弱做為兩個維度,列出四種專案團隊的組合
(那些只出意見不做事的Sponsor或是高層主管,在此先略過不提)

A型團隊(經理弱,成員弱)
這是一般人最怕待到的專案團隊,也是老板的夢魘。如果不是搞不清楚狀況的話,通常是有特別原因才會推出這種組合去打仗。事情做不好,又做不完,大家累得要死又沒人鼓勵,專案經理報喜不報憂,這種團隊能完成專案的機率很低,大概低於50%。就算能結案,公司和專案成員大概也得遍體麟傷。

B型團隊(經理弱,成員強)
以西遊記團隊為例,相對於三位徒弟,除了佛法和緊箍咒之外,唐僧算是比較弱的一位成員;再以三國中的劉備團隊為例,論計謀用兵,劉備比不過孔明,要扁人開打,劉備又比不過關羽和張飛,但是劉備能夠讓團隊成員服從命令,共同為理想和目標而打拚,也是一種領導模式。這種團隊成功機率大於A型團隊,大概50%-75%之間。

C型團隊(經理強,成員弱)
以前面提過的江戶川柯南為例,每次解決案子,都是靠柯南一個人就搞定了,阿笠博士、小蘭、灰原哀、毛利小五郎….等人,不過是角色或輕或重的配角罷了。在這種團隊做事,好處是:專案經理無所不能,對外可搞定客戶及老板,對內可協助專案成員解決問題;壞處是:整個專案的credit很容易變成專案經理個人的credit,在他手底下要出頭天可能要等很久,因為沒有露臉的機會。這種團隊成功機率也大於A型團隊,大概50%-75%之間。

D型團隊(經理強,成員強)
這應該像是夢幻組合型的團隊了,在現實的職場生涯中,實在是可遇不可求。為什麼呢?如果真的有這麼強的團隊,一定會被老板拆成好幾個B型和C型團隊,這樣才有辦法應付較多的專案。再則,以中國人一山不容二虎的個性,要不了一兩年,成員就會有異動的心,想要自立門戶或更上一層樓(就像熱門樂團一個個單飛的主唱)。這種團隊成功機率最大,大概80%-90%之間。

說起來我很幸運,有看過D型團隊,專案經理的口頭禪是「我要成為海賊王!」,我還記得專案經理的名字,他叫「蒙其D魯夫」。

D型團隊另外一個代表是 "沉默的艦隊"

C型團隊假以時日是可以訓練成D型團隊的, 這種故事電影裡面很多的.

B型團隊如果頭兒管不住底下的成員, 就會向A型團隊靠攏.

A型團隊也有可能是實驗性質的團隊, 把一羣不知道該怎麼擺的人全部集中成一個Team, 做的好是公司賺到, 做不好的話是整個Team裁掉, 一羣人統統回家吃自己.