## 連載:面向對象葵花寶典:思想、技巧與實踐(14) - 面向對象開發技術流程
拋開項目流程,讓我們來談談“技術流程”吧!!
談到流程,很多人立刻就會想到熟悉的瀑布模型、螺旋模型、迭代開發、敏捷、RUP等一堆軟件工程相關的軟件開發流程,但對于大部分人來說,這些流程僅僅是項目管理上的概念,只有項目經理開例會時那紅紅綠綠的甘特圖、燃盡圖、路徑圖等,或者只有評估工作量和是否要加班的時候,我們才會意識到這些流程的存在。
?
通俗的講,項目管理上的流程主要是用于指導項目經理如何管理項目用的,但對于如何指導開發人員如何開發項目,并無多大用處。一個典型的情況就是剛畢業的大學生,軟件工程掌握的很熟悉,各個開發階段應該做什么,瀑布流程有什么優缺點等,談起來都頭頭是道,但真的參加開發項目后,就會發現有一種無從下手的感覺。例如:
??需求分析階段要分析需求,但具體怎么分析呢?
??客戶的需求是描述性的,例如“我們需要一個POS機”,而代碼是一個一個具體的類和函數,那么如何從描述性的語言最后轉化到具體的類和函數呢?
??具體語言的特性,例如Java和C++的private、protected、public這些屬性是從哪里來的?什么時候設計的?
??面向對象的類、接口等,是怎么設計出來的??
?
相信這些問題都曾經困擾過很多人,但軟件工程并沒有給出這些問題的答案,因此也就導致了很多開發人員在實際開發過程中,要么只能在別人的指導下工作,要么就瞎蒙亂撞、拼湊堆砌,反正最后也能夠實現需求,至于效果嘛,那就要看運氣了。少數幾個領悟力強的人,經過一段時間的磨練后,也許就慢慢掌握了門道,但大部分人可能就一直原地踏步,不斷的在重復別人分配給自己的工作。
?
其實,就像項目管理上有一套完整的流程一樣,**項目開發也有一套完整的過程**,尤其對于面向對象來說,整個開發流程其實是非常清晰的,只是很少有人將這部分歸納總結提煉出一套用于指導開發人員進行開發的流程。
?
為了區別起見,我們將瀑布模型、敏捷開發等稱為“管理流程”,而將面向對象開發流程稱為**“技術流程”**。面向對象的技術流程可以概括如下:
需求模型?->?領域模型?->?設計模型?->?實現模型
?
l?需求模型
通過和客戶溝通,結合行業經驗和知識,明確要求客戶的需求。
?
l?領域模型
基于需求模型,提煉出領域相關的概念,為后面的面向對象設計打下基礎。
?
l?設計模型
以領域模型為基礎,綜合面向對象的各種設計技巧,完成類的設計。
?
l?實現模型
以設計模型為基礎,將設計模型翻譯為具體的語言實現,完成編碼。
?
以上流程環環相扣,上一步流程的輸出就是下一步流程的輸入。后面我們可以看到,通過這種一步一個腳印的方式,即使是經驗并不豐富的菜鳥,也能完成從需求到最后實現的相關工作,而不再需要仰望和崇拜其他大蝦大牛,或者自己摸著石頭過河了!
- 前言
- (1) - 程序設計思想的發展
- (2) - 面向對象語言發展歷史
- (3) - 面向過程 vs 面向對象
- (4) - 面向對象是瑞士軍刀還是一把錘子?
- (5) - 面向對象迷思:面向對象導致性能下降?
- (6) - 不要說你懂“類”
- (7) - “對象”新解
- (8) - “接口” 詳解
- (9) - “抽象類” 詳解
- (10) - “抽象” 詳解
- (11) - “封裝” 詳解
- (12) - “繼承” 詳解
- (13) - “多態” 詳解
- (14) - 面向對象開發技術流程
- (15) - 需求詳解
- (16) - 需求分析終極目的
- (17) - 需求分析518方法
- (18) - 用例分析
- (19) - 功能點提取
- (20) - 用例圖的陷阱
- (21) - SSD
- (22) - 領域模型
- (23) - 領域建模三字經
- (24) - 設計模型
- (25) - 類模型
- (26) - 類模型三板斧
- (27) - 動態模型設計
- (28) - 設計原則:內聚&耦合
- (29) - 高內聚低耦合
- (30) - SRP原則
- (31) - OCP原則
- (32) - LSP原則
- (33) - ISP原則
- (34) - DIP原則
- (35) - NOP原則
- (36) - 設計原則如何用?
- (37) - 設計模式:瑞士軍刀 or 錘子?
- (38) - 設計模式之道
- (39) - 設計原則 vs 設計模式
- (40) - DECORATOR模式
- (完)- 書籍已經出版