軟件工程課件_第1頁(yè)
軟件工程課件_第2頁(yè)
軟件工程課件_第3頁(yè)
軟件工程課件_第4頁(yè)
軟件工程課件_第5頁(yè)
已閱讀5頁(yè),還剩291頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程第1章軟件工程

1.2軟件工程退出

1.1軟件危機(jī)1.1軟件危機(jī)1.1.1軟件代價(jià)高1.1.2軟件開發(fā)和維護(hù)中的嚴(yán)重問題退出1.1.1軟件代價(jià)高計(jì)算機(jī)系統(tǒng)硬件/軟件成本變化趨勢(shì)在開發(fā)一個(gè)新型計(jì)算機(jī)系統(tǒng)或修改一個(gè)現(xiàn)有系統(tǒng)的過程中,最大部分的資金是用在軟件系統(tǒng)開發(fā)方面。1.1.2軟件開發(fā)和維護(hù)中的嚴(yán)重問題

計(jì)算機(jī)系統(tǒng)發(fā)展的早期時(shí)代所形成的錯(cuò)誤概念與做法,已經(jīng)嚴(yán)重阻礙了計(jì)算機(jī)軟件的開發(fā),更嚴(yán)重的是:用錯(cuò)誤方法開發(fā)的軟件幾乎根本無(wú)法維護(hù),只好提前報(bào)廢。1、軟件危機(jī)2、有那些軟件開發(fā)的錯(cuò)誤方法和觀念3、軟件產(chǎn)品的質(zhì)量量化分析不夠。1、軟件開發(fā)成本與進(jìn)度估計(jì)不準(zhǔn)確。2、閉門造車。軟件開發(fā)人員倉(cāng)促上陣,編寫程序。4、軟件重用性差。5、軟件沒有適當(dāng)?shù)奈臋n資料。6、軟件成本逐年上升。本節(jié)小結(jié)

產(chǎn)生軟件危機(jī)原因----與軟件本身的特點(diǎn)有關(guān):1、軟件是邏輯部件:試制階段難衡量;開發(fā)質(zhì)量較難評(píng)價(jià),開發(fā)過程管理和控制較難;運(yùn)行過程才能暴露沒有檢測(cè)出來的事故,相當(dāng)于修改設(shè)計(jì),軟件維護(hù)困難;2、軟件規(guī)模龐大,有技術(shù)問題,也有管理方法問題。3、早期開發(fā)的個(gè)體化;忽視需求分析;認(rèn)為軟件開發(fā)寫程序;輕視維護(hù),對(duì)用戶不了解,4、對(duì)前期工作不能忽視,做好軟件定義時(shí)期的工作,這是降低成本,提高件質(zhì)量的關(guān)鍵。5、嚴(yán)重性:在軟件開發(fā)的不同階段修改付出代價(jià)(后期是前期的2-3個(gè)數(shù)量級(jí)),軟件維護(hù)是極端艱巨復(fù)雜的工作,占55%~70%)1.2軟件工程1.2.1軟件工程的定義與基本原理1.2.2軟件工程的目標(biāo)1.2.3軟件工程框架及原則退出

軟件工程學(xué)科是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。軟件工程是一類求解軟件的工程。它應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則、方法,創(chuàng)建軟件以達(dá)到提高質(zhì)量,降低成本的目的。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)造模型與算法,工程科學(xué)用于制定規(guī)范設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。 軟件工程的方法、工具、過程構(gòu)成了軟件工程的三要素。1.2.1軟件工程的定義與基本原理1、軟件工程的七條基本原理(1)用分階段的生命周期計(jì)劃進(jìn)行嚴(yán)格管理(2)堅(jiān)持進(jìn)行階段評(píng)審(3)實(shí)行嚴(yán)格的產(chǎn)品控制(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)(5)結(jié)果應(yīng)能清楚地審查(6)開發(fā)小組的人員應(yīng)該少而精(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.2.2軟件工程的目標(biāo)軟件工程的目標(biāo)可概括為:在給定成本、進(jìn)度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性并滿足用戶需要的軟件產(chǎn)品。應(yīng)該特別指出;“可靠性”這個(gè)目標(biāo)在軟件工程中有著重要的意義。廣義上講,它涉及到產(chǎn)品設(shè)計(jì)的一系列問題,從而使產(chǎn)品能在相當(dāng)長(zhǎng)的期間內(nèi)穩(wěn)定工作。狹義上講,可靠性是軟件成功運(yùn)行的概率度量,可靠性分析和可靠性測(cè)試可作為衡量軟件質(zhì)量和其他開發(fā)過程的最重要的方法之一。

軟件生命周期:軟件定義、軟件設(shè)計(jì)、軟件使用與維護(hù)三階段,而又可以具體分成幾個(gè)子階段。(1)

可行性研究:確定待開發(fā)軟件系統(tǒng)的總目標(biāo),給出其功能、性能、可靠性、接口等要求。(1)可行性研究(2)需求分析和定義(3)總體設(shè)計(jì)(4)詳細(xì)設(shè)計(jì)(5)編碼(實(shí)現(xiàn))(6)軟件測(cè)試、運(yùn)行/維護(hù)(1)

可行性研究:確定待開發(fā)軟件系統(tǒng)的總目標(biāo),給出其功能、性能、可靠性、接口等要求。2。2軟件模型

軟件開發(fā)模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。最早出現(xiàn)的軟件開發(fā)模型是1970年W.Royce提出的瀑布模型,而后隨著軟件工程學(xué)科的發(fā)展和軟件開發(fā)的實(shí)踐,相繼提出了原型模型、演化模型、增量模型、噴泉模型等。1.原型模型、螺旋模型

關(guān)于模型小結(jié)螺旋模型是由上面四個(gè)部分組成的迭代模型。螺旋模型的每一周期都包括需求定義、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評(píng)審四個(gè)階段。開發(fā)過程每迭代一次,螺旋線就增加一周,軟件開發(fā)又前進(jìn)一個(gè)層次,系統(tǒng)又生成一個(gè)新版本,而軟件開發(fā)的時(shí)間和成本又有了新的投入。最后得到一個(gè)客戶滿意的軟件版本。噴泉模型該模型表明軟件開發(fā)活動(dòng)之間沒有明顯的間隙,用于支持面向?qū)ο箝_發(fā)過程。由于對(duì)象概念的引入,使分析、設(shè)計(jì)、實(shí)現(xiàn)之間的表達(dá)沒有明顯間隙。并且,這一表達(dá)自然地支持復(fù)用。3.1基于計(jì)算機(jī)的系統(tǒng)

基于計(jì)算機(jī)的系統(tǒng)是“某些要素的一個(gè)集合,這些要素被組織起來以實(shí)現(xiàn)某種方法、過程或借助處理信息進(jìn)行控制?!眻D3.1給出了基于計(jì)算機(jī)系統(tǒng)的系統(tǒng)要素及相互之間關(guān)系。圖3.1基于計(jì)算機(jī)系統(tǒng)的系統(tǒng)要素及相互之間關(guān)系

3.1.1計(jì)算機(jī)系統(tǒng)工程

計(jì)算機(jī)系統(tǒng)工程是一個(gè)問題求解活動(dòng),目的是揭示、分析所期望的功能,并把它們分配到各個(gè)單獨(dú)的系統(tǒng)要素中去。計(jì)算機(jī)系統(tǒng)開發(fā)設(shè)計(jì)周期見圖3.2。圖3.2系統(tǒng)開發(fā)設(shè)計(jì)周期在系統(tǒng)的功能規(guī)范確立之后,下一步要對(duì)系統(tǒng)的功能進(jìn)行認(rèn)真、仔細(xì)的分析,問題的焦點(diǎn)集中于功能、性能、信息流和容量上。一個(gè)計(jì)算機(jī)系統(tǒng)方案應(yīng)包括以下幾個(gè)方面的內(nèi)容:

(1)任務(wù)的來源,技術(shù)要求,質(zhì)量指標(biāo)和經(jīng)費(fèi)

.

(2)采取的技術(shù)途徑。

(3)方案的規(guī)模,子系統(tǒng)的劃分。

(4)系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)。

(5)預(yù)計(jì)系統(tǒng)的各項(xiàng)指標(biāo)。

(6)所需的設(shè)備、儀器、關(guān)鍵元器件、工藝工具等的購(gòu)置情況及保證條件。(7)研制周期、異常情況的處理等等。用戶中心設(shè)計(jì)——UCD方法在某種程度上代表了當(dāng)今的計(jì)算機(jī)系統(tǒng)技術(shù)發(fā)展水平,使用該方法能設(shè)計(jì)極具競(jìng)爭(zhēng)力的產(chǎn)品,UCD方法適合一切項(xiàng)目。現(xiàn)將傳統(tǒng)設(shè)計(jì)方法與用戶中心設(shè)計(jì)——UCD方法加以比較。

傳統(tǒng)的設(shè)計(jì)方法技術(shù)驅(qū)動(dòng)以組件為中心有限的多學(xué)科協(xié)作注重產(chǎn)品的內(nèi)部體系結(jié)構(gòu)沒有專門考慮用戶體驗(yàn)競(jìng)爭(zhēng)意識(shí)不強(qiáng)開發(fā)先于用戶評(píng)價(jià)產(chǎn)品缺陷質(zhì)量觀不重視用戶測(cè)量只考慮現(xiàn)有用戶

UCD方法用戶驅(qū)動(dòng)以解決方案為中心多學(xué)科小組成員協(xié)同工作注重產(chǎn)品的外部設(shè)計(jì)專門考慮用戶體驗(yàn)以競(jìng)爭(zhēng)為目標(biāo)由用戶評(píng)價(jià)設(shè)計(jì)方案后才開發(fā)用戶質(zhì)量觀很重視用戶測(cè)量考慮當(dāng)前和將來所有用戶圖3.3UCD方法和傳統(tǒng)設(shè)計(jì)方法的比較

3.1.2硬件和硬件工程

基于計(jì)算機(jī)的系統(tǒng)離不開計(jì)算機(jī)硬件的支撐。計(jì)算機(jī)系統(tǒng)工程師根據(jù)系統(tǒng)需求為硬件系統(tǒng)指派任務(wù),產(chǎn)生硬件需求。

21世紀(jì)以來,信息可以很方便地通過計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)共享。作為網(wǎng)絡(luò)文件服務(wù)器的計(jì)算機(jī),可以給分布在網(wǎng)絡(luò)上不同站點(diǎn)的客戶提供共享的公用程序和數(shù)據(jù),這就是客戶/服務(wù)器計(jì)算模式。計(jì)算機(jī)的硬件工程是在幾十年電子設(shè)計(jì)經(jīng)驗(yàn)的基礎(chǔ)上發(fā)展起來的,一般將硬件工程分為三個(gè)階段。

硬件工程階段需解決的問題成果(一)硬件研制計(jì)劃需求分析根據(jù)功能可選擇、采購(gòu)的硬件?哪幾種硬件接口?必須制造的硬件?潛在的問題及資源?確定項(xiàng)目成本估計(jì)、工程進(jìn)度估計(jì)、硬件規(guī)格說明(二)硬件設(shè)計(jì)硬件實(shí)現(xiàn)確定硬件元素中的所有元件精確的功能、性能和接口需求。設(shè)計(jì)約束條件(如尺寸,環(huán)境)及測(cè)試準(zhǔn)則;必要時(shí)建造原型并對(duì)原型進(jìn)行測(cè)試;畫出生產(chǎn)圖、硬件規(guī)格說明書、對(duì)規(guī)格說明書評(píng)審和修改(三)生產(chǎn)、銷售售后服務(wù)質(zhì)量如何得到保證?產(chǎn)品的維護(hù)和修理如何實(shí)現(xiàn)?建立質(zhì)量保證方法、建立產(chǎn)品銷售機(jī)構(gòu)、儲(chǔ)備備件,售后服務(wù)表3.1硬件工程三個(gè)階段

3.1.3軟件和軟件工程

從系統(tǒng)工程的角度來看,軟件與硬件、軟件工程與硬件工程分別是基于計(jì)算機(jī)系統(tǒng)和基于計(jì)算機(jī)的系統(tǒng)工程的重要組成部分。系統(tǒng)工程的論證階段應(yīng)該確定系統(tǒng)的軟硬件功能和性能。系統(tǒng)對(duì)軟件提出的功能和性能要求將成為軟件需求分析的基礎(chǔ)。基于計(jì)算機(jī)系統(tǒng)的軟件要素由程序、數(shù)據(jù)和文檔組成。它們分為兩類應(yīng)用軟件與系統(tǒng)軟件:應(yīng)用軟件實(shí)現(xiàn)信息處理,系統(tǒng)軟件完成使應(yīng)用軟件能與其他系統(tǒng)要素交互的控制功能。

一個(gè)基于計(jì)算機(jī)的系統(tǒng)可以用輸入—處理—輸出(IPO)模型來表示。軟件要素在這個(gè)模型的各個(gè)方面都起著一定的作用。

(1)軟件從系統(tǒng)的外部實(shí)體或其他系統(tǒng)要素(包括宏要素)接收輸入信息。

(2)軟件還用于建立數(shù)據(jù)庫(kù)的接口,使程序能夠存取預(yù)先存儲(chǔ)的數(shù)據(jù)。(3)軟件實(shí)現(xiàn)系統(tǒng)功能所需要的計(jì)算方法。(4)在實(shí)際使用中,軟件必須產(chǎn)生輸出,把數(shù)據(jù)轉(zhuǎn)換成某種能適合于輸出介質(zhì)的格式,或適合于輸出設(shè)備接口的格式。軟件工程三個(gè)階段軟件工程階段必須完成的步驟階段成果(一)軟件定義制定軟件項(xiàng)目規(guī)劃;需求分析和定義;確定軟件性能和資源約束;軟件要素定義驗(yàn)收標(biāo)準(zhǔn)成本、工程進(jìn)度估計(jì);通過軟件原型化/信息域分析獲得軟件規(guī)格說明;對(duì)軟件規(guī)格說明技術(shù)評(píng)審(二)軟件開發(fā)、實(shí)現(xiàn)軟件總體結(jié)構(gòu)設(shè)計(jì)——軟件模塊結(jié)構(gòu);數(shù)據(jù)設(shè)計(jì)、過程設(shè)計(jì)——接口及信息結(jié)構(gòu);編碼——生成源程序代碼確定一些有效性準(zhǔn)則;對(duì)規(guī)格說明書評(píng)審修改;根據(jù)準(zhǔn)則判斷軟件質(zhì)量(三)檢驗(yàn)、發(fā)行、維護(hù)測(cè)試軟件,找出錯(cuò)誤:進(jìn)行單元測(cè)試——調(diào)試,組裝測(cè)試——調(diào)試;開發(fā)用戶文檔;把軟件發(fā)行給終端用戶對(duì)測(cè)試文檔、測(cè)試用例和測(cè)試結(jié)果進(jìn)行評(píng)審;建立配置管理機(jī)制;整個(gè)使用壽命中維護(hù)軟件;3.1.4人機(jī)工程

人機(jī)工程是應(yīng)用從心理學(xué)和方法論導(dǎo)出的知識(shí)來確定和設(shè)計(jì)高質(zhì)量HCI(人機(jī)界面)的多學(xué)科活動(dòng)。人機(jī)工程過程包括以下步驟:(1)活動(dòng)分析。

(2)語(yǔ)義分析和設(shè)計(jì):

(3)語(yǔ)法和詞法設(shè)計(jì):

(4)用戶環(huán)境設(shè)計(jì):

(5)原型:

人機(jī)工程的關(guān)鍵要素是設(shè)計(jì)一個(gè)整體解決方案,它應(yīng)該對(duì)用戶而言:易于購(gòu)買、易于安裝、易于學(xué)習(xí)、易于使用、直觀、吸引人、

有用3.1.5數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)工程

數(shù)據(jù)庫(kù)系統(tǒng)是基于計(jì)算機(jī)系統(tǒng)的重要組成部分,它將有關(guān)的硬件、軟件、數(shù)據(jù)和數(shù)據(jù)庫(kù)管理人員組合起來,為用戶提供信息服務(wù)。開發(fā)、運(yùn)行和管理一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)是一項(xiàng)復(fù)雜的數(shù)據(jù)庫(kù)工程,人們也常稱之為數(shù)據(jù)庫(kù)工程。

階段任務(wù)結(jié)果(一)需求分析、可行性研究調(diào)查用戶信息需求、處理要求進(jìn)行可行性論證;提出成本預(yù)算和工作計(jì)劃(二)選擇硬件和軟件應(yīng)確定數(shù)據(jù)管理系統(tǒng);支持?jǐn)?shù)據(jù)庫(kù)查詢、維護(hù)和分析確定運(yùn)行的操作系統(tǒng)、網(wǎng)絡(luò)環(huán)境(三)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)根據(jù)需求分析和數(shù)據(jù)分析;概念設(shè)計(jì);邏輯設(shè)計(jì);物理設(shè)計(jì);評(píng)審、測(cè)試;產(chǎn)生需求說明和數(shù)據(jù)說明;產(chǎn)生數(shù)據(jù)庫(kù)概念模型;產(chǎn)生邏輯模型;產(chǎn)生數(shù)據(jù)軟件工程的原則;生成各種文檔(四)運(yùn)行和管理及時(shí)補(bǔ)充、修改和更新數(shù)據(jù)庫(kù);數(shù)據(jù)的收集、整理、分類;儲(chǔ)存數(shù)據(jù)庫(kù)的管理和維護(hù)對(duì)數(shù)量大、類型多、關(guān)系復(fù)雜的數(shù)據(jù)存儲(chǔ)應(yīng)有利于數(shù)據(jù)的查詢、修改并盡量減少數(shù)據(jù)的冗余;為用戶提供培訓(xùn)及有關(guān)資料表3.4數(shù)據(jù)庫(kù)工程的階段

不同的數(shù)據(jù)存儲(chǔ)管理模式有不同的特點(diǎn),適用范圍也不相同。

3.2可行性研究

可行性研究的目的就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。

在討論一個(gè)項(xiàng)目是否可行,需要從市場(chǎng)可行性、技術(shù)可行性、經(jīng)濟(jì)可行性、法律可行性分析幾個(gè)方面著手進(jìn)行考慮。3.2.1可行性研究的任務(wù)

圖3.4表明了可行性研究的步驟

3.2.2市場(chǎng)可行性

要求在項(xiàng)目啟動(dòng)時(shí)定位目標(biāo)市場(chǎng),清楚在這個(gè)市場(chǎng)中的所有用戶及他們的特點(diǎn),并且清楚大部分目標(biāo)用戶當(dāng)前所采用的解決方案,從而掌握產(chǎn)品競(jìng)爭(zhēng)形勢(shì)。必須在項(xiàng)目一開始就得到這些信息。如果沒有這些信息或信息不全,那么接下來的設(shè)計(jì)活動(dòng)是否有效就值得懷疑了。3.2.3經(jīng)濟(jì)可行性

基于計(jì)算機(jī)系統(tǒng)的成本—效益分析是可行性研究的重要內(nèi)容,它用于評(píng)估基于計(jì)算機(jī)系統(tǒng)的經(jīng)濟(jì)合理性,給出系統(tǒng)開發(fā)的成本論證,并將估算的成本與預(yù)期的利潤(rùn)進(jìn)行對(duì)比。計(jì)算機(jī)系統(tǒng)的成本由四個(gè)部分組成:

①購(gòu)置并安裝軟硬件及有關(guān)設(shè)備的費(fèi)用;

②系統(tǒng)開發(fā)費(fèi)用;

③系統(tǒng)安裝、運(yùn)行和維護(hù)費(fèi)用;

④人員培訓(xùn)費(fèi)用。在系統(tǒng)分析和設(shè)計(jì)階段只能得到上述費(fèi)用的預(yù)算,即估算成本。在系統(tǒng)開發(fā)完畢并交付用戶運(yùn)行后,上述費(fèi)用的統(tǒng)計(jì)結(jié)果就是實(shí)際成本。

系統(tǒng)效益包括經(jīng)濟(jì)效益和社會(huì)效益兩部分。經(jīng)濟(jì)效益指應(yīng)用系統(tǒng)為用戶增加的收入,可以通過直接的或統(tǒng)計(jì)的方法估算。社會(huì)效益只能用定性的方法估算。1.成本估計(jì)(1)代碼行技術(shù)(2)任務(wù)分解技術(shù)

2.成本/效益分析

成本/效益分析的第一步是估計(jì)開發(fā)成本、運(yùn)行費(fèi)用和新系統(tǒng)將帶來的經(jīng)濟(jì)效益。3.貨幣的時(shí)間價(jià)值通常用利率的形式表示貨幣的時(shí)間價(jià)值。假設(shè)年利率為i,如果現(xiàn)在存入P元,則n年后可以得到的錢數(shù)為:F=P(1+i)n這也就是P元錢在n年后的價(jià)值。反之,如果n年后能收入F元錢,那么這些錢的現(xiàn)在價(jià)值是:P=F/(l+i)n

假定年利率為12%,利用上面計(jì)算貨幣現(xiàn)在價(jià)值的公式可以算出修改庫(kù)存清單系統(tǒng)后每年預(yù)計(jì)節(jié)省的錢的現(xiàn)在價(jià)值,如表所示。

年將來值(元)(l+i)n現(xiàn)在值(元)累計(jì)的現(xiàn)在值(元)125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.944.投資回收期

所謂投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間。投資回收期越短就越能獲得利潤(rùn)。例如,修改庫(kù)存清單系統(tǒng):兩年以后可以節(jié)省4225.12元,比最初的投資(5000元)還少774.88元;三年以后將再節(jié)省1779.45元,774.88/1779.45=0.44,因此,投資回收期是2.44年。

5.純收入

衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程的純收入,也就是在整個(gè)生命周期之內(nèi)系統(tǒng)的累計(jì)經(jīng)濟(jì)效益(折合成現(xiàn)在值)與投資之差。

3.2.4技術(shù)可行性

技術(shù)可行性的評(píng)估必須在軟件系統(tǒng)分析和定義過程中進(jìn)行,當(dāng)技術(shù)可行性確定后,就可以完成在規(guī)格說明書。一般地,技術(shù)可行性要考慮的情況包括:

開發(fā)風(fēng)險(xiǎn):在分析時(shí)給出的各種約束條件下,系統(tǒng)能否被設(shè)計(jì)出來,并實(shí)現(xiàn)必需的功能和性能?資源有效性:可用于開發(fā)系統(tǒng)元素的人員是否存在問題?是否具備用于建立系統(tǒng)的其他資源(硬件、軟件)?技術(shù):相關(guān)技術(shù)的發(fā)展是否能支持這個(gè)系統(tǒng)?3.2.5方案選擇

系統(tǒng)分析任務(wù)完成后,系統(tǒng)工程師開始研究問題求解方案。通常系統(tǒng)工程師將一個(gè)大的復(fù)雜系統(tǒng)分解為若干個(gè)子系統(tǒng);精確地定義子系統(tǒng)的界面、功能和性能;給出各子系統(tǒng)之間的關(guān)系。這樣可以降低解決方案的復(fù)雜性,有利于人員的組織和分工,提高系統(tǒng)開發(fā)效率和工作質(zhì)量??尚行匝芯康慕Y(jié)果可作為系統(tǒng)規(guī)格說明書的一個(gè)附件。

項(xiàng)目背景:?jiǎn)栴}描述;實(shí)現(xiàn)環(huán)境;限制條件;管理概要與注意事項(xiàng):重要的研究結(jié)果;說明;注意事項(xiàng);影響;候選方案:候選系統(tǒng)的配置;選擇最終方案的準(zhǔn)則;系統(tǒng)描述:簡(jiǎn)略的范圍描述;分配元素的可行性;市場(chǎng)可行性

:項(xiàng)目是否有潛在市場(chǎng),以及市場(chǎng)的變化對(duì)項(xiàng)目影響經(jīng)濟(jì)可行性(成本—效益分析):經(jīng)費(fèi)概算;預(yù)期的經(jīng)濟(jì)效益;技術(shù)可行性(技術(shù)風(fēng)險(xiǎn)評(píng)價(jià)):技術(shù)實(shí)力;已有工作基礎(chǔ);設(shè)備條件;法律可行性:系統(tǒng)開發(fā)可能導(dǎo)致的侵權(quán)、違法和責(zé)任;用戶使用可行性:用戶單位的行政管理、工作制度;使用人員的素質(zhì);其他與項(xiàng)目有關(guān)的問題:其他方案介紹;未來可能的變化。表3.7可行性研究報(bào)告目錄

3.3系統(tǒng)開發(fā)過程的新體系結(jié)構(gòu)

——快速原型與面向?qū)ο?/p>

1.存在的問題(1)有些類型的系統(tǒng)需求是模糊的(2)項(xiàng)目參與者之間存在通信鴻溝(3)預(yù)先定義的需求可能是過時(shí)的

2.解決問題的途徑

為克服傳統(tǒng)方法的缺點(diǎn),人們?cè)趯?shí)踐中逐漸創(chuàng)造出快速原型法和面向?qū)ο蠓椒ǖ溶浖こ痰男峦緩健?/p>

面向?qū)ο蟮慕y(tǒng)一軟件開發(fā)方法迭代開發(fā)模式

4.1需求分析基礎(chǔ)

4.1.1分析的任務(wù)與原則

4.1.2初步需求獲取技術(shù)

4.1.3需求建模

4.1.4開發(fā)原型系統(tǒng)

4.1.1分析的任務(wù)與原則

軟件需求分析的任務(wù)是:深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題。需求分析任務(wù)與其實(shí)現(xiàn)步驟如圖4.1所示。需求分析可分為需求提出、需求分析描述及需求評(píng)審三個(gè)階段。圖4.1需求提出和分析的結(jié)果需求提出需求提出主要集中于描述系統(tǒng)目的。需求提出和分析僅僅集中在使用者對(duì)系統(tǒng)的觀點(diǎn)上。用戶、開發(fā)人員和用戶確定一個(gè)問題領(lǐng)域,并定義一個(gè)描述該問題的系統(tǒng)。這樣的定義稱作系統(tǒng)規(guī)格說明,并且它在用戶和開發(fā)人員之間充當(dāng)合同。

需求分析描述

在問題分析階段分析人員的主要任務(wù)是:對(duì)用戶的需求進(jìn)行鑒別、綜合和建模,清除用戶需求的模糊性、歧義性和不一致性,分析系統(tǒng)的數(shù)據(jù)要求,為原始問題及目標(biāo)軟件建立邏輯模型。分析人員的主要做法是:要將對(duì)原始問題的理解與軟件開發(fā)經(jīng)驗(yàn)結(jié)合起來,以便發(fā)現(xiàn)哪些要求是由于用戶的片面性或短期行為所導(dǎo)致的不合理要求,哪些是用戶尚未提出但具有真正價(jià)值的潛在需求。

需求評(píng)審

在需求評(píng)審階段,分析人員要在用戶和軟件設(shè)計(jì)人員的配合下對(duì)自己生成的需求規(guī)格說明和初步的用戶手冊(cè)進(jìn)行復(fù)核,以確保軟件需求的完整、準(zhǔn)確、清晰、具體,并使用戶和軟件設(shè)計(jì)人員對(duì)需求規(guī)格說明和初步的用戶手冊(cè)的理解達(dá)成一致。一旦發(fā)現(xiàn)遺漏或模糊點(diǎn),必須盡快更正,再行檢查。

4.1.2初步需求獲取技術(shù)

為了完成軟件需求任務(wù),分析人員必須掌握一些基本技術(shù),主要有:初步需求獲取技術(shù)、需求建模、以及用于需求分析的快速原型技術(shù);一些公共的技術(shù)包括:采訪、觀察、先前的系統(tǒng)版本的測(cè)試和系統(tǒng)分析。作為一個(gè)好的需求獲取技術(shù)的顯著特征是:方便通信(可以通過易于理解的語(yǔ)言)。提供定義系統(tǒng)模塊的方法。鼓勵(lì)分析員用問題空間的術(shù)語(yǔ)而不是軟件術(shù)語(yǔ)去思考問題和編制文檔。允許并提醒分析員有多種可供選擇的設(shè)計(jì)方案。適應(yīng)需求的變化。4.1.3需求建模

由于用戶群體的各個(gè)用戶往往會(huì)從不同的角度、不同的抽象級(jí)別上闡述他們對(duì)原始問題的理解和對(duì)目標(biāo)軟件的需求,因此,有必要為原始問題及目標(biāo)軟件解建立模型。這種模型一方面用于精確地記錄用戶從各個(gè)視點(diǎn)、不同抽象級(jí)別上對(duì)原始問題及目標(biāo)軟件的描述;另一方面,它也將幫助分析人員去偽存真、由此及彼、由表及里挖掘用戶需求。建模的步驟是:

(1)獲得當(dāng)前系統(tǒng)的物理模型

(2)抽象出當(dāng)前系統(tǒng)的邏輯模型。

(3)建立目標(biāo)系統(tǒng)的邏輯模型。

圖4.2軟件需求建模的任務(wù)

4.1.4開發(fā)原型系統(tǒng)

快速原型方法核心思想是:在軟件開發(fā)的早期快速建立目標(biāo)軟件的原型,讓用戶對(duì)原型進(jìn)行評(píng)估并提出修改意見,當(dāng)原型幾經(jīng)改進(jìn)最終確定后,它將由軟件設(shè)計(jì)和編碼階段進(jìn)化成軟件產(chǎn)品;或者設(shè)計(jì)和編碼人員遵循原型所確立的外部特征實(shí)現(xiàn)軟件產(chǎn)品。把建立原型系統(tǒng)作為一種可能采取的策略的主要理由如下:(1)由于用戶與軟件設(shè)計(jì)人員認(rèn)識(shí)上的局限,不能預(yù)先指定所有要求,因此在開發(fā)過程中重復(fù)和反復(fù)是必要的和不可避免的;(2)在用戶和系統(tǒng)分析員之間存在固有的通信鴻溝,用戶需要一個(gè)“活的”系統(tǒng)模型,以便獲得實(shí)踐經(jīng)驗(yàn),以便溝通;(3)目前有快速建立原型系統(tǒng)的工具可供選用。4.2結(jié)構(gòu)化分析方法此方法基于模塊化的思想,采用“自頂向下,逐步求精”的技術(shù)對(duì)系統(tǒng)進(jìn)行劃分。結(jié)構(gòu)化方法是結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化編程的總稱。結(jié)構(gòu)化方法由于具有簡(jiǎn)單易懂、使用方便的特點(diǎn),且出現(xiàn)較早,所以獲得了廣泛的應(yīng)用。4.2結(jié)構(gòu)化分析方法4.2.1結(jié)構(gòu)化分析的策略

4.2.2數(shù)據(jù)流圖

4.2.3數(shù)據(jù)字典

4.2.4小說明

4.2.5結(jié)構(gòu)化分析實(shí)施步驟

4.2.1結(jié)構(gòu)化分析的策略

一旦基于計(jì)算機(jī)系統(tǒng)的功能被分配到各個(gè)系統(tǒng)元素,系統(tǒng)分析員就能夠據(jù)此建立起一個(gè)模型,用以表達(dá)系統(tǒng)元素之間的相互關(guān)系,并為今后的需求分析和設(shè)計(jì)奠定基礎(chǔ)。為了開發(fā)系統(tǒng)模型,使用一個(gè)“結(jié)構(gòu)模板”。

圖4.3結(jié)構(gòu)模板的格式

下圖給出傳送帶在線貨物分類系統(tǒng)的

總體結(jié)構(gòu)關(guān)系圖

4.2.2

數(shù)據(jù)流圖

數(shù)據(jù)流圖描繪系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動(dòng)和處理的情況。數(shù)據(jù)流圖的特點(diǎn)是:它是邏輯系統(tǒng)的圖形表示,容易理解,是極好的通信工具,設(shè)計(jì)數(shù)據(jù)流圖只需考慮系統(tǒng)必須完成的基本邏輯功能,不需要考慮如何實(shí)現(xiàn)這些功能,是軟件設(shè)計(jì)很好的出發(fā)點(diǎn)。1.符號(hào)數(shù)據(jù)源點(diǎn)或終點(diǎn):正方形(或立方體)。變換數(shù)據(jù)處理:圓角矩形(或圓形)。數(shù)據(jù)存儲(chǔ):開口矩形(或兩條平行橫線)。數(shù)據(jù)流:箭頭表示,即信息與數(shù)據(jù)的流動(dòng)方向。

數(shù)據(jù)流圖有四種基本符號(hào)。2.例子

假設(shè)一家工廠的采購(gòu)部每天需要一張定貨報(bào)表,報(bào)表按零件編號(hào)排序,表中列出所有需要再次定貨的零件。對(duì)于每個(gè)再次定貨的零件應(yīng)該列出下述數(shù)據(jù):零件編號(hào),零件名稱,定貨數(shù)量,目前價(jià)格,主要供應(yīng)者,次要供應(yīng)者。零件入庫(kù)或出庫(kù)被稱為事務(wù),通過放在倉(cāng)庫(kù)中的CRT終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫(kù)存數(shù)量少于庫(kù)存量臨界值時(shí)就應(yīng)該再次定貨。定貨系統(tǒng)的數(shù)據(jù)流圖的成份

源點(diǎn)/終點(diǎn)處理采購(gòu)員倉(cāng)庫(kù)管理員產(chǎn)生報(bào)表處理事務(wù)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)定貨報(bào)表零件編號(hào)零件名稱定貨數(shù)量目前價(jià)格主要供應(yīng)者次要供應(yīng)者定貨信息(定貨報(bào)表)庫(kù)存清單*零件編號(hào)*庫(kù)存量庫(kù)存量臨界值事務(wù)

零件編號(hào)*事務(wù)類型數(shù)量*

定貨系統(tǒng)基本系統(tǒng)模型把處理事務(wù)功能進(jìn)一步分解后的數(shù)據(jù)流圖

3.命名

數(shù)據(jù)流圖中每個(gè)成份的命名是否恰當(dāng),直接影響數(shù)據(jù)流圖的可理解性。

為數(shù)據(jù)流命名:(1)名字應(yīng)代表整個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))的內(nèi)容,而不是僅僅反映它的某些成份。(2)不要使用空洞的、缺乏具體含義的名字(如“數(shù)據(jù)”、“信息”、“輸入”之類)。(3)如果在為某個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))起名字時(shí)遇到了困難,則很可能是因?yàn)閷?duì)數(shù)據(jù)流圖分解不恰當(dāng)造成的,應(yīng)該試試重新分解,看是否能克服這個(gè)困難。為處理命名:

(1)通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的處理命名

(2)名字應(yīng)該反映整個(gè)處理的功能,而不是它的一部分功能。(3)名字最好由一個(gè)具體的及物動(dòng)詞,加上一個(gè)具體的賓語(yǔ)組成。

(4)通常名字中僅包括一個(gè)動(dòng)詞,如果必須用兩個(gè)動(dòng)詞才能描述整個(gè)處理的功能,則把它再分解成兩個(gè)處理可能更恰當(dāng)些。(5)如果在為某個(gè)處理命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)了分解不當(dāng)?shù)嫩E象,應(yīng)考慮重新分解。4.用途

畫數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具。

數(shù)據(jù)流圖的另一個(gè)主要用途是作為分析和設(shè)計(jì)的工具。

4.2.3數(shù)據(jù)字典

1.?dāng)?shù)據(jù)字典的內(nèi)容(1)數(shù)據(jù)流(2)數(shù)據(jù)流分量(即數(shù)據(jù)元素)(3)數(shù)據(jù)存儲(chǔ)(4)處理

2.定義數(shù)據(jù)的方法

由數(shù)據(jù)元素組成數(shù)據(jù)的方式有下述幾種基本類型:(1)順序:即以確定次序連接兩個(gè)或多個(gè)分量。(2)選擇:即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。(3)重復(fù):即把指定的分量重復(fù)零次或多次。3.實(shí)例

(1)數(shù)據(jù)流條目一個(gè)完整的數(shù)據(jù)流條目應(yīng)該包括以下內(nèi)容:名稱描述頻率和數(shù)據(jù)量數(shù)據(jù)結(jié)構(gòu)例如,“圖書管理系統(tǒng)”中的“入庫(kù)單”是一個(gè)數(shù)據(jù)流,對(duì)它的說明如下:入庫(kù)單=分類目錄號(hào)+數(shù)量+書名+作者+內(nèi)容摘要+價(jià)格+購(gòu)書日期(2)數(shù)據(jù)存儲(chǔ)條目名稱描述數(shù)據(jù)存儲(chǔ)方式關(guān)鍵碼頻率和數(shù)據(jù)量安全性要求數(shù)據(jù)結(jié)構(gòu)例如,同樣圖書管理系統(tǒng)中的“目錄文件”是個(gè)數(shù)據(jù)存儲(chǔ),對(duì)它的說明如下:文件名:目錄文件組成:{分類目錄號(hào)+書名+作者+內(nèi)容摘要+價(jià)格+入庫(kù)日期+總數(shù)+庫(kù)存數(shù)+{圖書流水號(hào)}}4.2.4小說明

小說明是用來描述加工的。集中描述一個(gè)加工“做什么”,即加工邏輯,也包括其他一些和加工有關(guān)的信息,如執(zhí)行條件、優(yōu)先級(jí)、執(zhí)行頻率、出錯(cuò)處理等。

目前小說明一般用自然語(yǔ)言、結(jié)構(gòu)化自然語(yǔ)言、判定表和判定樹等來描述。在描繪復(fù)雜的關(guān)系時(shí),圖形比文字?jǐn)⑹鰞?yōu)越得多,它形象直觀,一目了然。4.2.5結(jié)構(gòu)化分析實(shí)施步驟

第一步,確定系統(tǒng)邊界,畫出系統(tǒng)環(huán)境圖。

第二步,自頂向下,畫出各層數(shù)據(jù)流圖。分層數(shù)據(jù)流圖和圖中的加工進(jìn)行編號(hào)規(guī)則

(1)頂層圖不參與數(shù)據(jù)流圖編號(hào),頂層圖中的惟一加工也不編號(hào)。(2)從0層圖開始的所有子圖和加工均需編號(hào),子圖的編號(hào)為分解的父圖中相應(yīng)加工編號(hào)。(3)加工的編號(hào)由相應(yīng)的子圖號(hào)、小數(shù)點(diǎn)、加工在子圖中的順序號(hào)組成。第三步,定義數(shù)據(jù)字典。

第四步,定義小說明。

第五步,匯總前面各步驟的結(jié)果。

注意事項(xiàng):(1)模型平衡規(guī)則

數(shù)據(jù)流圖中所有的圖形元素必須根據(jù)它們的用法規(guī)則正確使用。

數(shù)據(jù)字典中的定義使用合法的邏輯構(gòu)造符號(hào)。數(shù)據(jù)流圖中最底層的加工必須在小說明中有定義。父圖和子圖必須平衡。

小說明和數(shù)據(jù)流圖的圖形表示必須一致。

(2)控制復(fù)雜性的一些規(guī)則

上層數(shù)據(jù)流可以打包(打包的數(shù)據(jù)流作特殊標(biāo)記),上、下層數(shù)據(jù)流的對(duì)應(yīng)關(guān)系用數(shù)據(jù)字典描述(編號(hào)對(duì)應(yīng)),同層的數(shù)據(jù)流也可編號(hào)對(duì)應(yīng),避免形成復(fù)雜的連線;只有一點(diǎn)限制,數(shù)據(jù)流的性質(zhì)(輸入、輸出)必須一致。

4.3其它分析方法與圖形工具

1.結(jié)構(gòu)化自然語(yǔ)言結(jié)構(gòu)化自然語(yǔ)言的語(yǔ)法通常分為內(nèi)外兩層,外層語(yǔ)法描述操作的控制結(jié)構(gòu),如順序、選擇、循環(huán)等,這些控制結(jié)構(gòu)將加工中的各個(gè)操作連接起來。內(nèi)層語(yǔ)法一般沒有什么限制,就用自然語(yǔ)言描述。2.層次方框圖

層次方框圖用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。樹形結(jié)構(gòu)的頂層是一個(gè)單獨(dú)的矩形框,它代表完整的數(shù)據(jù)結(jié)構(gòu),下面的各層矩形框代表這個(gè)數(shù)據(jù)的子集,最底層的各個(gè)框代表組成這個(gè)數(shù)據(jù)的實(shí)際數(shù)據(jù)元素(不能再分割的元素)。

例如,描繪一家計(jì)算機(jī)公司全部產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)可以用圖中的層次方框圖表示。這家公司的產(chǎn)品由硬件、軟件和服務(wù)三類產(chǎn)品組成,軟件產(chǎn)品又分為系統(tǒng)軟件和應(yīng)用軟件,系統(tǒng)軟件又進(jìn)一步分為操作系統(tǒng)、編譯程序和軟件工具……。3.Warnier圖

用Warnier圖可以表明信息的邏輯組織

軟件產(chǎn)品系統(tǒng)軟件應(yīng)用軟件操作系統(tǒng)(P1)編譯程序(P2)軟件工具編譯程序(P3)測(cè)試驅(qū)動(dòng)程序(P4)設(shè)計(jì)輔助工具(P5)4.IPO圖

IPO圖是輸入/處理/輸出圖的簡(jiǎn)稱

,它的基本形式是在左邊的框中列出有關(guān)的輸入數(shù)據(jù),在中間的框內(nèi)列出主要的處理,在右邊的框內(nèi)列出產(chǎn)生的輸出數(shù)據(jù)。

圖4.11IPO圖的一個(gè)例子圖4.12

改進(jìn)的IPO圖5.判定表

判定表常用來描述一些不易用語(yǔ)言表達(dá)清楚或需要很大篇幅才能用語(yǔ)言表達(dá)清楚的加工。旅游時(shí)間7~9,12月l~6,10,11月定票量≤20>20≤20>20折扣量5%15%20%30%表4.2旅游價(jià)格表

在表4.2中,I區(qū)的條件類別有兩個(gè):旅游時(shí)間和訂票量,Ⅱ區(qū)內(nèi)列出所有四種條件組合,Ⅲ區(qū)內(nèi)只有一個(gè)操作,Ⅳ區(qū)標(biāo)明在某種條件組合下操作的執(zhí)行情況。I條件類別Ⅱ條件組合III操作Ⅳ操作的執(zhí)行表4.3判定表

4.4實(shí)體——關(guān)系圖

4.4.1數(shù)據(jù)對(duì)象、屬性與關(guān)系

4.4.2E-R方法和實(shí)體模型

4.4.3數(shù)據(jù)結(jié)構(gòu)的規(guī)范化

4.4.1數(shù)據(jù)對(duì)象、屬性與關(guān)系

對(duì)象可以是人、是物,還可以是實(shí)際的東西或概念的東西,例如,大學(xué)、城市等。對(duì)象還可以指事物與事物間的聯(lián)系。屬性則是指事物的性質(zhì)或特征,數(shù)據(jù)對(duì)象由其屬性刻畫。

例如,學(xué)生文件就由多個(gè)記錄組成,這些記錄放在一起構(gòu)成一個(gè)二維表。表中每一橫排叫做一個(gè)記錄或元組,每一縱列叫做一個(gè)屬性,參看表4.4。

表4.4學(xué)生文件學(xué)號(hào)姓名性別年齡專業(yè)951136鄭楓女19計(jì)算機(jī)科學(xué)與技術(shù)951137雷昊男18計(jì)算機(jī)科學(xué)與技術(shù)951138李博達(dá)男18機(jī)械工程為確保模型的一致性并消除數(shù)據(jù)冗余,分析人員要掌握以下規(guī)范化規(guī)則:(1)數(shù)據(jù)對(duì)象的任何實(shí)例對(duì)每個(gè)屬性必須有且僅有一個(gè)屬性值。(2)屬性是原子數(shù)據(jù)項(xiàng),不能包含內(nèi)部數(shù)據(jù)結(jié)構(gòu)。(3)如果數(shù)據(jù)對(duì)象的關(guān)鍵屬性多于一個(gè),那么其他的非關(guān)鍵屬性必須表示整個(gè)數(shù)據(jù)對(duì)象而不是部分關(guān)鍵屬性的特征。(4)所有的非關(guān)鍵屬性必須表示整個(gè)對(duì)象而不是部分屬性的特征。4.4.2E-R方法和實(shí)體模型

實(shí)體——關(guān)系圖是表示數(shù)據(jù)對(duì)象及其關(guān)的圖形語(yǔ)言機(jī)制。l方框——表示實(shí)體型。在框內(nèi)寫上實(shí)體名,如“學(xué)生”實(shí)體型。l橢圓框——表示實(shí)體有關(guān)的屬性。橢圓內(nèi)標(biāo)記屬性的名字。l

箭頭——表示實(shí)體與屬性之間的聯(lián)系。

l菱形框——表示實(shí)體之間的聯(lián)系。

一對(duì)一的聯(lián)系(1:1)——即一個(gè)實(shí)體在此種聯(lián)系下只能對(duì)應(yīng)一個(gè)實(shí)體;一對(duì)多的聯(lián)系(1:n)——即一個(gè)實(shí)體在此種聯(lián)系下可對(duì)應(yīng)其他一個(gè)以上的實(shí)體;多對(duì)多的聯(lián)系(m:n)——即一個(gè)實(shí)體類型中的多個(gè)實(shí)體與另一個(gè)實(shí)體類型中的多個(gè)實(shí)體相聯(lián)系。通常實(shí)體聯(lián)系有三種類型:例如,在教學(xué)管理中,學(xué)校開設(shè)若干門課程,一個(gè)教師可以教授其中的一門或多門課程,每位學(xué)生也需要學(xué)習(xí)其中的幾門課程。因此,教學(xué)管理中涉及的對(duì)象(實(shí)體型)有學(xué)生、教師和課程。用E-R圖描述它們之間的聯(lián)系,如圖所示。其中,學(xué)生與課程是多對(duì)多的聯(lián)系,而教師與課程的聯(lián)系是一對(duì)多。

教學(xué)管理E-R圖4.4.3數(shù)據(jù)結(jié)構(gòu)的規(guī)范化

下面用圖所示的教學(xué)管理的例子說明如何進(jìn)行規(guī)范化。有三個(gè)實(shí)體類型,即:課程、學(xué)生和教師,用三個(gè)關(guān)系分別保存它們的有關(guān)信息:

教師(職工號(hào),姓名,年齡,職稱,工資級(jí)別,工資)課程(課程號(hào),課程名,學(xué)分,學(xué)時(shí),課程類型)選課(學(xué)號(hào),課程號(hào),聽課出勤率,作業(yè)完成率,分?jǐn)?shù))教課(職工號(hào),課程號(hào))

(1)關(guān)系中所有屬性都是“單純域”,即不出現(xiàn)“表中有表”。(2)非主屬性完全函數(shù)依賴于關(guān)鍵字。(3)非主屬性相互獨(dú)立,即任何非主屬性間不存在函數(shù)依賴。如果一個(gè)關(guān)系連條件(1)都不滿足,則這個(gè)關(guān)系是非規(guī)范化的。如果一個(gè)關(guān)系僅滿足條件(1),則這個(gè)關(guān)系滿足第一范式(1NF)。如果一個(gè)關(guān)系滿足條件(1)、(2),但不滿足(3),則這個(gè)關(guān)系滿足第二范式(2NF)。如果一個(gè)關(guān)系同時(shí)滿足條件(1)、(2)和(3),則這個(gè)關(guān)系滿足第三范式(3NF)判斷規(guī)范化程度的條件是:4.5需求規(guī)格說明與評(píng)審

4.5.1需求規(guī)格說明書的目標(biāo)與內(nèi)容4.5.2需求評(píng)審

4.5.1需求規(guī)格說明書的目標(biāo)與內(nèi)容

需求規(guī)格說明書主要起以下作用:(1)軟件開發(fā)機(jī)構(gòu)和用戶之間一份事實(shí)上的技術(shù)合同書。(2)軟件開發(fā)機(jī)構(gòu)下一步進(jìn)行設(shè)計(jì)和編碼的基礎(chǔ)。(3)測(cè)試和驗(yàn)收目標(biāo)系統(tǒng)的依據(jù)。需求規(guī)格說明書的主要作用:(1)軟件開發(fā)機(jī)構(gòu)和用戶之間一份事實(shí)上的技術(shù)合同書。(2)軟件開發(fā)機(jī)構(gòu)下一步進(jìn)行設(shè)計(jì)和編碼的基礎(chǔ)。(3)測(cè)試和驗(yàn)收目標(biāo)系統(tǒng)的依據(jù)。4.5.2需求評(píng)審

正確性

無(wú)二義性

完整性

可驗(yàn)證性

一致性

可理解性可修改性

可跟蹤性

5.1總體設(shè)計(jì)的過程 5.1.1設(shè)計(jì)供選擇的方案 5.1.2推薦最佳實(shí)現(xiàn)方案退出 5.1.3設(shè)計(jì)軟件結(jié)構(gòu) 5.1.4數(shù)據(jù)庫(kù)設(shè)計(jì) 5.1.5制定測(cè)試計(jì)劃5.1.1設(shè)計(jì)供選擇的方案需求分析階段得出的數(shù)據(jù)流圖是總體設(shè)計(jì)的根本出發(fā)點(diǎn)。通常,選取的這些方案中至少應(yīng)包括低成本、中成本和高成本的三種方案類型。對(duì)每個(gè)合理方案要提供以下幾方面資料:(1)系統(tǒng)流程圖;(2)數(shù)據(jù)字典;(3)成本/效益分析;(4)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。5.1.2

推薦最佳方案分析員從合理方案中選擇一個(gè)最佳方案向用戶推薦,并為推薦的方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。對(duì)于分析員推薦的最佳方案,用戶和有關(guān)專家應(yīng)該認(rèn)真審查。如果確認(rèn)該方案確實(shí)符合用戶的需要,并且在現(xiàn)有條件下完全能夠?qū)崿F(xiàn),則應(yīng)該提請(qǐng)使用部門負(fù)責(zé)人進(jìn)一步審批。在使用部門負(fù)責(zé)人也接受了分析員所推薦的方案之后,方可進(jìn)入總體設(shè)計(jì)過程的下一步工作,即結(jié)構(gòu)設(shè)計(jì)階段。過程設(shè)計(jì):確定每個(gè)模塊的處理過程。結(jié)構(gòu)設(shè)計(jì):確定系統(tǒng)由哪些模塊組成,以及這些模塊之間的相互關(guān)系。5.1.3

設(shè)計(jì)軟件結(jié)構(gòu)

對(duì)于大型系統(tǒng)的設(shè)計(jì),通常分為兩個(gè)階段:結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。其中,結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),而過程設(shè)計(jì)則是詳細(xì)設(shè)計(jì)階段的任務(wù)。5.1.4

數(shù)據(jù)庫(kù)設(shè)計(jì)

數(shù)據(jù)庫(kù)的應(yīng)用越來越廣泛,目前大多數(shù)的系統(tǒng)都要用到數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)設(shè)計(jì)是一項(xiàng)專門的技術(shù),包括模式設(shè)計(jì)、子模式設(shè)計(jì)、完整性和安全性設(shè)計(jì)和優(yōu)化處理等。5.1.5

制定測(cè)試計(jì)劃

在軟件開發(fā)的早期階段提前考慮軟件的測(cè)試計(jì)劃是很有必要的。這樣能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意到軟件的測(cè)試問題,從而有利于提高軟件的可測(cè)試性??傮w設(shè)計(jì)階段的文檔(1)總體設(shè)計(jì)說明書(包括系統(tǒng)實(shí)現(xiàn)方案和軟件模塊結(jié)構(gòu));(2)測(cè)試計(jì)劃(包括測(cè)試策略、測(cè)試方案、預(yù)測(cè)的測(cè)試結(jié)果、測(cè)試進(jìn)度計(jì)劃等);(3)用戶手冊(cè)(根據(jù)總體設(shè)計(jì)階段的結(jié)果,編寫的初步的用戶操作手冊(cè));(4)詳細(xì)的實(shí)現(xiàn)計(jì)劃;(5)數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果。5.2軟件設(shè)計(jì)基本原理 5.2.1模塊化 5.2.2抽象 5.2.3信息隱蔽退出 5.2.4模塊獨(dú)立性模塊:又稱構(gòu)件,是能夠單獨(dú)命名并獨(dú)立地完成一定功能的程序語(yǔ)句的集合。例如高級(jí)語(yǔ)言中的過程、函數(shù)、子程序等都可作為模塊。5.2.1模塊化模塊化是軟件的一個(gè)重要屬性。模塊化的特性提供了人們處理復(fù)雜的問題的一種方法,同時(shí)也使得軟件能夠被有效地管理。這種“分而治之”的思想提供了模塊化的根據(jù):把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。根據(jù)前面的結(jié)論,我們可以得出下面的不等式:E(P1+P2)>E(P1)+E(P2)這個(gè)不等式表明:?jiǎn)为?dú)解決問題P1和P2所需的工作量之和,比把P1和P2合起來作為一個(gè)問題來解決時(shí)所需的工作量要少。有兩個(gè)函數(shù):C(x)表示問題x的復(fù)雜程度;E(x)表示解決問題x所需要的工作量(時(shí)間)。對(duì)于兩個(gè)問題P1和P2,如果:C(P1)>C(P2)則:E(P1)>E(P2)另一個(gè)有趣的特性是:C(P1+P2)>C(P1)+C(P2)模塊化和軟件成本的關(guān)系我們?cè)诳紤]問題時(shí),集中考慮和當(dāng)前問題有關(guān)的方面,而忽略和當(dāng)前問題無(wú)關(guān)的方面,這就是抽象?;蛘哒f抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。5.2.2抽象軟件工程過程的每一步,都是對(duì)軟件解法的抽象層次的一次細(xì)化。在可行性研究階段,軟件被看作是一個(gè)完整的系統(tǒng)部分;在需求分析期間,我們使用在問題環(huán)境中熟悉的術(shù)語(yǔ)來描述軟件的解法;當(dāng)我們由總體設(shè)計(jì)階段轉(zhuǎn)入詳細(xì)設(shè)計(jì)階段時(shí),抽象的程度進(jìn)一步減少;最后,當(dāng)源程序?qū)懗鰜頃r(shí),也就達(dá)到了抽象的最低層。信息隱蔽原理認(rèn)為:模塊所包含的信息(過程和數(shù)據(jù))對(duì)于其他模塊來說應(yīng)該是隱蔽的。也就是說,模塊應(yīng)當(dāng)被這樣規(guī)定和設(shè)計(jì),使得包含在模塊中的信息(過程或數(shù)據(jù))對(duì)于其它不需要這些信息的模塊來說,是不能訪問的,或者說是“不可見”的。5.2.3信息隱蔽信息隱蔽對(duì)于軟件的測(cè)試與維護(hù)都有很大的好處。因?yàn)閷?duì)于軟件的其它部分來說,絕大多數(shù)數(shù)據(jù)和過程都是隱蔽的,這樣,在修改期間由于疏忽而引入的錯(cuò)誤所造成的影響就可以局限在一個(gè)或幾個(gè)模塊內(nèi)部,不至波及到軟件的其他部分。模塊的獨(dú)立性是軟件質(zhì)量的關(guān)鍵:(1)模塊化程度較高的軟件容易開發(fā);(2)模塊化程度較高的軟件也比較容易測(cè)試和維護(hù)。5.2.4模塊獨(dú)立性模塊的獨(dú)立性的度量標(biāo)準(zhǔn):耦合和內(nèi)聚。1、耦合耦合:軟件結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)程度的度量。常見的耦合:(1)非直接耦合(2)數(shù)據(jù)耦合(3)標(biāo)記耦合(4)控制耦合(5)公共耦合(6)內(nèi)容耦合設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,避免使用內(nèi)容耦合。2、內(nèi)聚內(nèi)聚:模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。常見的內(nèi)聚:(1)偶然內(nèi)聚(2)邏輯內(nèi)聚(3)時(shí)間內(nèi)聚(4)過程內(nèi)聚(5)通信內(nèi)聚(6)順序內(nèi)聚(7)功能內(nèi)聚5.3設(shè)計(jì)準(zhǔn)則1.盡力提高模塊獨(dú)立性2.選擇合適的模塊規(guī)模3.模塊的深度、寬度、扇出和扇入應(yīng)適當(dāng)4.模塊的作用范圍應(yīng)該在控制范圍之內(nèi)5.降低模塊接口的復(fù)雜程度6.設(shè)計(jì)單入口單出口的模塊,避免“病態(tài)連接”5.4總體設(shè)計(jì)的圖形描述工具 5.4.1層次圖 5.4.2HIPO圖 5.4.3結(jié)構(gòu)圖退出5.4.1層次圖

正文加工系統(tǒng)的層次圖5.4.2HIPO圖帶編號(hào)的層次圖(H圖)5.4.3結(jié)構(gòu)圖軟件結(jié)構(gòu)圖的基本符號(hào)產(chǎn)生最佳解的結(jié)構(gòu)圖5.5結(jié)構(gòu)化設(shè)計(jì)方法 5.5.1數(shù)據(jù)流圖的類型 5.5.2設(shè)計(jì)步驟 5.5.3變換設(shè)計(jì)退出 5.5.4事務(wù)設(shè)計(jì) 5.5.5設(shè)計(jì)的后處理5.5.1數(shù)據(jù)流圖的類型1、變換型數(shù)據(jù)流圖2、事務(wù)型數(shù)據(jù)流圖5.5.2設(shè)計(jì)步驟5.5.3變換設(shè)計(jì)我們通過一個(gè)汽車數(shù)字儀表板的設(shè)計(jì)來介紹變換分析的過程。假設(shè)儀表板的功能如下:(1)通過模/數(shù)(A/D)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口;(2)在發(fā)光二極管(LCD)面板上顯示數(shù)據(jù);(3)指示每小時(shí)英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)(mpg)等等;(4)指示加速或減速;(5)超速警告:如果車速超過55英里/小時(shí),則發(fā)出超速警告鈴聲。在軟件需求分析階段,應(yīng)該對(duì)上述每項(xiàng)性能和其它要求進(jìn)行全面的分析,并建立起相應(yīng)的文檔資料,得出數(shù)據(jù)流圖。具體的設(shè)計(jì)步驟如下:1、復(fù)查基本系統(tǒng)模型2、復(fù)查并精化數(shù)據(jù)流圖3、確定數(shù)據(jù)流圖的類型這一步的任務(wù)是確定數(shù)據(jù)流圖是變換型數(shù)據(jù)流圖還是事務(wù)型數(shù)據(jù)流圖。從上圖中可以看出,數(shù)據(jù)沿著兩條輸入通路(旋轉(zhuǎn)信號(hào)和燃料流量傳感器信號(hào))進(jìn)入系統(tǒng),然后沿著五條通路(4個(gè)顯示,一個(gè)警告鈴聲)離開,沒有明顯的事務(wù)中心(雖然變換“計(jì)算mph與超速值”可以看作是一個(gè)事務(wù)中心)。因此,可以認(rèn)為這個(gè)數(shù)據(jù)流圖的類型是變換型數(shù)據(jù)流圖。4、確定輸入流和輸出流的邊界,從而孤立出變換中心5、進(jìn)行“第一級(jí)分解”第一級(jí)分解的方法第一級(jí)分解的結(jié)果6、進(jìn)行“第二級(jí)分解”第二級(jí)分解的方法第二級(jí)分解的結(jié)果:

未經(jīng)精化的輸入結(jié)構(gòu) 未經(jīng)精化的變換結(jié)構(gòu)

未經(jīng)精化的輸出結(jié)構(gòu)7、使用設(shè)計(jì)度量和設(shè)計(jì)準(zhǔn)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化

對(duì)于從前面的設(shè)計(jì)步驟得到的軟件結(jié)構(gòu),還可以進(jìn)行許多修改:(1)輸入結(jié)構(gòu)中的模塊“轉(zhuǎn)換成rpm”和“收集sps”可以合并;(2)模塊“確定加速/減速”可以放在模塊“計(jì)算mph”下面,以減少耦合;(3)模塊“加速/減速顯示”可以相應(yīng)地放在模塊“顯示mph”的下面。精化的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)5.5.4事務(wù)設(shè)計(jì)

事務(wù)分析的映射方法6.1結(jié)構(gòu)化程序設(shè)計(jì)

三種基本的控制結(jié)構(gòu)

逐步求精方法是由Wirth提出的一種早期的自頂向下的設(shè)計(jì)策略。面對(duì)現(xiàn)實(shí)的復(fù)雜問題,我們首先不要一下子就力圖觸及到問題解法的細(xì)節(jié),而應(yīng)當(dāng)先從問題的全局出發(fā),用較自然的抽象語(yǔ)句來表示問題,從而得到抽象算法。這時(shí)的算法主要是描述“做什么”,或者說是把問題描述為幾個(gè)子問題或子功能。接下來對(duì)子問題,也就是對(duì)抽象算法進(jìn)行細(xì)化,在這一階段設(shè)計(jì)的算法中,已經(jīng)開始含有程序設(shè)計(jì)語(yǔ)言的成分。隨著算法的不斷細(xì)化,越來越多地開始完成“如何做”,算法中程序設(shè)計(jì)語(yǔ)言的成分也越來越多,當(dāng)最后把算法全部細(xì)化為程序設(shè)計(jì)語(yǔ)言描述時(shí),程序設(shè)計(jì)也就隨之完成了。結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu),并且只包含順序、選擇和循環(huán)三種控制結(jié)構(gòu)。其他常用的控制結(jié)構(gòu)6.2詳細(xì)設(shè)計(jì)工具 6.2.1程序流程圖 6.2.2盒圖退出 6.2.3PAD圖 6.2.4過程設(shè)計(jì)語(yǔ)言 6.2.5判定表 6.2.6判定樹6.2.1程序流程圖程序流程圖中常用的符號(hào)程序流程圖雖然比較直觀,靈活,并且比較容易掌握,但是它的隨意性和靈活性卻使它不可避免地存在著一些缺點(diǎn):(1)由于程序流程圖的特點(diǎn),它本身并不是逐步求精的好工具。因?yàn)樗钩绦騿T容易過早地考慮程序的具體控制流程,而忽略了程序的全局結(jié)構(gòu);(2)程序流程圖中用箭頭代表控制流,這樣使得程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制;(3)程序流程圖在表示數(shù)據(jù)結(jié)構(gòu)方面存在不足。6.2.2

盒圖(N-S圖)N-S圖的基本符號(hào)N-S圖有以下一些特點(diǎn):(1)功能域(即某一個(gè)特定控制結(jié)構(gòu)的作用域)有明確的規(guī)定,并且可以很直觀地從N-S圖上看出來;(2)它的控制轉(zhuǎn)移不能任意規(guī)定,必須遵守結(jié)構(gòu)化程序設(shè)計(jì)的要求;(3)很容易確定局部數(shù)據(jù)和全局?jǐn)?shù)據(jù)的作用域;(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。6.2.3

PAD圖

PAD圖的基本符號(hào)PAD圖提供的定義功能PDL語(yǔ)言具有下述特點(diǎn):(1)PDL雖然不是程序設(shè)計(jì)語(yǔ)言,但是它與高級(jí)程序設(shè)計(jì)語(yǔ)言非常類似,只要對(duì)PDL描述稍加變換就可變成源程序代碼。因此,它是詳細(xì)設(shè)計(jì)階段很受歡迎的表達(dá)工具。(2)用PDL寫出的程序,既可以很抽象,又可以很具體。因此,容易實(shí)現(xiàn)自頂向下逐步求精的設(shè)計(jì)原則。(3)PDL描述同自然語(yǔ)言很接近,易于理解。(4)PDL描述可以直接作為注釋插在源程序中,成為程序的內(nèi)部文檔。這對(duì)提高程序的可讀性是非常有益的。(5)PDL描述與程序結(jié)構(gòu)相似,因此自動(dòng)產(chǎn)生程序比較容易。PDL的缺點(diǎn)是不如圖形描述形象直觀,因此人們常常將PDL描述與一種圖形描述結(jié)合起來使用。6.2.4

過程設(shè)計(jì)語(yǔ)言6.2.5

判定表

一張判定表由四部分組成:(1)左上部列出所有條件;(2)左下部是所有可能做的動(dòng)作;(3)右上部為各種可能組合條件,其中每一列表示一種可能組合;(4)右下部的每一列是和每一種條件組合所對(duì)應(yīng)的應(yīng)做的工作。

12345教授

TFFF副教授

FTFF講師

FFTF助教

FFFT講座TFFFF50×

30

×

25

×

20

×

15

×例:某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各種性質(zhì)的講座,無(wú)論教師是什么職稱,每課時(shí)津貼費(fèi)一律是50元;而對(duì)于一般的授課,則根據(jù)教師的職稱來決定每課時(shí)津貼費(fèi):教授30元,副教授25元,講師20元,助教15元。6.2.6

判定樹

教師課時(shí)津貼判定樹6.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 6.3.1Jackson圖 6.3.2Jackson程序設(shè)計(jì)方法退出6.3.1Jackson圖Jackson圖表示方法Jackson圖的優(yōu)點(diǎn):(1)Jackson圖不僅便于表示層次結(jié)構(gòu),而且也有利于對(duì)結(jié)構(gòu)自頂向下分解;(2)Jackson圖形象直觀,可讀性好;(3)Jackson圖不僅能表示數(shù)據(jù)結(jié)構(gòu),也能表示程序結(jié)構(gòu)(因?yàn)槌绦蚪Y(jié)構(gòu)也可以由上述3種基本結(jié)構(gòu)組成)。Jackson圖的缺點(diǎn):在選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)中,選擇條件或循環(huán)結(jié)束條件不能直接在Jackson圖中表示出來。這樣就影響了圖形的表達(dá)能力,也不利于直接把圖翻譯成程序。改進(jìn)的Jackson圖例:高考后將考生的基本情況文件(簡(jiǎn)稱考生基本情況文件)和考生高考成績(jī)文件(簡(jiǎn)稱考分文件)合并成一個(gè)新文件(簡(jiǎn)稱考生新文件)??忌厩闆r文件和考分文件都是由考生記錄組成的。為簡(jiǎn)便起見,考生基本情況文件中的考生記錄的內(nèi)容包括:準(zhǔn)考證號(hào)、姓名、通訊地址??挤治募械目忌涗浀膬?nèi)容包括:準(zhǔn)考證號(hào)和各門考分。合并后的考生新文件自然也是由考生記錄組成,內(nèi)容包括:準(zhǔn)考證號(hào)、姓名、通訊地址和各門考分。Jackson程序設(shè)計(jì)方法由五個(gè)步驟組成:6.3.2Jackson程序設(shè)計(jì)方法第一步數(shù)據(jù)結(jié)構(gòu)表示對(duì)要求解的問題進(jìn)行分析,確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描述這些數(shù)據(jù)結(jié)構(gòu)。第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)的對(duì)應(yīng)關(guān)系找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,即有直接因果關(guān)系、在程序中可以同時(shí)處理的數(shù)據(jù)單元。需要注意的是,對(duì)于重復(fù)的數(shù)據(jù)單元,必須是重復(fù)的次序、次數(shù)都相同才有可能有對(duì)應(yīng)關(guān)系。第三步確定程序結(jié)構(gòu)圖根據(jù)下述三規(guī)則,由Jackson圖導(dǎo)出相應(yīng)的程序結(jié)構(gòu)圖:(1)為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中所處的層次,在程序結(jié)構(gòu)圖中的相應(yīng)層次畫一個(gè)處理框。如果這對(duì)數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)圖和輸出數(shù)據(jù)結(jié)構(gòu)圖中所處的層次不同,那么應(yīng)以它們?cè)谳斎霐?shù)據(jù)結(jié)構(gòu)圖和輸出數(shù)據(jù)結(jié)構(gòu)圖中層次較低的那個(gè)層次作為它們?cè)诔绦蚪Y(jié)構(gòu)圖中的處理框所處的層次;(2)對(duì)于輸入數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)它們所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為每個(gè)數(shù)據(jù)單元畫上相應(yīng)的處理框;(3)對(duì)于輸出數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)它們所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為每個(gè)數(shù)據(jù)單元畫上相應(yīng)的處理框。實(shí)際上,這一步是一個(gè)綜合的過程:每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元合畫一個(gè)處理框,沒有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元?jiǎng)t各畫一個(gè)處理框。第四步列出并分配所有操作和條件列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。操作:(1)停止;(2)打開兩個(gè)輸入文件;(3)建立輸出文件。(4)從輸入文件中各讀一條記錄。(5)生成一條新記錄。(6)將新記錄寫入輸出文件。(7)關(guān)閉全部文件。條件:I(1)文件結(jié)束。把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置第五步用偽碼表示程序Jackson方法中使用的偽碼與Jackson圖是完全對(duì)應(yīng)的。針對(duì)三種基本程序結(jié)構(gòu),有相對(duì)應(yīng)的Jackson偽碼。(1)順序結(jié)構(gòu)AseqBCDAend(2)選擇結(jié)構(gòu)(3)重復(fù)結(jié)構(gòu)Aselectcondition1BAorcondition2CAorcondition3DAendAiteruntil(或while)conditionBAend用Jackson偽碼描述的程序:產(chǎn)生新文件seq打開兩個(gè)輸入文件從輸入文件中各讀一條記錄分析考生記錄iteruntil文件結(jié)束處理考生記錄seq產(chǎn)生準(zhǔn)考證號(hào)產(chǎn)生姓名產(chǎn)生通訊地址7.1程序設(shè)計(jì)語(yǔ)言 7.1.1程序設(shè)計(jì)語(yǔ)言的分類 7.1.2程序設(shè)計(jì)語(yǔ)言的特點(diǎn)退出 7.1.3程序設(shè)計(jì)語(yǔ)言的選擇7.1.1程序設(shè)計(jì)語(yǔ)言的分類大體上,程序設(shè)計(jì)語(yǔ)言分為以下幾類:(1)機(jī)器語(yǔ)言(2)匯編語(yǔ)言(3)高級(jí)語(yǔ)言由于高級(jí)語(yǔ)言種類繁多,我們可以從應(yīng)用特點(diǎn)、語(yǔ)言內(nèi)在特點(diǎn)和對(duì)客觀系統(tǒng)的描述三個(gè)不同的角度來對(duì)高級(jí)語(yǔ)言進(jìn)行分類。(1)基礎(chǔ)語(yǔ)言(例:FORTRAN,BASIC,COBOL和ALGOL)(2)結(jié)構(gòu)化語(yǔ)言(例:ALGOL,PL/1,PASCAL,C,Ada)(3)專用語(yǔ)言(例:APL,LISP,PROLOG,BLISS,F(xiàn)ORTH)1、從應(yīng)用特點(diǎn)的角度來分(1)系統(tǒng)實(shí)現(xiàn)語(yǔ)言(例:C語(yǔ)言)(2)靜態(tài)高級(jí)語(yǔ)言(例:FORTRAN、COBOL)(3)塊結(jié)構(gòu)高級(jí)語(yǔ)言(例:PASCAL,ALGOL)(4)動(dòng)態(tài)高級(jí)語(yǔ)言2、從語(yǔ)言內(nèi)在特點(diǎn)的角度來分(2)面向?qū)ο笳Z(yǔ)言對(duì)象+消息(1)面向過程語(yǔ)言數(shù)據(jù)結(jié)構(gòu)+算法3、從描述客觀系統(tǒng)的角度來分例:Delphi、VisualBasic、JAVA、C++。7.1.2

程序設(shè)計(jì)語(yǔ)言的特點(diǎn)

1.名字說明2.類型說明3.選擇控制結(jié)構(gòu)4.循環(huán)控制結(jié)構(gòu)5.程序?qū)ο蟮木植啃?.變量的局部共享7.異常處理8.獨(dú)立編譯7.1.3

程序設(shè)計(jì)語(yǔ)言的選擇

一般情況下,我們采用高級(jí)語(yǔ)言來編程。選擇具體高級(jí)語(yǔ)言類型的原則:(1)系統(tǒng)的應(yīng)用領(lǐng)域(2)用戶的要求(3)軟件的執(zhí)行環(huán)境(4)目標(biāo)系統(tǒng)的性能要求(5)程序員的知識(shí)水平(6)軟件的可移植性要求7.2程序設(shè)計(jì)風(fēng)格 7.2.1程序內(nèi)部的文檔 7.2.2數(shù)據(jù)說明 7.2.3語(yǔ)句構(gòu)造退出 7.2.4輸入/輸出 7.2.5效率程序內(nèi)部的文檔包括:恰當(dāng)?shù)臉?biāo)識(shí)符(變量和標(biāo)號(hào))的名字;適當(dāng)?shù)淖⑨專怀绦虻囊曈X組織。7.2.1程序內(nèi)部的文檔標(biāo)識(shí)符包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名以及數(shù)據(jù)區(qū)名、緩沖區(qū)名等。這些名字的選取應(yīng)含義鮮明,能正確地提示程序?qū)ο笏淼膶?shí)體。這對(duì)于幫助閱讀者理解程序是很重要的。例如,表示次數(shù)用times,表示總量用total等。名字的長(zhǎng)度不應(yīng)限制,但也不宜過長(zhǎng),太長(zhǎng)了容易出錯(cuò),應(yīng)選擇精煉且意義明確的名字,這樣才能簡(jiǎn)化程序語(yǔ)句,改善對(duì)程序功能的理解。如果名字使用縮寫,那么縮寫規(guī)則應(yīng)該一致,并且應(yīng)該給每個(gè)名字加上注解,以方便閱讀。1、標(biāo)識(shí)符的命名程序的注釋分為兩種:序言性注釋和功能性注釋。2、程序的注釋序言性注釋通常安排在每個(gè)程序模塊的起始部分,它是對(duì)程序的整體說明,對(duì)于理解程序本身具有引導(dǎo)作用。其格式如下:有關(guān)本模塊功能說明;主要算法;接口描述:包括調(diào)用形式,參數(shù)描述以及子模塊清單;有關(guān)數(shù)據(jù)描述:包括重要的變量及其用途、約束或限制條件,以及其它有關(guān)信息;模塊位置:在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包;開發(fā)簡(jiǎn)歷:包括模塊設(shè)計(jì)者姓名,復(fù)審人姓名,復(fù)審日期,修改日期及有關(guān)說明等。功能性注釋嵌入在源程序體內(nèi),用以描述其后的語(yǔ)句或程序段的處理功能。書寫功能性注釋,要注意以下幾點(diǎn):描述的對(duì)象是一段程序,而不是每一個(gè)語(yǔ)句;適當(dāng)使用縮進(jìn)和空行,使程序與注釋容易區(qū)別;注釋一定要準(zhǔn)確。不精確的甚至是錯(cuò)誤的注釋不僅對(duì)理解程序毫無(wú)幫助,反而會(huì)妨礙對(duì)程序的理解。程序中代碼的布局對(duì)于程序的可讀性也有很大影響。適當(dāng)?shù)睦每崭?、空行和移行能使程序的邏輯結(jié)構(gòu)更加清晰??崭竦暮侠響?yīng)用還可以突出運(yùn)算的優(yōu)先性,避免發(fā)生運(yùn)算的錯(cuò)誤。3、程序的視覺組織為了使數(shù)據(jù)更容易理解和維護(hù),應(yīng)遵循一些簡(jiǎn)單的原則:(1)數(shù)據(jù)說明的次序應(yīng)當(dāng)規(guī)范化。(2)當(dāng)多個(gè)變量名在一個(gè)語(yǔ)句中說明時(shí),應(yīng)該按字母順序排列這些變量。(3)如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)注解說明用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。7.2.2數(shù)據(jù)說明語(yǔ)句構(gòu)造應(yīng)遵循的原則是:每條語(yǔ)句應(yīng)該簡(jiǎn)單而直接,不應(yīng)為了片面追求效率而使代碼變得過于復(fù)雜。7.2.3語(yǔ)句構(gòu)造人們?cè)陂L(zhǎng)期的實(shí)踐中總結(jié)了以下一些規(guī)則:不要為了節(jié)省空間而把多個(gè)語(yǔ)句寫在同一行;用空格或可讀的符號(hào)使語(yǔ)句的內(nèi)容更加清晰;盡量避免復(fù)雜的條件測(cè)試;盡量避免使用“非”條件的條件語(yǔ)句;避免過多使用循環(huán)嵌套和條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀;盡可能使用庫(kù)函數(shù);讓編譯程序作簡(jiǎn)單的優(yōu)化。在設(shè)計(jì)和程序編碼時(shí),應(yīng)考慮輸入和輸出風(fēng)格原則:對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn),以保證每個(gè)數(shù)據(jù)的有效性;檢查重要的輸入項(xiàng)組合的合法性;使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入格式;輸入一批數(shù)據(jù)時(shí),使用輸入結(jié)束指示符,不要要求用戶說明輸入項(xiàng)數(shù);在以交互式輸入/輸出方式進(jìn)行輸入時(shí),要指明可以使用的選擇值或界限值;應(yīng)允許缺省值;當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語(yǔ)句的要求一致;給所有的輸出加注釋,并設(shè)計(jì)輸出報(bào)表格式。7.2.4輸入/輸出通常,效率主要指占用處理機(jī)時(shí)間和主存區(qū)域兩個(gè)方面。好的編碼可以提高效率,在我們進(jìn)一步討論這個(gè)問題之前,應(yīng)該記住三條原則:第一、效率是一個(gè)性能要求,因而應(yīng)該在需求分析階段確定代碼效率方面的要求;第二、通過好的設(shè)計(jì)可以提高效率;第三、程序的效率和程序的簡(jiǎn)明程度是一致的,不應(yīng)該為了提高代碼效率而犧牲程序的清晰性和可讀性。7.2.5效率在把詳細(xì)設(shè)計(jì)結(jié)果用代碼來實(shí)現(xiàn)時(shí)要注意一些原則:在編碼之前,先化簡(jiǎn)算術(shù)表達(dá)式和邏輯表達(dá)式;特別注意嵌套的循環(huán),以確定是否有語(yǔ)句可以從循環(huán)內(nèi)層移到循環(huán)外層;盡量避免使用多維數(shù)組和復(fù)雜的表格;盡量使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算;盡量避免混合使用不同數(shù)據(jù)類型的量;盡量使用整型算術(shù)表達(dá)式和邏輯表達(dá)式。有些編譯程序具有自動(dòng)優(yōu)化的功能,在強(qiáng)調(diào)效率的應(yīng)用領(lǐng)域,盡量使用有這樣的編譯程序,以自動(dòng)生成高效的目標(biāo)代碼。1、代碼效率主存儲(chǔ)器的容量曾經(jīng)很大程度上制約了程序的效率。目前,在大型計(jì)算機(jī)中,由于操作系統(tǒng)頁(yè)式調(diào)度的特點(diǎn),一般來說,代碼局部性和通過結(jié)構(gòu)化構(gòu)造來維護(hù)功能是提高效率的有效方法。在微處理機(jī)中,如果能利用的存儲(chǔ)容量很小,就要考慮高級(jí)語(yǔ)言的編譯程序在存儲(chǔ)壓縮方面的功能,有時(shí)則必須選擇使用匯編語(yǔ)言。2、存儲(chǔ)效率從編碼的角度來看,人們總結(jié)了一些簡(jiǎn)單的指導(dǎo)原則來提高輸入/輸出的效率:所有的輸入/輸出都應(yīng)該有緩沖,以降低用于通信的開銷;對(duì)輔助存儲(chǔ)器(如磁盤)的訪問,應(yīng)選用最簡(jiǎn)單最直接的方式;涉及到輔助存儲(chǔ)器的輸入/輸出時(shí),應(yīng)該以塊為單位進(jìn)行傳送;這些指導(dǎo)原則適用于軟件工程的設(shè)計(jì)和編碼兩個(gè)階段。3、輸入/輸出的效率為了提高編碼的效率,保證程序的可靠性,我們經(jīng)常使用一些編碼工具。首先要用的當(dāng)然是編輯工具了。選用合適的編輯工具可以大大方便編程,提高效率。編譯程序的好壞也會(huì)影響編碼的效率。一方面,好的編譯程序應(yīng)該是程序員的好助手,能夠幫助程序員及時(shí)準(zhǔn)確地診斷出程序中的差錯(cuò),減少程序開發(fā)的成本。另一方面,編譯程序還應(yīng)該能夠生成高效率的機(jī)器代碼,也就是代碼優(yōu)化。7.3編碼工具8.1軟件測(cè)試的基本概念 8.1.1軟件測(cè)試的定義 8.1.2軟件測(cè)試的基本原則退出 8.1.3軟件測(cè)試的步驟 8.1.4軟件測(cè)試的信息流計(jì)關(guān)于測(cè)試目的,G.J.Myers給出了以下的觀點(diǎn):測(cè)試的定義:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。具體地說,軟件測(cè)試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)出一批測(cè)試用例,并利用測(cè)試用例來運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。8.1.1軟件測(cè)試的定義(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程;(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。8.1.2

軟件測(cè)試的基本原則(1)盡早地、不斷地進(jìn)行軟件測(cè)試。(2)設(shè)計(jì)測(cè)試用例時(shí),要給出測(cè)試的預(yù)期結(jié)果。(3)開發(fā)小組和測(cè)試小組分開。(4)要設(shè)計(jì)非法輸入的測(cè)試用例。(5)在對(duì)程序修改之后要進(jìn)行回歸測(cè)試。(6)程序中尚未發(fā)現(xiàn)的錯(cuò)誤的數(shù)量往往與在該段程序中已發(fā)現(xiàn)的錯(cuò)誤的數(shù)量成正比。8.1.3

軟件測(cè)試的步驟1.單元測(cè)試又稱模塊測(cè)試。每個(gè)程序模塊完成一個(gè)相對(duì)獨(dú)立的子功能,所以可以對(duì)該模塊進(jìn)行單獨(dú)的測(cè)試。由于每個(gè)模塊都有清晰定義的功能,所以通常比較容易設(shè)計(jì)相應(yīng)的測(cè)試方案,以檢驗(yàn)每個(gè)模塊的正確性。2.集成測(cè)試在單元測(cè)試完成后,要考慮將模塊集成為系統(tǒng)的過程中可能出現(xiàn)的問題,例如,模塊之間的通信和協(xié)調(diào)問題,所以在單元測(cè)試結(jié)束之后還要進(jìn)行集成測(cè)試。這個(gè)步驟著重測(cè)試模塊間的接口,子功能的組合是否達(dá)到了預(yù)期要求的功能,全程數(shù)據(jù)結(jié)構(gòu)是否有問題等。3.有效性測(cè)試4.系統(tǒng)測(cè)試系統(tǒng)測(cè)試是把通過有效性測(cè)試的軟件,作為基于計(jì)算機(jī)系統(tǒng)的一個(gè)整體元素,與整個(gè)系統(tǒng)的其他元素結(jié)合起來,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的集成測(cè)試和有效性測(cè)試。集成測(cè)試通過后,應(yīng)在用戶的參與下進(jìn)行有效性測(cè)試。這個(gè)時(shí)候往往使用實(shí)際數(shù)據(jù)進(jìn)行測(cè)試,從而驗(yàn)證系統(tǒng)是否能滿足用戶的實(shí)際需要。8.1.4

軟件測(cè)試信息流8.2軟件測(cè)試方法 8.2.1黑盒測(cè)試 8.2.2白盒測(cè)試退出8.2.1黑盒測(cè)試任何產(chǎn)品都可以使用以下兩種方法進(jìn)行測(cè)試:(1)如果已知產(chǎn)品的功能,則可以對(duì)它的每一個(gè)功能進(jìn)行測(cè)試,看是否都達(dá)到了預(yù)期的要求;(2)如果已知產(chǎn)品的內(nèi)部工作過程,則可以對(duì)它的每種內(nèi)部操作進(jìn)行測(cè)試,看是否符合設(shè)計(jì)要求。第一種方法是黑盒測(cè)試,第二種方法是白盒測(cè)試。黑盒測(cè)試時(shí)完全不考慮程序內(nèi)部的結(jié)構(gòu)和處理過程,只按照規(guī)格說明書的規(guī)定來檢查程序是否符合它的功能要求。黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試,又稱為功能測(cè)試。黑盒測(cè)試檢查的主要方面有:程序的功能是否正確或完善;數(shù)據(jù)的輸入能否正確接收,輸出是否正確;是否能保證外部信息(如數(shù)據(jù)文件)的完整性等。用黑盒法設(shè)計(jì)測(cè)試用例時(shí),必須用所有可能的輸入數(shù)據(jù)來檢查程序是否都能產(chǎn)生正確的輸出。黑盒測(cè)試不可能實(shí)現(xiàn)窮盡測(cè)試:假設(shè)有一個(gè)很簡(jiǎn)單的小程序,輸入量只有兩個(gè):A和B,輸出量只有一個(gè):C。如果計(jì)算機(jī)的字長(zhǎng)為32位,A和B的數(shù)據(jù)類型都只是整數(shù)類型。利用黑盒法進(jìn)行測(cè)試時(shí),將A和B的可能取值進(jìn)行排列組合,輸入數(shù)據(jù)的可能性有:232×232=264種。假設(shè)這個(gè)程序執(zhí)行一次需要1毫秒,要完成所有的測(cè)試,計(jì)算機(jī)需要連續(xù)工作5億年。顯然,這是不能容忍的,而且,設(shè)計(jì)測(cè)試用例時(shí),不僅要有合法的輸入,而且還應(yīng)該有非法的輸入,在這個(gè)例子中,輸入還應(yīng)該包括實(shí)數(shù)、字符串等,這樣,輸入數(shù)據(jù)的可能性就更多了。所以說,窮盡測(cè)試是不可能實(shí)現(xiàn)的。白盒測(cè)試時(shí)將程序看作是一個(gè)透明的盒子,也就是說測(cè)試人員完全了解程序的內(nèi)部結(jié)構(gòu)和處理過程。所以測(cè)試時(shí)按照程序內(nèi)部的邏輯測(cè)試程序、檢驗(yàn)程序中的每條通路是否都能按預(yù)定的要求正確工作。白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試。利用白盒測(cè)試設(shè)計(jì)測(cè)試用例時(shí),應(yīng)包括以下三類測(cè)試:(1)語(yǔ)句測(cè)試:要求程序中的每個(gè)語(yǔ)句至少測(cè)試一次;(2)分支測(cè)試:要求程序中的每個(gè)分支至少測(cè)試一次;(3)路徑測(cè)試:要求程序中的每條路徑至少測(cè)試一次。8.2.2白盒測(cè)試白盒測(cè)試也不能實(shí)現(xiàn)窮盡測(cè)試:左圖所示的一個(gè)小程序的控制流程,其中每個(gè)圓圈代表一段源程序(或語(yǔ)句塊),圖中的曲線代表執(zhí)行次數(shù)不超過20的循環(huán),循環(huán)體中共有5條通路。這樣,可能執(zhí)行的路徑有520條,近似為1014條可能的路徑。如果完成一個(gè)路徑的測(cè)試需要1毫秒,那么整個(gè)測(cè)試過程需要3170年。顯然,這也是不能接受的。8.3測(cè)試用例的設(shè)計(jì) 8.3.1邏輯覆蓋 8.3.2等價(jià)類劃分退出 8.3.3邊界值分析 8.3.4錯(cuò)誤推測(cè)法邏輯覆蓋是以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)的測(cè)試用例設(shè)計(jì)技術(shù),屬于白盒測(cè)試。它要求測(cè)試人員十分清楚程序的邏輯結(jié)構(gòu),考慮的是測(cè)試用例對(duì)程序內(nèi)部邏輯覆蓋的程度。根據(jù)覆蓋的目標(biāo),邏輯覆蓋又可以分為:語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋8.3.1邏輯覆蓋1、語(yǔ)句覆蓋語(yǔ)句覆蓋就是設(shè)計(jì)足夠的調(diào)試用例,使得程序中的每個(gè)語(yǔ)句至少執(zhí)行一次。左圖程序段中共有4條路徑:P1(ace)、P2(abd)、P3(abe)、P4(acd)。語(yǔ)句覆蓋不能發(fā)現(xiàn)判斷中的邏輯運(yùn)算中的錯(cuò)誤。第一個(gè)判斷中的邏輯運(yùn)算符“&&”若錯(cuò)寫成了“||”,利用上面的輸入數(shù)據(jù)則檢查不出這個(gè)錯(cuò)誤。P1正好滿足語(yǔ)句覆蓋的條件??梢栽O(shè)計(jì)如下的輸入數(shù)據(jù):A=2,B=0,x=42、判定覆蓋判定覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得程序中每個(gè)判定的取“真”分支和取“假”分支至少都執(zhí)行一次,判定覆蓋又稱分支覆蓋。測(cè)試用例如果能夠測(cè)試路徑P1(ace)和P2(abd),就可以滿足判定覆蓋要求。可以設(shè)計(jì)如下兩組輸入數(shù)據(jù):A=2,B=0,x=4A=1,B=1,x=1也可以讓測(cè)試用例測(cè)試路徑P3(abe)和P4(acd)。相應(yīng)的兩組輸入數(shù)據(jù)如下:A=2,B=1,x=1A=4,B=0,x=4判定覆蓋比語(yǔ)句覆蓋強(qiáng),但是仍不能保證判斷條件的正確性。例如:第二個(gè)判斷條件中的x>1若錯(cuò)寫成了x<1,利用上面的輸入數(shù)據(jù)就不能檢查出這個(gè)錯(cuò)誤。3、條件覆蓋條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得程序判定中的每個(gè)條件能獲得各種可能的結(jié)果。條件:A>1,B=0,A=2,x>1。需要有足夠的測(cè)試用例使得上述四個(gè)條件都能有滿足和不滿足的情況。以下這兩組輸入數(shù)據(jù)能滿足這些要求:A=2,B=0,x=4A=1,B=1,x=1這兩組數(shù)據(jù)不僅滿足條件覆蓋的要求,而且也滿足判定覆蓋的要求。但并不是所有的滿足條件覆蓋要求的數(shù)據(jù)都滿足判定覆蓋的要求。下面的兩組數(shù)據(jù)滿足條件覆蓋的要求:A=1,B=0,x=3A=2,B=1,x=1但是這組數(shù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論