關於物件導向技術與軟體工程探討

才智咖 人氣:1.7W

[摘要]隨著計算機技術的發展和人們對軟體本質和內在規律認識的提高,傳統的軟體工程方法已經不適應現代軟體系統的要求了。物件導向方法是一種新的軟體工程方法。本文介紹了現代軟體工程的特點以及物件導向軟體開發方法的基本思想和原理。

關於物件導向技術與軟體工程探討

 [關鍵詞]物件導向軟體工程

1.軟體工程概念及傳統軟體工程模式

由於軟體危機的產生,使人們認識到用傳統方法再也無法駕馭如此複雜的軟體生產,是到了必須徹底解決軟體危機,才能拯救這一最有希望的新興產業的時候了。1986 年北大西洋公約組織的電腦科學家在聯邦德國召開國際會議,討論軟體危機問題。在這次會議上正是隨著計算機技術的發展及人們對軟體本質和內在規律認識的提高,對軟體工程的定論也在變化。著名的軟體工程專家m 對軟體工程的定義是:“運用現代科學技術知識來設計並構造計算機程式及為開發、執行和維護這些程式所必須的相關檔案資料”。

軟體工程採用的方法是把軟體生存週期劃分成若干個階段,每個階段的任務相對獨立,而且比較簡單,便於不同人員分工協作,從而降低整個軟體開發工程的困難程度。在實現每個階段的任務時,採用的是系統化的技術方法———結構化分析和結構化設計技術。這是傳統的軟體工程模式。它的缺點是強調了分階段實施模組化、結構化程式設計技術和方法,而忽視了人在軟體開發過程中的地位和作用。

 2.物件導向技術

在計算機領域,很多新方法和新技術都從程式設計階段首先開始,進而發展到軟體生命期階段,早在60 年代未stra 就提出了結構化程式設計的概念,為程式設計方法學奠定了基礎。70 年代美國的E.

Youdon 教授提出了結構化分析方法,指出了分析和設計比編碼更為重要,這一技術當時曾被軟體界看成是治癒“軟體危機”的靈丹妙藥,其實由不然。面對大型軟體系統,用結構化方法,系統的重要性、穩定性、擴充性都無法實現。80 年代物件導向方法應運而生,為軟體工程增添了活力。物件導向分析和物件導向設計是當今物件導向的關鍵技術。

2.1 物件導向的概念物件導向簡稱為“00”。這是目前計算機業界使用的高頻詞。“00”代表著一種新的思維方式,代表著一種新的程式設計方法的潮流。

傳統的程式設計方法,不論是需求分析,還是系統設計,都是針對數學模型的,出發點是“怎樣做”,即用計算機求解這個實際問題應該“怎樣做”。物件導向方法的出發點是:“是什麼”,即要求解的實際問題,它到底“是什麼”。Youtdon 給出了物件導向的一個定義:“物件導向= 物件+ 類+ 繼承+ 通訊”。

2.1.1 物件物件是物件導向開發模式的基本成分。每個物件可用其一組屬性和它可以執行的一組操作來定義。屬性一般只能通過執行物件的操作來改變。操作又成為方法或服務,在C++ 中稱為成員函式,它描述了物件執行的功能。若通過訊息傳遞,還可以為其他物件使用。而訊息是一個物件與另一個物件之間通訊的手段,是要求另一個物件執行類中定義的某個操作的規格說明。傳送給一個物件的訊息定義了一個操作名和一個引數表(可能是空的),並制定某一個物件。當一個物件接收到發給自己的訊息時,則呼叫訊息中制定的操作,並將形式引數與引數表中的相應的值結合起來。接收物件對訊息處理可能會改變物件的狀態,即改變接收物件的屬性,併發送一個訊息給自己或另一個物件。可以認為,這種訊息的傳遞大致等價於傳統過程性方法中的函式呼叫。

為了把說明與實現分離,需對物件的資料結構和相關操作的實現進行封裝,因此,“物件”有兩個檢視,分別表現在設計和實現方面。從設計方面來看,物件是一些概念的例項。它們把有關的實體模型化。從實現方面來看,一個物件是表達在應用的可執行程式碼中的實體而使用的實際資料結構。這些物件是資料結構與操作的單一混合體,它們是資料抽象的例項化。

2.1.2 類類是一組具有相同資料結構和相同操作的物件的集合。類的定義包括一組資料屬性和在資料上的一組合法操作。類定義可視為一個具有類似特性與共同行為的物件的模板,可用來產生物件。在一個類中,每個物件都是類的例項,它們都可使用類中提供的函式。一個物件的狀態則包含在它的例項變數中。

類,就其是一個數據值的聚合的意義上來看,與Pascal 中記錄或C中的結構類似,但又有差別。類擴充套件了通常的`記錄語義,可提供各種級別的可訪問性。出就是說,記錄的某些成分可能是不可訪問的,而這些成分對於該記錄型來說具有可訪問性。類不同於記錄,因為它們包括了操作的定義,這些操作與類中宣告的資料值有相同的地位。

2.1.3 繼承繼承是使用已存在的(現存)定義作為基礎建立新定義的技術。新類的定義可以在現存類所宣告的資料、定義與新類所增加的宣告的組合。新類複用現存類的定義,而不要求修改現存類。因為這種類的一部分已經實現和測試,故開發費用較少。現存類可當作父類(範化類、基類或超類)來引用,則新類相應地可當作子類(特化類、子女類或派生類)來引用。

使用繼承設計一個新類,可以視為描述一個新的物件集合,它是現存類所描述物件集合的子集合。這個新子集合可以認為是現存類的一個特化。新類的介面還可以看作是現存類介面的擴充介面。

2.1.4 訊息訊息是物件之間相互請求或相互協作的途徑,是要求某個物件執行其中某個功能操作的規格的說明。傳送訊息的物件成為傳送者,接收訊息的物件稱為接收者。物件間的聯絡,只能通過傳遞來進行。物件也只能在收到訊息時,才被啟用。被啟用後的物件程式碼將按訊息中的命令去操作它的私有資料,完成要求的功能。

(1)訊息的定義將操作送到目標物件的一種機制稱為訊息。它包括操作名的選擇和傳遞、操作資訊變數有三個部分:接收訊息的物件、訊息選擇符、變元。

(2)訊息的性質同一個物件可接受不同形式的多少訊息,產生不同的響應,即:

1 個物件隈M個訊息陴M個動作相同形式的訊息可以送給不同的物件,所做出的響應可以是截然不同的:即:

M個物件隈1 個訊息陴M個動作訊息的傳送可以不考慮具體的接收者,物件可以響應訊息,也可以對訊息不予理會,對訊息的響應並不是必須的。

在某個物件的一批訊息中,由外界物件直接向它傳送的訊息,稱為公有訊息。在某個物件的一批訊息中,不對外發放,由物件自己向本身傳送的訊息,稱為私有訊息。

2.2 物件導向軟體開發方法物件導向的軟體開發方法是以資料為中心而不是以過程為中心。

物件導向軟體本身的內部結構已發生了質的轉變。由此帶來良好的可構造性、可擴充性和可複用性。物件作為唯一標識的實體,封裝了一組屬性及其相關操作,提供了一種結構化系統設計的抽象手段。基於物件構造的系統,其開發的各個階段(分析、設計和實現)都是統一按照相互作用的物件來組織的,因此各個階段的過程比較平滑,不會象“瀑布型”的結構化方法,從分析到設計(資料流圖到結構流程圖)有很大的跳躍。

2.3 物件導向的分析與設計

完整的物件導向方法包含了物件導向分析、設計、實現、測試和維護等多個方面,其中物件導向的分析和設計用於描述一個系統,使整個物件導向方法中最重要的組成部分———最能體現物件導向方法好處的部分。物件導向的分析與物件導向的設計是在物件導向的程式設計語言基礎上發展起來的,試圖用物件導向軟體開發方法取代傳統的結構化軟體開發方法。

2.3.1 物件導向的基本思想方法

物件導向方法給出兩個問題和兩個空間的概念:客觀世界中的自然領域問題和計算機世界中的軟體產品問題;客觀世界中的自然領域問題空間對應於計算機世界中的解空間。從分析設計到程式設計,每一階段都是按問題域本身的樣子組織的。這種範型不僅帶來穩定性,而且還具有擴充性。物件導向方法的基本特點:模組性、抽象性、繼承性、動態聯接的靈活性、易維護性和易擴充性。

2.3.2 物件導向的設計在設計階段中繼續採用五個層次,用於建立系統的四個組成部分。

這四個組成部分是問題論域、使用者介面、任務管理和資料管理。圖2 給出了這四個部分及其相互間的關係。

問題論域部分包括與所面對的應用問題直接有關的所有類和物件。由於識別和定義這些類和物件的工作在00A 中已經開始,設計部分只是對它們做進一步的細化。在其他的三個部分中,識別和定義新的類和物件。這些類和物件形成問題論域部分與使用者、與外部系統和專用裝置以及與磁碟檔案和資料庫系統的介面。這三部分的作用主要是保證系統基本功能的相對獨立,以加強軟體的可複用性。

 3.小結

用物件導向思想方法進行軟體構造、軟體過程研究和建立軟體體系結構都標誌著物件導向理論趨於成熟。隨著計算機的廣泛應用,大型和超大型軟體系統的開發是必不可少的。從物件導向的思想出發,用物件導向的分析和設計方法去實現它,必將事半功倍。

 參考文獻

[1]鄭人傑.殷人昆,陶永雷.實用軟體工程.北京:清華大學出版社

[2]周之英.現代軟體工程.北京:科學出版社

[3]朱海濱.物件導向技術———原理與設計.長沙:國防科技大學出版社

[4]魏遠旺.基於物件導向的軟體複用技術的研究和應用[D].南昌大學,2005 年

[5]段小君,高金環.軟體複用與物件導向技術[J].西安郵電學院學報,2004 年02 期