專案管理的流程主要指導專案經理如何管理專案,但對於指導開發人員如何開發專案,並無多大用處。
剛畢業的學生或許對「軟體工程」很熟悉,對各個開發階段應該做什麼,不同的開發流程有什麼優缺點,說的頭頭是道。
可是一旦參與專案開發後,便會有一種無從下手的感覺。
舉例來說:
- 需求分析階段要分析需求,但具體怎麼分析?
- 客戶的需求是描述語句,例如「我們需要一個影像處理的軟體」,而程式碼則是一個具體的類別和函式。那怎麼從描述語句轉化成具體的類別和函式呢?
- 具體的語言特性,例如 C++ 的 private, protected, public 等屬性是來自哪裡?該如何設計?
- 物件導向的類別、屬性、方法等,是怎麼設計出來的?
相信以上的問題都曾困擾著你我,但軟體工程並未給出答案,導致我們在實際開發過程中,只能在別人的設計與指導下工作,或是亂湊出能滿足需求的想法,至於效果,就得靠上天眷顧了。
有慧根的人,經過一段時間的磨練後,可能就漸漸掌握門道,但大多數的人可能就一直原地踏步,不斷地執行別人分配的工作內容。
其實,就像「專案管理」有一套完整的流程一樣,「專案開發」也有一套完整的程序。
對於物件導向來說,整個開發流程實際上非常清晰,底下我們將「瀑布模型」、「敏捷開發」等稱為『管理流程』;物件導向流程開發稱為『技術流程』。
物件導向的技術流程可以概括如下:
需求模型 -- 領域模型 -- 設計模型 -- 實作模型
- 需求模型:透過和客戶溝通,結合產業經驗和知識,明確地闡述客戶的需求。
- 領域模型:根據需求模型,擷取出領域相關概念,為後面的物件導向設計打下基礎。
- 設計模型:以領域模型為基礎,綜合物件導向的各種設計技巧,完成類別的設計。
- 實作模型:以設計模型為基礎,將設計轉譯為具體的程式語言實作,完成程式碼撰寫。
技術流程環環相扣,上一步流程的輸入就是下一步流程的輸入。
藉由這種 step by step 的方式,可以完成從需求到最後實作的相關工作。