關於計算機軟件複用的探討

計算機軟件作為一門學科得到了迅速發展,相關技術和方法層出不窮,研究領域不斷深入和發展,計算機的應用範圍也得到了很大程度的普及,人們對軟件系統的需求急劇上升,隨之而來的軟件規模越來越大,開發費用越來越高,開發的質量和效率不斷降低的問題日益嚴重,如何解決這些日益複雜的矛盾,滿足高質量、高效率地開發各種各樣日趨複雜、大型的軟件系統的需求,消除所謂的“軟件危機”,成為計算機軟件學科所面臨的重要課題

關於計算機軟件複用的探討

軟件複用技術的提出成為消除這種危機的一種解決方案。近年來,特別是20世紀90年代以後,面向對象方法和技術成為主流的軟件開發技術,使得軟件複用被視為解決軟件危機一條現實可行的途徑。與此同時,模型構件技術、分佈式系統、領域工程、自動生成技術又為軟件複用注入了新的活力,本文對面向對象系統分析階段軟件複用模型進行了研究和探討

一、軟件複用?

軟件複用的概念是在1968年NATO軟件工程會議上被第一次引入的,在其後的幾十年中,進行了許多複用技術的研究和實踐活動,但因技術和非技術方面的種種因素,造成複用技術在整體上對軟件產業的影響不盡人意。面向對象方法和技術的出現及成熟,為軟件複用提供了強有力的技術支持,尤其是軟件構件技術的發展為其注入了新的活力,使得軟件複用研究重新成為熱點,被視為解決軟件危機、提高軟件生產效率和質量的一個現實可行的途徑,同時也成為了避免軟件開發中重複勞動的解決方案,並在一定程度上降低了軟件開發的費用。目前,軟件複用技術主要從兩個方面來考慮:產品複用、過程複用。

產品複用:所謂產品複用是指複用已有的軟件產品。目前基於構件的和麪向服務的軟件開發模式就是建立在這種軟件複用的基礎上的。這兩種開發模式主要通過對現有的構件和服務進行合成或集成,從而生成所需要軟件的過程。產品的複用是目前軟件複用技術研究的焦點,在這個複用的過程中涉及到的關鍵技術是構件技術和軟件架構技術,在成熟的構件和架構的技術上,可以使產品複用達到良好的效果

二、面向對象系統分析(OOA)階段軟件複用模型?

階段可重用性的本質?

編程階段不同類型的編程軟件和類有不同深度的可重用性:高深度、中深度、低深度

所謂高深度重用是指在不進行任何改變就可以直接使用重用產品的重用,像可視化開發工具中的所有控件,就屬於這方面的重用;目前,面向服務的軟件開發技術中對服務的重用,只要程序員獲得服務者提供的接口,就可以直接使用別人開發的產品,這種複用也是高深度的複用技術,因此高深度的軟件複用,可重用性最好;所謂中深度的重用,程序員可以根據自己的開發經驗,開發出一些比較通用的組件,在具體的使用中,對這些通用的組件只要稍作修改就可以應用於具體的項目中去,這種複用可重用性較好。當然,對於低深度的可重用性就於具體的項目相關,它只能侷限於該項目,可重用性最差。由此可見,可重用性與業務邏輯的相關性是成反比例關係的:越是與業務邏輯無關的重用,重用性越好;反之則越差

階段軟件複用模型研究?

OOA階段的軟件複用,在一定程度上可以説是建立在許多優秀的系統分析員實踐和經驗基礎之上的複用,是一種思想上的複用。在這個階段的軟件複用更具有通用性和重用性,因此,構造這個階段的軟件複用模型,可以使複用達到更好地效果

3.範式抽象?

所謂範式就是抽象的解決方案模板,它可在不同具體項目中使用。範式抽象就是在此基礎上提出的對範式的設計方法。針對不同的問題域,就應該有與之對應的`設計方法,這樣可以使範式的設計達到很高的重用性。針對OOA階段具體現狀,有三種範式抽象方法:

(1)關係抽象。

在OOA階段,針對具體的項目,會分析出大量的關係模型。例如在學校排課表系統中,需要定義教師類,它包括教師姓名、性別、職稱等有關教師的基本信息,同時,為了便於教師很快得出自己的上課表,還需要定義一個與教師對應的教師課表類,這個類顯示了一週中教師的課程安排情況;在網上購物系統中,需要定義一個購物者類,包括了購物者的相關信息,同時為了得到購物者所購的物品,還需定義一個購物車類,該類描述了購物者與所購買的物品的對應關係。這兩個系統的具體業務是不同的,但教師類與教師課表類、購物者類與購物車類的關係卻是基本相同的,都是一個實體對另一個實體的擁有關係,同樣,所進行的操作也基本相同,諸如都涉及到對所擁有實體的查詢操作等。因此可將這種關係抽象出來,定義為擁有關係,然後在此關係的基礎上定義相應的操作。這種關係就可以以範式的形式保存起來,在不同的項目中都可重用這種範式。同樣,還可抽象出許多其他的關係範式,如實體——內容關係,上下級關係等。這些關係都是不依賴於具體的項目和業務的,可重複使用,只是在針對具體的業務時,在相關屬性和方法上稍作修改就可以了。

(2)相似對象抽象。

在不同項目的OOA階段,還會分析出大量的相似對象或類,例如用户、用户組、角色、權限等在所有涉及到權限管理的系統中都會出現這類對象;在一些相同領域的項目中,由於涉及的領域的標準化,有些對象的相似性以及相同的機率會更大。對於這些相似程度如此大的對象來説,由於其在項目開發中的相對獨立性,把這些對象模型以範式的形式保存起來會使分析的結果得到更大的重用

按照上述思想進行的範式抽象稱為相似對象抽象,這種抽象依據的是分析階段的對象模型,這種對象模型具有獨立的、高度的相似性,抽象出來的範式可稱為對象範式。這種範式與具體項目之間的相似可稱為表面相似性。表面相似越接近,範式的重用性就越大

(3)領域抽象。

所謂領域抽象是用於某一領域的抽象問題的解決方案。在同一個領域的項目開發過程中往往能夠總結出更多的相似性,包括關係相似性和表面相似性,將二者相結合,可構建出與行業有關的構件。這種構件是建立在具體領域上的一種抽象,稱為領域抽象。領域抽象的過程可藉助領域工程的知識和方法。其中在OOA階段主要用到了領域分析的方法。所謂領域分析是被稱為領域工程更大的學科中的第一項技術活動。當業務、系統或產品域被定義為長期的業務策略,則可以展開持續的創建強健的可複用庫的工作,其目標是能夠在領域中以非常高的可複用構件率來創建軟件。領域分析在領域抽象過程的作用是從OOA得出的對象、關係、行為模型的抽象出與領域相關的領域範式,其中包括關係範式、相似對象範式和處理過程範式等。這些範式與前面提到的範式唯一不同就是有了特定領域的標識,這在同一領域的開發中將達到高度的重用性

三、總結

本文通過對軟件複用技術的分析,提出了一種面向對象系統分析階段軟件複用的模型,並對此模型中所涉及到範式抽象方法做了探討,並把它們應用於具體的項目中去,從而很好地利用的設計思想,大大提高了項目的完成速度。另外,對於範式庫的研究也為建立在高層上的軟件複用庫管理提出了新的研究課題:例如對於編碼階段複用構件庫的檢索條件也可以擴展為以範式為索引的檢索等。這些都成為下一步的研究課題。