蘇州高等職業技術學校 李志偉
?
淺談軟件架構復用技術及存在的問題
蘇州高等職業技術學校李志偉
【摘要】如何快速開發出高質量的軟件一直是人們關注、研究的熱點問題。軟件架構中的復用技術對解決這一問題大有幫助。本文簡要介紹軟件架構技術發展的前沿背景,并對實現復用技術的關鍵技術加以分析敘述,給出了軟件復用存在的問題。最后對軟件復用技術加以總結和展望。
【關鍵詞】軟件架構;復用技術
計算機技術的快速發展,使得人們對計算機軟件的要求越來越高。如何最大程度上提高軟件的開發和使用效率一直是人們關注的熱點。但復雜度較高的軟件開發周期較長,開發過程中面臨各種各樣錯誤,加大的開發人員的工作量。盡管面向過程的開發方法能夠在一定程度上提高軟件開發的技術水平。但分布式技術的依賴程度越高,處理的數據量也就越大。加上軟件規模和軟件產業的增加,各行業的軟件技術沒有統一標準規范。假如每個新開發的項目都從零開始實施,那么開發的過程中大量重復的勞動力就會出現,浪費人力、財力和物力。隨后出現的軟件復用技術,能夠解決項目開發效率低、質量不達標等問題。它是在已經有的開發經驗和成果基礎之上,減小或消除軟件開發過程中的重復性勞動,加上這一技術能夠適應日益成熟的面向對象技術,軟件復用技術是當前軟件開發必須要考慮的技術。軟件復用的思想對于提高軟件開發質量和效率有重大意義。而后這一技術被廣泛運用于計算機行業,具有劃時代的意義。
軟件架構復用就是在軟件的架構層設計中套用現有的優勢架構。軟件架構復用具有一定的積累功能,可基于特定的軟件開發工具或平臺,也可以基于電子商務、電子政務等特定應用領域。軟件復用的基礎或零件部分來源于:將不同系統中相似的功能和特征總結出來,形成再可使用的資源。這些資源在使用過程中可被劃分為若干部分。如:選取、抽象、實例化、集成等。
實現軟件復用的主要因素有:軟件架構、軟件構件技術、軟件工程、領域工程、軟件過程、CASE技術、開放系統和非技術因素。以下簡要介紹4個因素。
(1)軟件架構。
軟件架構是軟件主體模塊之間的邏輯關系總和。它包括一個程序/系統各部件的結構,描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化為實際的組件,組件之間的連接通常用接口來實現。
軟件架構有許多模型,通常采用的是視圖模型,它可以從多個角度描述一個復雜的軟件系統。最流行的視圖模型是4+1視圖模型,包括:用例視圖、結構視圖、行為視圖、實現視圖和部署視圖五個視圖。
(2)構件技術。
構件技術是指通過組裝一系列可復用的軟件構件來構造軟件系統的軟件技術。構建是指可以被重復使用的標準化的功能單元。通常包括的基本特征有:可用性、有用性、質量和可移植性。如今的構件不僅包括源代碼構件、測試計劃、軟件架構等內容,還包括其他對開發活動有用的信息等。
(3)軟件再工程。
軟件再工程是對調查的對象系統進行重構的開發過程。它以軟件工程方法學為指導,對程序重新設計、編碼和測試,使用逆向或再工程工具理解原有設計。軟件再工程是對已有系統中構件級的優化,其特點是最大限度地重用原有系統的資源。在再工程的各個階段中,前期要加深對代碼的理解,軟件的可重用程度決定了再工程的工作量。
(4)領域工程。
領域工程是指開發相同或相似的領域系統。開發過程可分為三個階段:一是領域分析階段:該階段是要提取領域模型。領域模型能夠描述領域中的共同需求。其主要內容包括領域邊界,系統需求和識別信息源,共享功能,不變與可變的需求功能。二是領域設計階段:該階段是要對領域構架進行分析。領域構架是要先通過對領域內的業務流程進行分析、構建出模型,再抽象出領域的構架。由于各領域的流程不同,故而得到的模型、構架也是不相同的。三是領域實現階段:即使用構件將領域需求分析得出的構架填充起來,以期完成總的領域工程的過程。
軟件復用技術能夠提軟件的開發效率、降低開發成本,它是解決軟件危機問題的有效途徑。但是,在大型軟件的開發過程中,使用復用思想開發的卻很少,原因有很多。如:(1)在開發軟件構件時,過分強調了軟件復用,很可能使得產品滿足不了所有用戶的需求。(2)開發人員、管理人員缺乏軟件復用的觀念和意識。(3)對構件的開發粒度大小把握不好,粒度大的構件應用范圍小,小粒度的構件功能簡單,應用范圍廣,但會降低或失去構件復用的價值。4.構件達到一定數量后,如何選擇合適的構件是個問題。另外,軟件復用存在的問題還有:可供復用的資源太少;可復用資源的功能必須通用;可復用資源的使用方法必須清楚。
本文介紹了軟件架構、軟件復用的前沿背景,后對實現軟件復用的幾種要素加以分析說明。分別介紹了軟件架構、構建技術、軟件再工程、領域工程等因素。最后分析了軟件復用技術面臨的幾個問題。使用軟件復用技術開發軟件將是勢之所趨,在提高軟件開發質量和降低成本上功不可沒,良好的復用思想加上對問題的如實把握將是解決問題的關鍵。伴隨著因特網與科技的發展進步,軟件復用技術必將成為開發工程師關注和使用的最關鍵技術。