1、結構化方法
結構化方法起源於1960~2023年代。隨著當時軟體工程業的發展,軟體規模逐步擴大。而傳統的以功能和資料為中心的開發方法已經無法適用於大型系統的開發,由此結構化方法運用而生。
結構化方法是結構化分析(sa)、結構化設計(sd)和結構化程式設計技術(sp)的組合。
1.1 結構化分析
結構化分析(structed)的精髓在於抽象、求精和資訊隱藏。通過對系統行為的自頂向下的分析,用狀態轉移圖(sdt)、資料字典(dd)和資料流圖(dfd)等圖表的方式精確描述系統從頂層到向下細化的各層的行為和資料,將複雜系統流程表述成乙個個子流程的集合,簡化了系統開發複雜度。下面結合例項簡要敘述結構化分析流程。
假設我們要開發乙個校園二手交易平台,在明確系統功能需求之後,首先根據系統功能需求建立系統資料模型——實體—關係圖。
1.實體關係圖明確了系統內的實體資料以及他們之間的關係,每個實體以及他們之間的關係都對應相應的系統功能。比如交易系統中實體有使用者、管理員、商品等實體,使用者可以購買商品或者賣出商品,使用者與商品間是一對多關係。管理員可以管理使用者,與使用者是一對多的關係,這樣就建立了系統內實體--關係圖。
2.實體—關係圖描述了系統中靜態的資料關係,只能對應功能點,而對於系統的功能流程無法描述。資料流圖通過分析資料在系統內的流動,從對頂層的巨集觀描述逐步細化,確定了系統內的資料流動過程。
乙個基本的資料流圖元素包括外部實體(資料產生者/消費者)、處理(資料處理者)、資料流(流經系統的資料/輸入/輸出)和資料儲存(非即時使用的資料),將許多元素根據他們之間的功能要求組合起來,就形成了對系統內資料流動的描述。
3上述方法都是對系統內資料行為的描述,而對於系統外部而言,系統展現在人眼前的不是資料,而是系統的一系列行為,資料是隱藏在系統內部的。所以有必要以資料描述為基礎,展示系統的狀態變化過程,也就是建立狀態轉移表。
轉台轉移表包括狀態(state)、狀態轉移(state transition)、事件(event)和活動(action)。狀態描述了系統的不同工作階段,不同的狀態對應不同的行為。狀態轉移表示系統從乙個狀態轉移到另乙個狀態的過程。在系統使用過程中,在不同狀態下,不同事件的出現都會導致系統進入不同的活動,產生不同的狀態轉移,系統也由此正常工作。
如交易平台中,註冊使用者在登陸狀態下將商品加入購物車,商品將會加入該使用者的購物車,而在未登入狀態下點選加入購物車,系統會進入登陸提示頁面。
1.2結構化設計
在結構化分析階段,我們得到了實體關係圖、資料流圖和狀態轉移圖等圖表,結構化設計可以將這些圖表轉化成系統的組成結構設計圖,並由此編碼實現系統。
根據資料流圖的分層結構構造系統的頂級模組,並將模組功能細分,根據下層資料流構造相應的子模組,並保證資料模組之間的功能獨立性,從而完成資料流圖到軟體結構圖之間的轉化。
圖1:資料流圖到結構設計圖
1.3結構化程式設計
在上面我們已經得到軟體結構圖,可以知道軟體結構圖是分層細化的。所以在系統的編碼過程中,程式設計師不需要關注系統所有的流程細節,只需要關注當前設計模組的行為,從而自頂向下地完成系統編碼,大大降低了系統實現難度。
圖2:結構化程式
1.4結構化方法的優缺點
結構化方法的優點在於整體開發過程和各分層設計的完整性。在自頂向下的分析過程中,開發者可以對系統進行詳細梳理分析,得到完整的系統設計,保證系統實現的正確性和穩定性。而在實際開發過程中,結構化開發方法對系統開發早期準備要求較高,而往往系統開發早期,開發者對系統的認識並不完整,這就容易導致後期開發過程的阻塞甚至專案重新開發,削弱了結構化方法的可用性。
2、物件導向方法
物件導向方法(object-oriented method)起源於物件導向的程式語言,是一種把物件導向的思想應用於軟體開發過程中,指導開發活動的系統方法。物件是由資料和容許的操作組成的封裝體,與客觀實體有直接對應關係,乙個物件類定義了具有相似性質的一組物件。所謂物件導向就是基於物件概念,以物件為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟體系統。
物件導向方法同樣包括物件導向分析、物件導向設計和物件導向變成三個部分。
2.1物件導向分析(ooa)
物件導向的分析方法(ooa),是在乙個系統的開發過程中進行了系統業務調查以後,按照物件導向的思想來分析問題。ooa與結構化分析有較大的區別。ooa所強調的是在系統調查資料的基礎上,針對oo方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。
在用ooa具體地分析乙個事物時,大致上遵循如下五個基本步驟:
1.確定物件和類。根據要開發的系統總結出系統中的類和物件。
2.確定結構(structure)。結構是指問題域的複雜性和連線關係。類成員結構反映了泛化-特化關係,整體-部分結構反映整體和區域性之間的關係。
3.確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
4.確定屬性(attribute)。屬性就是資料元素,可用來描述物件或分類結構的例項。
5.確定方法(method)。方法是在收到訊息後必須進行的一些處理方法:方法要在圖中定義,並在物件的儲存中指定。對於每個物件和結構來說,那些用來增加、修改、刪除和選擇乙個方法本身都是隱含的(雖然它們是要在物件的儲存中定義的,但並不在圖上給出),而有些則是顯示的。
2.2 物件導向設計(ood)
物件導向的設計方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。在ood的設計過程中,要展開的主要有如下幾項工作。
1. ood要根據物件導向的概念模型整理分析階段所確定的物件結構、屬性、方法等內容,改正錯誤的內容,刪去不必要和重複的內容等。
2.3物件導向程式設計(oop)
oop是在結構化程式設計的基礎上,於80年代初湧現的一種程式設計方法。封裝、繼承和多型是整個oop方法的基礎,主要用於在資料段外圍構造保護層,以限制外界變化的影響,所有的資料訪問都由保護層內的過程間接處理。oop 達到了軟體工程的三個主要目標:重用性、靈活性和擴充套件性。為了實現整體運算,每個物件都能夠接收資訊、處理資料和向其它物件傳送資訊。oop 主要有以下主要的概念:
元件:資料和功能一起在執行著的電腦程式中形成的單元,元件在 oop 電腦程式中是模組和結構化的基礎。
1. 抽象性:程式有能力忽略正在處理中資訊的某些方面,即對資訊主要方面關注的能力。
2. 封裝:確保元件不會以不可預期的方式改變其它元件的內部狀態;只有在那些提供了內部狀態改變方法的元件中,才可以訪問其內部狀態。每類元件都提供了乙個與其它元件聯絡的介面,並規定了其它元件進行呼叫的方法。
3. 多型性:元件的引用和類集會涉及到其它許多不同型別的元件,而且引用元件所產生的結果得依據實際呼叫的型別。
4. 繼承性:允許在現存的元件基礎上建立子類元件,這統一並增強了多型性和封裝性。典型地來說就是用類來對元件進行分組,而且還可以定義新類為現存的類的擴充套件,這樣就可以將類組織成樹形或網狀結構,這體現了動作的通用性。
2.4物件導向方法的優缺點
優點:(1)是一種全新的系統分析設計方法(物件、類、結構屬性、方法)
(2)適用於各類資訊系統的開發。
(3)實現了對客觀世界描述到軟體結構的直接轉換 ,大大減少後續軟體開發量。
(4)開發工作的重用性、繼承性高,降低重複工作量。
缺點:(1)需要一定的軟體支援環境。
(2)不太適宜大型的mis開發,若缺乏整體系統設計劃分,易造成系統結構不合理、各部分關係失調等問題。
(3)只能在現有業務基礎上進行分類整理,不能從科學管理角度進行理順和優化。
3.總結
結構化開發方法和物件導向開發方法都是當前比較流行的軟體開發方法。相比物件導向方法,結構化方法更具整體統一性,得到的系統設計結果在行為一致、功能完善方面都有完整的分析做保證。相比結構化開發方法,物件導向方法更加直觀,能夠對應現實物件,並能實現模組的組合和重用,提公升開發效率。在實際開發過程中,開發者可以根據專案的規模、複雜程度等因素選擇不同的開發方法,提公升開發效率。
結構化開發方法 物件導向開發方法
結構化開發方法和物件導向開發方法之比較 結構化方法是一種基於如下概念的開發策略,即乙個系統應該被劃分為兩個部分 資料和功能,且資料和加工資料的功能是分離的。而物件導向方法解決問題的思路是從現實世界中的客觀物件 如人或事物 出發,盡量運用人類的思維方式 如抽象和分類 來構造軟體系統。物件導向開發方法不...
結構化方法與物件導向方法的比較
結構化方法,是70年代末,由demarco等人提出的,旨在減少分析活動中的錯誤,建立滿足使用者需求的系統邏輯模型。結構化方法是強調開發方法的結構合理性以及所開發軟體的結構合理性的軟體開發方法,也稱為新生命週期法,是生命週期法的繼承與發展,是生命週期法與結構化程式設計思想的結合。其基本思想是用系統工程...
結構化方法與物件導向方法之應用比較
結構化方法與物件導向方法之應用比較 結構化方法是計算學科的一種典型的系統開發方法。它採用了系統科學的思想方法,從層次的角度,自頂向下地分析和設計系統。結構化方法包括結構化分析 sa 結構化設計 sd 和結構化程式設計 sp 三部分內容。其中,sa 和sd 主要屬於學科抽象的內容,sp 則主要屬於學科...