軟件工程導(dǎo)論第五版全套課件_第1頁
軟件工程導(dǎo)論第五版全套課件_第2頁
軟件工程導(dǎo)論第五版全套課件_第3頁
軟件工程導(dǎo)論第五版全套課件_第4頁
軟件工程導(dǎo)論第五版全套課件_第5頁
已閱讀5頁,還剩112頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章軟件工程學(xué)概述1.1軟件危機(jī)軟件危機(jī)的介紹產(chǎn)生軟件危機(jī)的原因圖1.1引入同一變動付出的代價(jià)隨時(shí)間變化的趨勢消除軟件危機(jī)的途徑1.2軟件工程軟件工程的介紹1.軟件工程關(guān)注于大型程序的構(gòu)造2.軟件工程的中心課題是控制復(fù)雜性3.軟件經(jīng)常變化4.開發(fā)軟件的效率非常重要5.和諧地合作是開發(fā)軟件的關(guān)鍵6.軟件必須有效地支持它的用戶7.在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程的根本原理1.用分階段的生命周期方案嚴(yán)格管理2.堅(jiān)持進(jìn)行階段評審3.實(shí)行嚴(yán)格的產(chǎn)品控制4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)5.結(jié)果應(yīng)能清楚地審查6.開發(fā)小組的人員應(yīng)該少而精7.成認(rèn)不斷改良軟件工程實(shí)踐的必要性軟件工程方法學(xué)1.傳統(tǒng)方法學(xué)2.面向?qū)ο蠓椒▽W(xué)1.3軟件生命周期1.問題定義2.可行性研究3.需求分析4.總體設(shè)計(jì)5.詳細(xì)設(shè)計(jì)6.編碼和單元測試7.綜合測試8.軟件維護(hù)1.4軟件過程瀑布模型圖1.2傳統(tǒng)的瀑布模型1.階段間具有順序性和依賴性2.推遲實(shí)現(xiàn)的觀點(diǎn)3.質(zhì)量保證的觀點(diǎn)圖1.3實(shí)際的瀑布模型快速原型模型圖1.4快速原型模型增量模型圖1.5增量模型圖1.6風(fēng)險(xiǎn)更大的增量模型螺旋模型圖1.7簡化的螺旋模型圖1.8完整的螺旋模型噴泉模型圖1.9噴泉模型Rational統(tǒng)一過程1.最正確實(shí)踐2.RUP軟件開發(fā)生命周期圖1.10RUP軟件開發(fā)生命周期敏捷過程與極限編程1.敏捷過程2.極限編程圖1.11XP工程的整體開發(fā)過程圖1.12XP迭代開發(fā)過程微軟過程1.微軟過程準(zhǔn)那么2.微軟軟件生命周期圖1.13微軟軟件生命周期階段劃分和主要里程碑3.微軟過程模型圖1.14微軟過程的生命周期模型1.5小結(jié)習(xí)題11.什么是軟件危機(jī)?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機(jī)?2.假設(shè)自己是一家軟件公司的總工程師,當(dāng)把圖1.1給手下的軟件工程師們觀看,告訴他們及早發(fā)現(xiàn)并改正錯(cuò)誤的重要性時(shí),有人不同意這個(gè)觀點(diǎn),認(rèn)為要求在錯(cuò)誤進(jìn)入軟件之前就去除它們是不現(xiàn)實(shí)的,并舉例說:“如果一個(gè)故障是編碼錯(cuò)誤造成的,那么,一個(gè)人怎么能在設(shè)計(jì)階段去除它呢?〞應(yīng)該怎么反駁他?3.什么是軟件工程?它有哪些本質(zhì)特性?怎樣用軟件工程消除軟件危機(jī)?4.簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c(diǎn),并分析它們的優(yōu)缺點(diǎn)。5.根據(jù)歷史數(shù)據(jù)可以進(jìn)行如下的假設(shè)。對計(jì)算機(jī)存儲容量的需求大致按下面公式描述的趨勢逐年增加:存儲器的價(jià)格按下面公式描述的趨勢逐年下降:如果計(jì)算機(jī)字長為16位,那么存儲器價(jià)格下降的趨勢為:在上列公式中Y代表年份,M是存儲容量(字?jǐn)?shù)),P1和P2代表價(jià)格。基于上述假設(shè)可以比擬計(jì)算機(jī)硬件和軟件本錢的變化趨勢。要求計(jì)算:(1)在1985年對計(jì)算機(jī)存儲容量的需求估計(jì)是多少?如果字長為16位,這個(gè)存儲器的價(jià)格是多少?(2)假設(shè)在1985年一名程序員每天可開發(fā)出10條指令,程序員的平均工資是每月4000美元。如果一條指令為一個(gè)字長,計(jì)算使存儲器裝滿程序所需用的本錢。(3)假設(shè)在1995年存儲器字長為32位,一名程序員每天可開發(fā)出30條指令,程序員的月平均工資為6000美元,重復(fù)(1)、(2)題。6.什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?7.什么是軟件生命周期模型?試比擬瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點(diǎn),說明每種模型的適用范圍。8.為什么說噴泉模型較好地表達(dá)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?9.試討論Rational統(tǒng)一過程的優(yōu)缺點(diǎn)。10.Rational統(tǒng)一過程主要適用于何種工程?11.說明敏捷過程的適用范圍。12.說明微軟過程的適用范圍。第2章可行性研究2.1可行性研究的任務(wù)2.2可行性研究過程1.復(fù)查系統(tǒng)規(guī)模和目標(biāo)2.研究目前正在使用的系統(tǒng)3.導(dǎo)出新系統(tǒng)的高層邏輯模型4.進(jìn)一步定義問題5.導(dǎo)出和評價(jià)供選擇的解法6.推薦行動方針7.草擬開發(fā)方案8.書寫文檔提交審查2.3系統(tǒng)流程圖符號例子圖2.1根本符號圖2.2系統(tǒng)符號圖2.3庫存清單系統(tǒng)的系統(tǒng)流程圖分層2.4數(shù)據(jù)流圖符號圖2.4數(shù)據(jù)流圖的符號例子圖2.5定貨系統(tǒng)的根本系統(tǒng)模型圖2.6定貨系統(tǒng)的功能級數(shù)據(jù)流圖圖2.7把處理事務(wù)的功能進(jìn)一步分解后的數(shù)據(jù)流圖命名1.為數(shù)據(jù)流(或數(shù)據(jù)存儲)命名2.為處理命名2.4.4圖2.8這種劃分自動化邊界的方法暗示以圖2.9另一種劃分自動化邊界的方法建議2.5數(shù)據(jù)字典數(shù)據(jù)字典的內(nèi)容定義數(shù)據(jù)的方法數(shù)據(jù)字典的用途數(shù)據(jù)字典的實(shí)現(xiàn)2.6本錢/效益分析本錢估計(jì)1.代碼行技術(shù)2.任務(wù)分解技術(shù)3.自動估計(jì)本錢技術(shù)本錢/效益分析的方法1.貨幣的時(shí)間價(jià)值2.投資回收期3.純收入4.投資回收率2.7小結(jié)習(xí)題21.在軟件開發(fā)的早期階段為什么要進(jìn)行可行性研究?應(yīng)該從哪些方面研究目標(biāo)系統(tǒng)的可行性?2.為方便儲戶,某銀行擬開發(fā)計(jì)算機(jī)儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶;如果是取款,系統(tǒng)計(jì)算利息并印出利息清單給儲戶。寫出問題定義并分析此系統(tǒng)的可行性。3.為方便旅客,某航空公司擬開發(fā)一個(gè)機(jī)票預(yù)訂系統(tǒng)。旅行社把預(yù)訂機(jī)票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時(shí)間、旅行目的地等)輸入進(jìn)該系統(tǒng),系統(tǒng)為旅客安排航班,印出取票通知和賬單,旅客在飛機(jī)起飛的前一天憑取票通知和賬單交款取票,系統(tǒng)校對無誤即印出機(jī)票給旅客。寫出問題定義并分析此系統(tǒng)的可行性。4.目前住院病人主要由護(hù)士護(hù)理,這樣做不僅需要大量護(hù)士,而且由于不能隨時(shí)觀察危重病人的病情變化,還可能會延誤搶救時(shí)機(jī)。某醫(yī)院打算開發(fā)一個(gè)以計(jì)算機(jī)為中心的患者監(jiān)護(hù)系統(tǒng),試寫出問題定義,并且分析開發(fā)這個(gè)系統(tǒng)的可行性。醫(yī)院對患者監(jiān)護(hù)系統(tǒng)的根本要求是隨時(shí)接收每個(gè)病人的生理信號(脈搏、體溫、血壓、心電圖等),定時(shí)記錄病人情況以形成患者日志,當(dāng)某個(gè)病人的生理信號超出醫(yī)生規(guī)定的平安范圍時(shí)向值班護(hù)士發(fā)出警告信息,此外,護(hù)士在需要時(shí)還可以要求系統(tǒng)印出某個(gè)指定病人的病情報(bào)告。5.北京某高校可用的號碼有以下幾類:校內(nèi)號碼由4位數(shù)字組成,第1位數(shù)字不是0;校外又分為本市和外地兩類,撥校外需先撥0,假設(shè)是本市那么再接著撥8位數(shù)字(第1位不是0),假設(shè)是外地那么撥3位區(qū)碼再撥8位號碼(第1位不是0)。用小節(jié)講述的定義數(shù)據(jù)的方法,定義上述的號碼。第3章需求分析3.1需求分析的任務(wù)確定對系統(tǒng)的綜合要求1.功能需求2.性能需求3.可靠性和可用性需求4.出錯(cuò)處理需求5.接口需求6.約束7.逆向需求8.將來可能提出的要求分析系統(tǒng)的數(shù)據(jù)要求導(dǎo)出系統(tǒng)的邏輯模型修正系統(tǒng)開發(fā)方案3.2與用戶溝通獲取需求的方法訪談面向數(shù)據(jù)流自頂向下求精圖3.1面向數(shù)據(jù)流自頂向下求精過程簡易的應(yīng)用規(guī)格說明技術(shù)快速建立軟件原型3.3分析建模與規(guī)格說明分析建模軟件需求規(guī)格說明3.4實(shí)體聯(lián)系圖數(shù)據(jù)對象屬性聯(lián)系圖3.2某校教學(xué)管理ER圖實(shí)體聯(lián)系圖的符號3.5數(shù)據(jù)標(biāo)準(zhǔn)化3.6狀態(tài)轉(zhuǎn)換圖狀態(tài)事件符號圖3.3狀態(tài)圖中使用的主要符號例子圖3.4系統(tǒng)的狀態(tài)圖3.7其他圖形工具層次方框圖圖3.5層次方框圖的一個(gè)例子Warnier圖圖3.6Warnier圖的一個(gè)例子IPO圖圖3.7IPO圖的一個(gè)例子圖3.8改良的IPO圖的形式3.8驗(yàn)證軟件需求從哪些方面驗(yàn)證軟件需求的正確性驗(yàn)證軟件需求的方法1.驗(yàn)證需求的一致性2.驗(yàn)證需求的現(xiàn)實(shí)性3.驗(yàn)證需求的完整性和有效性用于需求分析的軟件工具3.9小結(jié)習(xí)題31.為什么要進(jìn)行需求分析?通常對軟件系統(tǒng)有哪些需求?2.怎樣與用戶有效地溝通以獲取用戶的真實(shí)需求?3.銀行計(jì)算機(jī)儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入系統(tǒng),如果是存款那么系統(tǒng)記錄存款人姓名、住址(或號碼)、身份證號碼、存款類型、存款日期、到期日期、利率及密碼(可選)等信息,并印出存單給儲戶;如果是取款而且存款時(shí)留有密碼,那么系統(tǒng)首先核對儲戶密碼,假設(shè)密碼正確或存款時(shí)未留密碼,那么系統(tǒng)計(jì)算利息并印出利息清單給儲戶。用數(shù)據(jù)流圖描繪本系統(tǒng)的功能,并用實(shí)體聯(lián)系圖描繪系統(tǒng)中的數(shù)據(jù)對象。4.分析習(xí)題2第3題所述的機(jī)票預(yù)訂系統(tǒng)。試用實(shí)體聯(lián)系圖描繪本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)流圖描繪本系統(tǒng)的功能。5.分析習(xí)題2第4題所述的患者監(jiān)護(hù)系統(tǒng)。試用實(shí)體聯(lián)系圖描繪本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)流圖描繪本系統(tǒng)的功能,畫出本系統(tǒng)的頂層IPO圖。6.復(fù)印機(jī)的工作過程大致如下:未接到復(fù)印命令時(shí)處于閑置狀態(tài),一旦接到復(fù)印命令那么進(jìn)入復(fù)印狀態(tài),完成一個(gè)復(fù)印命令規(guī)定的工作后又回到閑置狀態(tài),等待下一個(gè)復(fù)印命令;如果執(zhí)行復(fù)印命令時(shí)發(fā)現(xiàn)沒紙,那么進(jìn)入缺紙狀態(tài),發(fā)出警告,等待裝紙,裝滿紙后進(jìn)入閑置狀態(tài),準(zhǔn)備接收復(fù)印命令;如果復(fù)印時(shí)發(fā)生卡紙故障,那么進(jìn)入卡紙狀態(tài),發(fā)出警告,等待維修人員來排除故障,故障排除后回到閑置狀態(tài)。試用狀態(tài)轉(zhuǎn)換圖描繪復(fù)印機(jī)的行為。第4章形式化說明技術(shù)4.1概述非形式化方法的缺點(diǎn)形式化方法的優(yōu)點(diǎn)應(yīng)用形式化方法的準(zhǔn)那么4.2有窮狀態(tài)機(jī)概念圖4.1保險(xiǎn)箱的狀態(tài)轉(zhuǎn)換圖例子圖4.2電梯按鈕的狀態(tài)轉(zhuǎn)換圖圖4.3樓層按鈕的狀態(tài)轉(zhuǎn)換圖圖4.4電梯的狀態(tài)轉(zhuǎn)換圖評價(jià)4.3Petri網(wǎng)概念圖4.5Petri網(wǎng)的組成圖4.6帶標(biāo)記的Petri網(wǎng)圖4.7圖4.6的Petri網(wǎng)在轉(zhuǎn)換t1被激發(fā)后的情況圖4.8圖4.7的Petri網(wǎng)在轉(zhuǎn)換t2被激發(fā)后的情況圖4.9含禁止線的Petri網(wǎng)例子1.電梯按鈕圖4.10Petri網(wǎng)表示的電梯按鈕2.樓層按鈕圖4.11Petri網(wǎng)表示樓層按鈕4.4Z語言簡介1.給定的集合2.狀態(tài)定義圖4.12Z格S的格式圖4.13Z格Button_State3.初始狀態(tài)4.操作圖4.14操作Push_Button的Z規(guī)格說明圖4.15操作Floor_Arrival的Z規(guī)格說明評價(jià)4.5小結(jié)習(xí)題41.舉例比照形式化方法和欠形式化方法的優(yōu)缺點(diǎn)。2.在什么情況下應(yīng)該使用形式化說明技術(shù)?使用形式化說明技術(shù)時(shí)應(yīng)遵守哪些準(zhǔn)那么?3.一個(gè)浮點(diǎn)二進(jìn)制數(shù)的構(gòu)成是:一個(gè)可選的符號(+或-),后跟一個(gè)或多個(gè)二進(jìn)制位,再跟上一個(gè)字符E,再加上另一個(gè)可選符號(+或-)及一個(gè)或多個(gè)二進(jìn)制位。例如,以下的字符串都是浮點(diǎn)二進(jìn)制數(shù):110101E-101-100111E11101+1E0更形式化地,浮點(diǎn)二進(jìn)制數(shù)定義如下:〈floatingpointbinary〉∷=[〈sign〉]〈bitstring〉E[〈sign〉]〈bitstring〉〈sign〉∷=+|-〈bitstring〉∷=〈bit〉[〈bitstring〉]〈bit〉∷=0|1其中,符號∷=表示定義為;符號[...]表示可選項(xiàng);符號a|b表示a或b。假設(shè)有這樣一個(gè)有窮狀態(tài)機(jī):以一串字符為輸入,判斷字符串中是否含有合法的浮點(diǎn)二進(jìn)制數(shù)。試對這個(gè)有窮狀態(tài)機(jī)進(jìn)行規(guī)格說明。4.考慮下述的自動化圖書館流通系統(tǒng):每本書都有一個(gè)條形碼,每個(gè)借閱人都有一個(gè)帶有條形碼的卡片。當(dāng)一個(gè)借閱人想借一本書時(shí),圖書管理員掃描書上的條形碼和借閱人卡片上的條形碼,然后在計(jì)算機(jī)終端上輸入C;當(dāng)歸還一本書時(shí),圖書管理員將再做一次掃描,并輸入R。圖書管理員可以把一些書加到(+)圖書集合中,也可以刪除(-)它們。借閱人可以在終端上查找到某個(gè)作者所有的書(輸入“A=〞和作者名字),或具有指定標(biāo)題的所有書籍(輸入“T=〞和標(biāo)題),或?qū)儆谔囟ㄖ黝}范圍內(nèi)的所有圖書(輸入“S=〞加主題范圍)。最后,如果借閱人想借的書已被別人借走,圖書管理員將給這本書設(shè)置一個(gè)預(yù)約,以便書歸還時(shí)把書留給預(yù)約的借閱人(輸入“H=〞加書號)。試用有窮狀態(tài)機(jī)說明上述的圖書流通系統(tǒng)。5.試用Petri網(wǎng)說明第4題所述圖書館中一本書的循環(huán)過程。在規(guī)格說明中應(yīng)該包括操作H、C及R。6.試用Z語言對第4題所述圖書館圖書流通系統(tǒng)做一個(gè)完整的規(guī)格說明。第5章總體設(shè)計(jì)5.1設(shè)計(jì)過程1.設(shè)想供選擇的方案2.選取合理的方案3.推薦最正確方案4.功能分解5.設(shè)計(jì)軟件結(jié)構(gòu)6.設(shè)計(jì)數(shù)據(jù)庫7.制定測試方案8.書寫文檔9.審查和復(fù)審5.2設(shè)計(jì)原理模塊化圖5.1模塊化和軟件本錢抽象逐步求精信息隱藏和局部化模塊獨(dú)立1.耦合2.內(nèi)聚5.3啟發(fā)規(guī)那么1.改良軟件結(jié)構(gòu)提高模塊獨(dú)立性2.模塊規(guī)模應(yīng)該適中3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)4.模塊的作用域應(yīng)該在控制域之內(nèi)圖5.2模塊的作用域和控制域5.力爭降低模塊接口的復(fù)雜程度6.設(shè)計(jì)單入口單出口的模塊7.模塊功能應(yīng)該可以預(yù)測5.4描繪軟件結(jié)構(gòu)的圖形工具層次圖和HIPO圖圖5.3正文加工系統(tǒng)的層次圖圖5.4帶編號的層次圖(H圖)結(jié)構(gòu)圖圖5.5結(jié)構(gòu)圖的例子——產(chǎn)生最正確解的一般結(jié)構(gòu)圖5.6判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用B圖5.7模塊M循環(huán)調(diào)用模塊A、B、C5.5面向數(shù)據(jù)流的設(shè)計(jì)方法概念1.變換流2.事務(wù)流圖5.8變換流圖5.9事務(wù)流3.設(shè)計(jì)過程圖5.10面向數(shù)據(jù)流方法的設(shè)計(jì)過程變換分析1.例子2.設(shè)計(jì)步驟圖5.11數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖圖5.12具有邊界的數(shù)據(jù)流圖圖5.13第一級分解的方法圖5.14數(shù)字儀表板系統(tǒng)的第一級分解圖5.15第二級分解的方法圖5.16未經(jīng)精化的輸入結(jié)構(gòu)圖5.17未經(jīng)精化的變換結(jié)構(gòu)圖5.18未經(jīng)精化的輸出結(jié)構(gòu)圖5.19精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)事務(wù)分析圖5.20事務(wù)分析的映射方法設(shè)計(jì)優(yōu)化5.6小結(jié)習(xí)題51.為每種類型的模塊耦合舉一個(gè)具體例子。2.為每種類型的模塊內(nèi)聚舉一個(gè)具體例子。3.用面向數(shù)據(jù)流的方法設(shè)計(jì)以下系統(tǒng)的軟件結(jié)構(gòu)。(1)儲蓄系統(tǒng)(參見習(xí)題2第2題)。(2)機(jī)票預(yù)訂系統(tǒng)(參見習(xí)題2第3題)。(3)患者監(jiān)護(hù)系統(tǒng)(參見習(xí)題2第4題)。4.美國某大學(xué)共有200名教師,校方與教師工會剛剛簽訂一項(xiàng)協(xié)議。按照協(xié)議,所有年工資超過$26000(含$26000)的教師工資將保持不變,年工資少于$26000的教師將增加工資,所增加的工資數(shù)按下述方法計(jì)算:給每個(gè)由此教師所贍養(yǎng)的人(包括教師本人)每年補(bǔ)助$100,此外,教師有一年工齡每年再多補(bǔ)助$50,但是,增加后的年工資總額不能多于$26000。教師的工資檔案儲存在行政辦公室的磁帶上,檔案中有目前的年工資、贍養(yǎng)的人數(shù)、雇用日期等信息。需要寫一個(gè)程序計(jì)算并印出每名教師的原有工資和調(diào)整后的新工資。要求:(1)畫出此系統(tǒng)的數(shù)據(jù)流圖。(2)寫出需求說明。(3)設(shè)計(jì)上述的工資調(diào)整程序(要求用HIPO圖描繪設(shè)計(jì)結(jié)果),設(shè)計(jì)時(shí)分別采用下述兩種算法,并比擬這兩種算法的優(yōu)缺點(diǎn):(a)搜索工資檔案數(shù)據(jù),找出年工資少于$26000的人,計(jì)算新工資,校核是否超過$26000,儲存新工資,印出新舊工資對照表;(b)把工資檔案數(shù)據(jù)按工資從最低到最高的次序排序,當(dāng)工資數(shù)額超過$26000時(shí)即停止排序,計(jì)算新工資,校核是否超過限額,儲存新工資,印出結(jié)果。(4)所畫出的數(shù)據(jù)流圖適用于哪種算法?5.下面將給出兩個(gè)人玩的撲克牌游戲的一種玩法,試設(shè)計(jì)一個(gè)模擬程序,它的根本功能是:(1)發(fā)兩手牌(利用隨機(jī)數(shù)產(chǎn)生器)。(2)確定贏者和贏牌的類型。(3)模擬N次游戲,計(jì)算每種類型牌贏或平局的概率。要求用HIPO圖描繪設(shè)計(jì)結(jié)果并且畫出高層控制流程圖。撲克牌游戲規(guī)那么如下:(1)有兩個(gè)人玩,分別稱為A和B。(2)一副撲克牌有52張牌,4種花色(方塊、梅花、紅桃和黑桃),每種花色的牌的點(diǎn)數(shù)按升序排列有2,3,4,…,10,J,Q,K,A等13種。(3)給每個(gè)人發(fā)3張牌,牌面向上(即,亮牌),贏者立即可以確定。(4)最高等級的一手牌稱為同花,即3張牌均為同一種花色,最大的同花牌是同一種花色的Q、K、A。(5)第二等級的牌稱為順子,即點(diǎn)數(shù)連續(xù)的3張牌,最大的順子是花色不同的Q、K、A。(6)第三等級的牌是同點(diǎn),即點(diǎn)數(shù)相同的3張牌,最大的同點(diǎn)是A、A、A。(7)第四等級的牌是對子,即3張牌中有兩張點(diǎn)數(shù)相同,最大的對子是A、A、K。(8)第五等級的牌是雜牌,即除去上列4等之外的任何一手牌,最大的雜牌是不同花色的A、K、J。(9)假設(shè)兩人的牌類型不同,那么等級高者勝;假設(shè)等級相同,那么點(diǎn)數(shù)高者勝;假設(shè)點(diǎn)數(shù)也相同,那么為平局。第6章詳細(xì)設(shè)計(jì)6.1結(jié)構(gòu)程序設(shè)計(jì)圖6.13種根本的控制結(jié)構(gòu)圖6.2其他常用的控制結(jié)構(gòu)6.2人機(jī)界面設(shè)計(jì)設(shè)計(jì)問題1.系統(tǒng)響應(yīng)時(shí)間2.用戶幫助設(shè)施3.出錯(cuò)信息處理4.命令交互設(shè)計(jì)過程人機(jī)界面設(shè)計(jì)指南1.一般交互指南2.信息顯示指南3.數(shù)據(jù)輸入指南6.3過程設(shè)計(jì)的工具程序流程圖盒圖圖6.3程序流程圖中使用的符號圖6.4盒圖的根本符號AD圖圖6.5PAD圖的根本符號圖6.6使用PAD圖提供的定義功能來逐步求精的例子判定表判定樹過程設(shè)計(jì)語言圖6.7用判定樹表示計(jì)算行李費(fèi)的算法6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法Jackson圖1.順序結(jié)構(gòu)2.選擇結(jié)構(gòu)圖6.8A由B、C、D3個(gè)元素順序組成圖6.9根據(jù)條件A是B或C或D中的某一個(gè)3.重復(fù)結(jié)構(gòu)圖6.10A由B出現(xiàn)N次(N≥0)組成改良的Jackson圖圖6.11改良的Jackson圖Jackson方法圖6.12表示輸入輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖圖6.13描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的Jackson圖圖6.14把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置6.5程序復(fù)雜程度的定量度量McCabe方法1.流圖圖6.15把程序流程圖映射成流圖圖6.16由PDL翻譯成的流圖圖6.17由包含復(fù)合條件的PDL映射成的流圖2.計(jì)算環(huán)形復(fù)雜度的方法3.環(huán)形復(fù)雜度的用途Halstead方法6.6小結(jié)習(xí)題61.假設(shè)只有SEQUENCE和DO-WHILE兩種控制結(jié)構(gòu),怎樣利用它們完成IF-THEN-ELSE操作?2.假設(shè)只允許使用SEQUENCE和IF-THEN-ELSE兩種控制結(jié)構(gòu),怎樣利用它們完成DO-WHILE操作?3.畫出以下偽碼程序的程序流程圖和盒圖:4.圖6.18給出的程序流程圖代表一個(gè)非結(jié)構(gòu)化的程序,問:(1)為什么說它是非結(jié)構(gòu)化的?(2)設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序。(3)在(2)題的設(shè)計(jì)中使用附加的標(biāo)志變量flag了嗎?假設(shè)沒用,再設(shè)計(jì)一個(gè)使用flag的程序;假設(shè)用了,再設(shè)計(jì)一個(gè)不用flag的程序。圖6.18一個(gè)非結(jié)構(gòu)化程序5.研究下面的偽碼程序:要求:(1)畫出程序流程圖。(2)程序是結(jié)構(gòu)化的嗎?說明理由。(3)假設(shè)程序是非結(jié)構(gòu)化的,設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序并且畫出程序流程圖。(4)此程序的功能是什么?它完成預(yù)定功能有什么隱含的前提條件嗎?6.用Ashcroft_Manna技術(shù)可以將非結(jié)構(gòu)化的程序轉(zhuǎn)換為結(jié)構(gòu)化程序,圖6.19是一個(gè)轉(zhuǎn)換的例子。圖6.19用Ashcroft-Manna技術(shù)的例子(a)非結(jié)構(gòu)化設(shè)計(jì);(b)轉(zhuǎn)換成的等價(jià)的結(jié)構(gòu)化設(shè)計(jì)(1)能否從這個(gè)例子總結(jié)出Ashcroft-Manna技術(shù)的一些根本方法?(2)進(jìn)一步簡化圖6.19(b)給出的結(jié)構(gòu)化設(shè)計(jì)。7.某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費(fèi)計(jì)算方法如下:總手續(xù)費(fèi)等于根本手續(xù)費(fèi)加上與交易中的每股價(jià)格和股數(shù)有關(guān)的附加手續(xù)費(fèi)。如果交易總金額少于1000元,那么根本手續(xù)費(fèi)為交易金額的8.4%;如果交易總金額在1000元到10000元之間,那么根本手續(xù)費(fèi)為交易金額的5%,再加34元;如果交易總金額超過10000元,那么根本手續(xù)費(fèi)為交易金額的4%加上134元。當(dāng)每股售價(jià)低于14元時(shí),附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的5%,除非買進(jìn)、賣出的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的9%。當(dāng)每股售價(jià)在14元到25元之間時(shí),附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的2%,除非交易的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的6%。當(dāng)每股售價(jià)超過25元時(shí),如果交易的股數(shù)零散(即,不是100的倍數(shù)),那么附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的4%,否那么附加手續(xù)費(fèi)為根本手續(xù)費(fèi)的1%。要求:(1)用判定表表示手續(xù)費(fèi)的計(jì)算方法。(2)用判定樹表示手續(xù)費(fèi)的計(jì)算方法。8.畫出以下偽碼程序的流圖,計(jì)算它的環(huán)形復(fù)雜度。這個(gè)程序的邏輯有什么問題嗎?9.把統(tǒng)計(jì)空格程序的Jackson圖(圖6.13)改畫為等價(jià)的程序流程圖和盒圖。10.人機(jī)對話由操作員信息和系統(tǒng)信息交替組成。假設(shè)一段對話總是由操作員信息開始以系統(tǒng)信息結(jié)束,用Jackson圖描繪這樣的人機(jī)對話過程。第7章實(shí)現(xiàn)7.1編碼選擇程序設(shè)計(jì)語言編碼風(fēng)格1.程序內(nèi)部的文檔2.數(shù)據(jù)說明3.語句構(gòu)造4.輸入輸出5.效率7.2軟件測試根底軟件測試的目標(biāo)軟件測試準(zhǔn)那么測試方法測試步驟1.模塊測試2.子系統(tǒng)測試3.系統(tǒng)測試4.驗(yàn)收測試5.平行運(yùn)行測試階段的信息流圖7.1測試階段的信息流7.3單元測試測試重點(diǎn)1.模塊接口2.局部數(shù)據(jù)結(jié)構(gòu)3.重要的執(zhí)行通路4.出錯(cuò)處理通路5.邊界條件代碼審查計(jì)算機(jī)測試圖7.2正文加工系統(tǒng)的層次圖7.4集成測試自頂向下集成圖7.3自頂向下結(jié)合自底向上集成圖7.4自底向上結(jié)合不同集成測試策略的比擬回歸測試7.5確認(rèn)測試確認(rèn)測試的范圍軟件配置復(fù)查lpha和Beta測試7.6白盒測試技術(shù)邏輯覆蓋1.語句覆蓋圖7.5被測試模塊的流程圖2.判定覆蓋3.條件覆蓋4.判定/條件覆蓋5.條件組合覆蓋6.點(diǎn)覆蓋7.邊覆蓋8.路徑覆蓋控制結(jié)構(gòu)測試1.根本路徑測試圖7.6求平均值過程的流圖2.條件測試3.循環(huán)測試圖7.73種循環(huán)7.7黑盒測試技術(shù)等價(jià)劃分邊界值分析錯(cuò)誤推測7.8調(diào)試調(diào)試過程圖7.8調(diào)試過程調(diào)試途徑1.蠻干法2.回溯法3.原因排除法7.9軟件可靠性根本概念1.軟件可靠性的定義2.軟件的可用性估算平均無故障時(shí)間的方法1.符號2.根本假定3.估算平均無故障時(shí)間4.估計(jì)錯(cuò)誤總數(shù)的方法7.10小結(jié)習(xí)題71.下面給出的偽碼中有一個(gè)錯(cuò)誤。仔細(xì)閱讀這段偽碼,說明該偽碼的語法特點(diǎn),找出并改正偽碼中的錯(cuò)誤。字頻統(tǒng)計(jì)程序的偽碼如下:2.研究下面給出的偽碼程序,要求:(1)畫出它的程序流程圖。(2)它是結(jié)構(gòu)化的還是非結(jié)構(gòu)化的?說明理由。(3)假設(shè)是非結(jié)構(gòu)化的,那么(a)把它改造成僅用3種控制結(jié)構(gòu)的結(jié)構(gòu)化程序;(b)寫出這個(gè)結(jié)構(gòu)化設(shè)計(jì)的偽碼;(c)用盒圖表示這個(gè)結(jié)構(gòu)化程序。(4)找出并改正程序邏輯中的錯(cuò)誤。3.在第2題的設(shè)計(jì)中假設(shè)輸入的N值或KEYWORD不合理,會發(fā)生問題。(1)給出這些變量的不合理值的例子。(2)將這些不合理值輸入程序會有什么后果?(3)怎樣在程序中參加防錯(cuò)措施,以防止出現(xiàn)這些問題?4.答復(fù)以下問題。(1)什么是模塊測試和集成測試?它們各有什么特點(diǎn)?(2)假設(shè)有一個(gè)由1000行FORTRAN語句構(gòu)成的程序(經(jīng)編譯后大約有5000條機(jī)器指令),估計(jì)在對它進(jìn)行測試期間將發(fā)現(xiàn)多少個(gè)錯(cuò)誤?為什么?(3)設(shè)計(jì)以下偽碼程序的語句覆蓋和路徑覆蓋測試用例:5.某圖書館有一個(gè)使用CRT終端的信息檢索系統(tǒng),該系統(tǒng)有以下4個(gè)根本檢索命令:要求:(1)設(shè)計(jì)測試數(shù)據(jù)以全面測試系統(tǒng)的正常操作;(2)設(shè)計(jì)測試數(shù)據(jù)以測試系統(tǒng)的非正常操作。6.航空公司A向軟件公司B訂購了一個(gè)規(guī)劃飛行路線的程序。假設(shè)自己是軟件公司C的軟件工程師,A公司已雇用自己所在的公司對上述程序進(jìn)行驗(yàn)收測試。任務(wù)是,根據(jù)下述事實(shí)設(shè)計(jì)驗(yàn)收測試的輸入數(shù)據(jù),解釋選取這些數(shù)據(jù)的理由。領(lǐng)航員向程序輸入出發(fā)點(diǎn)和目的地,以及根據(jù)天氣和飛機(jī)型號而初步確定的飛行高度。程序讀入途中的風(fēng)向風(fēng)力等數(shù)據(jù),并且制定出3套飛行方案(高度,速度,方向及途中的5個(gè)位置校核點(diǎn))。所制定的飛行方案應(yīng)做到燃料消耗和飛行時(shí)間都最少。7.嚴(yán)格說來,有兩種不同的路徑覆蓋測試,分別為程序路徑覆蓋和程序圖路徑覆蓋。這兩種測試可分別稱為程序的自然執(zhí)行和強(qiáng)迫執(zhí)行。所謂自然執(zhí)行是指測試者(人或計(jì)算機(jī))讀入程序中的條件表達(dá)式,根據(jù)程序變量的當(dāng)前值計(jì)算該條件表達(dá)式的值(真或假),并相應(yīng)地分支。強(qiáng)迫執(zhí)行是在用程序圖作為程序的抽象模型時(shí)產(chǎn)生的一個(gè)人為的概念,它可以簡化測試問題。強(qiáng)迫執(zhí)行的含義是,一旦遇到條件表達(dá)式,測試者就強(qiáng)迫程序分兩種情況(條件表達(dá)式的值為真和為假)執(zhí)行。顯然,強(qiáng)迫執(zhí)行將遍歷程序圖的所有路徑,然而由于各個(gè)條件表達(dá)式之間存在相互依賴的關(guān)系,這些路徑中的某一些在自然執(zhí)行時(shí)可能永遠(yuǎn)也不會進(jìn)入。為了使強(qiáng)迫執(zhí)行的概念在實(shí)際工作中有用,它簡化測試工具的好處應(yīng)該超過它使用額外的不可能到達(dá)的測試用例所帶來的害處。在絕大多數(shù)情況下,強(qiáng)迫執(zhí)行的測試數(shù)并不比自然執(zhí)行的測試數(shù)大很多,此外,對強(qiáng)迫執(zhí)行的定義實(shí)際上包含了一種技術(shù),能夠縮短在測試含有循環(huán)的程序時(shí)所需要的運(yùn)行時(shí)間。程序的大局部執(zhí)行時(shí)間通常用于重復(fù)執(zhí)行程序中的DO循環(huán),特別是嵌套的循環(huán)。因此必須創(chuàng)造一種技術(shù),使得每個(gè)DO循環(huán)只執(zhí)行一遍。這樣做并不會降低測試的成效,因?yàn)榻?jīng)驗(yàn)說明第一次或最后一次執(zhí)行循環(huán)時(shí)最容易出錯(cuò)。Laemmel教授提出的自動測試每條路徑的技術(shù)如下。當(dāng)編寫程序時(shí)每個(gè)DO循環(huán)應(yīng)該寫成一種包含測試變量T和模式變量M的特殊形式,因此DOI=1TO38應(yīng)變成DOI=1TOM*38+(1-M)*T可見,當(dāng)M=0時(shí)處于測試模式,而M=1時(shí)處于正常運(yùn)行模式。當(dāng)處于測試模式時(shí),令T=0那么該循環(huán)一次也不執(zhí)行,令T=1那么該循環(huán)只執(zhí)行一次。類似地應(yīng)該使用模式變量和測試變量改寫IF語句,例如IFX+Y>0THENZ=XELSEZ=Y應(yīng)變成IFM*(X+Y)+T>0THENZ=XELSEZ=Y正常運(yùn)行時(shí)令M=1和T=0,測試期間令M=0,為測試THEN局部需令T=+1,測試ELSE局部那么令T=-1。要求:(1)選取一個(gè)包含循環(huán)和IF語句的程序,用Laemmel技術(shù)修改這個(gè)程序,上機(jī)實(shí)際測試這個(gè)程序并解釋所得到的結(jié)果。(2)設(shè)計(jì)一個(gè)程序按照Laemmel技術(shù)自動修改待測試的程序。利用這個(gè)測試工具修改上一問中人工修改的程序,兩次修改得到的結(jié)果一致嗎?(3)怎樣把Laemmel技術(shù)推廣到包含WHILEDO和REPEATUNTIL語句的程序?(4)試分析Laemmel技術(shù)的優(yōu)缺點(diǎn)并提出改良意見。8.對一個(gè)包含10000條機(jī)器指令的程序進(jìn)行一個(gè)月集成測試后,總共改正了15個(gè)錯(cuò)誤,此時(shí)MTTF=10h;經(jīng)過兩個(gè)月測試后,總共改正了25個(gè)錯(cuò)誤(第二個(gè)月改正了10個(gè)錯(cuò)誤),MTTF=15h。要求:(1)根據(jù)上述數(shù)據(jù)確定MTTF與測試時(shí)間之間的函數(shù)關(guān)系,畫出MTTF與測試時(shí)間τ的關(guān)系曲線。在畫這條曲線時(shí)做了什么假設(shè)?(2)為做到MTTF=100h,必須進(jìn)行多長時(shí)間的集成測試?當(dāng)集成測試結(jié)束時(shí)總共改正了多少個(gè)錯(cuò)誤,還有多少個(gè)錯(cuò)誤潛伏在程序中?9.如對一個(gè)長度為100000條指令的程序進(jìn)行集成測試期間記錄下下面的數(shù)據(jù):(a)7月1日:集成測試開始,沒有發(fā)現(xiàn)錯(cuò)誤。(b)8月2日:總共改正100個(gè)錯(cuò)誤,此時(shí)MTTF=0.4h(c)9月1日:總共改正300個(gè)錯(cuò)誤,此時(shí),MTTF=2h據(jù)上列數(shù)據(jù)完成以下各題。(1)估計(jì)程序中的錯(cuò)誤總數(shù)。(2)為使MTTF到達(dá)10h,必須測試和調(diào)試這個(gè)程序多長時(shí)間?(3)畫出MTTF和測試時(shí)間τ之間的函數(shù)關(guān)系曲線。10.在測試一個(gè)長度為24000條指令的程序時(shí),第一個(gè)月由甲、乙兩名測試員各自獨(dú)立測試這個(gè)程序。經(jīng)一個(gè)月測試后,甲發(fā)現(xiàn)并改正20個(gè)錯(cuò)誤,使MTTF到達(dá)10h。與此同時(shí),乙發(fā)現(xiàn)24個(gè)錯(cuò)誤,其中6個(gè)甲也發(fā)現(xiàn)了。以后由甲一個(gè)人繼續(xù)測試這個(gè)程序。問:(1)剛開始測試時(shí)程序中總共有多少個(gè)潛藏的錯(cuò)誤?(2)為使MTTF到達(dá)60h,必須再改正多少個(gè)錯(cuò)誤?還需用多長測試時(shí)間?(3)畫出MTTF與集成測試時(shí)間τ之間的函數(shù)關(guān)系曲線。第8章維護(hù)8.1軟件維護(hù)的定義8.2軟件維護(hù)的特點(diǎn)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差異巨大1.非結(jié)構(gòu)化維護(hù)2.結(jié)構(gòu)化維護(hù)維護(hù)的代價(jià)高昂維護(hù)的問題很多8.3軟件維護(hù)過程1.維護(hù)組織2.維護(hù)報(bào)告3.維護(hù)的事件流圖8.1維護(hù)階段的事件流4.保存維護(hù)記錄5.評價(jià)維護(hù)活動8.4軟件的可維護(hù)性決定軟件可維護(hù)性的因素1.可理解性2.可測試性3.可修改性4.可移植性5.可重用性文檔1.用戶文檔2.系統(tǒng)文檔可維護(hù)性復(fù)審8.5預(yù)防性維護(hù)8.6軟件再工程過程圖8.2軟件再工程過程模型1.庫存目錄分析2.文檔重構(gòu)3.逆向工程4.代碼重構(gòu)5.數(shù)據(jù)重構(gòu)6.正向工程8.7小結(jié)習(xí)題81.軟件的可維護(hù)性與哪些因素有關(guān)?在軟件開發(fā)過程中應(yīng)該采取哪些措施來提高軟件產(chǎn)品的可維護(hù)性?2.假設(shè)自己的任務(wù)是對一個(gè)已有的軟件做重大修改,而且只允許從下述文檔中選取兩份:(a)程序的規(guī)格說明;(b)程序的詳細(xì)設(shè)計(jì)結(jié)果(自然語言描述加上某種設(shè)計(jì)工具表示);(c)源程序清單(其中有適當(dāng)數(shù)量的注解)。應(yīng)選取哪兩份文檔?為什么這樣選取?打算怎樣完成交給自己的任務(wù)?3.分析預(yù)測在以下系統(tǒng)交付使用以后,用戶可能提出哪些改良或擴(kuò)充功能的要求。如果由自己來開發(fā)這些系統(tǒng),在設(shè)計(jì)和實(shí)現(xiàn)時(shí)將采取哪些措施,以方便將來的修改?(1)儲蓄系統(tǒng)(參見習(xí)題2第2題)。(2)機(jī)票預(yù)訂系統(tǒng)〔參見習(xí)題2第3題〕。(3)患者監(jiān)護(hù)系統(tǒng)〔參見習(xí)題2第4題〕。第9章面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)的要點(diǎn)面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)1.與人類習(xí)慣的思維方法一致2.穩(wěn)定性好3.可重用性好4.較易開發(fā)大型軟件產(chǎn)品5.可維護(hù)性好9.2面向?qū)ο蟮母拍顚ο?.對象的形象表示圖9.1對象的形象表示2.對象的定義圖9.2用自動機(jī)模擬對象3.對象的特點(diǎn)其他概念1.類(class)2.實(shí)例(instance)3.消息(message)4.方法(method)5.屬性(attribute)6.封裝(encapsulation)7.繼承(inheritance)圖9.3實(shí)現(xiàn)繼承機(jī)制的原理8.多態(tài)性(polymorphism)9.重載(overloading)9.3面向?qū)ο蠼?.4對象模型類圖的根本符號1.定義類圖9.4表示類的圖形符號2.定義屬性3.定義效勞表示關(guān)系的符號1.關(guān)聯(lián)圖9.5普通關(guān)聯(lián)例如圖9.6關(guān)聯(lián)的角色圖9.7一個(gè)受限的關(guān)聯(lián)圖9.8關(guān)聯(lián)類例如2.聚集圖9.9共享聚集例如圖9.10組合聚集例如3.泛化圖9.11抽象類例如圖9.12復(fù)雜類圖例如圖9.13多重繼承例如4.依賴和細(xì)化圖9.14友元依賴關(guān)系圖9.15細(xì)化關(guān)系例如9.5動態(tài)模型9.6功能模型用例圖圖9.16自動售貨機(jī)系統(tǒng)用例圖1.系統(tǒng)2.用例3.行為者4.用例之間的關(guān)系圖9.17含擴(kuò)展和使用關(guān)系的用例圖用例建模1.尋找行為者2.尋找用例9.73種模型之間的關(guān)系9.8小結(jié)習(xí)題91.什么是面向?qū)ο蠓椒▽W(xué)?它有哪些優(yōu)點(diǎn)?2.什么是“對象〞?它與傳統(tǒng)的數(shù)據(jù)有何異同?3.什么是“類〞?4.什么是“繼承〞?5.什么是模型?開發(fā)軟件為何要建模?6.什么是對象模型?建立對象模型時(shí)主要使用哪些圖形符號?這些符號的含義是什么?7.什么是動態(tài)模型?建立動態(tài)模型時(shí)主要使用哪些圖形符號?這些符號的含義是什么?8.什么是功能模型?建立功能模型時(shí)主要使用哪些圖形符號?9.試用面向?qū)ο笥^點(diǎn)分析、研究本書第2章中給出的定貨系統(tǒng)的例子。在這個(gè)例子中有哪些類?試建立定貨系統(tǒng)的對象模型。10.建立定貨系統(tǒng)的用例模型。第10章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅母具^程概述個(gè)子模型與5個(gè)層次圖10.1復(fù)雜問題的對象模型的5個(gè)層次10.2需求陳述書寫要點(diǎn)例子圖10.2ATM系統(tǒng)10.3建立對象模型確定類與對象1.找出候選的類與對象2.篩選出正確的類與對象確定關(guān)聯(lián)1.初步確定關(guān)聯(lián)2.篩選3.進(jìn)一步完善圖10.3ATM系統(tǒng)原始的類圖劃分主題確定屬性1.分析2.選擇圖10.4ATM系統(tǒng)對象模型中的屬性識別繼承關(guān)系圖10.5帶有繼承關(guān)系的ATM對象模型反復(fù)修改1.分解“現(xiàn)金兌換卡〞類2.“事務(wù)〞由“更新〞組成3.把“分行〞與“分行計(jì)算機(jī)〞合并圖10.6修改后的ATM對象模型10.4建立動態(tài)模型編寫腳本設(shè)想用戶界面圖10.7ATM的界面格式畫事件跟蹤圖1.確定事件2.畫出事件跟蹤圖圖10.8ATM系統(tǒng)正常情況腳本的事件跟蹤圖畫狀態(tài)圖圖10.9ATM類的狀態(tài)圖審查動態(tài)模型圖10.10總行類的狀態(tài)圖圖10.11分行類的狀態(tài)圖10.5建立功能模型畫出根本系統(tǒng)模型圖圖10.12ATM系統(tǒng)的根本系統(tǒng)模型畫出功能級數(shù)據(jù)流圖圖10.13ATM系統(tǒng)的功能級數(shù)據(jù)流圖描述處理框功能10.6定義效勞1.常規(guī)行為2.從事件導(dǎo)出的操作3.與數(shù)據(jù)流圖中處理框?qū)?yīng)的操作4.利用繼承減少冗余操作10.7小結(jié)習(xí)題101.用面向?qū)ο蠓椒ǚ治鲅芯勘緯?xí)題2第2題中描述的儲蓄系統(tǒng),試建立它的對象模型、動態(tài)模型和功能模型。2.用面向?qū)ο蠓椒ǚ治鲅芯勘緯?xí)題2第3題中描述的機(jī)票預(yù)訂系統(tǒng),試建立它的對象模型、動態(tài)模型和功能模型。3.用面向?qū)ο蠓椒ǚ治鲅芯勘緯?xí)題2第4題中描述的患者監(jiān)護(hù)系統(tǒng),試建立它的對象模型、動態(tài)模型和功能模型。4.下面是自動售貨機(jī)系統(tǒng)的需求陳述,試建立它的對象模型、動態(tài)模型和功能模型:第11章面向?qū)ο笤O(shè)計(jì)11.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)那么1.模塊化2.抽象3.信息隱藏4.弱耦合5.強(qiáng)內(nèi)聚6.可重用11.2啟發(fā)規(guī)那么1.設(shè)計(jì)結(jié)果應(yīng)該清晰易懂2.一般\|特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)3.設(shè)計(jì)簡單的類4.使用簡單的協(xié)議5.使用簡單的效勞6.把設(shè)計(jì)變動減至最小圖11.1理想的設(shè)計(jì)變動情況11.3軟件重用概述1.重用2.軟件成分的重用級別3.典型的可重用軟件成分類構(gòu)件1.可重用軟構(gòu)件應(yīng)具備的特點(diǎn)2.類構(gòu)件的重用方式軟件重用的效益1.質(zhì)量2.生產(chǎn)率3.本錢11.4系統(tǒng)分解圖11.2典型的面向?qū)ο笤O(shè)計(jì)模型1.子系統(tǒng)之間的兩種交互方式2.組織系統(tǒng)的兩種方案圖11.3典型應(yīng)用系統(tǒng)的組織結(jié)構(gòu)3.設(shè)計(jì)系統(tǒng)的拓?fù)浣Y(jié)構(gòu)11.5設(shè)計(jì)問題域子系統(tǒng)1.調(diào)整需求2.重用已有的類3.把問題域類組合在一起4.增添一般化類以建立協(xié)議圖11.4窄菱形模式5.調(diào)整繼承層次圖11.5闊菱形模式圖11.6把多重繼承簡化為單一層次的單繼承6.ATM系統(tǒng)實(shí)例圖11.7ATM系統(tǒng)問題域子系統(tǒng)的結(jié)構(gòu)11.6設(shè)計(jì)人機(jī)交互子系統(tǒng)1.分類用戶2.描述用戶3.設(shè)計(jì)命令層次4.設(shè)計(jì)人機(jī)交互類11.7設(shè)計(jì)任務(wù)管理子系統(tǒng)1.分析并發(fā)性2.設(shè)計(jì)任務(wù)管理子系統(tǒng)11.8設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)選擇數(shù)據(jù)存儲管理模式1.文件管理系統(tǒng)2.關(guān)系數(shù)據(jù)庫管理系統(tǒng)3.面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)1.設(shè)計(jì)數(shù)據(jù)格式2.設(shè)計(jì)相應(yīng)的效勞例子11.9設(shè)計(jì)類中的效勞確定類中應(yīng)有的效勞設(shè)計(jì)實(shí)現(xiàn)效勞的方法1.設(shè)計(jì)實(shí)現(xiàn)效勞的算法2.選擇數(shù)據(jù)結(jié)構(gòu)3.定義內(nèi)部類和內(nèi)部操作11.10設(shè)計(jì)關(guān)聯(lián)1.關(guān)聯(lián)的遍歷2.實(shí)現(xiàn)單向關(guān)聯(lián)圖11.8用指針實(shí)現(xiàn)單向關(guān)聯(lián)圖11.9用指針實(shí)現(xiàn)雙向關(guān)聯(lián)3.實(shí)現(xiàn)雙向關(guān)聯(lián)圖11.10用對象實(shí)現(xiàn)關(guān)聯(lián)4.關(guān)聯(lián)對象的實(shí)現(xiàn)11.11設(shè)計(jì)優(yōu)化確定優(yōu)先級提高效率的幾項(xiàng)技術(shù)1.增加冗余關(guān)聯(lián)以提高訪問效率圖11.11公司、雇員及技能之間的關(guān)聯(lián)鏈圖11.12為雇員技能數(shù)據(jù)庫建立索引2.調(diào)整查詢次序3.保存派生屬性調(diào)整繼承關(guān)系1.抽象與具體2.為提高繼承程度而修改類定義圖11.13設(shè)計(jì)類繼承的例子3.利用委托實(shí)現(xiàn)行為共享圖11.14用表實(shí)現(xiàn)棧的兩種方法11.12小結(jié)習(xí)題111.面向?qū)ο笤O(shè)計(jì)應(yīng)該遵循哪些準(zhǔn)那么?簡述每條準(zhǔn)那么的內(nèi)容,并說明遵循這條準(zhǔn)那么的必要性。2.簡述有助于提高面向?qū)ο笤O(shè)計(jì)質(zhì)量的每條主要啟發(fā)規(guī)那么的內(nèi)容和必要性。3.為什么說類構(gòu)件是目前比擬理想的可重用軟構(gòu)件?它有哪些重用方式?4.試用面向?qū)ο蠓椒ǎO(shè)計(jì)本書第2章中給出的定貨系統(tǒng)的例子。5.試用面向?qū)ο蠓椒ǎO(shè)計(jì)本書習(xí)題2第2題中描述的儲蓄系統(tǒng)。6.試用面向?qū)ο蠓椒ǎO(shè)計(jì)本書習(xí)題2第3題中描述的機(jī)票預(yù)訂系統(tǒng)。7.試用面向?qū)ο蠓椒ǎO(shè)計(jì)本書習(xí)題2第4題中描述的患者監(jiān)護(hù)系統(tǒng)。第12章面向?qū)ο髮?shí)現(xiàn)12.1程序設(shè)計(jì)語言面向?qū)ο笳Z言的優(yōu)點(diǎn)1.一致的表示方法2.可重用性3.可維護(hù)性面向?qū)ο笳Z言的技術(shù)特點(diǎn)1.支持類與對象概念的機(jī)制2.實(shí)現(xiàn)整體局部(即聚集)結(jié)構(gòu)的機(jī)制3.實(shí)現(xiàn)一般特殊(即泛化)結(jié)構(gòu)的機(jī)制4.實(shí)現(xiàn)性和效勞的機(jī)制5.類型檢查6.類庫7.效率8.持久保存對象9.參數(shù)化類10.開發(fā)環(huán)境選擇面向?qū)ο笳Z言1.將來能否占主導(dǎo)地位2.可重用性3.類庫和開發(fā)環(huán)境4.其他因素12.2程序設(shè)計(jì)風(fēng)格提高可重用性1.提高方法的內(nèi)聚2.減小方法的規(guī)模3.保持方法的一致性4.把策略與實(shí)現(xiàn)分開5.全面覆蓋6.盡量不使用全局信息7.利用繼承機(jī)制圖12.1通過調(diào)用公用方法實(shí)現(xiàn)代碼重用圖12.2通過因子分解實(shí)現(xiàn)代碼重用提高可擴(kuò)充性1.封裝實(shí)現(xiàn)策略2.不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈3.防止使用多分支語句4.精心確定公有方法提高健壯性1.預(yù)防用戶的操作錯(cuò)誤2.檢查參數(shù)的合法性3.不要預(yù)先確定限制條件4.先測試后優(yōu)化12.3測試策略面向?qū)ο蟮膯卧獪y試面向?qū)ο蟮募蓽y試面向?qū)ο蟠_實(shí)認(rèn)測試12.4設(shè)計(jì)測試用例測試類的方法1.隨機(jī)測試2.劃分測試3.基于故障的測試集成測試方法圖12.3銀行系統(tǒng)的類協(xié)作圖1.多類測試2.從動態(tài)模型導(dǎo)出測試用例圖12.4account類的狀態(tài)轉(zhuǎn)換圖12.5小結(jié)習(xí)題121.面向?qū)ο髮?shí)現(xiàn)應(yīng)該選用哪種程序設(shè)計(jì)語言?為什么?2.面向?qū)ο蟪绦蛟O(shè)計(jì)語言主要有哪些技術(shù)特點(diǎn)?3.選擇面向?qū)ο蟪绦蛟O(shè)計(jì)語言時(shí)主要應(yīng)該考慮哪些因素?4.良好的面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格主要有哪些準(zhǔn)那么?5.測試面向?qū)ο筌浖r(shí),單元測試、集成測試和確認(rèn)測試各有哪些新特點(diǎn)?6.測試面向?qū)ο筌浖r(shí),主要有哪些設(shè)計(jì)單元測試用例的方法?7.測試面向?qū)ο筌浖r(shí),主要有哪些設(shè)計(jì)集成測試用例的方法?8.測試面向?qū)ο筌浖r(shí),主要有哪些設(shè)計(jì)確認(rèn)測試用例的方法?9.試用C++語言實(shí)現(xiàn)〔編程并測試〕本書習(xí)題11第4題要求設(shè)計(jì)的定貨系統(tǒng)。第13章軟件工程管理13.1估算軟件規(guī)模代碼行技術(shù)功能點(diǎn)技術(shù)1.信息域特性2.估算功能點(diǎn)的步驟13.2工作量估算靜態(tài)單變量模型動態(tài)多變量模型COCOMO2模型13.3進(jìn)度方案估算開發(fā)時(shí)間Gantt圖圖13.1舊木板房刷漆工程的Gantt圖工程網(wǎng)絡(luò)圖13.2舊木板房刷漆工程的工程網(wǎng)絡(luò)估算工程進(jìn)度圖13.3舊木板房刷漆工程的完整的工程網(wǎng)絡(luò)關(guān)鍵路徑機(jī)動時(shí)間圖13.4舊木板房刷漆工程改良的Gantt圖之一13.4人員組織民主制程序員組主程序員組圖13.5主程序員組的結(jié)構(gòu)現(xiàn)代程序員組圖13.6現(xiàn)代程序員組的結(jié)構(gòu)圖13.7大型工程的技術(shù)管理組織結(jié)構(gòu)圖13.8包含分散決策的組織方式13.5質(zhì)量保證軟件質(zhì)量圖13.9軟件質(zhì)量因素與產(chǎn)品活動的關(guān)系軟件質(zhì)量保證措施1.技術(shù)復(fù)審的必要性2.走查3.審查4.程序正確性證明13.6軟件配置管理軟件配置1.軟件配置項(xiàng)2.基線軟件配置管理過程1.標(biāo)識軟件配置中的對象2.版本控制3.變化控制4.配置審計(jì)5.狀態(tài)報(bào)告13.7能力成熟度模型1.初始級2.可重復(fù)級3.已定義級4.已管理級5.優(yōu)化級13.8小結(jié)習(xí)題131.研究本書小節(jié)所述的定貨系統(tǒng),要求:〔1〕用代碼行技術(shù)估算本系統(tǒng)的規(guī)模;〔2〕用功能點(diǎn)技術(shù)估算本系統(tǒng)的規(guī)模;〔3〕用靜態(tài)單變量模型估算開發(fā)本系統(tǒng)所需的工作量;〔4〕假設(shè)由一個(gè)人開發(fā)本系統(tǒng),試制定進(jìn)度方案;〔5〕假設(shè)由兩個(gè)人開發(fā)本系統(tǒng),試制定進(jìn)度

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論