結構化方法與面向對象方法

  1. 結構化方法

結構化方法是一種傳統的軟件開發方法,這種方法強調的是自頂向下、逐步求精、模塊化設計、結構化編碼的思想與要點。結構化軟件開發方法能夠說是最先的軟件開發方法,同時也是到現今開發應用中比較廣泛、比較成熟的軟件開發方法,由結構化方法所引入的工程與結構化的思想對於軟件的設計、開發與編寫都有很大的影響。編程

結構化方法中自頂向下的思想將程序的設計分層,將程序的功能分解,程序變成了一種逐步向下,從概況到詳細的過程。而結構化方法中的模塊化設計將程序所須要的各類功能分解,將一個系統劃分爲若干個模塊,每個模塊實現本身特定的功能,模塊彼此之間相互獨立,經過自頂向下的層次關係來進行上下層裏的調用操做。架構

         下圖即爲結構化方法分層、分模塊的示例圖。模塊化

  

結構化方法按軟件生命週期劃分,有結構化分析(SA),結構化設計(SD),結構化實現(SP)。 函數

結構化分析的步驟以下:測試

①分析當前的狀況,作出反映當前物理模型的DFD;優化

②推導出等價的邏輯模型的DFD;編碼

③設計新的邏輯系統,生成數據字典和基元描述;設計

④創建人機接口,提出可供選擇的目標系統物理模型的DFD;3d

⑤肯定各類方案的成本和風險等級,據此對各類方案進行分析;調試

⑥選擇一種方案;

⑦創建完整的需求規約。

結構化設計方法給出一組幫助設計人員在模塊層次上區分設計質量的原理與技術。它一般與結構化分析方法銜接起來使用,以數據流圖爲基礎獲得軟件的模塊結構。SD方法尤爲適用於變換型結構和事務型結構的目標系統。在設計過程當中,它從整個程序的結構出發,利用模塊結構圖表述程序模塊之間的關係。結構化設計的步驟以下:

①評審和細化數據流圖;

②肯定數據流圖的類型;

③把數據流圖映射到軟件模塊結構,設計出模塊結構的上層;

④基於數據流圖逐步分解高層模塊,設計中下層模塊;

⑤對模塊結構進行優化,獲得更爲合理的軟件結構;

⑥描述模塊接口。

 

         其中上述步驟中所述的DFD即指的是數據流圖,它從數據傳遞和加工角度,以圖形方式來表達系統的邏輯功能、數據在系統內部的邏輯流向和邏輯變換過程,上圖就是一個圖書館管理系統的數據流圖模型。

總而言之,結構化方法的基本原則就是分解原則和模塊化原則,分解原則是結構化方法中最基本的原則,它是一種先整體後局部的思想原則,在構造信息系統模型時,它採用自頂向下、分層解決的方法,使得程序的思路由歸納到具體,逐漸地變得明朗清晰。模塊化原則將程序分爲多個模塊,而且使每一個模塊儘可能只執行一個功能,每一個模塊之間用過程語句或函數方式等調用其餘的模塊。

2.面向對象方法

         對比與結構化的方法,面向對象的方法則不是將程序按照功能的不一樣分解開來,而是按照不一樣的對象來進行分解。

         在面向對象的思想裏,客觀世界中的事物都是對象,對象之間存在必定的關係,而且複雜對象由簡單對象構成,而具備相同屬性和操做的對象屬於一個類,對象是類的一個實例。另外,類與類之間能夠有層次結構,即類能夠有子類,其中,子類繼承父類的所有屬性和操做,並且子類有本身的屬性和操做。就好比說,動物是一個大類,鳥是動物的一種,把鳥分紅一個類的話,那麼鳥類就是動物類的子類,而在鳥類中有麻雀,有鸚鵡,這些都是鳥類這個籠統的類的一些實例,他們就是鳥類這個類中的對象。其實從上面的這些示例中就能夠看出,在面向對象的思想中,強調充分運用人在平常邏輯思惟中常常採用的思想方法與原則,所以,面向對象方法與人的平常思惟方法十分的類似,這使得用戶與編程者、測試人員都能很容易地理解整個程序的架構和運做方式。

面向對象的方法分爲面向對象的分析方法(OOA)和麪向對象設計(OOD)。

在用OOA具體地分析一個事物時,大體上遵循以下五個基本步驟:

①肯定問題域;

②區分類和對象;

③區分總體對象以及組成部分,肯定類的關係以及結構;

④定義屬性和服務;

⑤肯定附加的系統服務。

面向對象分析方法是立足於應用,用於刻畫問題,以此得出程序的整體設計結構。

OOD的方法用於細化分析結果並補充實現相關,其大體上遵循以下五個基本步驟:

①改進和完善系統分析的結果;

②設計交互過程和用戶接口;

③設計任務管理,以及子系統以及任務之間的協調方式;

④設計全局資源,肯定任務或子系統的資源分配;

⑤對象設計。

         面向對象的原則中還存在封裝性和多態性。封裝是對抽象元素的劃分過程抽象,由結構和行爲組成,封裝用來分離抽象的原始接口和它的執行。封裝使數據和加工該數據的方法封裝爲一個總體,以實現獨立性很強的模塊,使得用戶只能見到對象的外特性,而對象的內特性對用戶是隱蔽的。封裝的目的在於把對象的設計者和對象者的使用分開,使用者沒必要知曉行爲實現的細節,只須用設計者提供的消息來訪問該對象。而多態性則指的是對象根據所接收的消息而作出動做。同一消息爲不一樣的對象接受時可產生徹底不一樣的行動,這種現象稱爲多態性。

3.優缺點比較

         結構化的方法因爲其自頂向下的特性,決定了這種程序是由表及裏、由大到小、由歸納到具體的程序。這樣一來,處理問題的過程變得由易到難,逐層解決問題,編程的思路更加清晰,從而下降了處理問題的難度。可是,在使用結構化的方法解決問題的時候,在獲得問題本質性的描述以前,不斷分解出的結論和須要處理的信息愈來愈多、愈來愈複雜。由於這種逐層解決的思想,它須要對問題有比較透徹的理解,要求設計者有大局觀,可以透過問題的表象抓住問題的本質。所以,當軟件項目較小、系統設計者能力足夠高的時候,結構化方法能快速的找到最簡潔、高效率的邏輯模型。可是對於複雜的問題,結構化方法的幫助有限,但它有助於使用面向分析方法的系統分析員確認系統最初的高階模型。

         面向對象方法與人類習慣的思惟方法一致,使得使用者和維護人員都容易理解,在軟件維護中可維護性也較高,而且易於測試和調試,面向對象方法直接由問題入手,來進行系統的建模。面向對象軟件的穩定性好,對軟件的局部進行修改時,不會引發總體的變化,並且對局部修改容易實現;另外,面向對象軟件的可重用性好,而且因爲它是把大的問題分解成相互獨立的小問題處理,下降了開發的技術難度。可是因爲面向對象方法老是試圖抽象出更公用的類,所以對系統分析員抽象事物和把握最初分析方向的要求很高,經常難以控制抽象 的對象,其掌握難度高於結構化分析方法。對於需求變化頻繁的系統,獲得一個高度可複用的面向對象軟件系統設計是很困難的事情。

         結構化方法與面向對象方法並非對立的,不論哪種設計方法,都有本身的優點,固然也會有本身的劣勢,對於每一個問題,須要設計者透徹理解,才能正確地找到適合當前問題的方法。

相關文章
相關標籤/搜索