軟體工程:結構化方法 VS 物件導向方法

來源:互聯網
上載者:User

標籤:代碼   java語言   應用   分解   學習java   設計   height   任務   高效   

一、基本概念1、結構化方法

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

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

2、物件導向方法

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

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

二、兩者對比1、基本單位不同

  結構化方法的基本單位是模組。

  物件導向方法的基本單位是對象。

2、分析方法不同

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

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

3、各自局限
(1)結構化方法

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

(2)物件導向方法

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

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

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

三、個人體會

  在用C語言寫時,我需要想的是,我要做什麼事情,我需要完成什麼功能,自然,完成不同的功能就要用到不同的模組;而在學習JAVA時,我需要思考的是,有幾個對象,這個對象需要什麼屬性,需要完成什麼事情,與其他對象之間又有什麼聯絡。

  所以在設計C語言的結構時,我是這麼一層一層,逐漸細化設計的,功能之間是利用資料流進行聯絡。在真正實現時,如果發現哪個功能還不完善或可以更加細化時,需要由下往上依次修改子模組,工作量比較大。

  而在設計JAVA語言時,我基本是利用UML圖設計,不存在層次關係,每個類就是一個對象,類裡包括了對象的屬性和對象可以做的事情,類之間通過發送請求來進行通訊。我感覺實現起來比C語言更為方便,它的繼承機制很好地提高了代碼的複用性,並且在進行功能擴充時,僅需要設計新的對象,或在對象原有基礎上進行擴充。

  

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

 

四、參考文獻
  1. http://baike.baidu.com/view/551681.htm,百度百科,結構化方法
  2. http://baike.baidu.com/subview/7867/11370681.htm,百度百科,物件導向方法
  3. http://www.docin.com/p-725901488.html,結構化方法與物件導向方法之比較
  4. 《程式設計中過程化方法與物件導向方法的比較》,符於江,2008

軟體工程:結構化方法 VS 物件導向方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.