軟件工程講義軟件工程電子書_第1頁
軟件工程講義軟件工程電子書_第2頁
軟件工程講義軟件工程電子書_第3頁
軟件工程講義軟件工程電子書_第4頁
軟件工程講義軟件工程電子書_第5頁
已閱讀5頁,還剩398頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

軟件工程講義軟件工程電子書第1頁/共403頁2/3601.課程學(xué)時

總學(xué)時:48學(xué)時;其中講課:32學(xué)時;上機(jī):16學(xué)時2.學(xué)習(xí)成績考核方法平時成績(包括考勤和作業(yè))30%,上機(jī)10%,期末考試60%。第2頁/共403頁3/360Chapter1概述1.1軟件工程的產(chǎn)生1.2軟件工程學(xué)1.3軟件生命周期1.4軟件開發(fā)模型1.5案例-在線寵物商店第3頁/共403頁4/3601.1.1軟件工程發(fā)展史軟件是指計算機(jī)程序及其有關(guān)的數(shù)據(jù)和文檔。軟件生產(chǎn)的各個階段必需完成的有關(guān)計算機(jī)程序的功能、設(shè)計和使用的文字或圖形資料,這些資料稱為“文檔”。1.程序設(shè)計階段2.軟件=程序+文檔階段3.軟件工程階段4.第4代技術(shù)階段1.1軟件工程的產(chǎn)生第4頁/共403頁5/3601.1軟件工程的產(chǎn)生1.1.2軟件危機(jī)爆發(fā)時間1967年NATO的研究組首次提出1968年NATO軟件工程會議首次提出軟件工程概念1968-2011,近40年“危機(jī)”一詞軟件危機(jī)依然存在Crisis!第5頁/共403頁6/3601.1軟件工程的產(chǎn)生軟件危機(jī)面對的問題藝術(shù)vs.標(biāo)準(zhǔn)化錯誤的發(fā)現(xiàn)軟件需求獲取軟件支持和維護(hù)開發(fā)速度vs.市場需求開發(fā)周期過長、開發(fā)成本過高研發(fā)風(fēng)險軟件Trouble軟件開發(fā)中的復(fù)雜的協(xié)作(人員,問題,過程)不同角色的軟件神話(管理者,用戶,開發(fā)者,大眾)第6頁/共403頁7/3601.1軟件工程的產(chǎn)生采用什么方法緩解危機(jī)硬件?建筑學(xué)?拍電影?……軟件工程!第7頁/共403頁8/3601.2軟件工程學(xué)1.2.1什么是軟件定義Program+DataStructure+Documents

──WangJiahua,軟件工程,pp.1軟件的性質(zhì)復(fù)雜性難以描述性不可見性變化性風(fēng)險性易于副本的大批量生產(chǎn)強(qiáng)合作性第8頁/共403頁9/3601.2軟件工程學(xué)1.2.1什么是軟件工程FritzBauer:“建立和應(yīng)用完善的工程原理以便經(jīng)濟(jì)地得到在真實機(jī)器上可靠和有效運(yùn)行的軟件重原理、輕技術(shù)、無度量IEEE:(1)應(yīng)用系統(tǒng)的有規(guī)則的定量的方法開發(fā)、使用和維護(hù)軟件;即應(yīng)用工程于軟件。(2)研究(1)中的方法粗糙第9頁/共403頁10/3601.2軟件工程學(xué)Definition軟件工程是軟件開發(fā)、運(yùn)行、維護(hù)和引退的系統(tǒng)方法。因而軟件工程是指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。軟件工程采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件。軟件工程的目標(biāo)是實現(xiàn)軟件的優(yōu)質(zhì)高產(chǎn),軟件工程的目的是在規(guī)定的時間、規(guī)定的開發(fā)費(fèi)用內(nèi),開發(fā)出滿足用戶需求的、高質(zhì)量的軟件產(chǎn)品。第10頁/共403頁11/3601.2軟件工程學(xué)1.2.3軟件工程學(xué)的內(nèi)容軟件開發(fā)技術(shù)和軟件工程管理。軟件開發(fā)技術(shù)包含軟件工程方法學(xué)、軟件工具和軟件工程環(huán)境。軟件工程管理學(xué)包含軟件工程經(jīng)濟(jì)學(xué)和軟件管理學(xué)。1.軟件工程方法學(xué)三個要素:方法,工具,過程。2.軟件工具第11頁/共403頁12/3601.2軟件工程學(xué)3.軟件工程環(huán)境:是方法和工具的結(jié)合。

“軟件開發(fā)環(huán)境是相關(guān)的一組軟件工具集合,它支持一定的軟件開發(fā)方法或按照一定的軟件開發(fā)模型組織而成”。計算機(jī)輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)是一組工具和方法的集合,可以輔助軟件生命周期各階段進(jìn)行軟件開發(fā)活動。4.軟件工程管理目的是為了能按預(yù)定的時間和費(fèi)用,成功地生產(chǎn)軟件產(chǎn)品。內(nèi)容:費(fèi)用管理、人員組織、工程計劃管理、軟件配置管理。軟件工程各階段所產(chǎn)生的全部文檔和軟件本身構(gòu)成軟件配置。第12頁/共403頁13/3601.2軟件工程學(xué)1.2.4軟件過程軟件過程的定義ISO9000把軟件過程定義為:“把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動”。軟件開發(fā)過程,是把用戶要求轉(zhuǎn)化為軟件需求,把軟件需求轉(zhuǎn)化為設(shè)計,用代碼實現(xiàn)設(shè)計并對代碼進(jìn)行測試,完成文檔編制并確認(rèn)軟件可以投入運(yùn)行使用的過程。第13頁/共403頁14/3601.2軟件工程學(xué)為什么要引入軟件過程?(1/2)軟件工作的范圍軟件的開發(fā)風(fēng)險(規(guī)模、周期、復(fù)雜度)涉及整個軟件生存周期擴(kuò)展到少,可預(yù)知、可控多,不易預(yù)知,不易控制發(fā)展到只考慮

編寫程序第14頁/共403頁15/3601.2軟件工程學(xué)為什么要引入軟件過程?(2/2)軟件開發(fā)的角色軟件標(biāo)準(zhǔn)團(tuán)隊中更多的角色擴(kuò)展到軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化擴(kuò)展到程序員第15頁/共403頁16/3601.2軟件工程學(xué)1.2.5軟件工程基本原理用分階段的生命周期計劃進(jìn)行嚴(yán)格的管理;堅持進(jìn)行階段評審;實行嚴(yán)格的產(chǎn)品控制;采用現(xiàn)代程序設(shè)計技術(shù);軟件工程結(jié)果應(yīng)能清楚地審查;開發(fā)小組的人員應(yīng)該少而精;承認(rèn)不斷改進(jìn)軟件工程實踐的必要性。第16頁/共403頁17/3601.3軟件生命周期1.軟件生命周期定義從設(shè)計軟件產(chǎn)品開始到產(chǎn)品不能使用為止的時間周期。軟件生命周期中,軟件開發(fā)與維護(hù)時的費(fèi)用越低,軟件的使用壽命越長,產(chǎn)生的價值就越大,這就是掌握軟件工程學(xué)的目的。2.軟件生命周期劃分的原則各階段的任務(wù)彼此間盡可能相對獨立。同一階段的工作任務(wù)性質(zhì)盡可能相同。第17頁/共403頁18/3601.3軟件生命周期3.軟件生命周期各階段的任務(wù)由軟件計劃、軟件開發(fā)和軟件運(yùn)行維護(hù)三個時期組成。軟件計劃時期:問題定義、可行性研究、需求分析三階段。軟件開發(fā)時期:軟件概要設(shè)計、軟件詳細(xì)設(shè)計、軟件實現(xiàn)、綜合測試等階段。軟件運(yùn)行過程中需要不斷地進(jìn)行維護(hù),使軟件持久滿足用戶需要。第18頁/共403頁19/3601.4軟件開發(fā)模型為什么需要模型?模型幫助我們解釋事物

如何工作模型能夠拓寬我們的視野

(抽象)軟件過程模型一個過程模型是一個過程的抽象表示過程模型幫助我們更好地理解軟件開發(fā)第19頁/共403頁20/3603.1過程模型概念(2/5)第20頁/共403頁21/3601.4.1瀑布模型(WaterfallModel)1.4軟件開發(fā)模型第21頁/共403頁22/360

1.4.2快速原型模型快速原型模型(RapidPrototypeModel)是快速開發(fā)一個可以運(yùn)行的原型系統(tǒng),通常有三種類型:漸增式的原型:也稱增量模型。用于驗證軟件需求的原型。用于驗證設(shè)計方案的原型。1.4軟件開發(fā)模型第22頁/共403頁23/3601.4.3增量模型增量方式包括:增量開發(fā)增量提交1.4軟件開發(fā)模型第23頁/共403頁24/3601.4.4噴泉模型適用于面向?qū)ο蠓椒?。主張分析和設(shè)計過程的重疊、不嚴(yán)格區(qū)分。模塊集成過程:反復(fù)經(jīng)過分析、設(shè)計、測試、集成,再分析、設(shè)計、測試、集成。

1.4軟件開發(fā)模型第24頁/共403頁25/3601.4.5螺旋模型

1.4軟件開發(fā)模型第25頁/共403頁26/360

1.4.6RUP(統(tǒng)一過程)

RUP(RationalUnifiedProcess)使用UML,采用用例驅(qū)動和架構(gòu)優(yōu)先的策略,采用迭代增量建造方法。通常,結(jié)構(gòu)化方法可使用瀑布模型、增量模型和螺旋模型進(jìn)行開發(fā);面向數(shù)據(jù)結(jié)構(gòu)方法可使用瀑布模型、增量模型進(jìn)行開發(fā);面向?qū)ο蠓椒刹捎每焖僭?、噴泉模型、軟件重用開發(fā)模型(11章)和統(tǒng)一過程RUP進(jìn)行開發(fā)。1.4軟件開發(fā)模型第26頁/共403頁27/360案例-在線寵物商店(1/3)寵物大戰(zhàn)SUNVs.Microsoft主要功能:列舉寵物商品類別和提供搜索功能顯示寵物列表和寵物具體信息提供用戶登錄驗證、注冊新用

戶和維護(hù)用戶信息等功能管理購物車實現(xiàn)結(jié)帳處理查詢訂貨情況統(tǒng)計銷售記錄第27頁/共403頁28/360案例-在線寵物商店(2/3)問題(1/2):從何開始?采用什么技術(shù)?需要多少時間?需要多少人?哪些角色?能否并行、協(xié)作地開發(fā)?人力應(yīng)該如何高效率的投入?開發(fā)計劃?直接編碼?需求?設(shè)計方案和模型?人機(jī)交互的界面?功能優(yōu)先級?

第28頁/共403頁29/360案例-在線寵物商店(3/3)問題(2/2):開發(fā)風(fēng)險?可擴(kuò)展性?復(fù)用?設(shè)計模式?編碼規(guī)范?需求變更?測試?開發(fā)過程?軟件度量?最后期限?第29頁/共403頁30/360Chapter2軟件計劃2.1軟件問題定義及可行性研究2.2需求分析的任務(wù)2.3需求分析步驟2.4實體-關(guān)系圖2.5數(shù)據(jù)流圖2.6狀態(tài)轉(zhuǎn)換圖2.7數(shù)據(jù)字典2.8需求分析的其他圖形工具2.9軟件計劃階段文檔第30頁/共403頁31/3602.1軟件問題定義及可行性研究2.1.1軟件問題定義What問題定義是軟件開發(fā)過程當(dāng)中的一個定義要解決的問題并確定系統(tǒng)范圍的活動。Why形成一個早期判斷,達(dá)成一個最初共識When 項目日程表的最前端占整個軟件開發(fā)時間中的比例很小第31頁/共403頁32/3602.1軟件問題定義及可行性研究Who系統(tǒng)分析師、出資方領(lǐng)導(dǎo)、出資方技術(shù)人員、開發(fā)方領(lǐng)導(dǎo)和項目經(jīng)理Where客戶現(xiàn)場 第32頁/共403頁33/3602.1軟件問題定義及可行性研究How第33頁/共403頁34/3602.1軟件問題定義及可行性研究2.1.2可行性研究What可行性研究是以相對短的時間和相對低的成本來確定給定的問題在其約束條件內(nèi)是否有解、有幾種解以及哪個是最佳解。Why必須要先確立滿足約束條件的方案是否存在、是否可行、是否最優(yōu),然后再在最優(yōu)方案的基礎(chǔ)上進(jìn)行開發(fā)第34頁/共403頁35/3602.1軟件問題定義及可行性研究When項目的早期階段占整個軟件開發(fā)時間中的比例較小,但比問題定義活動所消耗的時間長Who系統(tǒng)分析師、出資方領(lǐng)導(dǎo)、出資方技術(shù)人員、用戶代表、開發(fā)方領(lǐng)導(dǎo)、項目經(jīng)理、架構(gòu)設(shè)計師、領(lǐng)域?qū)<?、財?wù)人員、市場人員、軟件質(zhì)量保證(SQA,SoftwareQualityAssure)人員等Where客戶現(xiàn)場。第35頁/共403頁36/3602.1軟件問題定義及可行性研究HowHow(1/2)第36頁/共403頁37/3602.1軟件問題定義及可行性研究2.1.3制定項目開發(fā)計劃完成軟件問題定義和可行性研究之后,可以制定初步的項目開發(fā)計劃。制定工程計劃進(jìn)度有兩種方法:Gantt圖法和工程網(wǎng)絡(luò)技術(shù),詳細(xì)見9.3節(jié)。第37頁/共403頁38/3602.2需求分析的任務(wù)What(1/3)需求:主要是在產(chǎn)品構(gòu)建之前確定的系統(tǒng)必須符合的條件或具備的功能,它們是關(guān)于系統(tǒng)將要完成什么工作的一段描述語句,它們必須經(jīng)過所有相關(guān)人員的認(rèn)可,其目的是徹底地解決客戶的問題。需求文檔一組需求的集合用戶需求文檔、系統(tǒng)需求文檔和軟件規(guī)約文檔第38頁/共403頁39/3602.2需求分析的任務(wù)功能性需求和非功能性需求功能性需求:描述了系統(tǒng)應(yīng)該做什么,即具備的功能或服務(wù)。(輸入、輸出和計算等)非功能性需求:描述了系統(tǒng)必須遵守的約束條件。(響應(yīng)時間、吞吐量、可靠性、可移植性、可擴(kuò)展性、易用性、安全性、資源要求、可復(fù)用性、技術(shù)要求、文化和政策需求、法律需求、道德要求、隱私要求,等等)描述需求的標(biāo)準(zhǔn)是完整的、正確的、必要的、無歧義的、可行的、可驗證的以及被設(shè)置了優(yōu)先級別的。第39頁/共403頁40/3602.3需求分析步驟Why需求不一致、模糊、矛盾需求變更客戶忽略領(lǐng)域常識/知識/術(shù)語客戶集中于現(xiàn)有系統(tǒng)的不足之處,而忽略了系統(tǒng)要實現(xiàn)的關(guān)鍵功能零碎、無組織、不明確、表達(dá)不清不分輕重緩急第40頁/共403頁41/3602.3需求分析步驟When項目的早期階段?貫穿于整個軟件開發(fā)過程的需求活動第41頁/共403頁42/3602.3需求分析步驟Who系統(tǒng)分析師、需求闡釋者、客戶代表、用戶代表、開發(fā)方領(lǐng)導(dǎo)、項目經(jīng)理、架構(gòu)設(shè)計師、領(lǐng)域?qū)<?、財?wù)人員、市場人員、軟件質(zhì)量保證(SQA,SoftwareQualityAssure)人員、程序員、測試人員、部署人員、技術(shù)文檔編寫人員、培訓(xùn)人員等。Where調(diào)研時,在客戶現(xiàn)場編纂軟件需求規(guī)約文檔時,可以在開發(fā)單位復(fù)審相關(guān)的需求文檔時,根據(jù)需要來安排第42頁/共403頁43/3602.3需求分析步驟How第43頁/共403頁44/3602.4實體-關(guān)系圖E-R圖實體聯(lián)系圖,用以表示應(yīng)用領(lǐng)域中的實體及其相互關(guān)系通過E-R圖可以很快轉(zhuǎn)成關(guān)系數(shù)據(jù)庫概念實體:一切事物,如操作員、顧客、寵物等屬性:客觀實體和聯(lián)系實體所擁有的性質(zhì)關(guān)系:事物間關(guān)系第44頁/共403頁45/360學(xué)號姓名性別課號課名學(xué)時學(xué)生注冊注冊日期班級班號專業(yè)人數(shù)學(xué)習(xí)課程學(xué)期成績教授教師開課日期結(jié)束日期教師號姓名職稱mnn1m1n2.4實體-關(guān)系圖第45頁/共403頁46/3602.5數(shù)據(jù)流圖什么是數(shù)據(jù)流程圖是一個分層的概念模型,分為三個層次:總體圖、零級圖、細(xì)節(jié)圖,分別描述系統(tǒng)的不同特征。4種符號:方,圓,開口矩(平行線),箭頭

3個層次:總體圖,零級圖,細(xì)節(jié)圖優(yōu)點容易理解,容易在開發(fā)方和用戶方之間進(jìn)行交流,以及在開發(fā)組織內(nèi)部交流第46頁/共403頁47/3602.5數(shù)據(jù)流圖表示符號外部實體數(shù)據(jù)處理數(shù)據(jù)存儲數(shù)據(jù)流第47頁/共403頁48/3602、數(shù)據(jù)流圖的附加符號

*表示數(shù)據(jù)流之間是“與”關(guān)系(同時存在)+表示數(shù)據(jù)流之間是“或”關(guān)系⊕表示只能從幾個數(shù)據(jù)流中選一個(互斥關(guān)系)第48頁/共403頁49/3602.5數(shù)據(jù)流圖分層表示的數(shù)據(jù)處理總體圖:描述了系統(tǒng)和周圍環(huán)境的關(guān)系零級圖:表示一個系統(tǒng)的主要功能或者是一個大型系統(tǒng)的主要組成子系統(tǒng)細(xì)節(jié)圖:表示一個復(fù)雜的處理

的詳細(xì)內(nèi)部表示第49頁/共403頁50/3602.5數(shù)據(jù)流圖分層表示的數(shù)據(jù)處理總體圖第50頁/共403頁51/3602.5數(shù)據(jù)流圖分層表示的數(shù)據(jù)處理零級圖第51頁/共403頁52/3602.5數(shù)據(jù)流圖分層表示的數(shù)據(jù)處理細(xì)節(jié)圖第52頁/共403頁53/3602.5數(shù)據(jù)流圖數(shù)據(jù)流程圖繪制的有關(guān)規(guī)定(1/2)外部實體只能出現(xiàn)在總體圖和零級圖中數(shù)據(jù)存儲只能出現(xiàn)在零級圖和細(xì)節(jié)圖中數(shù)據(jù)存儲在分層的DFD圖中只能出現(xiàn)一次數(shù)據(jù)存儲必須既有讀操作,也有寫操作數(shù)據(jù)流要有名字?jǐn)?shù)據(jù)流必須開始或結(jié)束在處理圓圈上數(shù)據(jù)流不表示有關(guān)的控制邏輯第53頁/共403頁54/3602.5數(shù)據(jù)流圖數(shù)據(jù)流程圖繪制的有關(guān)規(guī)定(2/2)每個處理要有編號,但不表示先后順序每個圖中處理的數(shù)不應(yīng)超過9個每個處理應(yīng)該既有輸入的數(shù)據(jù)流,也有輸出的數(shù)據(jù)流子圖與父圖中對應(yīng)的處理必須執(zhí)行相同的功能,并且子圖與對應(yīng)的處理流入和流出的數(shù)據(jù)流相同輸入/輸出命令不能作為DFD圖中的處理第54頁/共403頁55/3602.5數(shù)據(jù)流圖規(guī)定舉例1第55頁/共403頁56/3602.5數(shù)據(jù)流圖規(guī)定舉例2第56頁/共403頁57/360數(shù)據(jù)流程圖(DFD)規(guī)定舉例3規(guī)定舉例3第57頁/共403頁58/3602.5數(shù)據(jù)流圖規(guī)定舉例4①E1->DS1數(shù)據(jù)流未與處理相連②DS1->DS2數(shù)據(jù)流無處理③處理P1無輸出數(shù)據(jù)流④處理P2無輸入數(shù)據(jù)流⑤數(shù)據(jù)存儲DS2無讀操作⑥所有數(shù)據(jù)流沒有名字2第58頁/共403頁59/3602.5數(shù)據(jù)流圖規(guī)定舉例5DS1無寫操作第59頁/共403頁60/3602.5數(shù)據(jù)流圖例子第60頁/共403頁61/360DataFlowDiagramsExample第61頁/共403頁62/3602.5數(shù)據(jù)流圖例子第62頁/共403頁63/3602.6狀態(tài)轉(zhuǎn)換圖表示符號狀態(tài):是可以被觀察到的系統(tǒng)的行為模式圓圈或矩形表示,并在圓圈或矩形中標(biāo)明狀態(tài)的名字變遷表示一種狀態(tài)向另一種狀態(tài)的遷移帶箭頭的線來表示,在線上要標(biāo)注出事件的名稱,需要時也可以和把DFD圖中相關(guān)的處理標(biāo)注進(jìn)來第63頁/共403頁64/3602.6狀態(tài)轉(zhuǎn)換圖例子1:進(jìn)程第64頁/共403頁65/3602.7數(shù)據(jù)字典數(shù)據(jù)流程圖的問題數(shù)據(jù)流程圖描述了一個系統(tǒng)的主要處理邏輯,所存取的數(shù)據(jù)文件或數(shù)據(jù)庫及其輸入和輸出的關(guān)系。但不能反映系統(tǒng)的具體細(xì)節(jié)。什么是數(shù)據(jù)字典配合數(shù)據(jù)流程圖,反映具體細(xì)節(jié)。二者結(jié)合,精確描述。作用:統(tǒng)一定義,便于通訊,便于共享第65頁/共403頁66/3602.7數(shù)據(jù)字典數(shù)據(jù)字典的內(nèi)容數(shù)據(jù)元素最小數(shù)據(jù)單元數(shù)據(jù)流基本數(shù)據(jù)單元,有關(guān)的數(shù)據(jù)元素所組成的動態(tài)的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)存儲數(shù)據(jù)結(jié)構(gòu)的載體,靜態(tài)的數(shù)據(jù)結(jié)構(gòu)處理具體處理邏輯外部項數(shù)據(jù)源或數(shù)據(jù)終點等外部實體,表示數(shù)據(jù)的來源和去向第66頁/共403頁67/3602.7.2數(shù)據(jù)字典使用的符號=表示“等價于”或“定義為”+連接[],|表示“或”,用“|”分隔,表示可任選其中某一項{}表示“重復(fù)”

()表示“可選”,用“,”號隔開1{A}表示A的內(nèi)容至少要出現(xiàn)1次。{B}表示B的內(nèi)容允許重復(fù)0至任意次。如:成績單=學(xué)號+姓名+1{課程名+成績}3也可寫為成績單=學(xué)號+姓名+{課程名+成績}2.7數(shù)據(jù)字典第67頁/共403頁68/3602.7數(shù)據(jù)字典數(shù)據(jù)元素第68頁/共403頁69/3602.7數(shù)據(jù)字典數(shù)據(jù)流第69頁/共403頁70/3602.7數(shù)據(jù)字典數(shù)據(jù)存儲第70頁/共403頁71/360處理第71頁/共403頁72/3602.8.1層次圖層次圖是一系列多層次的樹形結(jié)構(gòu)矩形框,用來描述數(shù)據(jù)的層次結(jié)構(gòu),也可描述程序結(jié)構(gòu)。

2.8需求分析的其他圖形工具第72頁/共403頁73/3602.8.2Warnier圖

(Warnierdiagram)表示數(shù)據(jù)層次結(jié)構(gòu)(Warnier-Orr圖)可表達(dá)數(shù)據(jù)結(jié)構(gòu)也可表達(dá)程序結(jié)構(gòu)Warnier圖使用的符號:(1)花括號{表示屬于數(shù)據(jù)結(jié)構(gòu)的同一層次。(2)異或符號⊕,符號的上、下方的兩個名字代表的數(shù)據(jù)只能出現(xiàn)一個。

(3)圓括號(),數(shù)據(jù)重復(fù)出現(xiàn)的次數(shù)。

2.8需求分析的其他圖形工具第73頁/共403頁74/3602.8.3IPO圖

輸入/處理/輸出(InputProcessOutput)圖的簡稱。【例2.10】招聘考試成績管理系統(tǒng)IPO圖。2.8需求分析的其他圖形工具第74頁/共403頁75/3602.9.1

軟件計劃階段文檔的編寫步驟(1)編寫軟件問題定義文檔。(2)書寫可行性研究報告。(3)編寫軟件需求說明書。(4)修改、完善項目開發(fā)計劃。(5)制定初步的系統(tǒng)測試的計劃,作為今后軟件確認(rèn)和驗收的依據(jù)。(6)編寫初步的用戶手冊。(7)編寫數(shù)據(jù)要求說明書。2.9軟件計劃階段文檔第75頁/共403頁76/360Chapter3結(jié)構(gòu)化設(shè)計3.1軟件設(shè)計步驟3.2軟件結(jié)構(gòu)設(shè)計3.3軟件結(jié)構(gòu)設(shè)計的圖形工具3.4面向數(shù)據(jù)流的設(shè)計方法3.5過程設(shè)計工具3.6系統(tǒng)人機(jī)界面的設(shè)計3.7數(shù)據(jù)代碼設(shè)計3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法3.9軟件設(shè)計文檔第76頁/共403頁77/3603.1軟件設(shè)計步驟What設(shè)計:是在系統(tǒng)的約束條件下(如預(yù)算、時間、人力資源、用戶軟、硬件環(huán)境和用戶對系統(tǒng)的操作能力等),為了實現(xiàn)系統(tǒng)的功能性需求和非功能性需求,而找到并描述的一種遵循高質(zhì)量的通用原則的方法,其交付文檔能夠指導(dǎo)開發(fā)人員實現(xiàn)系統(tǒng)。第77頁/共403頁78/3603.1軟件設(shè)計步驟總體設(shè)計任務(wù)是根據(jù)軟件需求規(guī)約文檔,確定一個合理的軟件體系結(jié)構(gòu)。這個體系結(jié)構(gòu)包括合理地劃分組成系統(tǒng)的模塊、模塊間的調(diào)用關(guān)系以及模塊間的接口關(guān)系。軟件體系結(jié)構(gòu)還從總體方面決定了系統(tǒng)的可擴(kuò)充性、可維護(hù)性,以及系統(tǒng)的性能等。總體設(shè)計的設(shè)計粒度較大,有時也被稱為概要設(shè)計、架構(gòu)設(shè)計。第78頁/共403頁79/3603.1軟件設(shè)計步驟詳細(xì)設(shè)計詳細(xì)設(shè)計地任務(wù)是在總體設(shè)計的基礎(chǔ)上進(jìn)一步確定如何實現(xiàn)目標(biāo)系統(tǒng),包括系統(tǒng)的數(shù)據(jù)對象的設(shè)計、人機(jī)接口的設(shè)計以及模塊邏輯的詳細(xì)設(shè)計。設(shè)計部件的粒度系統(tǒng)、子系統(tǒng)、框架、構(gòu)件、組件、模塊、類、方法等第79頁/共403頁80/3603.1軟件設(shè)計步驟Why軟件架構(gòu)是軟件系統(tǒng)的核心應(yīng)對復(fù)雜多變的情況,同時保持完整性應(yīng)對系統(tǒng)在擴(kuò)展功能當(dāng)中出現(xiàn)的問題大規(guī)模復(fù)用的有效基礎(chǔ)項目管理的基礎(chǔ)第80頁/共403頁81/3603.1軟件設(shè)計步驟When項目的中、早期階段?工作量早期中期后期項目時間大小貫穿于整個軟件開發(fā)過程的設(shè)計活動第81頁/共403頁82/3603.1軟件設(shè)計步驟Who主要包括架構(gòu)設(shè)計師、軟件設(shè)計員、復(fù)用工程師、設(shè)計復(fù)審員、項目經(jīng)理、財務(wù)人員、軟件質(zhì)量保證(SQA,SoftwareQualityAssure)人員和需求變更者等Where建議在軟件企業(yè)內(nèi)部進(jìn)行設(shè)計第82頁/共403頁83/3603.1軟件設(shè)計步驟How第83頁/共403頁84/3603.2.1軟件結(jié)構(gòu)設(shè)計的基本原理軟件的模塊化、模塊獨立性、抽象和逐步求精、信息隱蔽和局部化等。1.模塊化模塊是一個獨立命名的,擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。模塊化設(shè)計可以簡化軟件的設(shè)計和實現(xiàn),提高軟件的可理解性和可測試性,并使軟件更容易得到維護(hù)。

3.2軟件結(jié)構(gòu)設(shè)計第84頁/共403頁85/3602.抽象化在解決復(fù)雜的具體問題時,人們往往先忽略其細(xì)節(jié)和非本質(zhì)的方面,而集中注意力去分析問題的本質(zhì)和主要方面,搞清所要解決的問題的本質(zhì)所在;同時人們在總結(jié)認(rèn)識和實驗規(guī)律時,也往往突出各類問題的共性,找出各種客觀事物、狀態(tài)和過程間的聯(lián)系和相似性,加以概括和提取,即抽象。

3.2軟件結(jié)構(gòu)設(shè)計第85頁/共403頁86/3603.信息隱蔽信息隱藏是指在設(shè)計和確定模塊時,應(yīng)使一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說是不可訪問的。信息局部化是指將一些關(guān)系密切的成份,設(shè)計時放得彼此靠近。

3.2軟件結(jié)構(gòu)設(shè)計第86頁/共403頁87/3603.2.2模塊化

模塊化(Modularization)是把系統(tǒng)分割成能完成獨立功能的模塊。

1.模塊化可產(chǎn)生的效果減少復(fù)雜性提高軟件可靠性提高可維護(hù)性有助于軟件工程的組織管理有助于信息隱蔽3.2軟件結(jié)構(gòu)設(shè)計第87頁/共403頁88/3602.模塊分割方法①橫向分割根據(jù)輸入輸出等功能不同來分割模塊。②縱向分割根據(jù)系統(tǒng)對信息處理過程中不同的階段來分割③模塊分割順序先確定中心控制模塊,由控制模塊指示從屬模塊,逐次進(jìn)行分解。

3.2軟件結(jié)構(gòu)設(shè)計第88頁/共403頁89/3603.2.3模塊獨立性1.耦合度:模塊同模塊的聯(lián)系稱為塊間的聯(lián)系(模塊的耦合度)2.內(nèi)聚度:一個模塊內(nèi)部各成份的聯(lián)系稱為塊內(nèi)的聯(lián)系(模塊的內(nèi)聚度)3.2軟件結(jié)構(gòu)設(shè)計第89頁/共403頁90/360耦合度按從強(qiáng)到弱的順序可分為幾種類型:

(1)內(nèi)容耦合:當(dāng)一個模塊直接修改或操作另一個模塊的數(shù)據(jù)或者直接轉(zhuǎn)入另一個模塊時,就發(fā)生了內(nèi)容耦合(2)公共耦合:兩個以上的模塊共同引用一個全局?jǐn)?shù)據(jù)項(3)控制耦合:一個模塊在界面上傳遞一個信號(如開關(guān)值、標(biāo)志量等)控制另一個模塊,接收信號的模塊的動作根據(jù)信號值進(jìn)行調(diào)整,稱為控制耦合。

3.2軟件結(jié)構(gòu)設(shè)計第90頁/共403頁91/360(4)數(shù)據(jù)耦合:指兩個模塊彼此交換數(shù)據(jù)(5)獨立耦合:模塊間沒有信息傳遞時,屬于非直接耦合耦合性與模塊屬性的關(guān)系

對修改的敏感性可重用性

可修改性

可理解性

內(nèi)容耦合很強(qiáng)很差很差很差公共耦合強(qiáng)很差中很差控制耦合一般差差差數(shù)據(jù)耦合不一定好好好3.2軟件結(jié)構(gòu)設(shè)計第91頁/共403頁92/360內(nèi)聚度按強(qiáng)度從低到高有以下幾種類型:(1)偶然內(nèi)聚:模塊內(nèi)的各個任務(wù)沒有什么有意義的聯(lián)系,它們之所以能構(gòu)成一個模塊完全是偶然的原因。(2)邏輯內(nèi)聚:幾個邏輯上相關(guān)的功能被放在同一模塊中,則稱為邏輯內(nèi)聚。(3)時間內(nèi)聚:如果一個模塊完成的功能必須在同一時間內(nèi)執(zhí)行(如系統(tǒng)初始化),但這些功能只是因為時間因素關(guān)聯(lián)在一起,則稱為時間內(nèi)聚。3.2軟件結(jié)構(gòu)設(shè)計第92頁/共403頁93/360(4)過程內(nèi)聚:如果一個模塊內(nèi)部的處理成份是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行,則稱為過程內(nèi)聚。(5)通信內(nèi)聚:如果一個模塊的所有成份都操作同一數(shù)據(jù)集或生成同一數(shù)據(jù)集,則稱為通信內(nèi)聚。(6)順序內(nèi)聚:如果一個模塊的各個成份和同一個功能密切相關(guān),而且一個成份的輸出作為另一個成份的輸入,則稱為順序內(nèi)聚。(7)功能內(nèi)聚:模塊的所有成份對于完成單一的功能都是必須的,則稱為功能內(nèi)聚。

3.2軟件結(jié)構(gòu)設(shè)計第93頁/共403頁94/360內(nèi)聚與模塊屬性的關(guān)系

內(nèi)部聯(lián)系清晰性可復(fù)用性可修改性可理解性偶然內(nèi)聚很差差很差很差很差邏輯內(nèi)聚很差很差很差很差差時間內(nèi)聚差中很差中中過程內(nèi)聚中好差中中通信內(nèi)聚中好差中中順序內(nèi)聚好好中好好功能內(nèi)聚好好好好好3.2軟件結(jié)構(gòu)設(shè)計第94頁/共403頁95/3603.2.4模塊設(shè)計啟發(fā)規(guī)則1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨立性2.注意模塊的可靠性、通用性、可維護(hù)性和簡單性3.2軟件結(jié)構(gòu)設(shè)計第95頁/共403頁96/3603.模塊規(guī)模應(yīng)該適中4.深度、寬度、扇入和扇出都應(yīng)適當(dāng)

3.2軟件結(jié)構(gòu)設(shè)計第96頁/共403頁97/3605.模塊的作用域應(yīng)該在控制域之內(nèi)6.力爭降低模塊接口的復(fù)雜程度7.設(shè)計單入口單出口的模塊8.模塊功能應(yīng)該可以預(yù)測

3.2軟件結(jié)構(gòu)設(shè)計第97頁/共403頁98/3603.3.1層次圖(或HIPO圖)3.3軟件結(jié)構(gòu)設(shè)計的圖形工具第98頁/共403頁99/3601.結(jié)構(gòu)圖的符號

(1)方框代表模塊,框內(nèi)注明模塊的名字和主要功能。(2)方框之間的大箭頭或直線表示模塊的調(diào)用關(guān)系。(3)帶注釋的小箭頭表示模塊調(diào)用時傳遞的信息及其傳遞方向。尾部加空心圓的小箭頭表示傳遞數(shù)據(jù)信息。尾部加實心圓的小箭頭表示傳遞控制信息。(4)選擇結(jié)構(gòu)(5)循環(huán)結(jié)構(gòu),模塊H循環(huán)調(diào)用模塊A,B,C,3.3軟件結(jié)構(gòu)設(shè)計的圖形工具3.3.2結(jié)構(gòu)圖第99頁/共403頁100/3602.結(jié)構(gòu)圖的繪制【例3.2】招聘考試成績管理系統(tǒng)的結(jié)構(gòu)圖3.3軟件結(jié)構(gòu)設(shè)計的圖形工具第100頁/共403頁101/3601.變換流

在數(shù)據(jù)處理問題中,我們通常會遇到這樣一些問題,即從“外部世界”取得數(shù)據(jù),對取得數(shù)據(jù)進(jìn)行某種變換,然后再將變換得到的數(shù)據(jù)傳回給“外部世界”。我們把這個過程稱為變換流。其中取得數(shù)據(jù)稱為傳入信息流程,變換數(shù)據(jù)稱為變換信息流程,傳回數(shù)據(jù)稱為傳出信息流程。3.4面向數(shù)據(jù)流的設(shè)計方法第101頁/共403頁102/3601.變換流

3.4面向數(shù)據(jù)流的設(shè)計方法第102頁/共403頁103/3602.事務(wù)流在實際中,我們還會遇到另一類問題,即通常在接受某一項事物后,根據(jù)事物的特點和性質(zhì),選擇分派給一個適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。這類問題就是事物問題。它的特點是,數(shù)據(jù)沿著接受分支把外部信息(數(shù)據(jù))轉(zhuǎn)換成一個事物項,并根據(jù)它的值從多條數(shù)據(jù)流中選擇其中的某一項數(shù)據(jù)流。發(fā)出多條數(shù)據(jù)流的處理單元叫事物中心。3.4面向數(shù)據(jù)流的設(shè)計方法第103頁/共403頁104/3602.事務(wù)流事務(wù)中心的作用:

1、接受輸入數(shù)據(jù)(事物項)

2、根據(jù)事物作出判斷,并選擇處理路徑。

3、沿處理路徑執(zhí)行。3.4面向數(shù)據(jù)流的設(shè)計方法第104頁/共403頁105/3602.事務(wù)流3.4面向數(shù)據(jù)流的設(shè)計方法第105頁/共403頁106/360變換流分析與設(shè)計

分析數(shù)據(jù)流程圖,確定輸入流、輸出流邊界,根據(jù)輸入、變換、輸出3個數(shù)據(jù)流分支,按一定的規(guī)則將它直接映射為結(jié)構(gòu)圖。3.4面向數(shù)據(jù)流的設(shè)計方法第106頁/共403頁107/360變換流分析與設(shè)計步驟:(1)確定變換流、輸入流和輸出流部分(2)設(shè)計模塊結(jié)構(gòu)的頂層和第一層

(3)設(shè)計中下各層

3.4面向數(shù)據(jù)流的設(shè)計方法第107頁/共403頁108/360舉例3.4面向數(shù)據(jù)流的設(shè)計方法第108頁/共403頁109/360舉例3.4面向數(shù)據(jù)流的設(shè)計方法第109頁/共403頁110/360事物流分析與設(shè)計步驟:(1)根據(jù)事務(wù)功能設(shè)計一個頂層總控模塊;(2)將事務(wù)中心的輸入數(shù)據(jù)流對應(yīng)為一個第一層的接收模塊及該模塊的下層模塊;(3)將事務(wù)中心對應(yīng)為一個第一層的調(diào)度模塊;(4)對每一種類型的事務(wù)處理,在調(diào)度模塊下設(shè)計一個事務(wù)處理模塊;然后為每個事務(wù)處理模塊設(shè)計下面的操作模塊及操作模塊的細(xì)節(jié)模塊,每一處理的對應(yīng)設(shè)計可用變換分析方法。

3.4面向數(shù)據(jù)流的設(shè)計方法第110頁/共403頁111/360舉例3.4面向數(shù)據(jù)流的設(shè)計方法第111頁/共403頁112/360舉例3.4面向數(shù)據(jù)流的設(shè)計方法第112頁/共403頁113/360混合流分析與設(shè)計基本思路:(1)首先利用變換分析方法把軟件系統(tǒng)分為輸入、變換和輸出三部分,由此設(shè)計出軟件系統(tǒng)的上層構(gòu)架,例如,頂層和第一層模塊;(2)然后根據(jù)數(shù)據(jù)流程圖各個部分的結(jié)構(gòu)特點,適當(dāng)?shù)剡x擇變換分析或事務(wù)分析,由此設(shè)計出軟件系統(tǒng)的下層結(jié)構(gòu)。

3.4面向數(shù)據(jù)流的設(shè)計方法第113頁/共403頁114/360混合數(shù)據(jù)流

3.4面向數(shù)據(jù)流的設(shè)計方法第114頁/共403頁115/360混合型數(shù)據(jù)流程圖映射的軟件結(jié)構(gòu)圖

3.4面向數(shù)據(jù)流的設(shè)計方法第115頁/共403頁116/3603.5.1流程圖

2.流程圖符號3.5過程設(shè)計工具第116頁/共403頁117/3603.流程圖使用約定3.5過程設(shè)計工具第117頁/共403頁118/3604.流程圖的三種基本結(jié)構(gòu):

順序、選擇、循環(huán)。3.5過程設(shè)計工具第118頁/共403頁119/3603.5.2盒圖。

1.盒圖的符號3.5過程設(shè)計工具第119頁/共403頁120/3603.5.2盒圖

【例3.5】將下述含GOTO語句的程序流程圖,改為N_S圖。

3.5過程設(shè)計工具第120頁/共403頁121/3603.5.2盒圖

【例3.5】將下述含GOTO語句的程序流程圖,改為N_S圖。

3.5過程設(shè)計工具第121頁/共403頁122/3603.5.3PAD圖

1、基本符號3.5過程設(shè)計工具第122頁/共403頁123/3603.5.3PAD圖

【例3.7】學(xué)生成績管理系統(tǒng)的PAD圖

3.5過程設(shè)計工具第123頁/共403頁124/3603.5.4判定表1.判定表的組成左上部列出所有條件。左下部列出所有可能做的工作。右上部每一列表示各種條件的一種可能組合,所有列表示條件組合的全部可能情況。右下部的每一列是和每一種條件組合所對應(yīng)的應(yīng)做的工作。2.判定表中的符號右上部用“T”表示條件成立,用“F”表示條件不成立,空白表示條件成立與否不影響。右下部畫“X”表示做該行左邊列出的那項工作,空白表示不做該項工作。3.5過程設(shè)計工具第124頁/共403頁125/360【例3.8】用判定表表示教師課時津貼費(fèi)規(guī)定。

某校對各種不同職稱教師,根據(jù)其是本校專職教師還是外聘兼職教師,決定其講課的課時津貼費(fèi)。本校專職教師每課時津貼費(fèi):教授80元,副教授60元,講師50元,助教40元。外聘兼職教師每課時津貼費(fèi):教授90元,副教授80元,講師60元,助教50元。3.5過程設(shè)計工具第125頁/共403頁126/360【例3.9】用判定樹表示教師課時津貼規(guī)定。3.5過程設(shè)計工具第126頁/共403頁127/360過程設(shè)計語言(ProgramDesignLanguage,簡稱PDL),也稱偽碼,是一種混雜語言,說明某種結(jié)構(gòu)化的程序設(shè)計語言的語法形式。用PDL表示的程序結(jié)構(gòu):1順序結(jié)構(gòu)處理1

處理2

處理3選擇結(jié)構(gòu)

IF-THEN-ELSE結(jié)構(gòu):

IF條件處理1ELSE處理2ENDIFIF-THEN結(jié)構(gòu):

IF條件處理1ENDIF3.5過程設(shè)計工具第127頁/共403頁128/3603.6系統(tǒng)人機(jī)界面設(shè)計大量的項目因為沒有讓用戶充分參與界面的設(shè)計而失敗市場部門的問題開發(fā)人員的問題用戶的問題設(shè)計模型的問題第128頁/共403頁129/360一些典型的不良界面對用戶的主觀臆測不友好晦澀難懂行為不當(dāng)界面復(fù)雜3.6系統(tǒng)人機(jī)界面設(shè)計第129頁/共403頁130/360以用戶為中心的設(shè)計(User-CenteredDesign,UCD)

理解用戶的特征理解用戶的任務(wù)確保用戶參與遵循良好的界面設(shè)計原則3.6系統(tǒng)人機(jī)界面設(shè)計第130頁/共403頁131/360界面設(shè)計指導(dǎo)原則全部界面格式和風(fēng)格應(yīng)保持一致適當(dāng)組織菜單層次和菜單項為不同的用戶或功能提供不同的界面服務(wù)力求用戶需要的輸入量最少破壞性命令或功能選項應(yīng)確認(rèn)提供有效的系統(tǒng)保障能力布局合理簡單易懂,整潔有序,條理清晰幫助功能一定的智能3.6系統(tǒng)人機(jī)界面設(shè)計第131頁/共403頁132/360界面設(shè)計基礎(chǔ)字符型界面和圖形界面3.6系統(tǒng)人機(jī)界面設(shè)計第132頁/共403頁133/360界面設(shè)計基礎(chǔ)界面控件菜單、命令控件、靜態(tài)文本控件、文本控件、數(shù)據(jù)窗口控件、下拉列表框控件、單選按鈕控件、復(fù)選框控件、樹形結(jié)構(gòu)控件、圖形控件、微調(diào)框控件、滑動條控件……自定義的控件3.6系統(tǒng)人機(jī)界面設(shè)計第133頁/共403頁134/360多通道人機(jī)交互強(qiáng)調(diào)計算機(jī)輸入信息的自然性和多樣性語音交互虛擬現(xiàn)實高級交互3.6系統(tǒng)人機(jī)界面設(shè)計第134頁/共403頁135/3603.7.1代碼設(shè)計目的代碼是為了對數(shù)據(jù)進(jìn)行識別、分類、排序等操作所使用的數(shù)字、文字或符號。

代碼的性質(zhì):簡潔性、保密性、可擴(kuò)充性和持久性。3.7.2代碼設(shè)計原則標(biāo)準(zhǔn)化:國際標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)、部頒標(biāo)準(zhǔn)或習(xí)慣標(biāo)準(zhǔn)

惟一性

可擴(kuò)充性

簡單性

規(guī)范化

適應(yīng)性

3.7數(shù)據(jù)代碼設(shè)計第135頁/共403頁136/3603.7.3代碼種類

1.順序碼

2.信息塊碼

3.歸組分類碼

4.助記碼

5.數(shù)字式字符碼

6.組合碼

3.7數(shù)據(jù)代碼設(shè)計第136頁/共403頁137/360

計算機(jī)軟件本質(zhì)上是信息處理系統(tǒng),因此,可以根據(jù)軟件所處理的信息的特征來設(shè)計軟件。前面曾經(jīng)介紹了面向數(shù)據(jù)流的設(shè)計方法,也就是根據(jù)數(shù)據(jù)流確定軟件結(jié)構(gòu)的方法,本節(jié)將介紹面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,也就是根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計程序處理過程的方法。

3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第137頁/共403頁138/360

在許多應(yīng)用領(lǐng)域中信息都有清楚的層次結(jié)構(gòu),輸入數(shù)據(jù)、內(nèi)部存儲的信息(數(shù)據(jù)庫或文件)以及輸出數(shù)據(jù)都可能有獨特的結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)既影響程序的結(jié)構(gòu)又影響程序的處理過程,重復(fù)出現(xiàn)的數(shù)據(jù)通常由具有循環(huán)控制結(jié)構(gòu)的程序來處理,選擇數(shù)據(jù)(即,可能出現(xiàn)也可能不出現(xiàn)的信息)要用帶有分支控制結(jié)構(gòu)的程序來處理。層次的數(shù)據(jù)組織通常和使用這些數(shù)據(jù)的程序的層次結(jié)構(gòu)十分相似。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第138頁/共403頁139/360

面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的最終目標(biāo)是得出對程序處理過程的描述。這種設(shè)計方法并不明顯地使用軟件結(jié)構(gòu)的概念,模塊是設(shè)計過程的副產(chǎn)品,對于模塊獨立原理也沒有給予應(yīng)有的重視。因此,這種方法最適合于在詳細(xì)設(shè)計階段使用,也就是說,在完成了軟件結(jié)構(gòu)設(shè)計之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來設(shè)計每個模塊的處理過程。

3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第139頁/共403頁140/360

使用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,當(dāng)然首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當(dāng)?shù)墓ぞ咔逦孛枥L數(shù)據(jù)結(jié)構(gòu)。本節(jié)先介紹Jackson方法的工具——Jackson圖,然后介紹jackson程序設(shè)計方法的基本步驟。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第140頁/共403頁141/3603.11.1Jackson圖

雖然程序中實際使用的數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元素彼此間的邏輯關(guān)系卻只有順序、選擇和重復(fù)三類,因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這三類。圖3.29A由B、C、D三個元素順序組成(每個元素只出現(xiàn)一次,出現(xiàn)的次序依次是B、C和D)

1.順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。圖3.29是表示順序結(jié)構(gòu)的Jackson圖的一個例子。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第141頁/共403頁142/360圖3.30

根據(jù)條件A是B或C或D中的某一個(注意:在B、C和D的右上角有小圓圈做標(biāo)記)

2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。圖3.30是表示三個中選一個結(jié)構(gòu)的Jackson圖。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第142頁/共403頁143/3603.重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。圖3.31是表示重復(fù)結(jié)構(gòu)的Jackson圖。圖3.31A由B出現(xiàn)N次(N≥0)組成(注意,在B的右上角有星號標(biāo)記)

Jackson圖有下述優(yōu)點:●便于表示層次結(jié)構(gòu),而且是對結(jié)構(gòu)進(jìn)行自頂向下分解的有力工具;●形象直觀可讀性好;●既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)(因為結(jié)構(gòu)程序設(shè)計也只使用上述三種基本結(jié)構(gòu))。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第143頁/共403頁144/360

上一小節(jié)介紹的Jackson圖的缺點是,用這種圖形工具表示選擇或重復(fù)結(jié)構(gòu)時,選擇條件或循環(huán)結(jié)束條件不能直接在圖上表示出來,影響了圖的表達(dá)能力,也不易直接把圖翻譯成程序。為了解決上述問題,本書建議使用圖3.32中給出的改進(jìn)的Jackson圖。圖3.32

改進(jìn)的Jackson圖(a)順序結(jié)構(gòu),B、C、D中任一個都不能是選擇出現(xiàn)或重復(fù)出現(xiàn)的數(shù)據(jù)元素(即,不能是右上角有小圓或星號標(biāo)記的元素);(b)選擇結(jié)構(gòu),S右面括號中的數(shù)字i是分支條件的編號;(c)可選結(jié)構(gòu),A或者是元素B或者不出現(xiàn)(可選結(jié)構(gòu)是選擇結(jié)構(gòu)的一種常見的特殊形式);(d)重復(fù)結(jié)構(gòu),循環(huán)結(jié)束條件的編號為i第144頁/共403頁145/360

請讀者注意,雖然Jackson圖和描繪軟件結(jié)構(gòu)的層次圖形式相當(dāng)類似,但是含義卻很不相同:層次圖中的一個方框通常代表一個模塊;Jackson圖即使在描繪程序結(jié)構(gòu)時,一個方框也并不代表一個模塊,通常一個方框只代表幾個語句。層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個模塊除了調(diào)用下級模塊外,還完成其他操作;Jackson圖表現(xiàn)的是組成關(guān)系,也就是說,一個方框中包括的操作僅僅由它下層框中的那些操作組成。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第145頁/共403頁146/3603.11.3Jackson方法Jackson結(jié)構(gòu)程序設(shè)計方法基本上由下述四個步驟組成。第1步分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。第2步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。所謂有對應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時處理的數(shù)據(jù)單元(對于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須重復(fù)的次序和次數(shù)都相同才可能有對應(yīng)關(guān)系)。第3步從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第146頁/共403頁147/3603.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第4步列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。第147頁/共403頁148/360【例3.10】用Jacksan方法對學(xué)生成績管理系統(tǒng)進(jìn)行結(jié)構(gòu)設(shè)計。學(xué)生成績管理系統(tǒng)在學(xué)生入學(xué)時輸入學(xué)生基本信息。每次單科成績是按班級內(nèi)學(xué)生學(xué)號的順序依次輸入每位學(xué)生的平時成績和考試成績,成績輸入格式見表3.5。然后由計算機(jī)計算每位學(xué)生的單科成績總評分。輸出的學(xué)生個人成績單格式,見表3.6;班級各科成績匯總表格式,見表3.7。3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第148頁/共403頁149/360輸入、輸出的Jacksan圖3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第149頁/共403頁150/360學(xué)生成績管理系統(tǒng)結(jié)構(gòu)

Jacksan圖3.8面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法第150頁/共403頁151/3603.9.1概要設(shè)計說明書3.9.2數(shù)據(jù)庫設(shè)計說明書3.9.3詳細(xì)設(shè)計說明書3.9.4操作手冊編寫提示3.9軟件設(shè)計文檔第151頁/共403頁152/360Chapter4軟件編碼和軟件測試4.1結(jié)構(gòu)化程序設(shè)計4.2軟件測試目標(biāo)4.3軟件測試方法4.4軟件測試步驟4.5設(shè)計軟件測試方案4.6軟件測試原則和策略4.7軟件測試、驗證與確認(rèn)4.8軟件測試文檔第152頁/共403頁153/360

結(jié)構(gòu)化程序設(shè)計(StructuredProgramming,SP)僅采用順序、選擇、重復(fù)三種基本控制結(jié)構(gòu);每種基本結(jié)構(gòu)只有一個入口、一個出口;將這三種基本控制結(jié)構(gòu)根據(jù)程序的邏輯,嵌套或組合成結(jié)構(gòu)化程序,完成預(yù)定的功能。結(jié)構(gòu)化程序設(shè)計的特點源程序有清晰性,并能較好地適合自頂向下或自底向上的程序設(shè)計技術(shù)。在詳細(xì)設(shè)計階段,使系統(tǒng)結(jié)構(gòu)具有模塊化和清晰性的特性。在軟件編碼階段,使軟件易于理解、修改,便于重復(fù)使用。4.1結(jié)構(gòu)化程序設(shè)計第153頁/共403頁154/3604.1.1程序設(shè)計語言的選擇1.程序設(shè)計語言的分類(1)面向機(jī)器語言:機(jī)器語言和匯編語言。(2)高級程序設(shè)計語言2.高級語言選用的實用標(biāo)準(zhǔn)(1)項目的應(yīng)用領(lǐng)域(2)軟件開發(fā)環(huán)境(3)根據(jù)系統(tǒng)用戶的要求來選擇(4)軟件開發(fā)人員的知識

4.1結(jié)構(gòu)化程序設(shè)計第154頁/共403頁155/3604.1.2程序設(shè)計風(fēng)格源程序文檔編寫規(guī)則

1.結(jié)構(gòu)化程序設(shè)計:強(qiáng)調(diào)模塊采用自上而下,逐步求精設(shè)計方法。只使用順序,選擇和循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造程序。

2.程序內(nèi)部文檔書寫規(guī)則:選用含義鮮明的標(biāo)識符。適當(dāng)添加注解。程序布局要合理,采用階梯式。

3.數(shù)據(jù)說明易于理解,便于查閱。數(shù)據(jù)說明的次序應(yīng)標(biāo)準(zhǔn)化。如按數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)來確定說明次序。當(dāng)對同一語句中的多個變量加以說明,應(yīng)按英文字母順序排列。在使用一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時,最好加注釋語句。變量說明不要遺漏,變量的類型,長度,存儲及初始化要正確。

4.1結(jié)構(gòu)化程序設(shè)計第155頁/共403頁156/3604.1.2程序設(shè)計風(fēng)格4.語句構(gòu)造要簡單直接一句一行;盡量避免復(fù)雜的條件測試;盡量減少對“非”條件的測試;對于多分支語句,盡量把出現(xiàn)可能性大的情況放在前面,較少出現(xiàn)的分支放在后面;避免大量使用循環(huán)嵌套和條件嵌套語句;

5.輸入輸出語句要合理對輸入數(shù)據(jù)加校驗可以避免用戶誤輸入;對重要的輸入向組合的合法性加檢查語句;提示輸入請求,簡單地說明可用的選擇或邊界數(shù)值;輸入格式簡單。

程序設(shè)計主要應(yīng)考慮的是程序的正確性、可理解性、可測試性和可維護(hù)性。4.1結(jié)構(gòu)化程序設(shè)計第156頁/共403頁157/360

1、軟件測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;2、好的測試方案能夠發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯誤;3、成功的測試是發(fā)現(xiàn)了尚未發(fā)現(xiàn)的錯誤的測試。軟件測試的目的是通過人工或計算機(jī)執(zhí)行程序來有意識地發(fā)現(xiàn)程序中的設(shè)計錯誤和編碼錯誤。4.2軟件測試目標(biāo)第157頁/共403頁158/360

從上述規(guī)則可以看出,測試的正確定義是“為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成功的測試是沒有發(fā)現(xiàn)錯誤的測試”等等是完全相反的。正確認(rèn)識測試的目標(biāo)是十分重要的,測試目標(biāo)決定了測試方案的設(shè)計。如果為了表明程序是正確的而進(jìn)行測試,就會設(shè)計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現(xiàn)程序中的錯誤,就會力求設(shè)計出最能暴露錯誤的測試方案。4.2軟件測試目標(biāo)第158頁/共403頁159/360

由于測試的目標(biāo)是暴露程序中的錯誤,從心理學(xué)角度看,由程序的編寫者自己進(jìn)行測試是不恰當(dāng)?shù)摹R虼?,在綜合測試階段通常由其他人員組成測試小組來完成測試工作。此外,應(yīng)該認(rèn)識到測試決不能證明程序是正確的。即使經(jīng)過了最嚴(yán)格的測試之后,仍然可能還有沒被發(fā)現(xiàn)的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中沒有錯誤。4.2軟件測試目標(biāo)第159頁/共403頁160/360軟件測試原則應(yīng)早并不斷地進(jìn)行測試程序員應(yīng)盡可能避免檢查自己的程序測試用例應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件測試用例應(yīng)包括輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分全面檢查每個測試結(jié)果嚴(yán)格按照測試計劃來測試充分注意測試中的集群現(xiàn)象注意遵守“經(jīng)濟(jì)性”的原則4.2軟件測試目標(biāo)第160頁/共403頁161/3604.3.1靜態(tài)分析與動態(tài)測試靜態(tài)分析不執(zhí)行被測試軟件,而是通過對需求分析說明書、軟件設(shè)計說明書及源程序做結(jié)構(gòu)檢查、流程圖分析、編碼編碼分析等來找出錯誤。2.動態(tài)測試:以執(zhí)行程序并分析程序來查錯。為了進(jìn)行軟件測試,需要預(yù)先準(zhǔn)備好兩種數(shù)據(jù):①輸入數(shù)據(jù);②預(yù)期的輸出結(jié)果。我們把以發(fā)現(xiàn)錯誤為目標(biāo)的用于軟件測試的輸入數(shù)據(jù)及與之對應(yīng)的預(yù)期輸出結(jié)果叫測試用例。4.3軟件測試方法第161頁/共403頁162/3604.3.2黑盒法與白盒法1.黑盒法

(Black.BoxTesting)又稱功能測試,其測試用例完全是根據(jù)程序的功能說明來設(shè)計的。2.白盒法

(WhiteBoxTesting)又稱結(jié)構(gòu)測試,其測試用例是根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)和執(zhí)行路徑來設(shè)計的。常把黑盒法和白盒法聯(lián)合起來進(jìn)行,這也稱為灰盒法。4.3軟件測試方法第162頁/共403頁163/360黑盒測試方法

對于軟件測試而言,黑盒測試法把程序看成一個黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。也就是說,黑盒測試是在程序接口進(jìn)行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如,數(shù)據(jù)庫或文件)的完整性。黑盒測試又稱為功能測試。4.3軟件測試方法第163頁/共403頁164/360

確切地說,黑盒測試力圖發(fā)現(xiàn)下述類型的錯誤:●程序功能不正確或遺漏了用戶需要的功能;●界面錯誤;●數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤;●性能達(dá)不到要求;●初始化和終止錯誤。通常,白盒測試在測試過程的早期階段進(jìn)行,而黑盒測試則主要用在測試過程的后期。黑盒測試故意不考慮程序的控制結(jié)構(gòu),而把注意力集中于信息域。4.3軟件測試方法第164頁/共403頁165/3604.4.1模塊測試也稱單元測試,其目的是檢查每個模塊是否能獨立、正確地運(yùn)行。模塊測試通常在程序設(shè)計時進(jìn)行。驅(qū)動程序代替主程序,用來測試子程序。存根程序也稱“虛擬子程序”,測試主模塊。4.4軟件測試步驟第165頁/共403頁166/360

模塊測試工作內(nèi)容

在單元測試期間應(yīng)該著重從下述五個方面對模塊進(jìn)行測試:(1)模塊接口測試(2)局部數(shù)據(jù)結(jié)構(gòu)測試(3)路徑測試(4)錯誤處理測試(5)邊界測試

4.4軟件測試步驟第166頁/共403頁167/3604.4.2集成測試子系統(tǒng)的組裝稱為集成化。集成測試分為子系統(tǒng)測試和系統(tǒng)測試兩種。子系統(tǒng)測試是把經(jīng)過模塊測試運(yùn)行正確的模塊放在一起形成子系統(tǒng)后再測試,這個步驟著重測試模塊的接口,測試模塊之間能否相互協(xié)調(diào)及通信時有沒有問題。

系統(tǒng)測試就是把經(jīng)過測試運(yùn)行正確的子系統(tǒng)組裝成完整的系統(tǒng)后再進(jìn)行測試。系統(tǒng)測試是測試整個硬件和軟件系統(tǒng),驗證系統(tǒng)是否滿足規(guī)定的需求。4.4軟件測試步驟第167頁/共403頁168/360

由模塊組裝成程序時有兩種方法。一種方法是先分別測試每個模塊,再把所有模塊按設(shè)計要求放在一起結(jié)合成所要的程序,這種方法稱為非漸增式測試方法;另一種方法是把下一個要測試的模塊同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試,測試完以后再把下一個應(yīng)該測試的模塊結(jié)合進(jìn)來測試。這種每次增加一個模塊的方法稱為漸增式測試。4.4軟件測試步驟第168頁/共403頁169/360

非漸增式測試一下子把所有模塊放在一起,并把整個程序作為一個整體來進(jìn)行測試,測試者面對的場面往往混亂不堪。測試時會遇到許許多多的錯誤,改正錯誤更是極端困難,因為在龐大的程序中想要診斷定位一個錯誤是非常復(fù)雜非常困難的。而且一旦改正一個錯誤之后,馬上又會遇到新的錯誤,這個過程會繼續(xù)下去,看起來好像永遠(yuǎn)也沒有盡頭。漸增式測試與“一步到位”的非漸增式測試相反,把程序劃分成小段來構(gòu)造和測試,在這個過程中比較容易分離和改正錯誤;對接口可能進(jìn)行更徹底的測試;而且可以使用系統(tǒng)化的測試方法。因此,在進(jìn)行集成測試時普遍使用漸增式測試方法。下面討論兩種不同的漸增式集成策略。4.4軟件測試步驟第169頁/共403頁170/3601.自頂向下集成自頂向下的集成(結(jié)合)方法是一個日益為人們廣泛采用的組裝軟件的途徑。從主控制模塊(主程序)開始,沿著軟件的控制層次向下移動,從而逐漸把各個模塊結(jié)合起來。在把附屬于(以及最終附屬于)主控制模塊的那些模塊組裝到軟件結(jié)構(gòu)中去時,或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。

4.4軟件測試步驟第170頁/共403頁171/360圖自頂向下結(jié)合

例如,選取左通路,首先結(jié)合模塊M1、M2和M5;其次,M8或M6(如果為了使M2具有適當(dāng)功能需要M6的話)將被結(jié)合進(jìn)來。然后構(gòu)造中央的和右側(cè)的控制通路。而寬度優(yōu)先的結(jié)合方法,是沿軟件結(jié)構(gòu)水平地移動,把處于同一個控制層次上的所有模塊組裝起來。對于圖來說,首先結(jié)合模塊M2、M3和M4(代替存根程序S4)。然后結(jié)合下一個控制層次中的模塊M5、M6和M7;如此繼續(xù)進(jìn)行下去,直到所有模塊都被結(jié)合進(jìn)來為止。第171頁/共403頁172/3602.自底向上集成自底向上測試從“原子”模塊(即在軟件結(jié)構(gòu)最低層的模塊)開始組裝和測試。因為是從底部向上結(jié)合模塊,總能得到需要的下層模塊處理功能,所以不需要存根程序。

第172頁/共403頁173/360圖自底向上結(jié)合

首先把模塊組合成簇1、簇2和簇3,使用驅(qū)動程序(圖中用虛線方框表示)對每個子功能簇進(jìn)行測試。簇1和簇2中的模塊附屬于模塊Ma,去掉驅(qū)動程序D1和D2,把這兩個簇直接同Ma連接起來。類似地,在和模塊Mb結(jié)合之前去掉簇3的驅(qū)動程序D3。最終Ma和Mb這兩個模塊都與模塊Mc結(jié)合起來。第173頁/共403頁174/360兩種集成測試策略的比較一般說來,一種方法的優(yōu)點正好對應(yīng)于另一種方法的缺點。自頂向下測試方法的主要優(yōu)點是不需要測試驅(qū)動程序,能夠在測試階段的早期實現(xiàn)并驗證系統(tǒng)的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯誤。自頂向下測試方法的主要缺點是需要存根程序,可能遇到與此相聯(lián)系的測試?yán)щy,低層關(guān)鍵模塊中的錯誤發(fā)現(xiàn)較晚,而且用這種方法在早期不能充分展開人力。可以看出,自底向上測試方法的優(yōu)缺點與上述自頂向下測試方法的優(yōu)缺點剛好相反。

第174頁/共403頁175/3604.4.3程序?qū)彶闀腿斯み\(yùn)行4.4.4確認(rèn)測試確認(rèn)測試也稱為驗收測試,它的目標(biāo)是驗證軟件的有效性。如果軟件的功能和性能如同用戶所合理地期待的那樣,那么,軟件就是有效的。需求分析階段產(chǎn)生的軟件需求規(guī)格說明,準(zhǔn)確地描述了用戶對軟件的合理期望,因此是軟件有效性的標(biāo)準(zhǔn),也是進(jìn)行確認(rèn)測試的基礎(chǔ)4.4軟件測試步驟第175頁/共403頁176/3601.確認(rèn)測試標(biāo)準(zhǔn)確認(rèn)測試必須有用戶積極參與,或者以用戶為主進(jìn)行。用戶應(yīng)該參加設(shè)計測試方案,使用用戶接口輸入測試數(shù)據(jù)并且分析評價測試的輸出結(jié)果。確認(rèn)測試一般使用黑盒測試法。應(yīng)該仔細(xì)設(shè)計測試計劃和測試過程,測試計劃包括要進(jìn)行的測試的種類和進(jìn)度安排,測試過程規(guī)定用來檢驗軟件是否與需求一致的測試方案。通過測試要保證軟件能滿足所有功能要求,能達(dá)到每個性能要求,文檔資料是準(zhǔn)確而完整的,此外,還應(yīng)該保證軟件能滿足其他預(yù)定的要求(例如,可移植性、兼容性和可維護(hù)性等)。4.4軟件測試步驟第176頁/共403頁177/3602.配置復(fù)審確認(rèn)測試的一項重要任務(wù)是復(fù)查軟件配置。復(fù)查的目的是,保證軟件配置的所有成分都齊全,各方面的質(zhì)量都符合要求,文檔內(nèi)容與程序完全一致,具有軟件維護(hù)階段所必須的細(xì)節(jié),而且全部文檔都已經(jīng)編好目錄。

第177頁/共403頁178/3603.α、β測試如果軟件是為一個客戶開發(fā)的,則可以進(jìn)行一系列驗收測試以便用戶確認(rèn)所有需求都已滿足了。驗收測試是由最終用戶而不是系統(tǒng)的開發(fā)者進(jìn)行的。如果一個軟件是為許多客戶開發(fā)的(例如,向大眾出售的盒裝軟件產(chǎn)品),那么讓每個客戶都進(jìn)行正式的驗收測試是不現(xiàn)實的。在這種情況下,絕大多數(shù)軟件開發(fā)商都使用被稱為Alpha測試和Beta測試的過程,來發(fā)現(xiàn)那些看起來只有最終用戶才能發(fā)現(xiàn)的錯誤。第178頁/共403頁179/360Alpha測試由用戶在開發(fā)者的場所進(jìn)行,并且在開發(fā)者對用戶的“指導(dǎo)”下進(jìn)行測試。開發(fā)者負(fù)責(zé)記錄錯誤和使用中遇到的問題??傊?,Alpha測試是在受控的環(huán)境中進(jìn)行的。

第179頁/共403頁180/360

Beta測試由軟件的最終用戶們在一個或多個客戶場所進(jìn)行。與Alpha測試不同,開發(fā)者通常不在Beta測試的現(xiàn)場,因此,Beta測試是軟件在開發(fā)者不能控制的環(huán)境中的“真實”應(yīng)用。用戶記錄下在Beta測試過程中遇到的一切問題(真實的或想象的),并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論