關(guān)于面向?qū)ο蠹夹g(shù)與軟件工程探討
[摘要]隨著計(jì)算機(jī)技術(shù)的發(fā)展和人們對軟件本質(zhì)和內(nèi)在規(guī)律認(rèn)識的提高,傳統(tǒng)的軟件工程方法已經(jīng)不適應(yīng)現(xiàn)代軟件系統(tǒng)的要求了。面向?qū)ο蠓椒ㄊ且环N新的軟件工程方法。本文介紹了現(xiàn)代軟件工程的特點(diǎn)以及面向?qū)ο筌浖_發(fā)方法的基本思想和原理。
[關(guān)鍵詞]面向?qū)ο筌浖こ?/strong>
1.軟件工程概念及傳統(tǒng)軟件工程模式
由于軟件危機(jī)的產(chǎn)生,使人們認(rèn)識到用傳統(tǒng)方法再也無法駕馭如此復(fù)雜的軟件生產(chǎn),是到了必須徹底解決軟件危機(jī),才能拯救這一最有希望的新興產(chǎn)業(yè)的時候了。1986 年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國召開國際會議,討論軟件危機(jī)問題。在這次會議上正是隨著計(jì)算機(jī)技術(shù)的發(fā)展及人們對軟件本質(zhì)和內(nèi)在規(guī)律認(rèn)識的提高,對軟件工程的定論也在變化。著名的軟件工程專家B.W.Boehm 對軟件工程的定義是:“運(yùn)用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料”。
軟件工程采用的方法是把軟件生存周期劃分成若干個階段,每個階段的任務(wù)相對獨(dú)立,而且比較簡單,便于不同人員分工協(xié)作,從而降低整個軟件開發(fā)工程的困難程度。在實(shí)現(xiàn)每個階段的任務(wù)時,采用的是系統(tǒng)化的技術(shù)方法———結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)技術(shù)。這是傳統(tǒng)的軟件工程模式。它的缺點(diǎn)是強(qiáng)調(diào)了分階段實(shí)施模塊化、結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)和方法,而忽視了人在軟件開發(fā)過程中的地位和作用。
2.面向?qū)ο蠹夹g(shù)
在計(jì)算機(jī)領(lǐng)域,很多新方法和新技術(shù)都從編程階段首先開始,進(jìn)而發(fā)展到軟件生命期階段,早在60 年代未E.W.Dijkstra 就提出了結(jié)構(gòu)化程序設(shè)計(jì)的概念,為程序設(shè)計(jì)方法學(xué)奠定了基礎(chǔ)。70 年代美國的E.
Youdon 教授提出了結(jié)構(gòu)化分析方法,指出了分析和設(shè)計(jì)比編碼更為重要,這一技術(shù)當(dāng)時曾被軟件界看成是治愈“軟件危機(jī)”的靈丹妙藥,其實(shí)由不然。面對大型軟件系統(tǒng),用結(jié)構(gòu)化方法,系統(tǒng)的重要性、穩(wěn)定性、擴(kuò)充性都無法實(shí)現(xiàn)。80 年代面向?qū)ο蠓椒☉?yīng)運(yùn)而生,為軟件工程增添了活力。面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)是當(dāng)今面向?qū)ο蟮年P(guān)鍵技術(shù)。
2.1 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠛喎Q為“00”。這是目前計(jì)算機(jī)業(yè)界使用的高頻詞。“00”代表著一種新的思維方式,代表著一種新的程序設(shè)計(jì)方法的潮流。
傳統(tǒng)的程序設(shè)計(jì)方法,不論是需求分析,還是系統(tǒng)設(shè)計(jì),都是針對數(shù)學(xué)模型的,出發(fā)點(diǎn)是“怎樣做”,即用計(jì)算機(jī)求解這個實(shí)際問題應(yīng)該“怎樣做”。面向?qū)ο蠓椒ǖ某霭l(fā)點(diǎn)是:“是什么”,即要求解的實(shí)際問題,它到底“是什么”。Youtdon 給出了面向?qū)ο蟮囊粋定義:“面向?qū)ο? 對象+ 類+ 繼承+ 通信”。
2.1.1 對象對象是面向?qū)ο箝_發(fā)模式的基本成分。每個對象可用其一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又成為方法或服務(wù),在C++ 中稱為成員函數(shù),它描述了對象執(zhí)行的功能。若通過消息傳遞,還可以為其他對象使用。而消息是一個對象與另一個對象之間通信的手段,是要求另一個對象執(zhí)行類中定義的某個操作的規(guī)格說明。發(fā)送給一個對象的消息定義了一個操作名和一個參數(shù)表(可能是空的),并制定某一個對象。當(dāng)一個對象接收到發(fā)給自己的消息時,則調(diào)用消息中制定的操作,并將形式參數(shù)與參數(shù)表中的相應(yīng)的值結(jié)合起來。接收對象對消息處理可能會改變對象的狀態(tài),即改變接收對象的屬性,并發(fā)送一個消息給自己或另一個對象?梢哉J(rèn)為,這種消息的傳遞大致等價于傳統(tǒng)過程性方法中的函數(shù)調(diào)用。
為了把說明與實(shí)現(xiàn)分離,需對對象的數(shù)據(jù)結(jié)構(gòu)和相關(guān)操作的實(shí)現(xiàn)進(jìn)行封裝,因此,“對象”有兩個視圖,分別表現(xiàn)在設(shè)計(jì)和實(shí)現(xiàn)方面。從設(shè)計(jì)方面來看,對象是一些概念的實(shí)例。它們把有關(guān)的實(shí)體模型化。從實(shí)現(xiàn)方面來看,一個對象是表達(dá)在應(yīng)用的可執(zhí)行代碼中的實(shí)體而使用的實(shí)際數(shù)據(jù)結(jié)構(gòu)。這些對象是數(shù)據(jù)結(jié)構(gòu)與操作的單一混合體,它們是數(shù)據(jù)抽象的實(shí)例化。
2.1.2 類類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類定義可視為一個具有類似特性與共同行為的對象的模板,可用來產(chǎn)生對象。在一個類中,每個對象都是類的實(shí)例,它們都可使用類中提供的函數(shù)。一個對象的狀態(tài)則包含在它的實(shí)例變量中。
類,就其是一個數(shù)據(jù)值的聚合的意義上來看,與Pascal 中記錄或C中的結(jié)構(gòu)類似,但又有差別。類擴(kuò)展了通常的記錄語義,可提供各種級別的可訪問性。出就是說,記錄的某些成分可能是不可訪問的,而這些成分對于該記錄型來說具有可訪問性。類不同于記錄,因?yàn)樗鼈儼瞬僮鞯亩x,這些操作與類中聲明的數(shù)據(jù)值有相同的地位。
2.1.3 繼承繼承是使用已存在的(現(xiàn)存)定義作為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以在現(xiàn)存類所聲明的數(shù)據(jù)、定義與新類所增加的聲明的組合。新類復(fù)用現(xiàn)存類的定義,而不要求修改現(xiàn)存類。因?yàn)檫@種類的一部分已經(jīng)實(shí)現(xiàn)和測試,故開發(fā)費(fèi)用較少,F(xiàn)存類可當(dāng)作父類(范化類、基類或超類)來引用,則新類相應(yīng)地可當(dāng)作子類(特化類、子女類或派生類)來引用。
使用繼承設(shè)計(jì)一個新類,可以視為描述一個新的對象集合,它是現(xiàn)存類所描述對象集合的子集合。這個新子集合可以認(rèn)為是現(xiàn)存類的一個特化。新類的界面還可以看作是現(xiàn)存類界面的擴(kuò)充界面。
2.1.4 消息消息是對象之間相互請求或相互協(xié)作的途徑,是要求某個對象執(zhí)行其中某個功能操作的規(guī)格的說明。發(fā)送消息的對象成為發(fā)送者,接收消息的對象稱為接收者。對象間的聯(lián)系,只能通過傳遞來進(jìn)行。對象也只能在收到消息時,才被激活。被激活后的對象代碼將按消息中的命令去操作它的私有數(shù)據(jù),完成要求的功能。
(1)消息的定義將操作送到目標(biāo)對象的一種機(jī)制稱為消息。它包括操作名的選擇和傳遞、操作信息變量有三個部分:接收消息的對象、消息選擇符、變元。
(2)消息的性質(zhì)同一個對象可接受不同形式的多少消息,產(chǎn)生不同的響應(yīng),即:
1 個對象M個消息M個動作相同形式的消息可以送給不同的對象,所做出的響應(yīng)可以是截然不同的:即:
M個對象1 個消息M個動作消息的發(fā)送可以不考慮具體的接收者,對象可以響應(yīng)消息,也可以對消息不予理會,對消息的響應(yīng)并不是必須的。
在某個對象的一批消息中,由外界對象直接向它發(fā)送的消息,稱為公有消息。在某個對象的一批消息中,不對外發(fā)放,由對象自己向本身發(fā)送的消息,稱為私有消息。
2.2 面向?qū)ο筌浖_發(fā)方法面向?qū)ο蟮能浖_發(fā)方法是以數(shù)據(jù)為中心而不是以過程為中心。
面向?qū)ο筌浖旧淼膬?nèi)部結(jié)構(gòu)已發(fā)生了質(zhì)的轉(zhuǎn)變。由此帶來良好的可構(gòu)造性、可擴(kuò)充性和可復(fù)用性。對象作為唯一標(biāo)識的實(shí)體,封裝了一組屬性及其相關(guān)操作,提供了一種結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)的抽象手段;趯ο髽(gòu)造的系統(tǒng),其開發(fā)的各個階段(分析、設(shè)計(jì)和實(shí)現(xiàn))都是統(tǒng)一按照相互作用的對象來組織的,因此各個階段的過程比較平滑,不會象“瀑布型”的結(jié)構(gòu)化方法,從分析到設(shè)計(jì)(數(shù)據(jù)流圖到結(jié)構(gòu)流程圖)有很大的跳躍。
2.3 面向?qū)ο蟮姆治雠c設(shè)計(jì)
完整的面向?qū)ο蠓椒ò嗣嫦驅(qū)ο蠓治、設(shè)計(jì)、實(shí)現(xiàn)、測試和維護(hù)等多個方面,其中面向?qū)ο蟮姆治龊驮O(shè)計(jì)用于描述一個系統(tǒng),使整個面向?qū)ο蠓椒ㄖ凶钪匾慕M成部分———最能體現(xiàn)面向?qū)ο蠓椒ê锰幍牟糠帧C嫦驅(qū)ο蟮姆治雠c面向?qū)ο蟮脑O(shè)計(jì)是在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言基礎(chǔ)上發(fā)展起來的,試圖用面向?qū)ο筌浖_發(fā)方法取代傳統(tǒng)的結(jié)構(gòu)化軟件開發(fā)方法。
2.3.1 面向?qū)ο蟮幕舅枷敕椒?/p>
面向?qū)ο蠓椒ńo出兩個問題和兩個空間的概念:客觀世界中的自然領(lǐng)域問題和計(jì)算機(jī)世界中的軟件產(chǎn)品問題;客觀世界中的自然領(lǐng)域問題空間對應(yīng)于計(jì)算機(jī)世界中的解空間。從分析設(shè)計(jì)到編程,每一階段都是按問題域本身的樣子組織的。這種范型不僅帶來穩(wěn)定性,而且還具有擴(kuò)充性。面向?qū)ο蠓椒ǖ幕咎攸c(diǎn):模塊性、抽象性、繼承性、動態(tài)聯(lián)接的靈活性、易維護(hù)性和易擴(kuò)充性。
2.3.2 面向?qū)ο蟮脑O(shè)計(jì)在設(shè)計(jì)階段中繼續(xù)采用五個層次,用于建立系統(tǒng)的四個組成部分。
這四個組成部分是問題論域、用戶界面、任務(wù)管理和數(shù)據(jù)管理。圖2 給出了這四個部分及其相互間的關(guān)系。
問題論域部分包括與所面對的應(yīng)用問題直接有關(guān)的所有類和對象。由于識別和定義這些類和對象的工作在00A 中已經(jīng)開始,設(shè)計(jì)部分只是對它們做進(jìn)一步的細(xì)化。在其他的三個部分中,識別和定義新的類和對象。這些類和對象形成問題論域部分與用戶、與外部系統(tǒng)和專用設(shè)備以及與磁盤文件和數(shù)據(jù)庫系統(tǒng)的界面。這三部分的作用主要是保證系統(tǒng)基本功能的相對獨(dú)立,以加強(qiáng)軟件的可復(fù)用性。
3.小結(jié)
用面向?qū)ο笏枷敕椒ㄟM(jìn)行軟件構(gòu)造、軟件過程研究和建立軟件體系結(jié)構(gòu)都標(biāo)志著面向?qū)ο罄碚撢呌诔墒。隨著計(jì)算機(jī)的廣泛應(yīng)用,大型和超大型軟件系統(tǒng)的開發(fā)是必不可少的。從面向?qū)ο蟮乃枷氤霭l(fā),用面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法去實(shí)現(xiàn)它,必將事半功倍。
參考文獻(xiàn)
[1]鄭人杰.殷人昆,陶永雷.實(shí)用軟件工程.北京:清華大學(xué)出版社
[2]周之英.現(xiàn)代軟件工程.北京:科學(xué)出版社
[3]朱海濱.面向?qū)ο蠹夹g(shù)———原理與設(shè)計(jì).長沙:國防科技大學(xué)出版社
[4]魏遠(yuǎn)旺.基于面向?qū)ο蟮能浖䦶?fù)用技術(shù)的研究和應(yīng)用[D].南昌大學(xué),2005 年
[5]段小君,高金環(huán).軟件復(fù)用與面向?qū)ο蠹夹g(shù)[J].西安郵電學(xué)院學(xué)報,2004 年02 期
【面向?qū)ο蠹夹g(shù)與軟件工程探討】相關(guān)文章:
數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)中面向?qū)ο蠹夹g(shù)的應(yīng)用03-30
軟件工程課程改革探討的論文03-19
面向?qū)嵺`的“運(yùn)營管理課程”教學(xué)模式探討12-12
面向能力培養(yǎng)的高等教育教學(xué)模式探討11-24
簡談?wù)軐W(xué)與面向?qū)ο蟮年P(guān)系及軟件開發(fā)的發(fā)展方向03-29
通信技術(shù)的發(fā)展應(yīng)用探討論文03-16
對建筑電氣施工技術(shù)的探討與研究11-22