本書是一本專注于過程的探討基于UML的軟件項目的質量保障的圖書,它簡明扼要地闡述了UML的歷史背景,UML定義,以及UML和實際的建模技術的相關性,通過一系列的對基于UML的CASE工具和開發(fā)過程的講座來加深讀者對采用UML進行直接和實際建模的理解。本書還特別地強調對要從事每個開發(fā)過程活動的角色的定義,重視系統(tǒng)開發(fā)中社會特征的重要性。本書適合于IT業(yè)的質量經理、項目經理、過程工程師、測試人員、系統(tǒng)設計師、開發(fā)人員、業(yè)務分析員、系統(tǒng)架構師、學術研究人員等人閱讀,也可作為大中院校的教材。前言質量是主觀判斷1本書探討在基于UML的軟件項目中,實施質量保障中的過程這方面的問題。過程是軟件質量保障的兩個主要領域之一,另一個是建模。鑒于基于UML的軟件項目的質量保障的,尤其是專注于過程這一方面的文獻缺乏的現狀,本書應運而生了。這是因為,盡管UML的文獻資料現在非常流行,但還是需要一些討論UML在項目中的應用的質量和實踐問題的圖書。雖然我們現在已經有了一些非常優(yōu)秀的論述軟件開發(fā)過程的文獻(其中包括由Jacobson等人創(chuàng)作的最為著名的《TheUnifiedProcess》,以及由IanGraham等人撰寫的《TheOPENProcessSpecification》),但是看起來還是缺乏單獨的針對質量做探討的圖書。另一方面,像Binder的《TestingObjectOrientedSoftware》這樣的作品,關注的是采用UML表示法進行的技術層面的測試內容。當然,我們不能責備上述提到的文獻缺少對質量方面問題的討論,因為這些作品并不是專門致力于討論質量的。這些讓人尊敬和受到廣泛歡迎的作品的關注焦點要么是開發(fā),要么是測試。而在您手中的這本書就填補了在UML領域對質量問題的關注空缺。好的質量包括了所有能夠滿足用戶需要的各個方面的內容。不過,“好”是一個主觀色彩非常濃厚的詞。對質量做出判定的參考點取決于時間、地點和形勢,而所有這些都隨時會發(fā)生變化!因此,能夠產生好質量的基本要素是:一個能夠滿足用戶不斷變化的需求的產品;一個能夠使創(chuàng)建、驗證、確認這樣一個產品成為可能的開發(fā)過程;一套能夠建立良好溝通的通用機制;對生產產品的開發(fā)過程的連續(xù)不斷的改進。當這些要素應用到軟件開發(fā)領域中時,這些質量上的需求就變成了生產的軟件產品必須能夠在規(guī)劃、擴展和變更等各方面滿足客戶的需求——主要是業(yè)務方面的。我們不僅需要能夠生產出這樣的軟件產品的開發(fā)過程,而且需要能夠對這些用來構建軟件產品的模型和過程做有效檢查和交叉查證。我們同樣也需要建立、遵循和查證所有的過程步驟,以期能夠建立一套可以生產高質量軟件產品的成熟過程體系。這些過程步驟必須以一種迭代式的、漸增的、充分的方式進行。過程步驟必須足夠靈活,以適應不同的開發(fā)環(huán)境和不同類型與規(guī)模大小的軟件項目。這些都是專門化的與過程質量相關的工作領域的內容,這些內容對于本書所探討的在項目中實施UML技術而言是必需的。這些質量方面的工作包括如何組織整個質量職能體系,還包括驗證和確認這些UML框圖所需的步驟,以及什么時候實施這樣的驗證,如何理解質量工作的結果數據,應該由誰來負責創(chuàng)建和確認UML框圖,如何建立質量控制(測試)策略。這些過程步驟將促成高質量的模型產生。通過對軟件模型實施質量檢查也能夠進一步提升質量,從而確保它們句法正確、語義一致和美學上和諧。如果希望了解對于UML框圖的模型質量的詳細分析和討論,我推薦讀者閱讀《ModelQualityAssuranceofUML-BasedProject》。本書分為6章,內容概述如下表所示。章說明1.質量競賽建立背景理論和有關質量方面的論點2.質量環(huán)境:質量職能管理質量管理,團隊組建,高質量團隊的社會學和心理學特性;過程的重要性3.質量過程體系架構過程組件由能夠組成一個質量軟件過程體系的活動、任務、交付品和角色構成4.實施質量軟件過程實踐中的質量過程、迭代、漸增和并行的軟件開發(fā)5.基于UML的項目估算和度量一些針對實際的基于UML的軟件項目的時間、預算和人員的估算建議6.軟件產品的質量控制針對質量控制和測試策略做詳盡的討論第1章質量競賽本章是有關質量保障的背景介紹。我們討論了在軟件開發(fā)背景條件下質量的不確定特性。而建模,尤其是采用UML技術的建模,作為一種能夠改進溝通和質量的手段,在分別是問題、解決方案和背景的三個彼此相關的建模空間中得以實施。我們將在技術(做什么)、方法(如何做)和社會學(誰來做)三個維度的背景條件下討論軟件過程。這以后我們會討論不同類型的檢查(語法方面、語義方面和美學方面),這些檢查是我們確認和驗證基于UML的模型的手段。我們還將討論高質量過程體系所必需的必要性、充分性和可塑性等內容的一些檢查。在本章中,我們也將討論質量職能的組織,以及如何應用到不同類型(包括開發(fā)、集成、工具包實現、外包、數據倉庫和教育類項目)和不同規(guī)模大?。ㄐ⌒?、中型和大型)的軟件項目中去。第2章質量環(huán)境:質量職能管理質量在軟件過程方面的內容包括建立和管理一個質量環(huán)境的管理職能。這是因為,質量并不只是驗證和確認生產出了什么東西,同時它也要求我們努力遵循一種生產模型和軟件的規(guī)程體系。這套規(guī)程包括與生產出高質量模型或軟件相關的所有軟件過程和相關步驟。本書的這一部分將全面考察質量職能機構的組織和執(zhí)行,其中將仔細強調基于UML的軟件開發(fā)過程方面的內容。換句話說,我們將討論在基于UML的軟件項目中,質量職能體系將“如何”得到組織和貫徹。至于人員方面的問題(“誰來做”),我們在本章的適當地方也會給予足夠的關注。第3章質量過程體系架構在本章中,我們將討論這樣一個軟件過程是由什么組成的,以及這樣的過程在基于UML的軟件項目中是如何改進質量的。這一章并沒有提出什么新的軟件過程,而是討論了一個一般意義上的軟件過程,我們將從技術、方法和社會學三個維度來討論一個開發(fā)過程的組成,以及它在各主要維度中的內容。開發(fā)過程的技術維度主要關注的是“做什么”的問題,方法維度考慮的是“如何做”的問題,社會學維度主要考慮整個過程中“誰來做”的問題。我們將采用普通工作日的例子來說明這些維度中的內容。這個通用過程會進一步地描述一些最常見的活動和任務,這些活動和任務在任何一個開發(fā)過程中都應該被提到。我們討論這些活動和任務及它們相關的角色和交付品的目的在于,希望能夠改進這樣一個開發(fā)過程的具體規(guī)程,從而提升基于UML的交付品的質量,最終提高軟件產品的質量。第4章實施質量軟件過程在本章中,我們將討論如何運轉一個實例軟件過程,這個實例涵蓋了在配置一個迭代、漸增、并行的(IIP)項目的計劃過程中會遇到的種種實際問題。我們將基于在前一章中討論的過程組件來分析。我們也會討論到一些跟蹤項目進展的實際問題,以及基于跟蹤到的情況來修改項目計劃的內容。與順序式的項目計劃相比,迭代的、漸增的項目計劃更容易處理各種變化情況。從軟件過程的可塑性出發(fā),我們也會討論如何建立和管理這樣一個可變化的項目計劃。我們還會應用軟件過程的術語來討論當“輪胎撞到路面”時會發(fā)生什么事情。第5章基于UML的項目估算和度量在本章中,我們將討論的重要問題是在基于UML的軟件項目中如何實施估算和度量。首先我們會論述實施好的項目估算的必要性,以及一個好的項目度量體系是如何幫助實現好的項目估算的,這一章我們會深入探討這些度量指標和估算對于改進項目中的模型和過程質量的重要意義。有關UML成品和框圖的大小及復雜性在內的技術方面的度量指標也會被談及。我們會以一個采用UML的項目為例來討論如何做項目估算,通過這個例子我們希望能夠讓大家了解到,在實際的項目中是如何應用度量指標并發(fā)揮其關鍵作用的。第6章軟件產品的質量控制本章我們將詳細討論在質量生命周期中,如何進行質量控制和測試。我們在上一章中討論過程質量的時候,已經把質量控制(測試)作為一個主要的過程組件了。它會幫助我們在創(chuàng)建模型時和隨后的開發(fā)過程中驗證和確認我們的努力成果。好的質量控制本身就是從負面來看問題,因為它的目標在于打破系統(tǒng)中的所有事物,包括邏輯組成、執(zhí)行過程和性能。因此,盡管質量控制是質量保障的不可分割的一部分,然而它并不是和質量保障同步進行的。在本書的這個獨立章節(jié)中,我們已經對這種控制和保障的分離現象給予了應有的重視。光盤和Web支持本書附帶的只讀光盤中包含了各章內容的一些詳細資料、框圖和一套模板文件(包括成品、項目計劃等),這些模板可以在具體的項目中做個性化定制。光盤中還包括了一些為改進質量而推薦的度量指標(例如實例的數量,以及在類的創(chuàng)建中所花費的工作量等)。經過工具廠商的許可,光盤中還包括了一些和質量過程有關的過程工具的評估版軟件。讀者指南現在有不少專門討論UML和討論軟件過程的圖書。這些書涵蓋的內容既包括學術研究,也包括實際應用。本書試圖將質量過程應用到基于UML的軟件項目中。由于本書的關注點在于軟件過程,因此我們期望讀者已經熟悉了UML和基于UML的建模技術,本書不打算討論UML的建模技術,請參考相關資料。不過,任何一名負責質量保障的讀者都會發(fā)現本書的內容是相對獨立的,讀完本書后,應該可以拓展對UML的理解。下面是一個圖書分類的交叉引用表,通過這個表,讀者應該可以了解自己對每一章內容感興趣的程度。興趣強度值是通過星號“*”的個數表示的(三顆星代表最強烈)。章質量經理項目經理測試人員過程工程師系統(tǒng)設計師開發(fā)人員業(yè)務分析員系統(tǒng)架構師學術研究人員主管1.質量競賽**********2.質量環(huán)境:質量管理職能**********3.質量過程體系架構**********4.實施軟件質量過程**********5.項目估算和基于UML的項目度量指標*******6.軟件產品的質量控制***********語義說明我非常信任中性詞匯,因此我將盡可能地使用人這樣的中性詞。不過,為了便于閱讀,我也會使用他。除非特別聲明,程序員及質量經理這樣的術語都是指充當特定角色的人。這些詞指的并不是如你我這樣的真實人物,因此他們完全可以在很短的時間內從程序員的角色跳到質量經理或者主管之類的角色。讀者也應該意識到,人們可以同時充當一個以上的角色。例如,一個業(yè)務分析員也可能是一個兼職的學術或者研究人員。我們一詞貫穿全書,指的都是讀者和作者,也就是你和我。偶爾,我們也會指代一般意義上的信息技術(IT)人員全體,當然作者也是其中的一員。我們還可能指代作者本人所工作的團隊。因此,盡管這是一本由一個作者寫成的書,你會發(fā)現我們指的既可能是作者自己,也可能是IT人員全體。正如你和我從本書中看到的情況一樣,現實的話語往往不能按靜態(tài)的方式來理解。和研討班的內容對應本書表述的UML和質量實踐方面的內容在很多的研討和會議上非常熱門。在基于本書內容所做的多次演講的講稿中,特別值得一提的是,它們在加拿大多倫多舉行的UML21大會上被接納作為教程,另外它們在印度孟買、班加羅爾和德里舉行的為期兩天的系列2研討會上被作為研究資料。在本書寫作時,還有不少額外的研討班也被安排進了日程。下面的表格列出了基于本書內容而做的兩天研討班中的一天的內容大綱。針對學生或者學術工作者,本書的每一章內容都對應一個三小時的主題介紹,兩天討論班第一天的內容主要集中在采用案例分析的方式來建立基于UML的模型。本書各章和兩天研討班中的一天內容的對應時間段討論和介紹的主題內容對應的章節(jié)說明9:-1:3質量方面的壓力;在UML項目中的意義1,2概述質量不確定的特性;提出解決質量問題的必要性和方法11:-12:3質量管理;質量過程體系架構3,4如何組建質量職能部門;質量管理和質量過程1:3-3:過程的運轉;項目估算和度量;UML成品的質量控制(測試)5,6關于數字的實踐研討。基于UML的軟件項目的人員、時間和預算3:3-5:案例分析光盤案例討論;在實踐中運行檢查列表