




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
結(jié)構(gòu)化程序設(shè)計與面向?qū)ο蟪绦蛟O(shè)計的比較研究【摘要】本文通過淺析面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較,分析探討了結(jié)構(gòu)化方法和面向?qū)ο蠓椒ù嬖诘膯栴},在比較兩者內(nèi)在一致性和主要區(qū)別基礎(chǔ)上,提出在軟件開發(fā)過程中應(yīng)結(jié)合面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法?!娟P(guān)鍵詞】結(jié)構(gòu)化方法;面向?qū)ο蠓椒?;軟件開發(fā);區(qū)別引言隨著計算機軟硬件各方面的飛速發(fā)展,計算機領(lǐng)域的觀念和方法日新月異。面向?qū)ο蠓椒ㄊ加?0世紀(jì)60年代挪威奧斯陸大學(xué)和挪威計算機中心共同研究的SMULA語言。70年代,人們都認為結(jié)構(gòu)化方法是最好的系統(tǒng)開發(fā)方法,然而,隨著計算機應(yīng)用技術(shù)的不斷發(fā)展,結(jié)構(gòu)化方法越來越不能適應(yīng)日益復(fù)雜龐大且高速發(fā)展的信息系統(tǒng)的建設(shè)。80年代以來,面向?qū)ο蠓椒ǎ∣bjecOrientedMethodology)正引起越來越強烈的關(guān)注和重視,并在業(yè)內(nèi)掀起一股新的面向?qū)ο缶幊汤顺?。由于面向?qū)ο蠓椒朔藗鹘y(tǒng)的結(jié)構(gòu)化方法在建立問題系統(tǒng)模型和求解時存在的缺陷,提供了更合理、更有效、更自然的方法。1.結(jié)構(gòu)化程序設(shè)計與面向?qū)ο蟪绦蛟O(shè)計的現(xiàn)況結(jié)構(gòu)化方法軟件危機與向?qū)ο蠓椒ǖ奶岢?0年代末開始,國際上出現(xiàn)了“軟件危機”,主要表現(xiàn)是:軟件質(zhì)量差、成本及開發(fā)進度難以控制,維護工作麻煩,產(chǎn)生這一危機的根本原因在于結(jié)構(gòu)化方法強烈依賴系統(tǒng)邏輯模型的完整性描述,難以做到系統(tǒng)的動態(tài)變化與擴展,系統(tǒng)開發(fā)速度慢、周期長、費用高;結(jié)構(gòu)化設(shè)計方法講究的是自頂而下的“瀑布式”設(shè)計,使數(shù)據(jù)結(jié)構(gòu)的設(shè)計僅服從于當(dāng)前功能實現(xiàn)的要求,為以后的擴充和重用設(shè)置了巨大的障礙。結(jié)構(gòu)化方法中提高軟件的結(jié)構(gòu)化、模塊化及可讀性等基本思想是完全正確的,但問題空間和解空間在結(jié)構(gòu)上存在著不一致性,使大型信息系統(tǒng)的開發(fā)和設(shè)計面臨許多困難。解決這一難題的關(guān)鍵在于分析、設(shè)計、實現(xiàn)一個系統(tǒng)的方法和過程應(yīng)盡可能接近我們認識系統(tǒng)的方法和過程,即問題空間與解空間在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒ń鉀Q了傳統(tǒng)結(jié)構(gòu)化方法中問題空間和解空間在結(jié)構(gòu)上不一致的問題,避免了從分析和設(shè)計到軟件模塊結(jié)構(gòu)間的多次轉(zhuǎn)換過程,使開發(fā)軟件變得簡捷、高效、合理。面向?qū)ο蠓椒ㄊ紫葟娬{(diào)來自域的對象,然后圍繞對象設(shè)置屬性和操作。它盡可能模擬人類習(xí)慣的思維方式。把問題域的概念直接映射到對象和對象之間的接口,符合人們的常用的思維方式,減少結(jié)構(gòu)化方法的從問題域到分析階段的映射誤差。面向?qū)ο蠓椒ü膭铋_發(fā)者使用“對象”的觀念去看待問題。2.面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較2.1面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較如表類目面向?qū)ο蟪绦蛟O(shè)計結(jié)構(gòu)化程序設(shè)計基本思想自下向上設(shè)計類自上而下,逐步細化基本概念類、對象、繼承過程、函數(shù)、數(shù)據(jù)語言基于對象、面向?qū)ο笳Z言面向過程語言解決問題的出發(fā)點面向?qū)ο竺嫦蜻^程操作單位對象數(shù)據(jù)程序控制方式“事件”激活和控制調(diào)用控制和返回拓展性拓展性好拓展性差重用行可以不可以層次結(jié)構(gòu)類的層次結(jié)構(gòu)模塊的層次結(jié)構(gòu)轉(zhuǎn)碼方式平滑過程,無縫連接按規(guī)則轉(zhuǎn)換,有縫連接運行效率運行效率相對低運行效率相對高2.2面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較用實例說明例:用程序來描述瀕危哺乳動物數(shù)量情況(用偽代碼完成)。(1)面向過程的程序示例“長吻針鼴”數(shù)目=100“俾格米人三趾樹懶”數(shù)目=120“亞洲獨角獸”數(shù)目=141“黑白領(lǐng)狐猴”數(shù)目=122……//生養(yǎng)程序段“長吻針鼴”數(shù)目=“長吻針鼴”數(shù)目+2//出生了一只長吻針鼴“俾格米人三趾樹懶”數(shù)目=“俾格米人三趾樹懶”數(shù)目+2//出生了兩只俾格米人三趾樹懶“亞洲獨角獸”數(shù)目=“亞洲獨角獸”數(shù)目+3//出生了3只亞洲獨角獸“黑白領(lǐng)狐猴”數(shù)目=“黑白領(lǐng)狐猴”數(shù)目+1//出生了一只黑白領(lǐng)狐猴……//死亡程序段“長吻針鼴”數(shù)目=“長吻針鼴”數(shù)目-2//死亡了一只長吻針鼴“俾格米人三趾樹懶”數(shù)目=“俾格米人三趾樹懶”數(shù)目-2//死亡了兩只俾格米人三趾樹懶“亞洲獨角獸”數(shù)目=“亞洲獨角獸”數(shù)目-3//死亡了3只亞洲獨角獸“黑白領(lǐng)狐猴”數(shù)目=“黑白領(lǐng)狐猴”數(shù)目-1//死亡了一只黑白領(lǐng)狐猴……正如上面的程序段所示,結(jié)構(gòu)化的程序方法通常是:①定義變量及其初始值;②根據(jù)事件發(fā)展順序,進行對應(yīng)的處理。在上面的程序中,我們先定義了各種瀕危哺乳動物的初始總數(shù),然后這些數(shù)量會在出生、死亡時改變。這種程序的編寫思路是隨著事件,按照一定的過程來進行的。這種方法是一種“解題”的思維方式,把所有的需求,當(dāng)作一個“應(yīng)用題”一樣來“解答”。(2)面向?qū)ο蟮某绦蚴纠溉閯游飡“長吻針鼴”數(shù)目;“俾格米人三趾樹懶”數(shù)目;“亞洲獨角獸”數(shù)目;“黑白領(lǐng)狐猴”數(shù)目;出生(動物名,數(shù)量){動物名名+數(shù)量;}死亡(動物名,數(shù)量){動物名=動物名-數(shù)量;}}可以看出,面向?qū)ο蟮姆椒ɑ舅枷胧?對問題空間進行自然分割,以更接近人類思維的方式建立問題域模型,以便對客觀實體進行結(jié)構(gòu)模擬和行為模擬,從而使設(shè)計出的軟件盡可能直接地描述現(xiàn)實世界,構(gòu)造出模塊化的,可重用的,維護性好的軟件,同時限定軟件的復(fù)雜性和降低開發(fā)維護費用。3.結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ膬?nèi)在聯(lián)系3.1二者在分解和抽象原則上一致分解和抽象是軟件開發(fā)中控制問題復(fù)雜性的重要原則。分解即化整分零,將問題剝繭抽絲,層層消化;抽象則是通過分解體現(xiàn),在逐層分解時,上層是下層的抽象,下層是上層的具體解釋和體現(xiàn),運用抽象可以不用一次考慮太多細節(jié),而逐漸的有計劃有層次的了解更多細節(jié)。面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法在運用分解和抽象原則上的要求是完全一致的。3.2局部化和重用性設(shè)計上的一致局部化是軟件開發(fā)中的一個重要原則,即不希望軟件一部分過多地涉及或影響軟件的其它部分。在結(jié)構(gòu)化方法中,局部化主要體現(xiàn)在代碼與數(shù)據(jù)的分隔化,即程序各部分除必要的信息交流外,彼此相互隔離而互不影響,而面向?qū)ο蠓椒▌t采用數(shù)據(jù)、代碼的封裝,即將數(shù)據(jù)、代碼和操作方法封裝成一個類似“黑箱”的整體對象,提高了程序的可靠性和安全性,同時增強了系統(tǒng)的可維護性。也就是說面向?qū)ο蠓椒ū冉Y(jié)構(gòu)化方法的運用更加深入更徹底。4.結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ膮^(qū)別4.1處理問題時的出發(fā)點不同結(jié)構(gòu)化方法是強調(diào)過程抽象化和模塊化,以過程為中心構(gòu)造或處理客觀世界問題的,它是一種面向過程的開發(fā)方法;面向?qū)ο蠓椒◤娬{(diào)把問題域的要領(lǐng)直接影射到對象及對象之間的接口上,是用符合人們通常的思維方式來處理客觀世界的問題。4.2處理問題的基本單位和層次邏輯關(guān)系不同結(jié)構(gòu)化方法把客觀世界的問題抽象成計算機可以處理的過程,處理問題的基本單位是能清晰表達過程的模塊,用模塊的層次結(jié)構(gòu)概括模塊或模塊間的關(guān)系和功能;面向?qū)ο蠓椒ㄊ怯糜嬎銠C邏輯來模擬客觀世界中的物理存在,以對象的集合類作為處理問題的基本單位,盡可能使計算機世界向客觀世界靠攏,以使問題的處理更直截了當(dāng),面向?qū)ο蠓椒ㄊ怯妙惖膶哟谓Y(jié)構(gòu)來體現(xiàn)類之間的繼承和發(fā)展。4.3數(shù)據(jù)處理方式與控制程序方式不同結(jié)構(gòu)化方法是直接通過程序來處理數(shù)據(jù),處理完畢后即可顯示處理結(jié)果,在控制程序方式上是按照設(shè)計調(diào)用或返回程序不能自由導(dǎo)航,各模塊程序之間存在著控制與被控制的關(guān)系;面向?qū)ο蠓椒▽?shù)據(jù)與對應(yīng)的代碼封裝成一個整體,原則上其它對象不能直接修改其數(shù)據(jù),即對象的修改只能由自身的成員函數(shù)完成,控制程序方式上是通過“事件驅(qū)動”來激活和運行程序。4.4分析設(shè)計與編碼轉(zhuǎn)換方式不同結(jié)構(gòu)化方法強調(diào)分析、設(shè)計及編碼之間按規(guī)則進行轉(zhuǎn)換,貫穿軟件生命周期的分析、設(shè)計及編碼之間實現(xiàn)的是一種有縫的連接;面向?qū)ο蠓椒◤姆治龅皆O(shè)計再到編碼則采用一致性的模型表示,貫穿軟件生命周期的分析設(shè)計及編碼之間是一種平滑過程,即實現(xiàn)的是一種無縫連接。5.結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǜ饔袃?yōu)缺點主要表現(xiàn)在如下幾個方面:5.1從執(zhí)行效率來說。結(jié)構(gòu)化方法比面向?qū)ο蠓椒óa(chǎn)生的可執(zhí)行代碼更直接,更高。所以對于一些嵌入式的系統(tǒng),結(jié)構(gòu)化方法產(chǎn)生的系統(tǒng)更小,運行效率更高;5.2從重用性方面來說。采用結(jié)構(gòu)化方法的系統(tǒng)難以修改和擴充。結(jié)構(gòu)化分析與設(shè)計清楚定義了系統(tǒng)的接口,當(dāng)系統(tǒng)對外界接口發(fā)生變動時,往往造成系統(tǒng)結(jié)構(gòu)較大變動,難以擴充新的功能接口。采用結(jié)構(gòu)化方法的系統(tǒng)可復(fù)用性較差。結(jié)構(gòu)化方法將數(shù)據(jù)和操作分離,導(dǎo)致一些可重用的軟件構(gòu)件在特定具體應(yīng)用環(huán)境才能應(yīng)用,降低了軟件的可重用性。面向?qū)ο蠓椒ň哂泻芎玫闹赜眯浴T谟龅筋愃频膯栴},通過應(yīng)用了抽象繼承等技術(shù),來重用代碼;5.3從程序語言編譯器來說。面向?qū)ο蠓椒?通過編譯器實現(xiàn)代碼的面向?qū)ο笮?。也就是說經(jīng)過編譯器后,代碼會被翻譯為相對應(yīng)的結(jié)構(gòu)化代碼。所以要熟練開發(fā),還要懂一定的結(jié)構(gòu)化方法做為基礎(chǔ);5.4從掌握難度來說,面向?qū)ο蠓椒ū冉Y(jié)構(gòu)化對象方法復(fù)雜,難于理解。面象對象方法的內(nèi)容廣,概念多,而且很多都是難于理解,做到精通更加不易。應(yīng)用面向?qū)ο蠓椒?常常需要一種支持的分析,設(shè)計方法,如RUP方法,敏捷方法等。這些知識抽象枯燥,難于掌握。面象對象方法要經(jīng)過長期的開發(fā)實踐才能很好的理解,掌握。相比之下,結(jié)構(gòu)化方法知識內(nèi)容少,容易上手;(五)從應(yīng)用的范圍看,結(jié)構(gòu)化方法適用于數(shù)據(jù)少而操作多的問題。實踐證明對于像操作系統(tǒng)這樣的以功能為主的系統(tǒng),結(jié)構(gòu)化方法比較適應(yīng)它。面向?qū)ο蠓椒ㄕ孟喾?對于數(shù)據(jù)庫,信息管理等以數(shù)據(jù)為主的而操作較少的系統(tǒng),用面向?qū)ο蠓椒枋鲆糜诮Y(jié)構(gòu)化方法。6.結(jié)束語結(jié)語綜上所述,軟件開發(fā)的目標(biāo)是以最小的代價開發(fā)出滿足用戶需求的軟件。為此,根據(jù)系統(tǒng)的實際需求,分別針對具體情況選擇采用不同的設(shè)計方法,可以充分發(fā)揮面向?qū)ο笈c結(jié)構(gòu)化方法各自的優(yōu)勢。目前在大多數(shù)軟件系統(tǒng)的分析設(shè)計過程中,這兩種方法都兼而有之。筆者以為,開發(fā)者在開發(fā)實踐中,從實際出發(fā),考慮執(zhí)行效率、開發(fā)者的技術(shù)水平、系統(tǒng)規(guī)模、是否為易需求變化的系統(tǒng)等因素,盡量利用它們各自的優(yōu)點,避免他們的缺點。如對于開發(fā)一些小型嵌入式實時監(jiān)控系統(tǒng)或同等穩(wěn)定小系統(tǒng),可用結(jié)構(gòu)化方法;對于開發(fā)入門者,使用結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄏ嘟Y(jié)合;對于大型系統(tǒng)或者需求易變系統(tǒng),使用面向?qū)ο蠓椒?。總?根據(jù)實際出發(fā),選取合適的軟件開發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC TS 33060:2025 EN Information technology - Process assessment - Process assessment model for system life cycle processes
- 【正版授權(quán)】 IEC 60060-1:2025 RLV EN High-voltage test techniques - Part 1: General terminology and test requirements
- 2025年醫(yī)學(xué)綜合考核試卷及答案
- 2025年公關(guān)傳播與危機管理考試試題及答案
- 2025年多媒體技術(shù)與應(yīng)用考試卷及答案
- 2025年寵物護理及訓(xùn)練專業(yè)考試試卷及答案
- 2025年環(huán)境保護專業(yè)考試試題及答案
- (三模)煙臺市2025屆高三高考診斷性測試地理試卷(含答案)
- 萬安保安考試題及答案解析
- 魚塘租賃合同協(xié)議書6
- 2025年遼寧省盤錦市中考數(shù)學(xué)二模試卷
- 完整版新修訂《厲行節(jié)約反對浪費條例》(課件)
- 2024年河北承德辰飛供電服務(wù)有限公司招聘真題
- 滬教版八年級化學(xué)(下冊)期末試卷及答案
- DL-T-1878-2018燃煤電廠儲煤場盤點導(dǎo)則
- 小小科學(xué)家《物理》模擬試卷A(附答案)
- 體能科學(xué)訓(xùn)練方法智慧樹知到期末考試答案2024年
- 四川民歌智慧樹知到期末考試答案2024年
- 5S點檢表1(日檢查表)
- 主入口雨棚工程腳手架搭設(shè)方案(參考模板)
- 杭州市普通住宅乙級、丙級物業(yè)服務(wù)標(biāo)準(zhǔn)比照表
評論
0/150
提交評論