結構化方法與物件導向方法之應用比較

2022-09-13 15:54:11 字數 3917 閱讀 3612

結構化方法與物件導向方法之應用比較

結構化方法是計算學科的一種典型的系統開發方法。它採用了系統科學的思想方法,從層次的角度,自頂向下地分析和設計系統。結構化方法包括結構化分析(sa)、結構化設計(sd)和結構化程式設計(sp)三部分內容。其中,sa 和sd 主要屬於學科抽象的內容,sp 則主要屬於學科設計方面的內容。

在結構化方法中,有兩大類典型方法,一類是以yourdon 的結構化設計、gane/sersor構化分析方法以及demarco 結構化分析方法為代表的面向過程的方法;另一類是以jackson 方法和warnier-orr 方法為代表的面向資料結構的方法。

(1)抽象原則,(2)分解原則,(3)模組化原則。

模型問題是結構化方法的核心問題。建立模型是為了更好地理解要模擬的現實世界。建模通常是從系統的需求分析開始,在結構化方法中,就是使用sa 方法構建系統的環境模型;然後使用sd 方法,確定系統的行為和功能模型;最後用sp 方法進行系統的設計。sd 的主要任務就是要在系統環境模型的基礎上建立系統的行為和功能模型,完成系統內部行為的描述。實現系統行為和功能模型的主要工具有:資料字典、資料流圖、狀態變遷圖和實體一聯絡模型等。

資料字典是乙個包含所有系統資料元素定義的倉庫。資料元素的定義必須是精確的、嚴格的和明確的。乙個實體一般應包括以下幾個部分的內容:名字;別名;用途;內容描述;備註資訊

資料流圖是sa 和sd 的核心技術, 它採用面向處理過程的思想描述系統,它是一種描述資訊流和資料從輸入到輸出變換的應用圖形技術。模擬系統的乙個大致邊界,並展示系統和外部的介面、資料的輸入和輸出以及資料的儲存。

狀態變遷圖及時地描述了物件的狀態,它著重系統的時間依賴行為。狀態變遷圖源於實時系統的建模。狀態變遷圖看起來非常像資料流圖,然而,它們之間卻存在著本質的不同。資料流圖著重於資料流和資料轉換的過程,而狀態變遷圖著重於狀態的描述,如激勵發生時的開始狀態和系統執行響應後的結果狀態。狀態變遷圖的條件和乙個過程的輸入資料流相對應,同時,還與控制流的流出相對應。

實體聯絡模型被用來模擬系統資料部件之問的相互關係。實體聯絡模型獨立於當前的系統狀態,並與具體的計算機程式語言無關。

物件導向(object—oriented,簡稱oo)方法是以物件導向思想為指導進行系統開發的一類方法的總稱。這類方法以物件為中心,以類和繼承為構造機制來抽象現實世界,並構建相應的軟體系統。

物件導向技術的基本思想是盡可能地運用人類的自然思維方式來構造軟體系統。現實世界的問題是由客觀實體和實體之間的聯絡構成的,物件就是客觀實體的抽象。物件導向的方法自出現以來很快受到計算機軟體界的青睞,並迅速成為世紀年代的主流開發方法。

物件導向方法學的基本觀點如下客觀世界是由物件組成的。任何客觀的事物或實體都是物件,複雜的物件可以由簡單的物件組成。具有相同的資料和相同的操作的物件可以歸併為乙個類,物件是物件類的乙個例項。從乙個類可以產生許多物件。類可以派生出子類,子類繼承父類的全部特性資料和操作,又可以有自己的新特性。子類與父類形成類的層次結構。物件之間通過訊息傳遞相互聯絡。類具有封裝性,它的資料與操作等對於外界是不可見的,外界只能通過訊息請求進行某些操作,提供所需要的服務。

物件導向是一種新的軟體工程方法,新的程式設計范型,其基本技術是使用物件、類、繼承、封裝、訊息等基本概念進行程式設計和實現。因此可以說物件導向=物件類+繼承+通訊。如果乙個計算機軟體系統採用這些概念來建立模型並予以實現,它就是物件導向的。

物件導向方法學包括物件導向分析,物件導向設計,物件導向程式設計,以及物件導向測試。這裡主要涉及到與過程建模密切相關的物件導向的分析和設計。從軟體過程的定義可以看出,面向過程的方法學在建模過程中的關注焦點不是物件的內部性質,因此,有關不同開發領域的度量資訊歷史資料庫可以幫助開發人員有信心去理解這些關係,並且有信心得到動態模型的預期結果。

物件導向方法的核心問題也是模型問題。物件導向模型主要由ooa 模型、ood 模型組成。其中,ooa 主要屬於學科抽象方面的內容,ood 主要屬於學科設計方面的內容。

ooa 關心的是構建現實世界的模型問題。如何解決現實世界的建模問題呢?根據系統科學的思想,首先需要對複雜的系統進行分解,最常用的分解方法就是分層。關於ooa 模型的分層方法有不少, 本書採用p.coad 和e.yourdon 的分層方法。該方法將ooa 模型劃分為5 個層次,即:主題層、物件層、結構層、屬性層和服務層。ooa 的主要任務就是要在問題域上構建具有這5 個層次內容的ooa 模型。

ood 根據設計的需要,僅對ooa 在問題域方面建立的5 個抽象層次進行必要的增補和調整,同時,ood 還必須對人機互動、任務管理和資料管理3個部分的內容進行抽象,最後建立完整的ood 模型。

結構化設計從系統的功能入手,按照工程標準和嚴格規範將系統分解為若干功能模組。然而,由於使用者的需求和軟、硬體技術的不斷發展變化,作為系統基本成分的功能模組很容易受到影響,區域性修改甚至會引起系統的根本性變化。開發過程前期入手快而後期頻繁改動的現象比較常見。

物件導向方法則從所處理的資料入手,以資料為中心來描述系統,資料相對於功能而言,具有更強的穩定性,這樣設計出的系統模型往往能較好地對映問題域模型。物件、類、繼承性、多型性、動態定連概念和設施的引入使用,顯然令物件導向的設計方法具有一定的優勢,能為生產可重用的軟體構件和解決軟體的複雜性問題提供一條有效的途徑。

1)從系統整體出發,強調自上而下的分析,保證了系統的整體性和目標的一致性;

2)採用分塊處理問題的方法,可以降低問題處理的難度;

3)嚴格區分系統開發的階段性,便於系統開發的管理和控制;

4)規範化的文件,思路清晰,方便開發人員程式設計以及便於軟體後期的維護。

1)對問題域的認識。結構化方法在需求分析中對問題域的認識和描述不是以問題域中固有的事物——物件作為基本單位,而是打破了各項事物之間的界限,在全域性範圍內以資料流為中心進行分析,所以分析結果不能直接反映問題。同時,當系統較複雜時,很難檢驗分析的正確性。 因此,結構化分析方法容易隱蔽一些對問題域的理解偏差,與後續開發階段的銜接也比較困難。

2)分析與設計差異。 結構化方法中設計文件很難與分析文件對應,因為二者的表示體系不一致。結構化分析的結果資料流圖(dfd)和結構化設計結果模組結構圖(msd)是兩種不同的表示體系,從分析到設計的「轉換」不存在可靠的轉換規則,而更多地是帶有人為的隨意性,容易因理解上的錯誤而埋下隱患。

3)難以適應需求變化。結構化方法對需求變化的適應能力比較弱,軟體系統結構對功能的變化十分敏感,功能的變化會引起的許多資料流的修改,同時設計出的軟體難以重用,延緩了開發的過程。

4)重用性差。結構化分析與設計清楚的定義了系統的介面,當系統對外界介面發生變動時,可能會造成系統結構產生較大的變動,難以擴充新的功能介面。

5)軟體可維護性差,由於軟體的可修改性差,導致維護困難,造成維護費用太高。

1)可重用性好,由於把大問題分解成相互獨立的小問題處理,降低了開發的技術難度,開發工作變得容易。

2)程式設計容易,由於物件導向更接近現實,可以從現實出發,進行適當的抽象。

3)由於與人類習慣的思維方式一致,使得使用者和維護人員更容易理解,在軟甲維護中可維護性更高,便於測試和除錯。

4)系統開發循序漸進,反覆修改,確保較好的使用者滿意度。

1)對客觀事物判斷的不確定性。物件導向方法中物件的確定有時會因客觀邊界模糊而難以確定,即使確定下來也將會帶有很多人為的因素,這樣就很難保證軟體描述的正確性。

2)認識差異。在問題域模型中,物件導向方法把具體或抽象的問題域或現象直接表述為物件,同時把現象型別直接表述為類。大多數物件導向分析方法支援多視角模型, 即對同一問題域現象,不同的主體可以將它表述為同一物件或型別,但系統的描述者在應用物件導向方法進行建模時常遇到這樣的困惑,描述者力圖通過物件導向的表述對存在的問題域現象達成一致,然而,結果得到的物件或類並不很適合於某個描述者對物件的獨自觀察而得到的表述。也就是說,在物件導向模型中,不同的系統描述者在觀察描述同乙個問題域現象時,都可以把該現象表述為。物件或類,但卻不能表述各自之間存在的對問題域現象的不同認識。

結構化方法和物件導向方法是目前的主要軟體開發方法, 它們各有優缺點。 軟體工程的目標是以最小的代價開發出滿足使用者需求的軟體。在有些特定的應用場合,可以在軟體開發過程中結合它們的優點,一起運用到軟體開發中去。在實際的軟體開發過程中,採用兩種或兩種以上的方法相結合,發揮各種方法的長處,在軟體工程的理論研究和工程實踐中都有重要的意義。

結構化方法與物件導向方法的比較

結構化方法,是70年代末,由demarco等人提出的,旨在減少分析活動中的錯誤,建立滿足使用者需求的系統邏輯模型。結構化方法是強調開發方法的結構合理性以及所開發軟體的結構合理性的軟體開發方法,也稱為新生命週期法,是生命週期法的繼承與發展,是生命週期法與結構化程式設計思想的結合。其基本思想是用系統工程...

物件導向方法和結構化方法理解

結構化開發方法 早期的程式開發,如c語言,都是用結構化開發方法。結構化開發又叫做面向過程開發,具體原理是將乙個軟體分為多個過程 函式 進行開發,用結構體 struct 管理資料。這種開發方式使得 的可讀性變得很低,並且 難以移植。現在較常用的開發方法為物件導向開發 object oriented 分...

結構化方法和物件導向方法的比較

結構化方法和物件導向方法的比較 翁松秀 北京航空航天大學 摘要 程式設計之精髓在於程式設計思想,而不同的程式設計方法有不同的程式設計思想。結構化程式設計方法一直以來都是程式設計人員基本的程式設計方法,而近年來流行的物件導向方法也備受人們青睞。文章通過介紹程式設計世界的這兩種主要程式設計方法,結構化方...