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

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

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

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

    軟件最大的追求是什么

    發布: 2008-10-06 10:50 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 28次 | 進入軟件測試論壇討論

    領測軟件測試網
    關鍵字:軟件 追求
    這段時間在開源領域,即將推出的Spring 2.0將支持非貧血模型,也就是說,Domain model的持久化可以干凈地全部在Domain model自身之中實現了,這是面向對象技術一種探索。有關域模型建模困惑可見這里!  

      當面向對象技術正在將Model對象持久化行為綁定到Model數據自身時,工業界力推的SOA則倡導的是將數據從行為中解耦出來。SOA相關討論見這里?此泼,實際它們有一個共同點,追求同一個終極目標:松耦合(loose coupling)。

      當我們在Java波濤洶涌的潮流中奮擊時,我們常常會思考?我為什么要這樣做?甚至,我們會想松耦合真的那么酷?可維護性真的是軟件唯一?也許我們迷失了方向。

      我們要好好探究一下,軟件的最大追求是什么?

      我們的大學計算機教育只是教會我們如何編程?這如同技工學校中教會學員如何使用車床一樣,當我們學會了編程,接下來是什么呢?是不是就沒有了呢?是不是就是如同車工那樣只需日復一日的反復編程呢?

      其實,當你在一個系統中持續編程(增加新的東西),這個系統就變得復雜了,你面臨最大的挑戰是如何整理你自己的產物。

      也就是說:大學教育只教會我們如何“增加新的東西”,但是沒有教育我們如何“整理這些東西”,而后者是目前軟件領域日新月異不斷發生的革命的新動力。

      下面我們以具體代碼來說明“增加新的東西”和“整理這些東西”完全屬于不同層次的學問,有些人談到軟件只會想到算法和數據結構,認為這些才是科學,其實這是將軟件數學化,軟件不只是科學計算的工具,它自身也是一門科學,更象管理學/經濟學一樣,是科學和藝術的結合。

      在最近Java(TM) Boutique網站上刊登出一篇文章Measuring the Complexity of OO Systems,衡量OO系統的復雜性,該文對軟件復雜性幾個著名公理進行了詳細闡述,這些公理如果你不進行學習和培訓,即使你使用OO語言Java等這樣工具,還是顯示你是“業余”的。

      軟件復雜性包括以下部分(引自Measuring the Complexity of OO Systems):

    Cyclomatic Complexity (圈復雜性) 
    Response for Class (類的響應) 
    Weighted methods per class (每個類重量方法) 
    Cyclomatic Complexity

      Cyclomatic Complexity可以用下面代碼來說明:

    Cyclomatic Complexity (CC) = number of decision points +1 
     

      其中number of decision points是指一個if else之類的條件判斷語句,比如,是下面這個條語句:

    public void isValidSearchCriteria(SearchCriteria s){

      if(s!=null) {
        return true;
      }else{
        return false;
      }
    }
     

      Cyclomatic complexity 對代碼的可測試性和可維護性上有很大影響,正如上例指出,當你要測試isValidSearchCriteria()方法 ,你必須寫三個測試用例來驗證它。

      如果這個CC值增加,將有更多的判斷點(decision points)數量,也就意味著需要花費更多的力量來測試這些方法。詳細更多說明可參考Measuring the Complexity of OO Systems一文。

      所以,if else 或while 等條件語句是對真正OO的一種傷害(這是非OO公理見Thomas McCabe),可以極端地說:一個好的OO系統幾乎在業務邏輯層看不到超出兩個以上條件的if else等判斷語句,這些條件語句都是可以被GoF設計模式的狀態模式/策略模式等替代(你還在用if else嗎)。

      當你的Java系統中充滿了大量的if else語句,雖然你使用很酷的語言工具,但是說明你的思維是傳統過程的,需要重新學習和培訓。

    Response for Class(RFC)

    這是著名的 Chidamber and Kemerer公理之一。以下面代碼來說明:

    public class RegistrationManager { 
      public void createRegistration(RegistrationData regData){

        DataAccessManager manager = new DataAccessManager();
        AuditManager auditManager = new AuditManager();
        //save the registration
        manager.saveRegistration(regData);
        //audit the creattion
        auditManager.createAuditRecord(regData);

      }

    延伸閱讀

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

    TAG: 軟件

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>