陳蓉,陳烽
摘要:在軟件工程領域方面,先后出現(xiàn)了三類程序設計方法,分別是面向過程程序設計方法、面向?qū)ο蟪绦蛟O計方法、泛型程序設計方法。該文對三類程序設計方法進行了深入分析和比較。
關鍵詞:面向過程;面向?qū)ο?;泛型;軟件工程;程序設計方法
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)02-0333-02
Comparison of Program Design Method in Software Engineering
CHEN Rong, CHEN Feng
(Department of Information Engineering, Tibet University for Nationalities, Xianyang 712082, China)
Abstract: In the field of software engineering, has appeared three kinds of program design method, they are process-oriented program? ming method, object-oriented programming method and generic programming method. This paper analyzed and compared three kinds of program design methods deeply.
Key words: process-oriented; object-oriented; generic; software engineering; programming method
20世紀60年代中期,隨著軟件系統(tǒng)的規(guī)模和復雜程度的不斷增加,軟件可靠性問題也不斷突出,出現(xiàn)了“軟件危機”。1968年,正式提示“軟件工程”一詞,并形成一門新的工程學科[1]。在軟件工程領域,先后出現(xiàn)了三種程序設計方法,分別是面向過程的程序設計、面向?qū)ο蟮某绦蛟O計和泛型程序設計。
本文對三類方法——面向過程程序設計方法、面向?qū)ο蟪绦蛟O計方法、泛型程序設計方法,進行了深入分析和比較。
1面向過程、面向?qū)ο?、泛型概?/b>
20世紀70年代,面向過程的程序設計方法(也稱結構化方法)出現(xiàn)并在早期的軟件工程領域占用主導地位。面向過程采用是自頂向下、逐步求精、模塊化等設計原則,將軟件系統(tǒng)分解為若干可獨立的子模塊。各個模塊完成后組合起來,成為一個最終的軟件系統(tǒng)。隨著軟件工程的發(fā)展,出現(xiàn)了軟件生產(chǎn)率低、軟件維護困難等難以解決的問題[1]。
20世紀80年代,面向?qū)ο蟮某绦蛟O計方法應運而生,它解決了面向過程的程序設計方法的缺點,提高了軟件的生產(chǎn)率和方便軟件的維護?,F(xiàn)在已成為目前主流的程序設計方法。面向?qū)ο髮④浖到y(tǒng)分解成一個個的對象,每個對象都是通過對現(xiàn)實世界的分析、理解而得出的。面向?qū)ο蟾咏谌祟愓J知世界的方式,并通過以類和繼承為構造機制將現(xiàn)實世界構建成對應的軟件系統(tǒng)。對于面向?qū)ο笠恍╇y以克服的缺點,如它不能將所有關系都用繼承來實現(xiàn),抽象程度不夠高,通用性不足等問題,提出了泛型程序設計[2-3]。
近年來,泛型程序設計出現(xiàn)并發(fā)展。泛型的特點是抽象程度很高,將程序?qū)懙帽M可能通用,可適合多種數(shù)據(jù)類型的操作,同時不損失效率。泛型程序設計的過程是發(fā)現(xiàn)類型需求、分析類型需求之間的關系,并運用這種類型需求關系實現(xiàn)軟件系統(tǒng)的結構和邏輯[2]。
2面向過程、面向?qū)ο?、泛型的比較
面向過程程序設計以模塊為中心,采用自頂向下、逐步求精的開發(fā)方法,將軟件系統(tǒng)分解為若干可獨立的子模塊,這些模塊形成樹狀結構,表現(xiàn)了各個模塊相互調(diào)用的關系;每一個模塊內(nèi)部均由順序、選擇和循環(huán)三種基本結構組成。各個模塊完成后組合起來,成為一個最終的軟件系統(tǒng)。面向過程注重實現(xiàn)過程的順序,它的抽象層次低,實現(xiàn)簡單。它適合解決簡單問題和小規(guī)模的問題。
面向?qū)ο蟪绦蛟O計以對象為中心,將軟件系統(tǒng)分解成一個個的對象,把屬性和這組屬性上的專用操作進行封裝放在一起作為一個對象,以類和繼承為構造機制將客觀世界構建成軟件系統(tǒng)。同一個對象間通過消息傳遞來實現(xiàn)服務的請求。和面向過程相比,面向?qū)ο笫褂脤ο蠓纸馊〈藗鹘y(tǒng)的功能分解。面向?qū)ο蟮奶卣魇欠庋b(將數(shù)據(jù)和代碼放到對象里面,從對象外部不能直接訪問或修改數(shù)據(jù)和代碼)、繼承(從父類直接獲得的屬性和操作,可重新定義)、多態(tài)(父對象定義的一個方法,允許子對象以適合自己的方式去實現(xiàn)消息)等。面向?qū)ο笞⒅貙ο蟮姆治龊驮O計,它的抽象層次高,實現(xiàn)復雜。它適用于復雜問題,特別是對象間形成層次關系的問題。
泛型程序設計以類型需求為中心,將程序?qū)懙帽M可能通用,可適合多種數(shù)據(jù)類型的操作,同時不損失效率。泛型程序設計的過程是發(fā)現(xiàn)類型需求、分析類型需求之間的關系,并運用這種類型需求關系實現(xiàn)軟件系統(tǒng)結構和邏輯的過程。泛型設計的目標是將算法從對象的行為中分離出來,做到算法的設計與數(shù)據(jù)結構無關,從而實現(xiàn)軟件的復用。它通過將數(shù)據(jù)結構與算法之間的強禍合關系削弱為弱禍合關系,來實現(xiàn)軟件的復用。它有三個重要概念:概念、模型、強化[2],概念是與具體數(shù)據(jù)類型無關的一組定義,支持數(shù)據(jù)類型的操作。模型是當某數(shù)據(jù)類型使用此概念時,稱為此概念的一個模型。如果某個概念擁有了其他一個或概念的所有功能,稱為這個概念是其他一個或多個概念的強化。泛型注重軟件的高度抽象和通用性,因而實現(xiàn)很復雜。它適用于很復雜問題,特別是需要高度抽象和通用性的問題。
同時,三類程序設計方法在安全性和可靠性方面都是安全和可靠的。表1給出三類程序方法的比較。
表1三類程序設計方法的比較
通過上面的分析,我們得出,三種方法各有其優(yōu)點。對于簡單的、小規(guī)模的問題域,面向過程的程序設計是最合適的;對于繼承和行為多態(tài)起主要作用的應用域,面向?qū)ο蟮某绦蛟O計是最合適的;而對于那些需要解決一類相似需求的應用域,泛型程序設計是最合適的。
3結束語
軟件工程為研究和克服“軟件危機”而出現(xiàn),在軟件工程領域的程序設計方法方面,先后出現(xiàn)了三種程序設計方法,面向過程的程序設計、面向?qū)ο蟮某绦蛟O計和泛型程序設計。本文對三類方法——面向過程程序設計方法、面向?qū)ο蟪绦蛟O計方法、泛型程序設計方法,進行了深入分析和比較。三種方法各有其特點,如果能將三種方法的優(yōu)點結合,將會更好地解決軟件開發(fā)領域的實際問題。
參考文獻:
[1]李惠明,敖廣武.軟件工程[M].沈陽:東北大學出版社,2010.
[2]孫斌.面向?qū)ο?、泛型程序設計與類型約束檢查[J].計算機學報,2004(11).
[3]包得海,劉昉.面向過程、面向?qū)ο笈c泛型程序設計的對比分析[J].電腦與信息技術,2011(3).