實戰系列『影像處理軟體設計』- [3] 物件導向方法:分析和設計流程概述

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