面向對象技術在軟件重用和體系結構中的應用

字號:

面向對象技術提供了一種新的認知和表示世界的思想和方法,它對計算機工業(yè)的影響是深遠的。計算機從業(yè)人士利用它提出了面向對象的計算機程序設計語言、面向對象的軟件設計方法、面向對象的數(shù)據(jù)庫等等。同時面向對象技術為軟件工業(yè)實現(xiàn)工程化提供了強有力的支持,正是面向對象技術造就了組件、構件、中間件等概念。
    1 可重用軟件組件
    計算機的不斷發(fā)展為計算機及網(wǎng)絡應用提供了大量技術先進、功能強大的應用軟件系統(tǒng),同時也給軟件開發(fā)者和用戶帶來了相應的問題:
    · 軟件系統(tǒng)規(guī)模龐大,研制周期長,維護費用高;
    · 軟件系統(tǒng)過于復雜,在一個系統(tǒng)中集成了各種功能,大多數(shù)功能不能靈活地裝卸、單獨升級或重復利用;
    · 應用軟件不易集成,即使各應用程序是用相同的編程語言編寫的,并且運行在相同的計算機上,特定應用程序的數(shù)據(jù)和功能也不能提供給其他應用程序使用。
    為克服上述困難,實現(xiàn)全行業(yè)范圍內的軟件"即插即用",關鍵是解決軟件系統(tǒng)的可操作性、可擴展性、語言獨立性和跨平臺的操作能力。
    作為解決這類問題的一種方案,面向對象的程序設計思想20多年來得到很大發(fā)展。孤立的面向對象思想雖然功能強大,但目前其發(fā)展已接近極限,結果是產(chǎn)生了大量的"對象孤島"。將面向對象思想與組件編程思想相接合發(fā)展起來的基于對象的組件軟件結構為這一領域開辟了新的道路。
    從廣義上說,軟件組件是一種定義良好的獨立、可重用的二進制代碼,包括功能模塊、被封裝的對象類、軟件框架和軟件系統(tǒng)模型等。
    本世紀60年代末到80年代初,結構化的模塊式軟件開發(fā)思想占主導地位,當時的組件的含義是指一些定義良好的方法包或功能模塊。
    80年代起,面向對象的軟件開發(fā)思想迅速發(fā)展起來,這時的軟件組件的含義就是類庫。類雖然提供了封裝性、多態(tài)性和繼承性,但需要依賴于具體的編程語言,耦合度高,且需要用戶對類庫的結構和宿主語言有較深入的了解,因此,不能完全達到軟件重用的可移植性和互操作性要求。
    90年代后,組件的內涵進一步加強,聚合性、獨立性和重用性進一步提高。目前,基于對象的組件軟件體系結構中的組件是指可方便地插入到語言、工具、操作系統(tǒng)、網(wǎng)絡系統(tǒng)中的二進制代碼和數(shù)據(jù)。
    這種軟件組件可以看作是一種軟件集成電路元件,具有以下特點:
    · 軟件IC沒有硬件IC的天然聚合性,構成粒度大小自由,便于擴展;
    · 通過規(guī)定一個統(tǒng)一的二進制標準,建立起機構之間的智能互操作機制和語言獨立性;
    · 外界僅通過接口訪問組件;
    · 多側面性,即組件表達的語義層次高,可以從不同側面進行連接,外部特性不;
    · 支持封裝、繼承、多態(tài)性。
    基于經(jīng)典面向對象技術的組件模型為軟件體系結構設計和大型應用軟件開發(fā)給予了強有力的支持,目前已經(jīng)為軟件行業(yè)所廣泛接受。Microsoft的OLE/COM和SunSoft的JavaBeans都是典型的軟件組件規(guī)范。
    1.1 JavaBeans
    Java Bean是基于Java環(huán)境的,可視的、可操縱的、可重用的組件;JavaBeans組件模型是SunSoft制定的關于Bean的軟件組件標準,規(guī)定設計所有Bean所依據(jù)的框架,確保Bean在具備特定功能的同時,還能被可視化軟件構造工具所識別、操縱,并能將這些設計信息保存下來,指導運行時的行為。
    作為可視化組件,所有JavaBean都具備如下特征:
    · 內省(introspection)機制,能夠告訴軟件構造工具其所能完成的功能,從而允許軟件構造工具在設計時對其加以操縱;
    · 用戶定制(customization)機制,允許程序員在軟件開發(fā)階段利用軟件構造工具改變Bean的外觀和行為方式。
    · 事件(event)機制,能捕捉事件、引發(fā)事件,并將其所能產(chǎn)生和處理的事件告知軟件構造工具。
    · 特性(properties)機制,除在軟件開發(fā)階段支持用戶定制外,還使得軟件系統(tǒng)能夠在運行時刻對Bean進行加工和控制;
    · 保持(persistence)機制,保存程序員開發(fā)時利用構造工具對Bean所做的修改,并在運行時予以恢復。
    · 設計時刻功能和運行時刻功能分離。
    JavaBean主要用于可視化環(huán)境,為軟件構造工具所利用,但也能通過程序接口直接操縱,Java類庫中提供了相應的控制類。