• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件質量之路(5):面向組件的大規模軟件架構

    發布: 2009-11-26 08:56 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 19次 | 進入軟件測試論壇討論

    領測軟件測試網

          組件的粒度

      組件的粒度是和系統的架構息息相關的。組件的粒度確定了,系統的架構也就確定了。在小規模的軟件中,可能組件的粒度很小,僅相當于普通的對象,但是對于大規模的系統來說,一個組件可能包括幾十,甚至上百個對象。因此,對使用COP技術的系統來說,需要正確的定義組件的粒度。較好的定義粒度的方法是對核心流程進行分析。

      針對接口

      接口和實現分離是COP的基礎,沒有接口和實現的分離,就沒有COP。接口的高度抽象特性使得各個組件能夠被獨立的抽取出來,而不影響到系統的其它部分。

      接口和實現分離有以下幾個好處:

      1、 在模塊/組件/對象之間解耦。

      2、 輕松的抽換實現,而不用修改客戶端。

      3、 用戶只需要了解接口,而不需要了解實現細節。

      4、 增加了重用的可能性。

      IOC

      IOC是Inversion of Control的簡稱。它的原理是基于OO設計原則的好萊塢原則(The Hollywood Principle):不要訪問我,我們將訪問你。也就是說,所有的組件都是被動的(Passive),所有的組件初始化和調用都由容器負責。

      在Brian Foote的論文(http://www.laputan.org/drc/drc.html)中解釋了IOC的概念。

      qca網站上對IOC的討論(http://qca.cn/common/IOC.htm)

      IOC有幾種實現的類型,包括基于方法參數調用的Method-based (M) IoC,它把組件傳遞給每個方法調用;基于接口的Interface-based (I) IoC(通常稱為類型1),它使用接口來聲明組件之間的依賴性,例如,Serviceable, Configurable;基于Setter方法的Setter-based (S) IoC(通常稱為類型2),它使用setter方法來設置組件之間的依賴性;基于構造函數的Constructor-based (C) IoC(通常稱為類型3)。

      在Martin Fowler剛剛完成(2004-1-24)的Inversion of Control Containers and the Dependency Injection pattern一文(http://www.martinfowler.com/articles/injection.html)中,將IOC模式稱為Dependency Injection模式。

      IOC是框架開發的一個基本原理。在開源軟件中,不少的容器類框架都采用了IOC的思路。例如PicoContainer(http://www.picocontainer.org/)和Spring(http://www.springframework.org/)

      組件污染

      在IOC的第一類型中,由于組件需要實現一些特定的接口,或是從某個類集成。這將使得組件受到一些約束(稱為Invasive),例如組件移植不便。另一種情況是組件需要依賴于一個特定的容器,最為典型的就是EJB,組件無法脫離容器單獨存在,這也使得組件受到約束。這兩種情況都屬于組件污染。

      最理想的組件是只專注于自身工作的組件,它沒有其它額外的邏輯。不過按照這種標準,目前大部分的代碼都是不符合的。因此,目前在開源軟件界出現了一些輕量級的容器框架,典型的如上文提到的PicoContainer和spring。他們的定位就是提供一個對組件管理的統一模式,而組件可以單獨的使用,也可以放在另一個容器中,容器僅僅只是為組件提供了一些額外的功能,和組件本身沒有直接的依賴。

      

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    52/5<12345>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>