摘 要:結(jié)構(gòu)化方法(SM)和面向?qū)ο蠓椒?OOM)是當(dāng)前應(yīng)用最為廣泛的軟件開發(fā)方法。它們既有各自的優(yōu)缺點和適應(yīng)場合,又存在內(nèi)在的聯(lián)系,本文在此基礎(chǔ)上分析了二者結(jié)合的必要性以及結(jié)合的可能性,詳細(xì)對比分析了現(xiàn)存的兩類結(jié)合方案并提出該課題未來研究的方向。
關(guān)鍵詞:結(jié)構(gòu)化方法 面向?qū)ο蠓椒?可結(jié)合性
中圖分類號:TP3-0文獻(xiàn)標(biāo)識碼: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更接近于計算機世界且有利于從整體上把握系統(tǒng)結(jié)構(gòu)和特性,而OOM更符合人類的認(rèn)識習(xí)慣,兩者都存在各自的優(yōu)缺點,很自然想到將兩者的優(yōu)點結(jié)合起來,運用到軟件開發(fā)的過程中,彌補各自的不足[1];從應(yīng)用的范圍看,SM適用于數(shù)據(jù)少而操作多的問題。而OOM適用于數(shù)據(jù)庫、信息管理等以數(shù)據(jù)為主、操作較少的系統(tǒng)[4]。在實際應(yīng)用中,開發(fā)的大型軟件系統(tǒng)通常是混合型系統(tǒng),既需要處理實時信息,又需要數(shù)據(jù)庫系統(tǒng)的支持,有時還涉及大量的事務(wù)性操作請求,既有需要采用SM的需求,又有適應(yīng)OOM的一面,所以有必要將二者結(jié)合起來[7]?;谝陨蟽牲c原因可以看出將SM與OOM結(jié)合起來是一個值得研究的課題。
1 SM與OOM結(jié)合的可行性
SM與OOM有很多內(nèi)在一致性,使它們有結(jié)合在一起的可能性。比如在運用分解和抽象原則上的一致:在面對現(xiàn)實問題的時候,二者都要通過分解和抽象的原則分析問題、化解問題。又如在局部化和重用上設(shè)計的一致:在SM中,局部化主要體現(xiàn)在代碼與數(shù)據(jù)分隔,程序各部分彼此相互隔離,只有必要的信息交流。而OOM則將數(shù)據(jù)、代碼、和操作方法封裝成一個類似黑箱的整體對象,提高了程序的可靠性、安全性及系統(tǒng)的可維護(hù)性,也就是說在局部化與重用上OOM比SM的更具優(yōu)勢。
從范式來看二者的內(nèi)在聯(lián)系,SM把解空間分成數(shù)據(jù)和功能兩部分,各模塊間的接口是通過傳遞數(shù)據(jù)實現(xiàn)的;OOM將解空間分解成各種對象,系統(tǒng)中模塊接口通過傳遞消息實現(xiàn)[1]。在編程實現(xiàn)中,SM采用的范式是“數(shù)據(jù)結(jié)構(gòu)+算法”,而面向?qū)ο笫恰?對象+消息”[3]。這兩種方法的范式表示如下:
SM: 數(shù)據(jù)結(jié)構(gòu) +算法
算法集
數(shù)據(jù)結(jié)構(gòu)
OOM: 對象 +消息
對象的方法集
對象中的屬性
一般來說,OOM中對象的方法集與SM中所采用的算法集對應(yīng),面向?qū)ο笾袑ο蟮膶傩耘cSM中的數(shù)據(jù)結(jié)構(gòu)對應(yīng),OOM中對象的屬性與SM中的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),對象之間的消息通訊與SM中模塊間的數(shù)據(jù)接口相關(guān)聯(lián),OOM中若干不同對象中的方法與SM中一個功能模塊對應(yīng)[3]。基于以上分析,說明可以綜合考慮SM與OOM的優(yōu)點,在軟件開發(fā)中把OOM與SM結(jié)合使用。
2 SM與OOM結(jié)合的方案
一般系統(tǒng)的開發(fā)過程分為分析、設(shè)計和實現(xiàn)三個階段,以下基于階段的劃分討論SM與OOM可能的結(jié)合方案。如圖1所示,0表示該階段采用OOM,S表示該階段采用SM,得到幾種結(jié)合方案:
圖1中的方案1和方案8分別是純OOM和純SM。SM在分析、設(shè)計階段得到的是系統(tǒng)的數(shù)據(jù)流圖和系統(tǒng)的模塊結(jié)構(gòu)圖,最后依據(jù)分析設(shè)計的結(jié)果按模塊化編程實現(xiàn)。數(shù)據(jù)流圖將現(xiàn)實問題域映射為數(shù)據(jù)流和加工,模塊結(jié)構(gòu)圖是圍繞如何實現(xiàn)系統(tǒng)需求進(jìn)行的功能分解。而OOM在分析階段把具體或抽象的問題域或現(xiàn)象表述為對象,在設(shè)計階段要把所有具有相同服務(wù)的實體對象集抽象描述為類。對象包含了屬性和消息,類是同類對象數(shù)據(jù)特性和行為特性的封裝體。圖1中的方案3和方案6需要進(jìn)行兩次由OOM到SM或者由SM到OOM的轉(zhuǎn)換,由于OOM和SM在各階段得到的是不同的表述,所以二者之間的轉(zhuǎn)換是件難事,這兩種方案不可取。
一般來說,SM提供了合適的抽象和功能分解的機制,利于從整體上把握系統(tǒng)功能和邏輯結(jié)構(gòu),所以比較適合系統(tǒng)開發(fā)的前期階段。而在清楚的了解了系統(tǒng)的對象、數(shù)據(jù)和操作后,具體的軟件實現(xiàn)采用OOM比較合適,能充分發(fā)揮其優(yōu)勢。因此方案4和方案5更符合實際。每一種方案的具體實現(xiàn)又可以細(xì)化出多種方法,下面對目前已經(jīng)提出的一些方案進(jìn)行歸納和分析。
2.1 結(jié)合方案一
該類方案的特點是在系統(tǒng)開發(fā)過程中SM與OOM的結(jié)合方式為串行,前期工作用SM完成,后期應(yīng)用OOM的思想,后期的工作在前期獲得信息的基礎(chǔ)上完成。
文獻(xiàn)中提出的結(jié)合方案在抽象分析前期階段用SM得到系統(tǒng)數(shù)據(jù)流圖,根據(jù)數(shù)據(jù)流圖得到對象和類的設(shè)計,面向?qū)ο蟮南到y(tǒng)設(shè)計以結(jié)構(gòu)化的系統(tǒng)分析為基礎(chǔ)。該方案系統(tǒng)開發(fā)的具體過程如下:
1)用SM分析用戶需求、系統(tǒng)功能,得到系統(tǒng)的數(shù)據(jù)流圖(DFD)。
2)從DFD中抽象出對象,分析對象,確定對象的屬性操作等。如將DFD中的信息處理點歸結(jié)為對象,根據(jù)信息處理點的處理功能和輸入輸出確定對象的功能和服務(wù)。
3)依據(jù)功能和服務(wù)劃分對象集,抽象出類。
4)進(jìn)行詳細(xì)設(shè)計。
5)編程實現(xiàn)(用面向?qū)ο笳Z言)、測試、維護(hù)。
莖錫等人將結(jié)合方案成功應(yīng)用到博物院文物藏品管理系統(tǒng)中。采用自頂而下的設(shè)計方法,在面向?qū)ο蠡A(chǔ)上綜合應(yīng)用結(jié)構(gòu)化開發(fā)方法,而且實現(xiàn)中在系統(tǒng)方法步驟中給出了檢查完善系統(tǒng)的機會,從而得出一個較為真實的對象模型。
文獻(xiàn)中提出的結(jié)合方案不同之處在于在系統(tǒng)分析和設(shè)計階段都采用SM,由結(jié)構(gòu)化設(shè)計得到的系統(tǒng)結(jié)構(gòu)圖映射出OOM所需的對象和類。其具體實現(xiàn)過程為:現(xiàn)實世界→流程圖→系統(tǒng)結(jié)構(gòu)圖→(映射)→類圖→面向?qū)ο笳Z言→執(zhí)行求解。該方案系統(tǒng)開發(fā)的具體過程如下:
1)用SM分析用戶需求、系統(tǒng)功能,得到系統(tǒng)的數(shù)據(jù)流圖( DFD) 。
2)用SM進(jìn)行系統(tǒng)設(shè)計,將系統(tǒng)的所有功能和功能之間的關(guān)系表示為系統(tǒng)結(jié)構(gòu)圖。
3)用OOM實現(xiàn)具體的行為或功能。首先參照上一步得到的結(jié)構(gòu)圖,用OOM合理規(guī)劃、設(shè)計類,然后把上面設(shè)計階段的結(jié)構(gòu)圖細(xì)化映射為對象與類。
4)編程實現(xiàn)(用面向?qū)ο笳Z言)、測試、維護(hù)。
可以看出該方法的關(guān)鍵是“映射”,即由模塊圖映射出系統(tǒng)中的類和對象。結(jié)構(gòu)化設(shè)計的結(jié)果是系統(tǒng)模塊圖(結(jié)構(gòu)圖),而面向?qū)ο髮崿F(xiàn)所要求的是對象類(控件),而轉(zhuǎn)換成功的前提是對象的粒度必須小于結(jié)構(gòu)圖中每個模塊數(shù)據(jù)的粒度。
成朋等人同時用SM、OOM和結(jié)合方案應(yīng)用到加密軟件的設(shè)計和實現(xiàn)中,對比了它們的不同。SM的后期維護(hù)存在問題,OOM設(shè)計過程存在差異,相結(jié)合后的方法因
為先用比較清晰的數(shù)據(jù)流圖來表述系統(tǒng),大大減少了設(shè)計的差異,后期采用面向?qū)ο蠓椒▽崿F(xiàn),所以更新維護(hù)變得相對容易,結(jié)果證明采用SM與OOM結(jié)合的方法比單獨采用一種方法能發(fā)揮更好的效果。
2.2 結(jié)合方案二
該類方案的特點是在系統(tǒng)開發(fā)過程中SM與OOM的結(jié)合方式為并行,同時從結(jié)構(gòu)化和面向?qū)ο蟮慕嵌瓤磫栴},分析、設(shè)計問題域。
參考文獻(xiàn)中提出的結(jié)合方案基于以下思想:數(shù)據(jù)流圖是SM的主要表示手段,如果OOM中每個對象的方法可以由數(shù)據(jù)流圖的一個或幾個“加工”組成,則面向?qū)ο蟮姆治鼋Y(jié)果也可以表示為數(shù)據(jù)流圖。這樣可以用數(shù)據(jù)流圖檢驗OOM方法分析的成果,使設(shè)計開發(fā)的軟件結(jié)構(gòu)更合理、一致和完整。該方案系統(tǒng)開發(fā)的具體過程如下:
1)用SM分析用戶需求、系統(tǒng)功能,得到系統(tǒng)的數(shù)據(jù)流圖(DF D) 。
2)用OOM進(jìn)行類的規(guī)劃與設(shè)計,給出類的結(jié)構(gòu)圖、對象狀態(tài)圖及事件腳本。
3)細(xì)化數(shù)據(jù)流圖,使數(shù)據(jù)流圖中的每一個“加工”的粒度必須小于或等于對象中的一個方法并用數(shù)據(jù)流圖來校驗上一步類的設(shè)計的合理性。
4)概要設(shè)計及詳細(xì)設(shè)計。
5)編程實現(xiàn)(用面向?qū)ο笳Z言)、測試、維護(hù)。
嚴(yán)靜等人將這種OO方法與SA方法相結(jié)合的軟件開發(fā)技術(shù)應(yīng)用到了“郵電九七工程”項目中,并取得了良好的結(jié)果。
文獻(xiàn)中提出方案的不同是分析、設(shè)計階段同時應(yīng)用兩種方法,提出了“面向?qū)ο笈c結(jié)構(gòu)的系統(tǒng)分析與設(shè)計方法”。該方法中用結(jié)構(gòu)化的思想分析系統(tǒng)整體的特性及系統(tǒng)中實體的特性,整體上把握系統(tǒng),同時參照SM的結(jié)果用面向?qū)ο蟮姆椒ㄔ敿?xì)的具體的分析設(shè)計系統(tǒng)。該方案系統(tǒng)開發(fā)的具體過程如下:
1)應(yīng)用SM總體分析系統(tǒng)的功能和數(shù)據(jù)特性,得到系統(tǒng)總體數(shù)據(jù)流圖。
2)應(yīng)用OOM分析系統(tǒng)的實體構(gòu)成,得到系統(tǒng)的實體對象集。
3)結(jié)合1)、2)的結(jié)果,從實體對象集中抽象出類,分析類提供的服務(wù)。
4)根據(jù)DFD或功能分析圖,分析功能模塊及模塊間接口,畫出系統(tǒng)功能模塊結(jié)構(gòu)圖。
5)根據(jù)類所提供的服務(wù)對類進(jìn)行分組。
6)應(yīng)用OOM,結(jié)合4)、5),對類的屬性和服務(wù)及類之間的消息通訊進(jìn)行詳細(xì)設(shè)計。
7)編程實現(xiàn)(用面向?qū)ο笳Z言)、測試、維護(hù)。
仲輝等人將結(jié)合方案應(yīng)用到IDEF0功能建模軟件系統(tǒng),實驗證明結(jié)合方案綜合了結(jié)構(gòu)化和面向?qū)ο髢煞N方法的分析與設(shè)計思想,克服了兩種方法單一使用所存在的不足,可較優(yōu)地同時發(fā)揮兩種方法的優(yōu)勢,是一種應(yīng)用效果良好的系統(tǒng)分析與設(shè)計方法。
2.3 對比分析結(jié)合方案
本文列舉的兩類結(jié)合方案都在系統(tǒng)的分析和設(shè)計階段用到了SM,用面向?qū)ο蟮姆椒ň幊虒崿F(xiàn)。利用二者的結(jié)合既克服了SM可重用性、易維護(hù)性和易擴展性差的缺點,也彌補了OOM分析問題域時可能存在的不確定性,減少了開發(fā)人員的分歧。
但SM在這兩類方案中所起的作用不同。在第一類結(jié)合方案中,無論是先進(jìn)行結(jié)構(gòu)化分析得到數(shù)據(jù)流圖,由數(shù)據(jù)流圖映射出類圖還是進(jìn)一步進(jìn)行結(jié)構(gòu)化設(shè)計得到結(jié)構(gòu)圖,在由結(jié)構(gòu)圖映射出面向?qū)ο缶幊痰念惡蛯ο螅瑪?shù)據(jù)流圖都是類圖的來源,是得到類圖的基礎(chǔ)。第二類結(jié)合方案中的第一種方法要分別從結(jié)構(gòu)化和面向?qū)ο蟮慕嵌确治鱿到y(tǒng),細(xì)化結(jié)構(gòu)化分析得到的數(shù)據(jù)流圖來校驗、修改、完善面向?qū)ο蠓治龅玫降念悎D,數(shù)據(jù)流圖不是類圖的來源。第二種方法在分析與設(shè)計階段都用到結(jié)構(gòu)化和OOM,不僅進(jìn)行結(jié)構(gòu)化分析得到數(shù)據(jù)流圖,而且在此基礎(chǔ)上進(jìn)行結(jié)構(gòu)化設(shè)計得到系統(tǒng)模塊圖,綜合考慮分析設(shè)計得到數(shù)據(jù)流圖、模塊圖、實體對象及類,完成概要設(shè)計、詳細(xì)設(shè)計。第一類方案將SM融合到了系統(tǒng)的開發(fā)中,是系統(tǒng)開發(fā)過程必不可少的一個組成部分。而第二類方案中SM只是一個輔助面向?qū)ο箝_發(fā)的過程。
從整個開發(fā)過程看,兩類方案都既發(fā)揮了SM的系統(tǒng)結(jié)構(gòu)性好、利于整體分析與設(shè)計的優(yōu)點,又發(fā)揮OOM易理解、易實現(xiàn)、利于具體分析與設(shè)計的優(yōu)點;既強調(diào)了系統(tǒng)的功能結(jié)構(gòu)和數(shù)據(jù)特性,又強調(diào)了系統(tǒng)的實體構(gòu)成特性。
3 結(jié)語
SM與OOM的結(jié)合方案適合于大型的復(fù)雜的系統(tǒng)開發(fā),這種結(jié)合充分發(fā)揮了二者的優(yōu)點,相互的結(jié)合彌補了對方的不足。但應(yīng)用場合有一定限制如:方案一中的“映射”對象的粒度必須小于等于結(jié)構(gòu)圖中的每個模塊的粒度;方案二中“細(xì)化數(shù)據(jù)流圖”,要使數(shù)據(jù)流圖的每個加工粒度小于對應(yīng)的對象的方法。無論二者串行還是并行的結(jié)合方案,串行中的轉(zhuǎn)換過程及并行中的重復(fù)工作都可能會延長開發(fā)周期,降低開發(fā)效率,而且具體實現(xiàn)有一定難度。所以如何更有效的將二者結(jié)合并且降低結(jié)合開發(fā)方案的難度、縮短開發(fā)周期仍然是我們應(yīng)該繼續(xù)探討的課題。
參考文獻(xiàn)
[1]莖錫,塑建彰.一種基于面向?qū)ο笏枷牒徒Y(jié)構(gòu)化技術(shù)的軟件開發(fā)方法[J].小型微型計算機系統(tǒng).第17卷第4期1996年4月.
[2]繆淮扣,高曉雷,李剛.結(jié)構(gòu)化方法、面向?qū)ο蠓椒ê托问椒椒ǖ谋容^與結(jié)合[J]. 計算機工程與科學(xué).第21卷第4期1999年.
[3]成朋,李代平,楊丈偉.結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ目山Y(jié)合性[J].廣東工業(yè)大學(xué)學(xué)報.第23卷第3期2006年9月.
[4]單家凌.結(jié)構(gòu)化方法與面向?qū)ο罂山Y(jié)合性研究[J].開發(fā)研究與設(shè)計技術(shù).1009-3044(2007)04-11057-01.
[5]嚴(yán)靜、周立新、潘云鶴,面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法相結(jié)合的MIS系統(tǒng)開發(fā)技術(shù)[J], 維普資訊,第5期.
[6]仲輝、曹淑艷、邱滌珊.面向?qū)ο笈c結(jié)構(gòu)的系統(tǒng)分析與設(shè)計方法應(yīng)用研究[J/OL].維普資訊. 1002-8331-(2003)23-0105-03.
[7]林華、夏耕. 面向?qū)ο笈c結(jié)構(gòu)化[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.