軟件工程課后習(xí)題答案_第1頁
軟件工程課后習(xí)題答案_第2頁
軟件工程課后習(xí)題答案_第3頁
軟件工程課后習(xí)題答案_第4頁
軟件工程課后習(xí)題答案_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第 一 章一、什么是軟件危機(jī)?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機(jī)?面:如何開發(fā)軟件,已滿足對軟件日益增長的需求;如何維護(hù)數(shù)量不斷增長的已有軟件。軟件危機(jī)的典型表現(xiàn):對軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。常常出現(xiàn)實(shí)際成本比估算成本高出一個(gè)數(shù)量宜之計(jì)又往往損害了軟件產(chǎn)品的質(zhì)量。這些都降低了開發(fā)商的信譽(yù),引起用戶不滿。用戶對已完成的軟件不滿意的現(xiàn)象時(shí)有發(fā)生。軟件產(chǎn)品的質(zhì)量往往是靠不住的。(4)多難以想象的困難和難以解決的問題。軟件成本、軟件維護(hù)費(fèi)在計(jì)算機(jī)系統(tǒng)總成本中所占比例逐年上升。軟件危機(jī)出現(xiàn)的原因:來自軟件自身的特點(diǎn):是邏輯部件,缺乏可見性;規(guī)模龐大、復(fù)雜,修改、維護(hù)困難。軟件開發(fā)與維護(hù)的方法不當(dāng):忽視需求分析;認(rèn)為軟件開發(fā)等于程序編寫;輕視軟件維護(hù)。供求矛盾將是一個(gè)永恒的主題:面對日益增長的軟件需求,人們顯得力不從心。1.1時(shí)發(fā)現(xiàn)并改正錯(cuò)誤的重要性時(shí),有人不同意這個(gè)觀點(diǎn),認(rèn)為要求在錯(cuò)誤進(jìn)入軟件之前就清楚它們是不現(xiàn)實(shí)的,并舉例說:“如果一個(gè)故障是編碼錯(cuò)誤造成的,那么,一個(gè)人怎么能在設(shè)計(jì)階段清除它呢?”應(yīng)該怎么反駁他?答:在軟件開發(fā)的不同階段進(jìn)行修改付出的代價(jià)是很不相同的,在早期引入變動(dòng),涉及的面較已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價(jià)劇增;在軟件“已經(jīng)完成”是在引入變的成本是很小的,因?yàn)檫@不是整體構(gòu)架的錯(cuò)誤。三、什么是軟件工程?它有哪些本質(zhì)特征?怎樣用軟件工程消除軟件危機(jī)?1993IEEE和維護(hù)過程,也就是把工程應(yīng)用于軟件;②研究①中提到的途徑。軟件工程的本質(zhì)特征:(1)軟件工程關(guān)注于大型程序(軟件系統(tǒng))的構(gòu)造 (2)軟件工程的中心課題是分解問題控制復(fù)雜性 (3)軟件是經(jīng)常變化的,開發(fā)過程中必須考慮軟件將來可能的變化好更有效的方法和工具和諧地合作是開發(fā)軟件的關(guān)鍵 (6)軟件必須有效地支持它的用戶(7)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人(完成一些工作)消除軟件危機(jī)的途徑:對計(jì)算機(jī)軟件有一個(gè)正確的認(rèn)識(軟件≠程序)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法開發(fā)和使用更好的軟件工具四、簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c(diǎn),并分析他們的優(yōu)缺點(diǎn)。開發(fā)和維護(hù)工作;?促進(jìn)了軟件重用。?五、1-5根據(jù)歷史數(shù)據(jù)可以做出如下的假設(shè):對計(jì)算機(jī)存儲容量的需求大致按下面公式描述的趨勢逐年增加:M=4080e0.28(Y-1960)P1=0.3×0.72Y-1974(美分/位)16P2=0.048×0.72Y-1974(美元/YMP1P2基于上述假設(shè)可以比較計(jì)算機(jī)硬件和軟件成本的變化趨勢。要求計(jì)算:198516M=4080e0.28(1985-1960)=4474263(字)存儲器價(jià)格P=0.048*0.72(1985-1974)*4474263=5789美元1985104000果一條指令為一個(gè)字長,計(jì)算使存儲器裝滿程序所需用的成本。需要工作量4474263/200=22371(人/月)199532306000(1)、(2)題。六、什么是軟件過程它與軟件工程方法學(xué)有何關(guān)系的工作步驟。稱范型。軟件過程是軟件工程方法學(xué)的3個(gè)重要組成部分之一。點(diǎn),說明每種模型的使用范圍。結(jié)構(gòu)框架。瀑布模型優(yōu)點(diǎn):它提供了一個(gè)模板,這個(gè)模板使得分析、設(shè)計(jì)、編碼、測試和支持的方法可以在該模板下有一個(gè)共同的指導(dǎo)。雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多。缺點(diǎn):(1)實(shí)際的項(xiàng)目大部分情況難以按照該模型給出的順序進(jìn)行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。性問題存在的。引起客戶的驚慌,而后果也可能是災(zāi)難性的??焖僭湍P蛢?yōu)點(diǎn):使用戶能夠感受到實(shí)際的系統(tǒng),使開發(fā)者能夠快速地構(gòu)造出系統(tǒng)的框架。程序設(shè)計(jì)語言,以使原型能夠盡快工作。增量模型優(yōu)點(diǎn):(1)人員分配靈活,剛開始不用投入大量人力資源,當(dāng)核心產(chǎn)品很受歡迎時(shí),可增加人力實(shí)現(xiàn)下一個(gè)增量。(2)就可以先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。缺點(diǎn):(1)至始至終開發(fā)者和客戶糾纏在一起,直到完全版本出來。(2)適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。該模型具有一定的市場。螺旋模型和理解每一個(gè)演化級別上的風(fēng)險(xiǎn)。缺點(diǎn):(1)需要相當(dāng)?shù)娘L(fēng)險(xiǎn)分析評估的專門技術(shù),且成功依賴于這種技術(shù)。很明顯一個(gè)大的沒有被發(fā)現(xiàn)的風(fēng)險(xiǎn)問題,將會導(dǎo)致問題的發(fā)生,可能導(dǎo)致演化 的方法去控制。該模型適合于大型軟件的開發(fā)八、為什么說噴泉模型較好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?過程都是吻合一致的,或者說是無縫連接的,這自然就很容易實(shí)現(xiàn)各個(gè)開發(fā)步驟的反復(fù)多次迭代,達(dá)到認(rèn)識的逐步深化,而噴泉模型則很好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。九、試討論Rational統(tǒng)一過程的優(yōu)缺點(diǎn)。優(yōu)點(diǎn):提高了團(tuán)隊(duì)生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基于組建的體系結(jié)構(gòu)、可視化軟件建構(gòu),為開發(fā)過程提供較大的通用性。缺點(diǎn):RUP范圍實(shí)現(xiàn)重用的可能性。十.Rational大型的需求不斷變化的復(fù)雜軟件系統(tǒng)項(xiàng)目十一.說明敏捷過程的適用范圍十二.說明微軟過程的適用范圍適用于商業(yè)環(huán)境下具有有限資源和有限開發(fā)時(shí)間約束的項(xiàng)目的軟件過程模式第二章在軟件開發(fā)的早期階段為什么要進(jìn)行可行性研究應(yīng)該從哪些方面研究目標(biāo)系統(tǒng)的可行性?益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度,如果做不到這些,那么花費(fèi)在這些工程上的任何時(shí)間、人力、軟硬件資源和經(jīng)費(fèi),都是無謂的浪費(fèi)??尚行匝芯康膶?shí)質(zhì)是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)過程,就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程??尚行匝芯康哪康木褪怯米钚〉拇鷥r(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。(2)一般說來,至少應(yīng)該從以下三個(gè)方面研究每種解法的可行性:可以搞到的硬件、軟件資源,現(xiàn)有技術(shù)人員的技術(shù)水平和已有的工作基礎(chǔ)。開發(fā),這些即為經(jīng)濟(jì)可行性研究的內(nèi)容對于大多數(shù)系統(tǒng),一般衡量經(jīng)濟(jì)上是否合算,應(yīng)考慮一個(gè)“底線”,經(jīng)濟(jì)可行性研究范圍較廣,包括成本—必要時(shí)還應(yīng)該從法律、社會效益等更廣泛的方面研究每種解法的可行性。為方便儲戶,某銀行擬開發(fā)計(jì)算機(jī)儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給性。數(shù)據(jù)流程圖:取票圖:經(jīng)濟(jì)效益,可立即著手系統(tǒng)的開發(fā)與完善。3、為方便旅客,某航空公司擬開發(fā)一個(gè)機(jī)票預(yù)定系統(tǒng)。旅行社把預(yù)定機(jī)票的旅客信息(性別、工作單位、身份證號碼、旅行時(shí)間、旅行目的地等)即印出機(jī)票給旅客。 寫出問題定義并分析系統(tǒng)的可行性。1>目標(biāo):在一個(gè)月內(nèi)建立一個(gè)高效率,無差錯(cuò)的航空公司機(jī)票預(yù)定系統(tǒng)2>存在的主要問題:人工不易管理,手續(xù)繁瑣3>建立新系統(tǒng)①經(jīng)濟(jì)可行性 成本效益分析成本估算:打印機(jī)一臺(2000元)+開發(fā)費(fèi)(3500元)=5500元可承擔(dān)效益估算:票方便化,科學(xué)化②技術(shù)可行性經(jīng)過調(diào)查分析,得到目前航空公司機(jī)票預(yù)定系統(tǒng)流程圖如下:??客戶開購票證明購票證明發(fā)票開購票發(fā)票收費(fèi)機(jī)票單機(jī)票?客戶系統(tǒng)管航班信息服務(wù)終端顯理員的更新示數(shù)據(jù)報(bào)表系統(tǒng)管查詢請數(shù)據(jù)理員求庫 產(chǎn)生示數(shù)據(jù)報(bào)表系統(tǒng)管表達(dá)申客戶終端顯理員請產(chǎn)生報(bào)示數(shù)據(jù)表系統(tǒng)管機(jī)票核在客戶端打理員對事物產(chǎn)生報(bào)表印數(shù)據(jù)和賬及賬單單產(chǎn)生客戶終端顯4.產(chǎn)生客戶終端顯監(jiān)護(hù)系統(tǒng),試寫出問題定義,并且分析開發(fā)這個(gè)系統(tǒng)的可行性可行性分析--原系統(tǒng)分析:可行性分析可行性分析-邏輯圖:開始技術(shù)可;開始D1:標(biāo)準(zhǔn)數(shù)據(jù)雖然生理數(shù)據(jù)的采集需要涉及大量的專業(yè)精密儀器,軟件工程師并不精通,但是可以在專業(yè)人士的幫助下完成。護(hù)士檢查病患經(jīng)濟(jì)可行性: 服務(wù)器支出方面由患擔(dān),是否可行取決于醫(yī)院方面是否能支付所需的費(fèi)用。D4:指定打印數(shù)操作可行性:標(biāo)準(zhǔn)數(shù)據(jù)據(jù)并不會太多,所以只需一個(gè)人或者幾個(gè)人定期對數(shù)據(jù)庫進(jìn)行管理和維護(hù)就行了。病人端客戶機(jī)醫(yī)生并不具有軟件維護(hù)的能力,在數(shù)據(jù)庫的維護(hù)上需要專業(yè)人士來進(jìn)行,因?yàn)椴』紨?shù)目D2:實(shí)測數(shù)據(jù)服務(wù)器采集病人生救治在預(yù)5北京某高??捎玫碾娫捥柎a有以下幾類:校內(nèi)電話號碼由4位數(shù)字組成,第一位數(shù)字不是0.8(第一位不是0,若是外地電話則撥3位區(qū)碼后再撥8位電話號碼(第一位不是0。答:電話號碼=[校內(nèi)電話號碼|校外電話號碼]校內(nèi)電話號碼=非零數(shù)字+3位數(shù)字校外電話號碼=[本市號碼|外地號碼]本市號碼=數(shù)字零+8位數(shù)字外地號碼=數(shù)字零+3位數(shù)字+8位數(shù)字非零數(shù)字=[1|2|3|4|5|6|7|8|9]數(shù)字零=03位數(shù)字=3{數(shù)字}38位數(shù)字=非零數(shù)字+7位數(shù)字7位數(shù)字=7{數(shù)字}7數(shù)字=[0|1|2|3|4|5|6|7|8|9]其中,[]意思是或,從校內(nèi)電話號碼或校外電話號碼中選擇一個(gè);{}表示重復(fù),兩邊的數(shù)字表示重復(fù)次數(shù)的下限和上限;=意思是定義為;+意思是和,連接兩個(gè)分量。第三章1)正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。1)正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。2)確定對系統(tǒng)的綜合要求:1、功能需求;2、性能需求;3、可靠性和可用性需求;4、出錯(cuò)處理需求;5、接口需求;6、約束;7、逆向需求;8、將來可以提出的要求,分析系統(tǒng)的數(shù)據(jù)要求。(2)答案:??與用戶溝通獲取需求的方法:訪談;面向數(shù)據(jù)流自頂向下求精;簡易的應(yīng)用規(guī)格說明技術(shù);快速建立軟件原型3銀行計(jì)算機(jī)儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址、身份證號碼等存款信息,并打印出存款存單給儲戶;如果是取款且存款時(shí)留有密碼,則系統(tǒng)首先核對儲戶密碼,若密碼正確或存款時(shí)未留密碼,則系統(tǒng)計(jì)算利息并打印出利息清單給儲戶。答案:用ER圖描繪系統(tǒng)中的數(shù)據(jù)對象。分所析習(xí)題2中第4題的患者監(jiān)獄系統(tǒng)。試用實(shí)體-聯(lián)系圖描述本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)(6復(fù)印機(jī)的工作過程大致如下:未接到復(fù)印命令時(shí)處于閑置狀態(tài),一旦接到復(fù)印命令則進(jìn)入復(fù)印狀態(tài),完成一個(gè)復(fù)印時(shí)發(fā)現(xiàn)沒紙,則進(jìn)入缺紙狀態(tài),發(fā)出警告,等待裝紙,裝滿紙后進(jìn)入閑置狀態(tài),準(zhǔn)備接收復(fù)印命do/復(fù)印令;如果復(fù)印時(shí)發(fā)生卡紙故障,則進(jìn)入卡紙狀態(tài),發(fā)出警告等待維修人員來排除故障,故障排除后

完成復(fù)印命令請用狀態(tài)轉(zhuǎn)換圖描繪復(fù)印機(jī)的行為。引起狀態(tài)轉(zhuǎn)換的事件主要是印命令”、“完成復(fù)印命令”、d/缺紙”、“裝滿紙”、“發(fā)生卡紙故障”和“排除了卡紙故障”。1,舉例說明形式化說明技術(shù)和欠形式化方法的優(yōu)缺點(diǎn)。答:優(yōu)點(diǎn)缺點(diǎn)形式化說明1,簡潔準(zhǔn)確的描述物大多形式化的規(guī)格說明主要關(guān)注理現(xiàn)象,對象獲動(dòng)作的系統(tǒng)的功能和數(shù)據(jù),而時(shí)序的問結(jié)果2,可以在不同軟件工題,控制和行為等方面的需求卻更難于表示程活動(dòng)之間平滑的過度。3,它提供了高層確認(rèn)的手段非形式化說明難度低可能存在矛盾,二義性,含糊性,不完整性級抽象層次混亂等問題以一個(gè)簡單的俄羅斯方塊游戲系統(tǒng)規(guī)格說明為例,用自然語言描述如下:游戲的每個(gè)狀態(tài)對應(yīng)一個(gè)游戲界面,開始狀態(tài)下,但變量cd_start=1是進(jìn)入正常游戲的狀態(tài),cd_start=2時(shí)進(jìn)入讀取游戲狀態(tài),cd_start=3是進(jìn)入得分榜界面查看。在得分榜界面按任意鍵返回開始界面,在讀取游戲界面,當(dāng)游戲數(shù)據(jù)讀取完成后進(jìn)入正常游戲狀態(tài),正常游戲狀態(tài)下,同時(shí)按下左鍵和右鍵進(jìn)入儲存游戲界面,數(shù) 據(jù)儲存結(jié)束后返回正常游戲狀態(tài),在正常游戲狀態(tài)下,如果變量game_res=0,則游戲結(jié)束,進(jìn)入游戲結(jié)束畫面。 可見,用自然語言書寫的系統(tǒng)規(guī)格說明書,羅嗦繁雜,并且可能存在矛盾,二義性,含糊性,不完整性及抽象層次混亂等問題。用有窮狀態(tài)的描述如下:狀態(tài)機(jī)J:{開始,正常游戲(游戲進(jìn)行中),得分榜,讀取游戲,儲存游戲,游戲結(jié)束}輸入集K:{按鍵UP,按鍵DOWN,按鍵LEFT,按鍵RIGHT,寄存器變量cd_start,寄存器變量game_res}轉(zhuǎn)換函數(shù)T:如圖4.1所示初始態(tài)S:{開始}終態(tài)集F:{游戲結(jié)束} 讀取游戲,更加簡潔,準(zhǔn)確,無歧義。EEPROM讀2,在什么情況下應(yīng)該使用形式C_tar=EEPROM讀答: 取完成后在用非形式化描述時(shí),存在矛盾,二義性,含糊性,不完整性級抽象層次混亂等問題時(shí)用形式化。應(yīng)用形式化方法的準(zhǔn)則:A開始

游戲進(jìn)行中B,應(yīng)該形式化,但不要過分形式化;C,應(yīng)該估算成本;D,應(yīng)該有形式化的方法顧問隨時(shí)提供咨詢;

LEFT&RIGHTE,Game_res=0 EEPROM寫E,不應(yīng)該放棄傳統(tǒng)的開發(fā)方式;F,應(yīng)該建立詳盡的文檔;G,不應(yīng)該放棄質(zhì)量標(biāo)準(zhǔn);

游戲結(jié)束

入完成后

儲存中H3,一個(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ù)定義如下:〈floating pointbinary〉∷=[〈sign〉]〈bitstring〉E[〈sign〉]〈bitstring〉〈sign〉∷=+|-〈bitstring〉∷=〈bit〉[〈bitstring〉]〈bit〉∷=0|1其中,符號∷=表示定義為;符號[...]a|bab。假設(shè)有這樣一個(gè)有窮狀態(tài)機(jī):以一串字符為輸入,判斷字符串中是否含有合法的浮點(diǎn)二進(jìn)制數(shù)。試對這個(gè)有窮狀態(tài)機(jī)進(jìn)行規(guī)格說明。4,考慮下述的自動(dòng)化圖書館流通系統(tǒng):每本書都有一個(gè)條形碼,每個(gè)人都有一個(gè)帶條形碼的卡片。但一個(gè)借閱人想借一本書時(shí),圖書管理員掃描書上的條形碼和借閱人卡片的條形碼,然后在計(jì)算機(jī)終端上CR。圖書管理員可以把一些書加到集合中,也可以刪除(—)它們。借閱人可以再終端上查找到某個(gè)作者所有的書(輸入“A=”和作者名字(輸入“T=”和標(biāo)題(輸入“S=”加主題范圍)。最后,如果借閱人想借的書已被別人借走,圖書管理員將給這本書設(shè)置一個(gè)預(yù)約,以便書歸還時(shí)把書留給預(yù)約的借閱人(輸入“H=”加書號)。試用有窮狀態(tài)機(jī)說明上述的圖書流通系統(tǒng)答:圖書館流通系統(tǒng)的有窮狀態(tài)機(jī)描述如下:(一)圖書狀態(tài)的有窮狀態(tài)機(jī)描述狀態(tài)機(jī)J:{書在圖書館S1,書被借出S2,書被預(yù)約S3}KT4.4.1S:{書在圖書館S1,F(xiàn)S2,S3}

在終端輸入書被預(yù)約S3狀態(tài)機(jī)J:{管理員設(shè)入庫,書出庫(刪除)H書被預(yù)約S3館S1轉(zhuǎn)換函數(shù)T4..

書歸還,掃描兩個(gè)條S:{管理員設(shè)

形碼,在終端輸入R終態(tài)集F:{書入庫,書出庫(刪除),預(yù)約,}圖4.1.1二)圖書館終端用戶模式的有窮狀態(tài)機(jī)描述 預(yù)約JS2&終端輸入輸入集H種狀態(tài)T4.4.3管理員設(shè)置狀態(tài)初始態(tài)S:{讀者查詢狀} 各種終態(tài)集F:{查詢結(jié)果}書出庫(刪除5明第四題所述H、CR。1P23書出庫(刪除6Z語言庫題所描述圖書館圖書流系統(tǒng)做一個(gè)完整的規(guī)格說明。圖4.4.2 .答:(這題真的不會!)BOOK_STATEBook_in,Book_out,Book_reserveBook_in∩Book_out∩Book_reserve=ΦBook_in∪Book_out∪Book_reserve=BOOK_STATEBook_in,Book_out,Book_reserveBook_in∩Book_out∩Book_reserve=ΦBook_in∪Book_out∪Book_reserve=BOOK_STATE第五章為每種類型的模塊耦合舉一個(gè)具體的例子。間的可能的連接方式有七種,構(gòu)成耦合的七種類型,它們的關(guān)系為:低 耦合性高非直接耦非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合強(qiáng) 獨(dú)立性弱下面舉例說明以上耦合:A.(12,獨(dú)立性最強(qiáng)B.B.數(shù)據(jù)耦合:即一個(gè)模塊訪問另一個(gè)模塊的時(shí)候,彼此之間是通過數(shù)據(jù)參數(shù)來交換輸入、輸出信息的,這種耦合為數(shù)據(jù)耦合。這種耦合較為松散,模塊間獨(dú)立性1 模塊234C.用戶情況 用戶情況結(jié)構(gòu)產(chǎn)生了依賴關(guān)系單價(jià)數(shù)量金額水費(fèi)電費(fèi)計(jì)算水費(fèi)費(fèi)計(jì)算電費(fèi)D.控制耦合:即如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合A模塊E.外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。FlagBF1 F2 … FnF.F.公共耦合:若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為A模塊B模塊公共耦合。使用使用打印機(jī)G.內(nèi)容耦合:如果出現(xiàn)以下情況之一,兩個(gè)模塊就發(fā)生了內(nèi)容耦合A個(gè)模塊的內(nèi)B

C模塊②一個(gè)模塊不通過正常入口兒轉(zhuǎn)到另一個(gè)模塊的內(nèi)部③兩個(gè)模塊有一部分程序代碼重疊(只可能發(fā)生在匯編程序中)④一個(gè)模塊有多個(gè)入口(這意味著一個(gè)模塊有幾種功能)Sub AA(….)……GotoL…EndsubSub BB(..)……L:……End sub

全局?jǐn)?shù)組為每種類型的模塊內(nèi)聚舉一個(gè)例子答:內(nèi)聚標(biāo)志著一個(gè)模塊內(nèi)各個(gè)元素之間彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。低內(nèi)聚:也是很松散的。這就叫做偶然內(nèi)聚TA,B,CD,E,F,G中都有這三條語句,為了節(jié)省空間才把這三條語句作為一個(gè)模板放在一起。一個(gè)模塊產(chǎn)生各種類型的全部輸出),稱為邏輯內(nèi)聚邏輯內(nèi)聚的例子:某一個(gè)模塊將打印,年,月,日,具體打印什么,將由傳入的控制標(biāo)志所決定。時(shí)間內(nèi)聚:一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行(例如,模塊完成各種初始化工作,稱為時(shí)間內(nèi)聚時(shí)間內(nèi)聚的例子:將多個(gè)變量的初始化放在同一個(gè)模塊中實(shí)現(xiàn)。中內(nèi)聚:稱為過程內(nèi)聚過程內(nèi)聚的例子:一個(gè)子程序,將開始讀取學(xué)生的學(xué)號,然后是姓名,最后將讀取分?jǐn)?shù),是由于特定的順序而將這些操作組合在一起的通訊內(nèi)聚:如果模塊中所有的元素都使用同一個(gè)輸入數(shù)據(jù)和(或)個(gè)輸出數(shù)據(jù),則稱為通訊內(nèi)聚通訊內(nèi)聚的例子:有一個(gè)子程序,它將打印實(shí)驗(yàn)報(bào)告,并且在完成后重新初始化傳進(jìn)來的實(shí)驗(yàn)數(shù)據(jù)。這個(gè)程序具有通訊內(nèi)聚性。因?yàn)檫@兩個(gè)操作由于使用同一個(gè)數(shù)據(jù)源聯(lián)系在了一起。高內(nèi)聚:理必須順序執(zhí)行(通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù),則稱為順序內(nèi)聚。齡算出退休的時(shí)間,則這個(gè)程序具有順序內(nèi)聚性。為功能內(nèi)聚。功能內(nèi)聚的例子:一個(gè)程序中所有的操作都是為了算出一個(gè)人的年齡用面向數(shù)據(jù)流的方法設(shè)計(jì)下列系統(tǒng)的軟件結(jié)構(gòu)①儲蓄系統(tǒng)②機(jī)票預(yù)訂系統(tǒng)③患者監(jiān)護(hù)系統(tǒng)美國某大學(xué)有200議,$2600(含$26000的教師工資將保持不變,年工資少于的教師將增加工資,所增加工資數(shù)額按下述方法計(jì)算:給每位教師所贍養(yǎng)的人(包括教師本人每年補(bǔ)助$100,此外,教師有一年工齡每年再多補(bǔ)助¥50,增加后的年工資總額不能多于$26000。教師工資檔案存儲在行政辦公室的磁帶上,檔案中有目前的年工資、贍養(yǎng)的人數(shù)、雇傭日期等信息。需要寫一個(gè)程序計(jì)算并印出每名教師的原工資和調(diào)整后的新工資。要求:(1)畫出此系統(tǒng)的數(shù)據(jù)流圖;(2)寫出需求說明;設(shè)計(jì)上述的工資調(diào)整程序(要求用HIPO用兩種算法,并比較兩種算法的優(yōu)缺點(diǎn):搜索工資檔案數(shù)據(jù),找出年工資少于$26000否超過$26000,存儲新工資,印出新舊工資對照表;把工資檔案數(shù)據(jù)按工資從最低到最高的次序排序,當(dāng)工資數(shù)額超過時(shí)即停止排序,計(jì)算新工資,校核是否超過限額,存儲新工資,印出結(jié)果。解:(1)數(shù)據(jù)流圖:分解后:(2)需求說明:案,需要存儲檔案性能需求:軟件的響應(yīng)時(shí)間應(yīng)小于0.5s,更新處理要快靈活需求:當(dāng)需求發(fā)生某些變化時(shí),該軟件應(yīng)該能夠適應(yīng)這些變化故障處理要求:出現(xiàn)錯(cuò)誤時(shí),應(yīng)給予警告或提示(3)(a)從速度上看比較快,但是需要排序算法,比較復(fù)雜,(a)對于設(shè)計(jì)來講比較簡單.(4)畫出的數(shù)據(jù)流圖比較適合(A)的算法基本功能是:發(fā)兩手牌(利用隨機(jī)數(shù)產(chǎn)生器)。確定贏者和贏牌的類型。NHIPO撲克牌游戲規(guī)則如下:AB。一副撲克牌有52張牌,4(黑桃、紅桃、梅花、方塊2,3,4,.........,10,J,Q,K,A13種。給每個(gè)人發(fā)三張牌,牌面向上,贏者立即可以確定。最高等級的一手牌成為同花,即3張牌均為同一種花色,最大的同花是同Q,K,A。AAA。第四等級的牌是對子,即3A,A,K。第五等級的牌是雜牌,即除去上列4等之外的任何一手牌,最大的雜牌是A.K,J。點(diǎn)數(shù)也相同,則為平局。程序:#include"stdio.h"intrabl(inta,intb,int*r){intl,k,m,i,p;k=b-a+1;l=2;while(i<=1){k=k+k+k+k+k;k=k%m;l=k/4+a;if(l<=b) {p=l;i=i+1;}}*r=k;return(p);}intmax(intT[10][10]){intt=0;if(T[0][0]>T[1][0])t=T[0][0];elset=T[1][0];if(t<T[2][0])t=T[2][0];returnt;}intE1(intT[10][10]){if(T[0][1]==T[1][1]&&T[1][1]==T[2][1])return1;else return0;}intE2(intT[10][10]){intq=0;if(((max(T[10][10])-1)==T[0][0]||(max(T[10][10])-1)==T[1][0]||(max(T[10][10])-1)==T[2][0])&&((max(T[10][10])-2)==T[0][0]||(max(T[10][10])-2)==T[1][0]||(max(T[10][10])-2)==T[2][0]))//if(q=max(T[][10]))return1;elsereturn0;}intE3(intT[10][10]){if(T[0][0]==T[1][0]==T[2][0])return1;elsereturn0;}intE4(intT[10][10]){if(T[0][0]==T[1][0]&&T[0][0]!=T[2][0])return1;elseif(T[0][0]==T[2][0]&&T[0][0]!=T[1][0])return1;elseif(T[1][0]==T[2][0]&&T[1][0]!=T[0][0])return1;elsereturn0;}voidmain(){inttimes=0,e1=0,e2=0,e3=0,e4=0,e5=0;intA[10][10],B[10][10];intr1=2,r2=3;printf("請輸入游戲的次數(shù)\n");scanf("%d",×);for(intj=0;j<times;j++){for(inti=0;i<3;i++){A[i][0]=rabl(1,13,&r1);A[i][1]=rabl(14,17,&r2);B[i][0]=rabl(1,13,&r1);B[i][1]=rabl(14,17,&r2);}if(E1(A[][10])>E1(B[][10])){e1++;printf("A\n");}elseif(E1(A[][10])<E1(B[][10])){e1++;printf("B贏,同花順\n");}elseif(E1(A[][10])==E1(B[][10])&&E1(B[][10])==1){e1++;if(max(A[][10])>max(B[][10]))printf("A贏,同花順\n");elseprintf("B贏,同花順\n");}elseif(E2(A[][10])>E2(B[][10])){e2++;printf("A贏,順子\n");}elseif(E2(A[][10])<E2(B[][10])){e2++;printf("B贏,順子\n");}elseif(E2(A[][10])==E2(B[][10])&&E2(B[][10])==1){e2++;if(max(A[][10])>max(B[][10]))printf("A贏,順子\n");elseprintf("B贏,順子\n");}elseif(E3(A[][10])>E3(B[][10])){e3++;printf("A贏,同點(diǎn)\n");}elseif(E3(A[][10])<E3(B[][10])){e3++;printf("B贏,同點(diǎn)\n");}elseif(E3(A[][10])==E3(B[][10])&&E3(B[][10])==1){e3++;if(max(A[][10])>max(B[][10]))printf("A贏,同點(diǎn)\n");elseprintf("B贏,同點(diǎn)\n");}elseif(E4(A[][10])>E4(B[][10])){e4++;printf("A贏,對子\n");}elseif(E4(A[][10])>E4(B[][10])){e4++;printf("B贏,對子\n");}elseif(E4(A[][10])==E4(B[][10])&&E4(B[][10])==1);{e4++;if(max(A[][10])>max(B[][10]))printf("A贏,對子\n");elseprintf("B贏,對子\n");}else{if(max(A[][10])>max(B[][10]))printf("A贏,雜牌\n");elseprintf("B贏,雜牌\n");}}printf("同花順贏牌概率為%d,順子贏牌概率為%d,同點(diǎn)贏牌概率為%d,對子贏牌概率為%d,雜牌贏牌概率為%d",e1/times,e2/times,e3/times,e4/times,e5/times);}控制流程圖:。第六章1、假設(shè)只有SEQUENCE和DO_WHILE兩種控制結(jié)構(gòu),怎么利用它們完成IF_THEN_ELSE操作?解:轉(zhuǎn)化如下:解:轉(zhuǎn)化如下:K=1DOWHILE(條件.AND.K=K+1ENDDODOWHILE((.NOT.條件).AND.K=K+1ENDDOENDDO2SEQUENCEIF_THEN_ELSEDO_WHILE操作?解:轉(zhuǎn)化如下;解:轉(zhuǎn)化如下;label: IF條件THEN程序塊GOTOlabelELSE程序塊ENDIF3、畫出下列偽代碼程序的流程圖和盒圖:STARTIFpTHENWHILEqDOfENDDOELSEBLOCKgnENDBLOCKENDIFSTOP解:流程圖:盒圖:4、圖6.18給出的程序流程圖代表一個(gè)非結(jié)構(gòu)化的程序,問:為什么說它是非結(jié)構(gòu)化的?設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序。在(2)flagflag的程序;若用了,在設(shè)計(jì)一個(gè)不用flag的程序。解:(1)定義衡量,符合定義規(guī)定的程序,每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口。圖示的程序的循環(huán)控制結(jié)構(gòu)有兩個(gè)出口,顯然不符合狹義的結(jié)構(gòu)程序的定義,因此是非結(jié)構(gòu)化的程序。flag,至少有兩種方法可以把該化程序。flag5、研究下面的偽碼程序:LOOP:SetIto(START+FINISH)/2IFTABLE(I)=ITMEgotoFOUNDIFTABLE(I)<ITMESetSTARTto(I+1)IFTABLE(I)>TMESetFINSHto(I-1)IF(FINSH-START)>1gotoLOOPIFTABLE(START)=ITEMgotoFOUNDIFTABLE(FINSH)=ITEMgotoFOUNDSetFLAGto0GotoDONEFOUND:SetFLAGto1DONE:EXIT要求:畫出流程圖。程序是結(jié)構(gòu)化的嗎?說明理由。若此程序是非結(jié)構(gòu)化,設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序并畫出流程圖。解:(1)該程序流程圖如下:的流程途中有兩個(gè)出口。等價(jià)的結(jié)構(gòu)化程序的流程圖如下:為從小到大順序排好的有序序列。6Ashcroft_Manna是一個(gè)轉(zhuǎn)換的例子。(1Ashcroft_Manna(26.19(b)給出的結(jié)構(gòu)化設(shè)計(jì)。開始開始FTAcFTBFTCdcED停止開始I=1DOCASE=1FTFTFTAcBI=2I=3CI=4dDeI=4DI=4EI=4FI=4T解:(1)從這個(gè)例子中看出,Ashcrof_anna技術(shù)的基本方法是,當(dāng)待改造的序含有嵌套的非結(jié)構(gòu)化的IF語句時(shí),改造后的程序中增加DO-CASE語句和DO-UNTIL語句,并增加一個(gè)輔助變量I,I的初始值為1。最外層的IF語句在1時(shí)執(zhí)行,執(zhí)行完這個(gè)IF語句后把I賦值為隨后應(yīng)該執(zhí)行的內(nèi)層IF語句所對應(yīng)的CASE標(biāo)號值。DO-CASE語句的最大分支數(shù)(可執(zhí)行的最大標(biāo)號值)等于IF的個(gè)數(shù)。當(dāng)執(zhí)行完最內(nèi)層的IF語句之后,把I賦值為可執(zhí)行的最大標(biāo)號值加1,而DO-UNTIL循環(huán)的結(jié)束條件就是I等于這個(gè)值。(2)進(jìn)一步簡化后的結(jié)構(gòu)化程序的流程圖如下所示。7、某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費(fèi)計(jì)算方法如下:總手續(xù)費(fèi)等于基本手續(xù)費(fèi)10008.41000~10000534100004134145100914251006%。當(dāng)每股25(100),41%。要求:用判定表表示手續(xù)費(fèi)的計(jì)算方法。用判定數(shù)表示手續(xù)費(fèi)的計(jì)算方法。解:令P代表交易的總金額,Q代表每股的售價(jià),n代表交易的股數(shù)。表示手續(xù)費(fèi)計(jì)算方法的判定表如圖所示表示手續(xù)費(fèi)計(jì)算方法的判定樹8有什么問題嗎?C EXAMPLELOOP:DOWHILEA=B+1IFA>10THENX=AELSEY=ZENDIFIFY<5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFG=H+RENDDOIFF>0THENPRINTGELSEPRINTKENDIFSTOP解:流程圖:環(huán)形復(fù)雜度:n+1=17-11+1=7=1=6封閉的區(qū)域數(shù)Z>0Y<5Y=2。9、把統(tǒng)計(jì)空格程序的Jackson圖(圖6.13)該畫為等價(jià)的程序流程圖和盒圖。解:流程圖:開始N解:流程圖:開始NY讀一個(gè)字符統(tǒng)計(jì)空格數(shù)并輸出讀取下一個(gè)字符換行,輸出空格總數(shù)盒圖:結(jié)束10、人機(jī)對話由操作員信息和系統(tǒng)信息交替組成。假設(shè)一段對話總是由操作員文件不是文件尾?信息開始以系統(tǒng)信息結(jié)束,用解:Jackson換行,輸出字符串,換行統(tǒng)計(jì)空格數(shù)并輸出讀一個(gè)字符串操作員文件操作員記錄*取下一個(gè)字符串系統(tǒng)文件操作員記錄*學(xué)號姓名專業(yè)班級學(xué)號姓名分?jǐn)?shù)新文件操作員記錄*學(xué)號姓名專業(yè)班級分?jǐn)?shù)取操作員文件記錄產(chǎn)生新文件取系統(tǒng)記錄產(chǎn)生新紀(jì)錄學(xué)號 姓名專業(yè)班學(xué)號章學(xué)號姓名分?jǐn)?shù)第一題級業(yè)班級專業(yè)班級INITIALIZEtheProgramREADthefirsttextrecordDOWHILEtherearemorewordsinthetextDOWHILEtherearemorewordsinthetextEXTRACTthenexttextwordSEARCHtheword-tablefortheextractedIFtheextractedwordisfoundINCREMENTtheword’soccurrencecountELSEINSERTtheextractedwordintothetableENDIFINCREMENTthewords-processedcountENDDOattheendofthetextrecordREADthenexttextrecordENDDOwhenalltextrecordshaveheenreadPRINTthetableandsummaryinformationTERMINATEtheprogram答:INSERTtheextractedwordintothetablewordoccurrence/count1第二題2、研究下面給出的偽碼程序,要求:畫出它的程序流程圖。它是結(jié)構(gòu)化的還是非結(jié)構(gòu)化的說明理由。若是非結(jié)構(gòu)化的,則3種控制結(jié)構(gòu)的結(jié)構(gòu)化程序;寫出這個(gè)結(jié)構(gòu)化設(shè)計(jì)的偽碼;用盒圖表示這個(gè)結(jié)構(gòu)化程序。找出并改正程序邏輯中的錯(cuò)誤。COMMENT:PROGRAMSEARCHESFORFIRSTNREFERENCESTOATOPICINANINFORMATIONRETRIEVALSYSTEMWITHTTOTALENTRIESINPUTNINPUTKEYWORD(S)FORTOPICI=OMATCH=0DOWHILEI≤TI=I+1IFWORD=KEYWORDTHENMATCH=MATCH+1STOREINBUFFERENDIFMATCH=NTHENGOTOOUTPUTENDENDIFN=0THENPRINT″NOMATCH″OUTPUT:ELSECALLSUBROUTINETOPRINTBUFFERINFORMATIONEND第三題3、在第2題的設(shè)計(jì)中若輸入的N值或KEYWORD不合理,會發(fā)生問題。給出這些變量的不合理值的例子。將這些不合理值輸入程序會有什么后果怎樣在程序中加入防錯(cuò)措施,以防止出現(xiàn)這些問題答:N=1,KEYWOED=#。答:無法打印出任何信息。第四題4、(1)什么是模塊測試和集成測試?它們各有什么特點(diǎn)?能是否正確,檢查模塊控制結(jié)構(gòu)中的特定路徑并發(fā)現(xiàn)最大數(shù)量的錯(cuò)誤。特點(diǎn)是:可能發(fā)生接口問題。1000FORTRAN期間將發(fā)現(xiàn)多少個(gè)錯(cuò)誤?為什么?25100個(gè)錯(cuò)誤,美國的一些統(tǒng)計(jì)數(shù)字告訴我們通常這個(gè)比值在0.005~0.0210005~20100010個(gè)錯(cuò)誤,則估計(jì)對它進(jìn)行測試期間將發(fā)現(xiàn)的錯(cuò)誤數(shù)為:5000*10/1000=50。設(shè)計(jì)下列偽碼程序的語句覆蓋和路徑覆蓋測試用例:STARTINPUT(A,B,C)IFA>5THENELSEX=1ENDIFIFB>10THENELSEX=2ENDIFIFC>15THENELSEX=3ENDIFPRINT(X,Y,Z)STOP答:此程序的語句覆蓋用例:①A=5,B=10,C=15;②A=6,B=11,C=16條序中的每個(gè)語序中的每個(gè)語執(zhí)行一次。號1121FT23ABXY預(yù)T20416010031F 3113X5、某圖書館有一個(gè)使用CRT終端的信息檢索系統(tǒng),該系統(tǒng)有下列4個(gè)基本檢索命令要求:設(shè)計(jì)測試數(shù)據(jù)以全面測試系統(tǒng)的正常操作;解:⑴測試系統(tǒng)正常操作的測試數(shù)據(jù)3b(KEYWORD)s(L)d(N)其中,KEYWORD是正確的關(guān)鍵字;Lb20(L分別為第一個(gè)、最后一個(gè)和中央一個(gè)行號s后列出的索引號中的一個(gè)(N分別為第一個(gè)、最后一個(gè)和中央一個(gè)索引號)。針對若干個(gè)不同的KEYWORD重復(fù)執(zhí)行上述命令序列。2f(NAME)d(N)其中,NAME是已知的作者姓名;N是執(zhí)行命令f后列出的索引號中的一個(gè)(至少應(yīng)該使N分別為第一個(gè)、最后一個(gè)和中央一個(gè)索引號)。針對若干個(gè)不同的NAME重復(fù)執(zhí)行上述命令序列。⑵測試系統(tǒng)非正常操作的測試數(shù)據(jù)b的參數(shù):例如,b(reliabilitysoftwarehardwarecombined)reliabilitysoftware②用不正確的關(guān)鍵字作為命令b的參數(shù):例如,b(AARDVARK)預(yù)期的輸出:顯示出最接近的匹配結(jié)果,例如,執(zhí)行上列命令后可能顯示1.AARON,JULES(book)b1ss的參數(shù)不在行號列表中”bf預(yù)期的輸出:“參數(shù)類型錯(cuò)”sd預(yù)期的輸出:“參數(shù)類型錯(cuò)”0sd預(yù)期的輸出:“參數(shù)數(shù)值錯(cuò)”bssd預(yù)期的輸出:“命令順序錯(cuò)”b、、d或f預(yù)期的輸出:“命令語法錯(cuò)”⑨命令參數(shù)空:例如,b()、s()、d預(yù)期的輸出:系統(tǒng)提供默認(rèn)參數(shù)或給出出錯(cuò)信息⑩使用拼錯(cuò)了的作者姓名作為f的參數(shù)預(yù)期的輸出:“找不到這們作者的著作”第六題6、航空公司A向軟件公司BC的軟件工程師,A公司已雇用你所在的公司對上述程序進(jìn)行驗(yàn)收測試。任務(wù)是,根據(jù)下述事實(shí)設(shè)計(jì)驗(yàn)收測試的輸入數(shù)據(jù),解釋你選取這些數(shù)據(jù)的理由。領(lǐng)航員向程序輸入出發(fā)點(diǎn)和目的地,以及根據(jù)天氣和飛機(jī)型號而初步確定的飛3套飛行計(jì)劃(高度,速5個(gè)位置校核點(diǎn))。所制定的飛行計(jì)劃應(yīng)做到燃料消耗和飛行時(shí)間都最少。用正常的輸入數(shù)據(jù)作為測試數(shù)據(jù)5度。②輸入3~5組出發(fā)點(diǎn)和目的地,重復(fù)執(zhí)行步驟153~5153~513~5153~5153~5153~51(2)用特殊的數(shù)據(jù)值作為測試數(shù)據(jù)①分別輸入非常高和非常低的數(shù)據(jù)組合測試②用負(fù)數(shù)測試③輸入數(shù)字0進(jìn)行測試④分別輸入相距非常遠(yuǎn)和非常近的出發(fā)點(diǎn)和目的地測試ay和size,size小于數(shù)組的大小,并給出需要查找的值,該值在somearray預(yù)期的輸出:返回-1;somearraysize,sizesomearray中;預(yù)期的輸出:返回-1;somearraysize,sizesomearray中;預(yù)期的輸出:返回第七題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)DODO循環(huán)只執(zhí)行一遍。這樣做并不會降低測試的功效,因?yàn)榻?jīng)驗(yàn)表明第一次或最后一次執(zhí)行循環(huán)時(shí)最容易出錯(cuò)。Laemmel教授提出的自動(dòng)測試每條路徑的技術(shù)如下:當(dāng)編寫程序時(shí)每個(gè)DO循環(huán)應(yīng)該寫成一種包含測試變量T和模式變量M的特殊形式,因此DOI=1TO38應(yīng)變成DOI=1TOM*38+(1-M)*TM=0M=1時(shí)處于正常運(yùn)行模式。當(dāng)處于測試模式時(shí),令T=0則該循環(huán)一次也不執(zhí)行,令T=1IF語句,例如IFX+Y>0 THEN ELSE Z=Y應(yīng)變成IFM*(X+Y)+T>0 THEN ELSEZ=Y正常運(yùn)行時(shí)令M=1和T=0,測試期間令M=0,為測試THEN部分需令T=+1ELSET=-1要求:IF語句的程序,用Laemmel實(shí)際測試這個(gè)程序并解釋所得到的結(jié)果。Laemmel具修改上一問中人工修改的程序,兩次修改得到的結(jié)果一致嗎LaemmelWHILEDOREPEATUNTIL程序Laemmel技術(shù)的優(yōu)缺點(diǎn)并提出改進(jìn)意見。(1)答:if(x+y)>2A=xElseA=y改為:if M*(x+y)+T>2A=xElseA=y結(jié)果一致。答:兩次結(jié)果是一致的答:WHILEDOIFELSE修改技術(shù)類似。程序運(yùn)行變得復(fù)雜。第八題810000MTTF=10h25(第二個(gè)10個(gè)錯(cuò)誤),MTTF=15h。要求:MTTFMTTF試時(shí)間τ的關(guān)系曲線。在化這條曲線是做了什么假設(shè)?MTTF=100h總共改正了多少個(gè)錯(cuò)誤,還有多少個(gè)錯(cuò)誤潛伏在程序中?答:(1)MTTF與測試時(shí)間τ的關(guān)系曲線如下:假設(shè)調(diào)試過程中沒有引入新的錯(cuò)誤。(2)根據(jù)估算平均無故障時(shí)間的公式可得:1/K(Et/10000-100/10000)=101/K(Et/10000-300/10000)=15計(jì)算可得:K=333,Et=45當(dāng)MTTF=100h時(shí),有1/333(45/10000-Ec/10000)=100計(jì)算可得:Ec=42.3試。423第九題9.如對一個(gè)長度為100000據(jù):(a)7月1日:集成測試開始,沒有發(fā)現(xiàn)錯(cuò)誤。(b)82100MTTF=0.4h(c)91300MTTF=2h根據(jù)上列數(shù)據(jù)完成下列各題。估計(jì)程序中的錯(cuò)誤總數(shù)。MTTF10hMTTF和測試時(shí)間τ之間的函數(shù)關(guān)系曲線。答:(1)根據(jù)估算平均無故障時(shí)間的公式可得:1/K(Et/100000-100/100000)=0.41/K(Et/100000-300/100000)=2計(jì)算可得:K=1000,Et=350即程序中的錯(cuò)誤總數(shù)為350。MTTF=10h時(shí),有1/K(350/100000-計(jì)算可得:Ec=340.2試。MTTF和測試時(shí)間τ第十題10、在測試一個(gè)長度為24000條指令的程序時(shí),第一個(gè)月由甲、乙兩名測試員20個(gè)錯(cuò)誤,使10h246個(gè)甲也發(fā)現(xiàn)了。以后由甲一個(gè)人繼續(xù)測試這個(gè)程序。問:剛開始測試時(shí)程序中總共有多少個(gè)潛在的錯(cuò)誤?MTTF60h,必須再改正多少個(gè)錯(cuò)誤?還需多長測試時(shí)間?MTTF與集成測試時(shí)間τ之間的函數(shù)關(guān)系曲線。答:(1)根據(jù)公式:B0=B2B1/bc,可得:B0=20*24/6=8080根據(jù)估算平均無故障時(shí)間的公式可得:1/K(80/24000-20/24000)=101/K(80/24000-Ec/24000)=60計(jì)算可得:K=40,Ec=70即還需要改正50個(gè)錯(cuò)誤。根據(jù)甲的改正進(jìn)度,估計(jì)還需要3個(gè)月。MTTF與集成測試時(shí)間τ之間的函數(shù)關(guān)系曲線如下:第八章一.來提高軟件產(chǎn)品的可維護(hù)性?答:(1)、可理解性、可預(yù)測性、可修改性、可移植性、可重用性在每個(gè)階段結(jié)束前的技術(shù)審查和管理復(fù)查中,應(yīng)該著重對可維護(hù)性進(jìn)行后,都應(yīng)該對軟件維護(hù)本身仔細(xì)認(rèn)真地復(fù)審。ac因?yàn)槲臋n是影響軟件可維護(hù)性的決定因素。因此,程序代碼完全一致才能是真正有價(jià)值的代碼。文檔修改:針對系統(tǒng)中當(dāng)前正在修改的那些部分文檔建立完整的文檔。的部分。然后重構(gòu)有問題的代碼(此項(xiàng)可以工作可自動(dòng)化進(jìn)行)和測試生成的重構(gòu)代碼(以保證沒有引入異常)并更新代碼文檔。三:答:對儲蓄系統(tǒng):一般大型軟件的維護(hù)成本遠(yuǎn)遠(yuǎn)高于開發(fā)成本若干倍,減少軟件存在的錯(cuò)誤;對機(jī)票預(yù)訂系統(tǒng):往往人一多系統(tǒng)癱瘓幾率就大,在開發(fā)人員不在場的情況的獨(dú)立性越高,這樣對軟件的改進(jìn)越方便,也便于快速糾錯(cuò);對患者監(jiān)護(hù)系統(tǒng)中的增加和修改工作,還要為了改善未來的可維護(hù)性或可靠性而修改軟件。更要考慮系統(tǒng)數(shù)據(jù)的隱秘及安全,隨時(shí)備份。第13章2.4.2小杰所述的訂貨系統(tǒng),要求:用代碼行技術(shù)估算本系統(tǒng)的規(guī)模;用功能點(diǎn)技術(shù)估算本系統(tǒng)的規(guī)模;用靜態(tài)單變量模型估算開發(fā)本系統(tǒng)所需的工作量;假設(shè)由一個(gè)人開發(fā)本系統(tǒng),試制定進(jìn)度計(jì)劃;不會做)2第2題中描述的儲蓄系統(tǒng),要求:用代碼行技術(shù)估算本系統(tǒng)的規(guī)模;用功能點(diǎn)技術(shù)估算本系統(tǒng)的規(guī)模;用靜態(tài)單變量模型估算開發(fā)本系統(tǒng)所需的工作量;假設(shè)由一個(gè)人開發(fā)本系統(tǒng),試制定進(jìn)度計(jì)劃;不會做).3下面敘述對一個(gè)計(jì)算機(jī)輔助設(shè)計(jì)CAD軟.件接受由工程師提供的二維或三維幾何圖形數(shù)據(jù)。工程師通過用戶界面與CAD界面設(shè)計(jì)特征。幾何圖形數(shù)據(jù)及其他支持信息都保存在一個(gè)CAD數(shù)據(jù)庫中。開發(fā)必要的分析、設(shè)計(jì)模塊,以產(chǎn)生所需要的設(shè)計(jì)結(jié)果,這些輸出將顯示在各種不同的圖形設(shè)備上。應(yīng)該適當(dāng)?shù)卦O(shè)計(jì)軟件,以便與外部設(shè)備交互并控制它們。所用的外部設(shè)備包括鼠標(biāo)、數(shù)字(1)進(jìn)一步精化上述要求,把CAD軟件的功能分解成若干個(gè)子功能;?(2)用代碼行技術(shù)估算每個(gè)子功能的規(guī)模;?從歷史數(shù)據(jù)得知,開發(fā)這類系統(tǒng)的平均生產(chǎn)率是8000元,請估算開發(fā)?如果從歷史數(shù)據(jù)得知,開發(fā)這類系統(tǒng)的平均生產(chǎn)率是6.5FP/PM,請估算開發(fā)本系統(tǒng)的工作量和成本約束。例如,在開始估算軟件規(guī)模之前,需要確定“良好的人機(jī)界面設(shè)計(jì)特征”的具體含義,以及對“CAD數(shù)據(jù)庫”的規(guī)模和復(fù)雜度的具體需求。?經(jīng)過對需求的進(jìn)一步精化,分解出軟件的下述7?個(gè)主要的子功能:????用戶界面及控制機(jī)制;????二維幾何圖形分析;????三維幾何圖形分析;????數(shù)據(jù)庫管理;????計(jì)算機(jī)圖形顯示機(jī)制;????外部設(shè)備控制;????設(shè)計(jì)分析模塊。(2)3?個(gè)值:樂觀值(a),悲觀值(b)和可能值(m)10.4?表10.4?代碼行技術(shù)的估算表?功能?樂觀值?可能值?悲觀值?估計(jì)值?用戶界面及控制機(jī)制1500220035002300?二維幾何圖形分析3800540064005300?三維幾何圖形分析4600690086006800?數(shù)據(jù)庫管理?1850320054503350計(jì)算機(jī)圖形顯示機(jī)制3100490070004950外部設(shè)備控制?1400215026002100設(shè)計(jì)分析模塊?62008500102008400估算出的總代碼行數(shù)?33200(3)使用功能點(diǎn)技術(shù)估算軟件規(guī)模時(shí),對軟件的分解是基于信息域特性而不是基于軟件功能。表10.55均級的。14DI10.6?10.5??估算調(diào)整的功能點(diǎn)數(shù)?功能 ?樂觀值? 可能值? 悲觀值? 估計(jì)值? 特性系數(shù)? UFP數(shù)?輸入數(shù)?20243024496輸出數(shù)12152216580查詢數(shù)?1622282488文件數(shù)?44541010外部接口數(shù)?2232714總計(jì)數(shù)值?38表10.6??估算復(fù)雜性因素?因

溫馨提示

  • 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

提交評論