關鍵字:面向組件 大規模軟件架構
軟件質量的重要性是不言而喻的,但是當所有人都意識到它的重要性的時候,卻很少有人能夠清晰的描述出如何才能夠提高軟件質量。軟件質量框架的目的就在于提出一個評價的原型,幫助我們分析一種方法和技術是否能夠提高軟件質量。本系列文章分日構建、測試驅動開發、建立核心框架、面向組件的大規模軟件架構來進行深入的分析。
在中小規模的軟件中,對象和對象之間的協作關系就能夠滿足需要。但是當軟件規模擴大,復雜度上升的時候,面向對象技術強調的協作卻表現出另一個極端的特點-耦合度太高導致的復雜度。這時候就需要有一種新的方法來彌補面向對象技術的弱點。
大規模軟件的特點
大規模軟件主要特點是復雜度。比較典型的例子是集成性的項目。軟件系統需要將各種各樣的硬件、遺留系統、外部接口整合起來。其間可能遇到不同的硬件接口,不同的操作系統,不同的語言,不同的平臺,不同的數據庫,不同的消息中間件,不同的網絡介質。這些都使得系統變得非常的復雜。
面向對象技術的特點是通過對象之間的職責分工和高度協作來完成任務。這樣的好處是代碼量較少,系統布局合理,重用程度高。但是當對象的個數大量增加的時候,對象之間的高度耦合的關系將會使得系統變得復雜,難以理解。
以前對于這個問題的方法是采用包(請參考拙作面向對象軟件開發中對包的相關討論)作為容器來組織對象,對象之間的依賴性將轉化為包之間的依賴性。這種方法聽起來有道理,但是在實際中仍會出現難以解決的問題。
包僅僅只是容器。這意味著對對象的組織可以是任意的,而包之間依賴關系的設計則還是取決于對象的依賴。此外,包的設計和對象一樣,缺乏一個統一的風格。而統一的風格正是大規模軟件設計所必須的,因為這樣可以有效改進系統的可理解性,這一點非常重要。
面向組件編程
面向組件編程的縮寫是COP。COP是對OOP的補充,幫助實現更加優秀的軟件結構。組件的粒度可大可小,需要取決于具體的應用。
在COP中有幾個重要的概念:服務,服務(Service)是一組接口,供客戶端程序使用。例如,驗證和授權服務,任務調度服務。服務是系統中各個部件相互調用的接口;組件,組件(Component)實現了一組服務,此外,組件必須符合容器訂立的規范,例如,初始化,配置、銷毀。
COP是對一種組織代碼的思路,尤其是服務和組件這兩個概念。在下文會提到的Spring框架中,就采用了COP的思路,將系統看作一個個的組件,通過定義組件之間的協作關系(通過服務)來完成系統的構建。這樣做的好處是能夠隔離變化,合理的劃分系統。而框架的意義就在于定義一個組織組件的方式。
理解組件
在我的qca網站上提供了幾篇講解組件的文章,可以通過以下的鏈接訪問: http://qca.cn/common/content.htm
組件不是一個新的概念,Java中的javaBean規范和EJB規范都是典型的組件。組件的特點在于他定義了一種通用的處理方式。例如,JavaBean擁有內視的特性,這樣就可以通過工具來實現JavaBean的可視化。而EJB規范定義了企業服務中的一些特性,使得EJB容器能夠為符合EJB規范的代碼增添企業計算所需要的能力,例如事務、持久化、池等。
所以,組件比起對象來的進步就在于通用的規范的引入。通用規范往往能夠為組件添加新的能力(就像上面所討論的),但也給組件添加了限制,例如你需要實現EJB的一些接口。以下我們將討論組件的一些相關問題:
文章來源于領測軟件測試網 http://www.kjueaiud.com/