科技信息 高校理科研究 結(jié)構(gòu)化程序設(shè)計方法與面向?qū)ο蟪绦蛟O(shè)計方法之比較 樂山職業(yè)技術(shù)學(xué)院 喻梅 [摘要]本文通過淺析面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較,分析探討了結(jié)構(gòu)化方法和面向?qū)ο蠓椒ù嬖诘膯栴},在比較兩者內(nèi)在一致性和主要區(qū)別基礎(chǔ)上,提出在軟件開發(fā)過程中應(yīng)結(jié)合面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法。[關(guān)鍵詞]面向?qū)ο蠓椒ńY(jié)構(gòu)化方法軟件開發(fā) 一、引言 隨著計算機軟硬件各方面的飛速發(fā)展,計算機領(lǐng)域的觀念和方法日新月異。面向?qū)ο蠓椒ㄊ加?0世紀(jì)60年代挪威奧斯陸大學(xué)和挪威 人們都認(rèn)為結(jié)構(gòu)化方法計算機中心共同研究的SMULA語言。70年代, 是最好的系統(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ū)ο缶幊汤顺薄S捎诿嫦驅(qū)ο蠓椒朔藗鹘y(tǒng)的結(jié)構(gòu)化方法在建立問題系統(tǒng)模型和求解時存在的缺陷,提供了更合理、更有效、更自然的方法。 二、結(jié)構(gòu)化方法軟件危機與面向?qū)ο蠓椒ǖ奶岢?0年代末開始,國際上出現(xiàn)了“軟件危機”,主要表現(xiàn)是:軟件質(zhì)量成本及開發(fā)進(jìn)度難以控制,維護(hù)工作麻煩,產(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)法講究的是自頂而下的 表1 項目基本思想概念或術(shù)語名詞編程的語言邏輯工具 處理問題的出發(fā)點控制程序方式可擴展性重用性 層次結(jié)構(gòu)的邏輯關(guān)系設(shè)計、編碼的轉(zhuǎn)換方式分析、運行效率 面向?qū)ο?/p> 自底向上設(shè)計庫類對象、類、消息、繼承等C++、VB、JAVA等 數(shù)據(jù)字典動態(tài)模型圖、功能模型圖對象模型圖、面向問題 通過“事件驅(qū)動”來激活和運行程序 只需修改或增加操作,而基本對象結(jié)構(gòu)不變,擴展性好好 用類的層次結(jié)構(gòu)來體現(xiàn)類之間的繼承和發(fā)展平滑過程,無縫連接相對低 結(jié)構(gòu)化設(shè)計 自頂向下設(shè)計過程庫,逐步求精,分而治之過程、函數(shù)、數(shù)據(jù)等C、BASIC、FORTRAN等 數(shù)據(jù)流圖、系統(tǒng)結(jié)構(gòu)圖、數(shù)據(jù)字典狀態(tài)轉(zhuǎn)移圖、實體關(guān)系圖 前功能實現(xiàn)的要求,為以后的擴充和重用設(shè)置了巨大的障礙。 結(jié)構(gòu)化方法中提高軟件的結(jié)構(gòu)化、模塊化及可讀性等基本思想是完全正確的,但問題空間和解空間在結(jié)構(gòu)上存在著不一致性,使大型信 解決這一難題的關(guān)鍵在于分析、設(shè)息系統(tǒng)的開發(fā)和設(shè)計面臨許多困難。 計、實現(xiàn)一個系統(tǒng)的方法和過程應(yīng)盡可能接近我們認(rèn)識系統(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ā)者使用“對的從問題域到分析階段的映射誤差。 象”的觀念去看待問題。 三、面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較(一)面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較如表1 面向過程 通過設(shè)計調(diào)用或返回程序 功能變化會危及整個系統(tǒng),擴展性差不好 用模塊的層次結(jié)構(gòu)概括模塊和模塊之間的關(guān)系和功能按規(guī)則轉(zhuǎn)換,有縫連接相對高 ①定義變量及其初始值; ②根據(jù)事件發(fā)展順序,進(jìn)行對應(yīng)的處理。 在上面的程序中,我們先定義了各種書的初始總數(shù),然后這些數(shù)量 采購時改變。這種程序的編寫思路是隨著事件,按照一定的會在銷售、 過程來進(jìn)行的。這種方法是一種“解題”的思維方式,把所有的需求,當(dāng)作一個“應(yīng)用題”一樣來“解答”。 (2)面向?qū)ο蟮某绦蚴纠龝陒 《C++程序設(shè)計》;《軟件工程》;《java編程思想》;《SQLServer2000》本數(shù);賣出(書名,數(shù)量){書名-數(shù)量;} 進(jìn)貨(書名,數(shù)量){書名=書名+數(shù)量;}} 可以看出,面向?qū)ο蟮姆椒ɑ舅枷胧?對問題空間進(jìn)行自然分割, (二)面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較用實例說明 例:用程序來描述一個電腦書店的銷售情況(用偽代碼完成)。(1)面向過程的程序示例《C++程序設(shè)計》本數(shù)=5《軟件工程》本數(shù)=6《java編程思想》本數(shù)=4《SQLServer2000》本數(shù)=7…… //銷售程序段《C++程序設(shè)計》本數(shù)=《C++程序設(shè)計》本數(shù)-1//賣出了1本《C++程序設(shè)計》 本數(shù)=《SQLServer2000》本數(shù)-2//賣出了2本《SQLServer2000》 《SQLServer2000》 …… //采購程序段《軟件工程》本數(shù)=《軟件工程》本數(shù)+5//新進(jìn)了5本《軟件工程》《C++程序設(shè)計》本數(shù)=《C++程序設(shè)計》本數(shù)+3//新進(jìn)了3本《C++程序設(shè)計》 …… 正如上面的程序段所示,結(jié)構(gòu)化的程序方法通常是: —453— 科技信息 高校理科研究 主要表現(xiàn)在如下幾個方面:(一)從執(zhí)行效率來說。結(jié)構(gòu)化方法比面向?qū)ο蠓椒óa(chǎn)生的可執(zhí)行代碼更直接,更高。所以對于一些嵌入式的系統(tǒng),結(jié)構(gòu)化方法產(chǎn)生的系統(tǒng)更小,運行效率更高; (二)從重用性方面來說。采用結(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ù),來重用代碼; (三)從程序語言編譯器來說。面向?qū)ο蠓椒?通過編譯器實現(xiàn)代碼的面向?qū)ο笮?。也就是說經(jīng)過編譯器后,代碼會被翻譯為相對應(yīng)的結(jié)構(gòu)化代碼。所以要熟練開發(fā),還要懂一定的結(jié)構(gòu)化方法做為基礎(chǔ); (四)從掌握難度來說,面向?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)化方法。 七、結(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ā) 系統(tǒng)規(guī)模、是否為易需求變化的系統(tǒng)等因素,盡量利用者的技術(shù)水平、 如對于開發(fā)一些小型嵌入式實時監(jiān)它們各自的優(yōu)點,避免他們的缺點。 控系統(tǒng)或同等穩(wěn)定小系統(tǒng),可用結(jié)構(gòu)化方法;對于開發(fā)入門者,使用結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄏ嘟Y(jié)合;對于大型系統(tǒng)或者需求易變系統(tǒng),使 總之,根據(jù)實際出發(fā),選取合適的軟件開發(fā)方法,達(dá)到用面向?qū)ο蠓椒ā?/p> 最佳的開發(fā)效益。 參考文獻(xiàn) 趙池龍.實用軟件工程[M].北京:電子工業(yè)出版社,2003[1][2]周之英.現(xiàn)代軟件工程.北京:科學(xué)出版社,2001[3][4]邵維忠,楊芙清.面向?qū)ο蟮南到y(tǒng)設(shè)計[M].北京:清華大學(xué)出版社,2003 [5]ScottWAmbler.車皓陽,劉悅譯面向?qū)ο筌浖_發(fā)教程[M].北京:機械工業(yè)出版社,2003 [6]胡慶彬,黃石生.結(jié)構(gòu)化和面向?qū)ο蟪绦蛟O(shè)計方法的探討.計算 (1)機應(yīng)用研究,1998 以更接近人類思維的方式建立問題域模型,以便對客觀實體進(jìn)行結(jié)構(gòu) 模擬和行為模擬,從而使設(shè)計出的軟件盡可能直接地描述現(xiàn)實世界,構(gòu)造出模塊化的,可重用的,維護(hù)性好的軟件,同時限定軟件的復(fù)雜性和降低開發(fā)維護(hù)費用。 四、結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ膬?nèi)在聯(lián)系(一)二者在分解和抽象原則上一致 分解和抽象是軟件開發(fā)中控制問題復(fù)雜性的重要原則。分解即化整分零,將問題剝繭抽絲,層層消化;抽象則是通過分解體現(xiàn),在逐層分解時,上層是下層的抽象,下層是上層的具體解釋和體現(xiàn),運用抽象可以不用一次考慮太多細(xì)節(jié),而逐漸的有計劃有層次的了解更多細(xì)節(jié)。面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法在運用分解和抽象原則上的要求是完全一致的。 (二)局部化和重用性設(shè)計上的一致 局部化是軟件開發(fā)中的一個重要原則,即不希望軟件一部分過多 在結(jié)構(gòu)化方法中,局部化主要體現(xiàn)在代地涉及或影響軟件的其它部分。 碼與數(shù)據(jù)的分隔化,即程序各部分除必要的信息交流外,彼此相互隔離而互不影響,而面向?qū)ο蠓椒▌t采用數(shù)據(jù)、代碼的封裝,即將數(shù)據(jù)、代碼 “黑箱”的整體對象,提高了程序的可靠性和操作方法封裝成一個類似 和安全性,同時增強了系統(tǒng)的可維護(hù)性。也就是說面向?qū)ο蠓椒ū冉Y(jié)構(gòu)化方法的運用更加深入更徹底。 五、結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ膮^(qū)別(一)處理問題時的出發(fā)點不同 結(jié)構(gòu)化方法是強調(diào)過程抽象化和模塊化,以過程為中心構(gòu)造或處理客觀世界問題的,它是一種面向過程的開發(fā)方法;面向?qū)ο蠓椒◤娬{(diào)把問題域的要領(lǐng)直接影射到對象及對象之間的接口上,是用符合人們通常的思維方式來處理客觀世界的問題。 (二)處理問題的基本單位和層次邏輯關(guān)系不同 結(jié)構(gòu)化方法把客觀世界的問題抽象成計算機可以處理的過程,處理問題的基本單位是能清晰表達(dá)過程的模塊,用模塊的層次結(jié)構(gòu)概括模塊或模塊間的關(guān)系和功能;面向?qū)ο蠓椒ㄊ怯糜嬎銠C邏輯來模擬客觀世界中的物理存在,以對象的集合類作為處理問題的基本單位,盡可能使計算機世界向客觀世界靠攏,以使問題的處理更直截了當(dāng),面向?qū)ο蠓椒ㄊ怯妙惖膶哟谓Y(jié)構(gòu)來體現(xiàn)類之間的繼承和發(fā)展。 (三)數(shù)據(jù)處理方式與控制程序方式不同 結(jié)構(gòu)化方法是直接通過程序來處理數(shù)據(jù),處理完畢后即可顯示處理結(jié)果,在控制程序方式上是按照設(shè)計調(diào)用或返回程序不能自由導(dǎo)航,各模塊程序之間存在著控制與被控制的關(guān)系;面向?qū)ο蠓椒▽?shù)據(jù)與對應(yīng)的代碼封裝成一個整體,原則上其它對象不能直接修改其數(shù)據(jù),即 “事件對象的修改只能由自身的成員函數(shù)完成,控制程序方式上是通過 驅(qū)動”來激活和運行程序。 (四)分析設(shè)計與編碼轉(zhuǎn)換方式不同結(jié)構(gòu)化方法強調(diào)分析、設(shè)計及編碼之間按規(guī)則進(jìn)行轉(zhuǎn)換,貫穿軟件生命周期的分析、設(shè)計及編碼之間實現(xiàn)的是一種有縫的連接;面向?qū)ο蠓椒◤姆治龅皆O(shè)計再到編碼則采用一致性的模型表示,貫穿軟件生命周期的分析、設(shè)計及編碼之間是一種平滑過程,即實現(xiàn)的是一種無縫連接。 六、結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǜ饔袃?yōu)缺點將電力設(shè)備分布參(上接第452頁)慮到應(yīng)盡量降低數(shù)據(jù)處理難度,數(shù)等值電路徑向結(jié)構(gòu)劃分為3層;同時,為使屏蔽極位置變化的影響規(guī) 由律具有一定的連續(xù)性,將其分布參數(shù)等值電路軸向結(jié)構(gòu)劃分為8段。 于絕緣電阻試驗時所施加的電壓為直流,故忽略電容元件的影響,而用電阻元件進(jìn)行等值。最終確定的分布參數(shù)等值電路如圖4所示。 種類的選擇,主要考慮其電導(dǎo)率特性參數(shù),而絕緣材料規(guī)格的選擇主要考慮模型結(jié)構(gòu)總體框架尺寸和加工工藝的要求。本文開發(fā)的絕緣電阻試驗?zāi)P脱b置如圖5所示。 5.結(jié)束語 本文通過理論分析計算,并利用電力設(shè)備實測數(shù)據(jù),驗證了兆歐表屏蔽極位置對絕緣電阻測試結(jié)果具有顯著影響,分析了測試數(shù)據(jù)實際存在的較大誤差。本文研究開發(fā)的絕緣電阻試驗?zāi)P?,可實現(xiàn)對多種典型電氣設(shè)備不同內(nèi)部絕緣狀況及復(fù)雜變化表面泄漏影響的物理模擬,可方便地實施各種測試接線方案并進(jìn)行測試誤差分析,為課題進(jìn)一步深化研究提供了條件。 參考文獻(xiàn) 陳化鋼.電力設(shè)備預(yù)防性試驗方法和診斷技術(shù).北京:中國科學(xué)技[1] 術(shù)出版社,2001. [2]石惟和.兆歐表的使用和維護(hù).北京:人民郵電出版社,1985.[3]黃兆龍.使用屏蔽電極搖測絕緣電阻的正誤差分析.華東電力, 1998(3). 圖5絕緣電阻試驗?zāi)P蛯嵨镎掌?/p> 模型結(jié)構(gòu)總體布局和最小尺寸的確定,主要應(yīng)滿足試驗研究時接線操作的方便性,以及金屬元件加工工藝的要求。模型所采用絕緣材料 轉(zhuǎn)載請保留出處,http://www./doc/2e109c6e58fafab069dc020b.html |
|