標籤:軟體開發過程 不同方法 邏輯 情況 通用 運行 手冊 記錄 最佳化
一、引言
20 世紀60 年代以來。軟體的發展一直受到開發綜合症“軟體危機”的影響。為了提高軟體品質,軟體開發方法不斷推陳出新,其中結構化方法經過30 多年的研究及應用,最為成熟且影響最大,直到現在仍有許多系統仍然是使用結構化方法開發的。而物件導向方法是在結構化方法、資訊建模方法等基礎上發展起來的,近10 年來發展較快,現已呈現出取代結構化方法的趨勢。
二、結構化方法
結構化方法是一種傳統的軟體開發方法,它是由結構化分析、結構化設計和結構化程式設計三部分有機組合而成的。
它的基本思想:把一個複雜問題的求解過程分階段進行,而且這種分解是自頂向下,逐層分解,使得每個階段處理的問題都控制在人們容易理解和處理的範圍內。
結構化方法基於功能分解設計系統結構,通過不斷把複雜的處理逐層分解來簡化問題,它從內部功能上類比客觀世界. 用結構化開發的軟體運行效率較高, 且能夠增加軟體系統的可靠性。
2.1、結構化分析
結構化分析(Structured Analysis,簡稱SA)是軟體工程中的一種方法,結構化分析和結構化設計可以分析商業的需求,再轉換為規格檔案,最後再產生電腦軟體、硬體設定及相關的手冊及程式。
結構化分析包括將系統概念轉換為用資料及控制的來表示,也就是轉換為資料流程圖。資料流程圖中的程式以泡泡來表示,因此也稱為“泡泡圖”。不過完整的資料流程圖中可能有許多的“泡泡”,使得很難去追蹤資料移動的情形。資料字典用來描述資料和指令的移動,而用程式規格來描述交易或資料轉換的相關資訊。
結構化分析的步驟如下:
(1)、分析當前的情況,做出反映當前物理模型的DFD;
(2)、推匯出等價的邏輯模型的DFD;
(3)、設計新的邏輯系統,產生資料字典和基元描述;
(4)、建立人機介面,提出可供選擇的目標系統物理模型的DFD;
(5)、確定各種方案的成本和風險等級,據此對各種方案進行分析;
(6)、選擇一種方案;
(7)、建立完整的需求規約。
2.1.1、資料流程圖
資料流程圖(Data Flow Diagram,DFD/Data Flow Chart),是描述系統資料流程的工具,它將資料獨立抽象出來,通過圖形方式描述資訊的來龍去脈和實際流程。它是一種能全面地描述資訊系統邏輯模型的主要工具。它可以利用少數幾種符號綜合的反映出資訊在系統中的流動、處理和儲存的情況。資料流程圖具有抽象性和概括性。
2.1.2、資料字典
資料字典(Data dictionary)是一種使用者可以訪問的記錄資料庫和應用程式中繼資料的目錄。主動資料字典是指在對資料庫或應用程式結構進行修改時,其內容可以由DBMS自動更新的資料字典。被動資料字典是指修改時必須手工更新其內容的資料字典。
2.2、結構化設計
結構化設計方法給出一組協助設計人員在模組層次上區分設計品質的原理與技術。它通常與結構化分析方法銜接起來使用,以資料流圖為基礎得到軟體的模組結構。SD方法尤其適用於變換型結構和事務型結構的目標系統。在設計過程中,它從整個程式的結構出發,利用模組結構圖表述程式模組之間的關係。
結構化設計的步驟如下:
(1)、評審和細化資料流圖;
(2)、確定資料流圖的類型;
(3)、把資料流圖映射到軟體模組結構,設計出模組結構的上層;
(4)、基於資料流圖逐步分解高層模組,設計中下層模組;
(5)、對模組結構進行最佳化,得到更為合理的軟體結構;
(6)、描述模組介面。
2.3、結構程式設計
結構化程式設計(structured programming)其概念最早由E.W.Dijikstra在1965年提出的,是軟體發展的一個重要的裡程碑。它的主要觀點是採用自頂向下、逐步求精及模組化的程式設計方法;使用三種基本控制結構構造程式,任何程式都可由順序、選擇、迴圈三種基本控制結構構造。結構化程式設計主要強調的是程式的易讀性,是進行以模組功能和處理過程設計為主的詳細設計的基本原則。結構化程式設計是過程式程式設計的一個子集,它對寫入的程式使用邏輯結構,使得理解和修改更有效更容易。
三、物件導向方法
物件導向方法(Object-Oriented Method)是一種把物件導向的思想應用於軟體開發過程中,指導開發活動的系統方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。對象是由資料和容許的操作組成的封裝體,與客觀實體有直接對應關係,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關係的類的屬性和操作進行共用的一種方式。其中一個重要的概念是類。
類是對象的模板。即,類是對一組有相同資料和相同操作的對象的定義,一個類所包含的方法和資料描述一組對象的共同行為和屬性。類是在對象之上的抽象,對象則是類的具體化,是類的執行個體。類可有其子類,也可有其它類,形成類階層。
3.1 主要特性3.1.1封裝性
封裝是一種資訊隱蔽技術,它體現於對類的說明,是對象的重要特性。封裝使資料和加工該資料的方法封裝為一個整體,以實現獨立性很強的模組,使得使用者只能見到對象的外特性(對象能接受哪些訊息,具有那些處理能力),而對象的內特性(儲存內部狀態的私人資料和實現加工能力的演算法)對使用者是隱形。封裝的目的在於把對象的設計者和對象者的使用分開,使用者不必知曉行為實現的細節,只須用設計者提供的訊息來訪問該對象。
3.1.2繼承性
繼承性是子類自動共用父類的資料和方法的機制。它由類的派生功能體現。一個類直接繼承其它類的全部描述,同時可修改和擴充。
繼承具有傳達室遞性。繼承分為單繼承(一個子類只有一父類)和多重繼承(一個類有多個父類)。類的對象是各自封閉的,若沒繼承性機制,則類的對象中資料、方法就會出現大量重複。繼承不僅支援系統的可重用性,而且還促進系統的可擴充性。
3.1.3多態性
對象根據所接收的訊息而做出動作。同一訊息為不同的對象接受時可產生完全不同的行動,這種現象稱為多態性。利用多態性使用者可發送一個通用的資訊,而將所有的實現細節都留給接受訊息的對象自行決定,如是,同一訊息即可調用不同的方法。例如:Print訊息被發送給一圖或表時調用的列印方法與將同樣的Print訊息發送給一本文檔案而調用的列印方法會完全不同。多態性的實現受到繼承性的支援,利用類繼承的層次關係,把具有通用功能的協議存放在類層次中儘可能高的地方,而將實現這一功能的不同方法置於較低層次,這樣,在這些低層次上產生的對象就能給通用訊息以不同的響應。在OOPL中可通過在衍生類別中重定義基類函數(定義為重載函數或虛函數)來實現多態性。
3.2物件導向分析
物件導向的分析方法(OOA),是在一個系統的開發過程中進行了系統業務調查以後,按照物件導向的思想來分析問題。OOA與結構化分析有較大的區別。OOA所強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。
在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:
第一步,確定對象和類。這裡所說的對象是對資料及其處理方式的抽象,它反映了系統儲存和處理現實世界中某些事物的資訊的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。
第二步,確定結構(structure)。結構是指問題域的複雜性和串連關係。類成員結構反映了泛化-特化關係,整體-部分結構反映整體和局部之間的關係。
第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
第四步,確定屬性(attribute)。屬性就是資料元素,可用來描述對象或分類結構的執行個體,可在圖中給出,並在對象的儲存中指定。
第五步,確定方法(method)。方法是在收到訊息後必須進行的一些處理方法:方法要在圖中定義,並在對象的儲存中指定。對於每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的儲存中定義的,但並不在圖上給出),而有些則是顯示的。
四、二者的比較
結構化方法是對系統功能建模,基於功能分解設計系統結構,從內部功能上類比客觀世界。物件導向方法則是從行為的角度進行建模,基於行為分析法認定對象及它們之間的關係,從內部結構上類比客觀世界,它採用了新概念、新方法、新的表示形式,有助於軟體開發人員加深對系統的理解,給軟體開發帶來很大益處。但在實際應用中,開發的大型軟體系統通常是混合型系統,即需要處理即時資訊、又需要資料庫的支援,同時還涉及大量的事務性操作請求,在這種情況下,在選用物件導向方法的同時在局部處理上可以結合使用結構化方法。
參考文獻
(1)結構化方法與物件導向方法的比較分析 張莉 裘國永
陝西師範大學學報
(2)百度百科 結構化方法 結構化設計 結構程式設計
物件導向方法
結構化方法和物件導向方法的比較