摘 要:結構化方法(SM)和面向對象方法(OOM)是當前應用最為廣泛的軟件開發方法。它們既有各自的優缺點和適應場合,又存在內在的聯系,本文在此基礎上分析了二者結合的必要性以及結合的可能性,詳細對比分析了現存的兩類結合方案并提出該課題未來研究的方向。
關鍵詞:結構化方法 面向對象方法 可結合性
中圖分類號:TP3-0文獻標識碼:A文章編號:1674-098X(2012)07(b)-0043-03
Abstract:Structured method and object-oriented method are the most widely used softwaredevelopment methods today.They have their respective advantages and disadvantages and applications,but also have inherent connection.Based on above, this paper analyzes the
necessity and the possibility of their combination,analyzes and compares the two existing combination schemes detailedly and comes up with the future research direction of the
subject.
Key Words:Structured method; Object-oriented method; combination
SM更接近于計算機世界且有利于從整體上把握系統結構和特性,而OOM更符合人類的認識習慣,兩者都存在各自的優缺點,很自然想到將兩者的優點結合起來,運用到軟件開發的過程中,彌補各自的不足[1];從應用的范圍看,SM適用于數據少而操作多的問題。而OOM適用于數據庫、信息管理等以數據為主、操作較少的系統[4]。在實際應用中,開發的大型軟件系統通常是混合型系統,既需要處理實時信息,又需要數據庫系統的支持,有時還涉及大量的事務性操作請求,既有需要采用SM的需求,又有適應OOM的一面,所以有必要將二者結合起來[7]。基于以上兩點原因可以看出將SM與OOM結合起來是一個值得研究的課題。
1 SM與OOM結合的可行性
SM與OOM有很多內在一致性,使它們有結合在一起的可能性。比如在運用分解和抽象原則上的一致:在面對現實問題的時候,二者都要通過分解和抽象的原則分析問題、化解問題。又如在局部化和重用上設計的一致:在SM中,局部化主要體現在代碼與數據分隔,程序各部分彼此相互隔離,只有必要的信息交流。而OOM則將數據、代碼、和操作方法封裝成一個類似黑箱的整體對象,提高了程序的可靠性、安全性及系統的可維護性,也就是說在局部化與重用上OOM比SM的更具優勢。
從范式來看二者的內在聯系,SM把解空間分成數據和功能兩部分,各模塊間的接口是通過傳遞數據實現的;OOM將解空間分解成各種對象,系統中模塊接口通過傳遞消息實現[1]。在編程實現中,SM采用的范式是“數據結構+算法”,而面向對象是“ 對象+消息”[3]。這兩種方法的范式表示如下:
SM: 數據結構 +算法
算法集
數據結構
OOM: 對象 +消息
對象的方法集
對象中的屬性
一般來說,OOM中對象的方法集與SM中所采用的算法集對應,面向對象中對象的屬性與SM中的數據結構對應,OOM中對象的屬性與SM中的數據結構相關聯,對象之間的消息通訊與SM中模塊間的數據接口相關聯,OOM中若干不同對象中的方法與SM中一個功能模塊對應[3]。基于以上分析,說明可以綜合考慮SM與OOM的優點,在軟件開發中把OOM與SM結合使用。
2 SM與OOM結合的方案
一般系統的開發過程分為分析、設計和實現三個階段,以下基于階段的劃分討論SM與OOM可能的結合方案。如圖1所示,0表示該階段采用OOM,S表示該階段采用SM,得到幾種結合方案:
圖1中的方案1和方案8分別是純OOM和純SM。SM在分析、設計階段得到的是系統的數據流圖和系統的模塊結構圖,最后依據分析設計的結果按模塊化編程實現。數據流圖將現實問題域映射為數據流和加工,模塊結構圖是圍繞如何實現系統需求進行的功能分解。而OOM在分析階段把具體或抽象的問題域或現象表述為對象,在設計階段要把所有具有相同服務的實體對象集抽象描述為類。對象包含了屬性和消息,類是同類對象數據特性和行為特性的封裝體。圖1中的方案3和方案6需要進行兩次由OOM到SM或者由SM到OOM的轉換,由于OOM和SM在各階段得到的是不同的表述,所以二者之間的轉換是件難事,這兩種方案不可取。
一般來說,SM提供了合適的抽象和功能分解的機制,利于從整體上把握系統功能和邏輯結構,所以比較適合系統開發的前期階段。而在清楚的了解了系統的對象、數據和操作后,具體的軟件實現采用OOM比較合適,能充分發揮其優勢。因此方案4和方案5更符合實際。每一種方案的具體實現又可以細化出多種方法,下面對目前已經提出的一些方案進行歸納和分析。
2.1 結合方案一
該類方案的特點是在系統開發過程中SM與OOM的結合方式為串行,前期工作用SM完成,后期應用OOM的思想,后期的工作在前期獲得信息的基礎上完成。
文獻中提出的結合方案在抽象分析前期階段用SM得到系統數據流圖,根據數據流圖得到對象和類的設計,面向對象的系統設計以結構化的系統分析為基礎。該方案系統開發的具體過程如下:
1)用SM分析用戶需求、系統功能,得到系統的數據流圖(DFD)。
2)從DFD中抽象出對象,分析對象,確定對象的屬性操作等。如將DFD中的信息處理點歸結為對象,根據信息處理點的處理功能和輸入輸出確定對象的功能和服務。
3)依據功能和服務劃分對象集,抽象出類。
4)進行詳細設計。
5)編程實現(用面向對象語言)、測試、維護。
莖錫等人將結合方案成功應用到博物院文物藏品管理系統中。采用自頂而下的設計方法,在面向對象基礎上綜合應用結構化開發方法,而且實現中在系統方法步驟中給出了檢查完善系統的機會,從而得出一個較為真實的對象模型。
文獻中提出的結合方案不同之處在于在系統分析和設計階段都采用SM,由結構化設計得到的系統結構圖映射出OOM所需的對象和類。其具體實現過程為:現實世界→流程圖→系統結構圖→(映射)→類圖→面向對象語言→執行求解。該方案系統開發的具體過程如下:
1)用SM分析用戶需求、系統功能,得到系統的數據流圖( DFD) 。
2)用SM進行系統設計,將系統的所有功能和功能之間的關系表示為系統結構圖。
3)用OOM實現具體的行為或功能。首先參照上一步得到的結構圖,用OOM合理規劃、設計類,然后把上面設計階段的結構圖細化映射為對象與類。
4)編程實現(用面向對象語言)、測試、維護。
可以看出該方法的關鍵是“映射”,即由模塊圖映射出系統中的類和對象。結構化設計的結果是系統模塊圖(結構圖),而面向對象實現所要求的是對象類(控件),而轉換成功的前提是對象的粒度必須小于結構圖中每個模塊數據的粒度。
成朋等人同時用SM、OOM和結合方案應用到加密軟件的設計和實現中,對比了它們的不同。SM的后期維護存在問題,OOM設計過程存在差異,相結合后的方法因
為先用比較清晰的數據流圖來表述系統,大大減少了設計的差異,后期采用面向對象方法實現,所以更新維護變得相對容易,結果證明采用SM與OOM結合的方法比單獨采用一種方法能發揮更好的效果。
2.2 結合方案二
該類方案的特點是在系統開發過程中SM與OOM的結合方式為并行,同時從結構化和面向對象的角度看問題,分析、設計問題域。
參考文獻中提出的結合方案基于以下思想:數據流圖是SM的主要表示手段,如果OOM中每個對象的方法可以由數據流圖的一個或幾個“加工”組成,則面向對象的分析結果也可以表示為數據流圖。這樣可以用數據流圖檢驗OOM方法分析的成果,使設計開發的軟件結構更合理、一致和完整。該方案系統開發的具體過程如下:
1)用SM分析用戶需求、系統功能,得到系統的數據流圖(DF D) 。
2)用OOM進行類的規劃與設計,給出類的結構圖、對象狀態圖及事件腳本。
3)細化數據流圖,使數據流圖中的每一個“加工”的粒度必須小于或等于對象中的一個方法并用數據流圖來校驗上一步類的設計的合理性。
4)概要設計及詳細設計。
5)編程實現(用面向對象語言)、測試、維護。
嚴靜等人將這種OO方法與SA方法相結合的軟件開發技術應用到了“郵電九七工程”項目中,并取得了良好的結果。
文獻中提出方案的不同是分析、設計階段同時應用兩種方法,提出了“面向對象與結構的系統分析與設計方法”。該方法中用結構化的思想分析系統整體的特性及系統中實體的特性,整體上把握系統,同時參照SM的結果用面向對象的方法詳細的具體的分析設計系統。該方案系統開發的具體過程如下:
1)應用SM總體分析系統的功能和數據特性,得到系統總體數據流圖。
2)應用OOM分析系統的實體構成,得到系統的實體對象集。
3)結合1)、2)的結果,從實體對象集中抽象出類,分析類提供的服務。
4)根據DFD或功能分析圖,分析功能模塊及模塊間接口,畫出系統功能模塊結構圖。
5)根據類所提供的服務對類進行分組。
6)應用OOM,結合4)、5),對類的屬性和服務及類之間的消息通訊進行詳細設計。
7)編程實現(用面向對象語言)、測試、維護。
仲輝等人將結合方案應用到IDEF0功能建模軟件系統,實驗證明結合方案綜合了結構化和面向對象兩種方法的分析與設計思想,克服了兩種方法單一使用所存在的不足,可較優地同時發揮兩種方法的優勢,是一種應用效果良好的系統分析與設計方法。
2.3 對比分析結合方案
本文列舉的兩類結合方案都在系統的分析和設計階段用到了SM,用面向對象的方法編程實現。利用二者的結合既克服了SM可重用性、易維護性和易擴展性差的缺點,也彌補了OOM分析問題域時可能存在的不確定性,減少了開發人員的分歧。
但SM在這兩類方案中所起的作用不同。在第一類結合方案中,無論是先進行結構化分析得到數據流圖,由數據流圖映射出類圖還是進一步進行結構化設計得到結構圖,在由結構圖映射出面向對象編程的類和對象,數據流圖都是類圖的來源,是得到類圖的基礎。第二類結合方案中的第一種方法要分別從結構化和面向對象的角度分析系統,細化結構化分析得到的數據流圖來校驗、修改、完善面向對象分析得到的類圖,數據流圖不是類圖的來源。第二種方法在分析與設計階段都用到結構化和OOM,不僅進行結構化分析得到數據流圖,而且在此基礎上進行結構化設計得到系統模塊圖,綜合考慮分析設計得到數據流圖、模塊圖、實體對象及類,完成概要設計、詳細設計。第一類方案將SM融合到了系統的開發中,是系統開發過程必不可少的一個組成部分。而第二類方案中SM只是一個輔助面向對象開發的過程。
從整個開發過程看,兩類方案都既發揮了SM的系統結構性好、利于整體分析與設計的優點,又發揮OOM易理解、易實現、利于具體分析與設計的優點;既強調了系統的功能結構和數據特性,又強調了系統的實體構成特性。
3 結語
SM與OOM的結合方案適合于大型的復雜的系統開發,這種結合充分發揮了二者的優點,相互的結合彌補了對方的不足。但應用場合有一定限制如:方案一中的“映射”對象的粒度必須小于等于結構圖中的每個模塊的粒度;方案二中“細化數據流圖”,要使數據流圖的每個加工粒度小于對應的對象的方法。無論二者串行還是并行的結合方案,串行中的轉換過程及并行中的重復工作都可能會延長開發周期,降低開發效率,而且具體實現有一定難度。所以如何更有效的將二者結合并且降低結合開發方案的難度、縮短開發周期仍然是我們應該繼續探討的課題。
參考文獻
[1]莖錫,塑建彰.一種基于面向對象思想和結構化技術的軟件開發方法[J].小型微型計算機系統.第17卷第4期1996年4月.
[2]繆淮扣,高曉雷,李剛.結構化方法、面向對象方法和形式方法的比較與結合[J]. 計算機工程與科學.第21卷第4期1999年.
[3]成朋,李代平,楊丈偉.結構化方法與面向對象方法的可結合性[J].廣東工業大學學報.第23卷第3期2006年9月.
[4]單家凌.結構化方法與面向對象可結合性研究[J].開發研究與設計技術.1009-3044(2007)04-11057-01.
[5]嚴靜、周立新、潘云鶴,面向對象方法與結構化方法相結合的MIS系統開發技術[J], 維普資訊,第5期.
[6]仲輝、曹淑艷、邱滌珊.面向對象與結構的系統分析與設計方法應用研究[J/OL].維普資訊. 1002-8331-(2003)23-0105-03.
[7]林華、夏耕. 面向對象與結構化[J]. 計算機工程. 第26卷第7期2000年7月.
[8]Lionel C. Briand,Christian Bunse, John W, et al. An Experimental Comparison of the Maintainability of Object-Oriented and Structured Design Documents[J].Empirical SoftwareEngingeering.Volume2.Numbers,291-312,DOI:10.1023/A:1009720117601,1997.
[9]R Wieringa, Univ.of Twente, Enschede, et al. A survey of structured and object-oriented software specification methods and techniques[J].ACM Computing Surveys(CSUR).Volume 30 Issue 4,Dec.1998.
[10]Wasserman,A.I,Pricher,P.A ,Muller,R.J ,et al.The object-oriented structured design notation for software design representation[J].IEEE Computer Society.10.1109/2.50272,Aug.2002.