有五個重要方面能說明必須有一個獨立的Evaluation and Test KPA,即:(1)評價和測試在促進向有紀律的軟件工程過程的文化轉變中的作用;(2)評價和測試在項目跟蹤中所起的作用;(3)整個開發和維護在評價和測試部分的預算;(4)評價和測試訓練對軟件交付時間和成本方面的影響;(5)評價和測試對軟件其余缺陷的影響(the impact of residual defects in software)。
1.促進文化轉變
電子工程師和建筑工程師要遠比軟件工程師們訓練有素。電子工程師們可以制造近乎0缺陷的包含上百萬個晶體管的大規模集成電路。在有關Pentium處理器的熱烈的缺陷聲討中,經常被忽略的是310萬個晶體管中竟然只有一個缺陷。那么好了,再看看軟件,你上次看到的在310萬行軟件代碼中只有一個缺陷是什么時候?硬件工程師們沒有繼續達到更好結果是因為他們比軟件工程師們更加smart。他們達到的質量水平幅度遠遠高于軟件,因為他們更加訓練有素,他們的開發和測試方法更加嚴格。他們愿意話更多的時間和精力來保證產品的完整性。他們真正認識到了缺陷所帶來的影響:經濟的或者其他的。
然而,另一方面,軟件卻是完全不同的方式。Gerald Weinberg的描述很著名:如果建筑師們也像軟件工程使開發軟件那樣來建造大樓,來的第一個啄木鳥就將摧毀文明。
我們不得不承認軟件工業相對于其他工程專業還十分年輕。如果你從Grace Hopper作為第一個編程人員的話,你可能會說它才僅僅50歲 (當然如果你將Ada Lovelace作為第一個的話,可能會所謂大一點) 。然而,更加切實的開始日期應當在1960年左右,也就是說我們軟件工業也不過30多年。做個對比,IEEE在1984年慶祝其成立100周年,這意味著到1884年,已經有大量的電子工程師,從而形成一個專業協會。而在1945年,Mr. Hopper則在聚集軟件工程師方面還十分孤獨。
將軟件工業從一種手工(藝)匠方法向真正的訓練有素的工程層次邁進實在是一種文化的轉折、躍變。CMM的首要的而且也是最重要的目標是,建立一種機制來對軟件工程是引進文化改變。但是一個文化不可能發生激烈的改變,除非你深刻理解改變的重要性。必須全面理解向新的文化改變所能給我們解決的問題。最后這一點,將使我們引導我們來討論測試在這一加速向訓練有素的文化改變中所起的作用。
在1960年代后期,IBM是第一批開始應用正式軟件工程技術的組織之一。一開始使用的是Dijkstra支持的技術。具有諷刺意味的是,并不是由軟件開發人員發起這項努力的,而是軟件測試人員。這一創始性工作是在Poughkeepsie實驗室進行的,屬于Philip Carol領導的面向測試的設計項目。
Phil是軟件測試技術工作組(SW Test Technology Group)的一個系統測試工程師。這個工作組主要負責定義軟件測試技術和工具以用于整個公司。大概在30年以前,他們就開始意識到你不可能通過測試將質量注于代碼中。你需要像考慮測試過程一樣也得考慮分析、設計和編碼過程。作為測試人員,由于測試需要接觸軟件開發的所有方面,他們對問題有更加徹底深入的理解,因而他們取得了這一深入洞察
正是這一對問題的深入認識并將這一問題明確有力地向開發人員指出推動了軟件開發文化的迅速改變。隨著改進的開發和測試技術的應用,IBM的OS操作系統的缺陷率在下一個發布降低了1/10。這確實是在短時間內產生的重要的文化變革,特別是這涉及到了分布在不同地域的近千名軟件開發人員。
這種變化的加速除了對問題的重視的直接推動外,另一個推動因素是與測試有關的一些因素,即在測試過程和開發過程集成中的反饋環。隨著開發過程的不斷改進,評價和測試過程并行地改進以反映新的成功準則。隨著開發不斷使用新技術,他們直接從測試人員那里得到及時的反饋---他們究竟做的怎么樣-----因為測試人員就是專門來基于新的尺度對交付產品進行確認的。
一個具體的例子是需求撰寫改進技術的應用,需求必須是明確的、確定的、邏輯上是一致的、完備的、正確的。有關結構化分析方法和面向對象的方法的培訓課教系統分析員如何來寫一個好的需求。如果在他們剛剛寫完第一個功能描述時就進行模糊性評審,那么他們寫的下一個功能就會更加清楚(out of box)。這種緊湊的反饋環—寫一個功能、評價一個功能----有效地加速了其學習曲線。這樣的話,過程從缺陷檢測到缺陷預防轉移的相當快速----他們正在寫著清晰、不模糊的規格。
將這些經驗與我們的整個軟件工業做一個對比,結構化設計技術和面向對象的技術已經在25年前就可以應用了(是的,OO確實已經那么老了),然而我們的時間的情況卻遠遠落后于這些方法的最新技術發展水平。問題是除非組織理解了正在解決的問題,否則它不會全面接受或者全面理解一個解決方案(如:軟件工程方法和技術),而集成的評價和測試正是問題理解的杠桿和關鍵。這里“集成評價和測試”被定義為將測試集成到軟件過程的每一步中,它也是為掌握一個技術所需的必要的反饋環的關鍵部分。任何沒有緊密反饋環的過程是具有致命缺陷的過程,因此評價和測量是加速文化改變的關鍵。