讀書筆記 -《代碼大全》第20章軟件質量概述

這一章主要給我們講了什么是軟件質量攻锰,它有哪些特性,如何保障軟件質量妓雾,也就是有哪些活動娶吞、技術可以保障軟件質量,以及何時采用什么樣的方法君珠、技術來保障軟件質量寝志,我們怎樣組合這些技術才能達到最大效能等問題。

整章的描述都圍繞著這樣的問題策添,甚至整本代碼大全其實都是在尋求這些問題的解答。但本書闡述的大多是從過往經驗中抽象出來的問題毫缆,比較理想化唯竹。書中并沒有講到如何把學到的知識應用于實際情況中。而實際情況無疑是復雜的苦丁,因人而異的浸颓,甚至是難以協(xié)調的,那么除了要把這章知識學透旺拉,還應該更多思考我們在日常事務中如何很好地運用這些知識产上,以創(chuàng)造出它應有的價值。


軟件質量的特性

軟件質量蛾狗,顧名思義晋涣,指整個軟件系統(tǒng)的質量。面對日益復雜的軟件系統(tǒng)沉桌,我們描述它的質量已經不能用簡單的幾句話下定義了谢鹊,應該要從不同方面來衡量、定位留凭,那么這不同方面或說指標都有哪些呢佃扼?
本章從外在和內在兩個層級來描述軟件質量特性,而它們內部又分為很多種具體的特性蔼夜,從不同的角度闡明了軟件質量的方方面面兼耀,也讓我們可以從不同角度去觀察并且從不同角度設立不同的質量目標。

  • 外在特性(用戶關心的)
  • 正確性
  • 可用性
  • 效率
  • 可靠性
  • 完整性
  • 適應性
  • 精確性
  • 健壯性
  • 內在特性(程序員應該關心的)
  • 可維護性
  • 靈活性
  • 可移植性
  • 可重用性
  • 可讀性
  • 可測試性
  • 可理解性

后續(xù)的質量保障工作其實就是圍繞這些質量目標來進行的求冷。所以在執(zhí)行質量保障工作之前瘤运,首先是目標先行,有了目標遵倦,做事才能有的放矢尽超,效率才高。
但是因為這些質量特性之間有相生也有相克的梧躺,再加上現(xiàn)實情況的復雜似谁,而且投入的資源和成本的有限傲绣。那么我們不可能完成所有這些質量目標的。所以回到了一個權衡的過程巩踏,而往往最難的一步就是根據(jù)實際情況做出權衡秃诵。


改善軟件質量的技術

找出了質量目標,接下來就是訂立質量保障計劃塞琼。
實施質量保障計劃需要引入一些有效的質量保障活動(技術)菠净。這些技術都有哪些呢?

  • 設立明確質量目標
  • 明確定義質量保障工作(讓員工知道質量應當放在第一位)
  • 測試策略
  • 軟件工程指南(問題定義彪杉、需求分析毅往、架構設計、構建以及系統(tǒng)測試)派近?攀唯?
  • 非正式技術復查(code review,互相走讀渴丸,結對審查)
  • 正式技術復查(會議評審代碼褐啡?或專門的工具過代碼必搞?)
  • 外部審查
  • 開發(fā)過程
  • 對變更進行控制的過程
  • 結果的量化(參見《Principles of software Engineering》有關度量質量特性的詳細內容)
  • 制作原型
  • 等等

不同質量保障技術的相對效能

根據(jù)過去的統(tǒng)計,不同質量保障技術,效能是不一樣的拌喉。下面我們從以下幾個方面來衡量它們的“效能”:

  • 缺陷檢測率
  • 找出缺陷的成本
  • 修正缺陷的成本

缺陷檢測率的對比:(一張圖足以說明問題)

各軟件檢錯措施缺陷檢測率.png

所以單獨使用一種技術诵姜,最好的檢出率也才65%同辣,達不到很好保障軟件質量弯屈。所以需要綜合運用各種技術,向更高的缺陷檢測率發(fā)起沖擊娜扇。
書中介紹了極限編程的平均缺陷排除率為90%错沃,最好的情況可達到97%,是一個值得推薦的開發(fā)方法雀瓢,它運用了如下這些保障技術組合:
極限編程缺陷檢測率.png

很多人將這一效率歸功于極限編程實踐中的協(xié)作枢析,即結對編程。

找出缺陷的成本
查找缺陷的成本受到諸多因素影響刃麸,舉幾個例子:

  • 特定的檢測技術所能找到的缺陷總量
  • 缺陷被發(fā)現(xiàn)時所處的開發(fā)階段
  • 經濟因素之外的其他因素

大部分研究(具體指哪里的研究醒叁?是否真的靠譜?這是值得考究的問題)都發(fā)現(xiàn)泊业,檢查比測試的成本更小把沼。閱讀代碼每小時能夠檢測出的缺陷要比測試高出80%左右(Basili and Selby 1987)(1987年的數(shù)據(jù)是否還適用于現(xiàn)在?)吁伺。后來饮睬,IBM的一項研究(樣本量多大?具體什么樣的研究篮奄?使用了什么方法做研究捆愁?)又發(fā)現(xiàn)割去,檢查(手工閱讀代碼?)發(fā)現(xiàn)一個錯誤只需要3.5個工作時昼丑,而測試則需要花費15~25個工作時(Kaplan 1995)呻逆。

修正缺陷的成本
一個缺陷存在的時間越長,消除它的代價就越高昂菩帝。因此能夠盡早發(fā)現(xiàn)錯誤的檢測方法可以降低修正缺陷的成本咖城。
這里又要拿檢查和測試做對比了,首先如代碼檢查呼奢,一舉可以確定問題的現(xiàn)象和原因宜雀;而測試,則只能發(fā)現(xiàn)問題表象控妻,而要找到并從根本上修正缺陷還需要額外的工作州袒。

微軟應用部門發(fā)現(xiàn):代碼復查(review)投資回報率達到1.38,而測試只有0.17弓候。

推薦的聯(lián)合技術:

  • 對所有的需求、架構以及系統(tǒng)關鍵部分的設計進行正式檢查
  • 建乃耍或者創(chuàng)建原型
  • 代碼閱讀或者檢查
  • 執(zhí)行測試

什么時候進行質量保證工作

盡早捕捉錯誤才能有效地節(jié)省成本菇存。

  • 需求中一個缺陷會孕育出設計上的一個或多個缺陷,而這些設計錯誤優(yōu)惠繁殖出更多的代碼缺陷邦蜜。
  • 需求中一個錯誤會導致多余的架構設計或錯誤的架構決策依鸥。多余的架構設計又導致多余的代碼、測試用例和文檔悼沈。
  • 一個需求上的錯誤可能產生最終不得不被拋棄的架構贱迟、代碼以及測試用例。

在早期就開始強調質量保證工作絮供,貫徹整個項目衣吠,在開工時添加到項目計劃中,并應該作為項目的結束點壤靶,當整個工作結束的時候檢驗產品的質量缚俏。


軟件質量的普遍原理

軟件質量的普遍原理就是改善質量以降低開發(fā)成本。

提高生產效率和改善質量的最佳途徑是減少花在這種代碼返工上的時間贮乳,無論返工的代碼是由需求忧换、設計改變還是調試引起的。
前期充足準備向拆,只要避免引入錯誤亚茬,就可以減少調試時間,從而提高生產力浓恳。因此刹缝,效果最明顯的縮短開發(fā)周期的辦法就是改善產品的質量碗暗,由此減少花費在調試和軟件返工上面的時間總量。
而且赞草,NASA軟件工程實驗室在分析400人年工作量的50個開發(fā)項目的300萬行代碼后發(fā)現(xiàn)讹堤,更多的質量保證工作能降低錯誤率,但不會增加開發(fā)總成本(Card 1987)厨疙。

質量保證計劃核對表.png

更多資源(書籍)

  • Ginac, Frank P. 《Customer Oriented Software Quality Assurance》(《面向用戶的軟件質量保證》) 洲守。這是一本言簡意賅的書,其中描述了質量特性沾凄、規(guī)律梗醇、質量保證計劃、測試在質量保證中的角色以及著名的質量改善計劃撒蟀。
  • Lewis, Wiilliam E.《Software Testing and Continuous Quality Improvement》(《軟件測試和連續(xù)質量改進》)叙谨。這本書廣泛討論了質量生命周期,包括有關測試技術的深入討論保屯,它還提供了大量的表格和核對表手负。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姑尺,隨后出現(xiàn)的幾起案子竟终,更是在濱河造成了極大的恐慌,老刑警劉巖切蟋,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件统捶,死亡現(xiàn)場離奇詭異,居然都是意外死亡柄粹,警方通過查閱死者的電腦和手機喘鸟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻右,“玉大人什黑,你說我怎么就攤上這事⊥耄” “怎么了兑凿?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長茵瘾。 經常有香客問我礼华,道長,這世上最難降的妖魔是什么拗秘? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任圣絮,我火速辦了婚禮,結果婚禮上雕旨,老公的妹妹穿的比我還像新娘扮匠。我一直安慰自己捧请,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布棒搜。 她就那樣靜靜地躺著疹蛉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪力麸。 梳的紋絲不亂的頭發(fā)上可款,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音克蚂,去河邊找鬼闺鲸。 笑死,一個胖子當著我的面吹牛埃叭,可吹牛的內容都是我干的摸恍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赤屋,長吁一口氣:“原來是場噩夢啊……” “哼立镶!你這毒婦竟也來了?” 一聲冷哼從身側響起类早,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谜慌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莺奔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡变泄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年令哟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妨蛹。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡屏富,死狀恐怖,靈堂內的尸體忽然破棺而出蛙卤,到底是詐尸還是另有隱情狠半,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布颤难,位于F島的核電站神年,受9級特大地震影響,放射性物質發(fā)生泄漏行嗤。R本人自食惡果不足惜已日,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栅屏。 院中可真熱鬧飘千,春花似錦堂鲜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霉旗,卻和暖如春痴奏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奖慌。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工抛虫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人简僧。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓建椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岛马。 傳聞我的和親對象是個殘疾皇子棉姐,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,193評論 2 126
  • 第一部分 打好基礎 Laying the Foundation 第一章 歡迎進入軟件構建的世界 Welcome t...
    白樺葉閱讀 4,631評論 0 17
  • -----轉載----- 1、問:你在測試中發(fā)現(xiàn)了一個bug啦逆,但是開發(fā)經理認為這不是一個bug伞矩,你應該怎樣解決? ...
    花開沉浮閱讀 7,385評論 4 88
  • 1****夏志、問:你在測試中發(fā)現(xiàn)了一個bug****乃坤,但是開發(fā)經理認為這不是一個bug****,你應該怎樣解決沟蔑?首先...
    一箭閱讀 9,073評論 1 205
  • There are three types of person when they are facing diff...
    MiniKay閱讀 315評論 0 0