面向對象軟件工程方法學與傳統方法學的異同

軟件工程課上在學習 總結了一下 

 

面向對象工程方法學

傳統方法

基本概念

面向對象方法是一種把面向對象的思想應用於軟件開發過程中,指導開發活動的系統方法,簡稱OO,是建立在“對象”概念基礎上的方法學。對象是由數據和容許的操作組成的封裝體,與客觀實體有直接對應關係,一個對象類定義了具有相似性質的一組對象

傳統方法通常指結構化方法。結構化方法是一種傳統的軟件開發方法,它是由結構化分析、結構化設計和結構化程序設計三部分有機組合而成的

基本思想

儘可能模擬人類習慣的思維方式,使開發軟件的方法與過程儘可能接近人類認識世界、解決問題的方法與過程, 也就是使描述問題的問題空間與實現解法的求解空間在結構上儘可能一致。

把一個複雜問題的求解過程分階段進行,而且這種分解是自頂向下,逐層分解,使得每個階段處理的問題都控制在人們容易理解和處理的範圍內

基本單位

對象

模塊

主要內容

分析

強調針對問題域客觀存在的各項事務設立對象,把對問題域和系統的認識理解, 正確地抽象爲規範的對象( 包括類、繼承層次) 和消息傳遞聯繫, 最終建立起問題域的簡潔、精確、可理解的面向對象模型, 爲後續的面向對象設計和麪向對象編程提供指導。面向對象分析通常建立三種模型: 對象模型、動態模型、功能模型。其中, 對象模型描述了系統的靜態結構,確定類的名稱和類間的關係;動態模型表示瞬時的、行爲化的系統的“ 控制”性質, 規定了對象模型中的對象的合法變化序列;功能模型表明了系統中數據之間的依賴關係, 以及有關數據的處理功能。

傳統分析方法是一種面向數據流而基於功能分解的分析方法, 在該階段主要通過採用數據流程圖、編制數據字典等工具, 描述邊界和數據處理過程的關係, 力求尋找功能及功能之間的說明。

設計

針對系統的一個具體的實現運用面向對象方法,與面向對象分析採用相同的表示法和模型結構,這使得從分析到設計只有局部大修改或調整,並增加幾個與實現有關的獨立部分。

以需求分析的結果作爲出發點構造出一個具體的系統設計方案,主要是決定系統的模塊結構,以及模塊的劃分,模塊間的數據傳送機調用關係。詳細設計是在總體設計的基礎上考慮每個模塊的內部結構及算法,最終將產生每個模塊的程序流程圖。但由於分析文檔和設計文檔表示體系不一致,實際上並不存在可靠的轉換規則,從而很容易因理解上的錯誤和留下隱患。

實現

用一種面向對象的編程語言把設計模型中的每個成分書寫出來,用具體的數據結構來定義對象的屬性,用具體的語句來實現服務流程圖所表示的算法。此階段產生的程序緊密對應設計中的模型,其餘部分的對象類對應與實現有關的因素。

利用一種編程語言產生一個能被機器理解和執行的系統,測試時發生和排除程序中的錯誤,最終產生一個正確的系統。但由於分析方法的缺陷很容易產生對問題的錯誤理解,以致在編程時程序員往往需要對分析員和設計人員已經認識過的事務重新進行認識。

侷限

i.不能直接反映問題域: 結構化分析方法以數據流爲中心, 強調數據的流動及每一個處理過程, 不是以問題域中的各事物爲基礎, 打破了各事物的界限, 分析結果不能直接反映問題域, 容易隱蔽一些對問題域的理解偏差。
  ii.數據和代碼缺乏保護機制: 一個特定全程數據既可以被操作這些數據的過程訪問, 也可以被其他過程訪問, 這給程序設計帶來了不安定因素, 一個不正常的數據修改或者過程調用可能會破壞正常的程序執行流程或結果。
  iii.分析和設計體系不一: 結構化分析的結果是數據流圖, 結構化設計的結果是模塊結構圖。 二者的表示體系不一致, 分析文檔很難與設計文檔對應, 所以從分析到設計的“ 轉換”過程容易因理解上的錯誤而使得設計文檔與用戶的原本需求相差甚遠。
  iv.開發過程複雜: 由於結構化方法將過程和數據分離爲相互獨立的實體, 程序員在編程時必須時刻考慮到所要處理的數據的格式。 對於不同的數據格式做相同的處理或對於相同的數據格式做不同的處理都需要編寫不同的程序, 而且往往不能對數據的安全性進行有效的控制。 如果程序進行擴充或升級, 也需要大量修改函數, 因此結構化程序的可重用性不好。 要使數據與程序始終保持兼容, 已成爲程序員的一個沉重的負擔。

i.開發過程管理要求高:在面向對象分析過程中,需要多次迭代,開發過程要經過“修改-評價-再修改”的多次反覆。

  ii.系統複用性低:面向對象方法通過信息隱藏和封裝等手段屏蔽了對象內部的執行細節,控制了錯誤的蔓延,但發生錯誤時,定位故障代價大,對於需求變化頻繁的系統,很難得到一個高度可複用的面向對象軟件系統設計。

  iii.開發人員易將原型取代規範系統分析:缺乏規範化的文檔資料,不易於後期維護。

 

總結

   統方法和麪向對象是軟件工程的程序設計方法中最本質的思想方法。傳統方法編程的基本思想就是把大的程序劃分爲若干個相對獨立、功能簡單的程序模塊,它以過程爲中心, 強調的是過程, 強調功能和模塊化, 通過一系列過程的調用和處理完成相應的任務。 面向對象編程以對象爲中心, 是對一系列相關對象的操縱, 發送消息給對象, 由對象執行相應的操作並返回結果, 強調的是對象。 理論上, 面向對象的程序設計方法將產生更好的模塊內聚和耦合特性, 使得軟件更易於重用與維護。在執行效率上來說,傳統方法比面向對象方法產生的代碼更直接,更高效。從應用的範圍看,傳統方法適用於數據少而操作多的問題。時間證明對於像操作系統這樣的以功能爲主的系統,傳統方法比較適應它。面向對象方法正好相反,對於數據庫,信息管理等以數據爲主的而操作較少的系統,用面向對象方法描述要好於傳統方法。 在實踐中程序設計方法關注軟件生命週期的各個環節, 從需求分析、總體設計到編碼、測試和維護,同時設計方法在各個階段需要工具和環境的支撐, 因此在選擇程序設計方法時, 需要綜合考慮這些因素


發佈了38 篇原創文章 · 獲贊 10 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章