軟件工程導論(第六版)張海藩-牟永敏課后習題答案_第1頁
軟件工程導論(第六版)張海藩-牟永敏課后習題答案_第2頁
軟件工程導論(第六版)張海藩-牟永敏課后習題答案_第3頁
軟件工程導論(第六版)張海藩-牟永敏課后習題答案_第4頁
軟件工程導論(第六版)張海藩-牟永敏課后習題答案_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

..第一章一、什么是軟件危機?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機?軟件危機是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題。它包括兩方面:如何開發(fā)軟件,已滿足對軟件日益增長的需求;如何維護數(shù)量不斷增長的已有軟件。軟件危機的典型表現(xiàn):<1>對軟件開發(fā)成本和進度的估計常常很不準確。常常出現(xiàn)實際成本比估算成本高出一個數(shù)量級、實際進度比計劃進度拖延幾個月甚至幾年的現(xiàn)象。而為了趕進度和節(jié)約成本所采取的一些權(quán)宜之計又往往損害了軟件產(chǎn)品的質(zhì)量。這些都降低了開發(fā)商的信譽,引起用戶不滿。<2>用戶對已完成的軟件不滿意的現(xiàn)象時有發(fā)生。<3>軟件產(chǎn)品的質(zhì)量往往是靠不住的。 <4>軟件常常是不可維護的。<5>軟件通常沒有適當?shù)奈臋n資料。文檔資料不全或不合格,必將給軟件開發(fā)和維護工作帶來許多難以想象的困難和難以解決的問題。<6>軟件成本、軟件維護費在計算機系統(tǒng)總成本中所占比例逐年上升。<7>開發(fā)生產(chǎn)率提高的速度遠跟不上計算機應(yīng)用普及的需求。軟件危機出現(xiàn)的原因:<1>來自軟件自身的特點:是邏輯部件,缺乏可見性;規(guī)模龐大、復(fù)雜,修改、維護困難。<2>軟件開發(fā)與維護的方法不當:忽視需求分析;認為軟件開發(fā)等于程序編寫;輕視軟件維護。<3>供求矛盾將是一個永恒的主題:面對日益增長的軟件需求,人們顯得力不從心。二、假設(shè)自己是一家軟件公司的總工程師,當把圖1.1給手下的軟件工程師們觀看,告訴他們及時發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意這個觀點,認為要求在錯誤進入軟件之前就清楚它們是不現(xiàn)實的,并舉例說:"如果一個故障是編碼錯誤造成的,那么,一個人怎么能在設(shè)計階段清除它呢?"應(yīng)該怎么反駁他?答:在軟件開發(fā)的不同階段進行修改付出的代價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比較低;在開發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個變動要對所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價劇增;在軟件"已經(jīng)完成"是在引入變動,當然付出的代價更高。一個故障是代碼錯誤造成的,有時這種錯誤是不可避免的,但要修改的成本是很小的,因為這不是整體構(gòu)架的錯誤。三、什么是軟件工程?它有哪些本質(zhì)特征?怎樣用軟件工程消除軟件危機?1993年IEEE的定義:軟件工程是:①把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程應(yīng)用于軟件;②研究①中提到的途徑。軟件工程的本質(zhì)特征:<1>軟件工程關(guān)注于大型程序<軟件系統(tǒng)>的構(gòu)造<2>軟件工程的中心課題是分解問題,控制復(fù)雜性 <3>軟件是經(jīng)常變化的,開發(fā)過程中必須考慮軟件將來可能的變化<4>開發(fā)軟件的效率非常重要,因此,軟件工程的一個重要課題就是,尋求開發(fā)與維護軟件的更好更有效的方法和工具<5>和諧地合作是開發(fā)軟件的關(guān)鍵 <6>軟件必須有效地支持它的用戶<7>在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人<完成一些工作>消除軟件危機的途徑:<1>對計算機軟件有一個正確的認識<軟件≠程序<2>必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目<3>推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法<4>開發(fā)和使用更好的軟件工具四、簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c,并分析他們的優(yōu)缺點。1.

傳統(tǒng)方法學:也稱為生命周期方法學或結(jié)構(gòu)化范型。

優(yōu)點:把軟件生命周期劃分成基干個階段,每個階段的任務(wù)相對獨立,而且比較簡單,便于不同人員分工協(xié)作,

從而降低了整個軟件開發(fā)過程的困難程度。缺點:當軟件規(guī)模龐大時,或者對軟件的需求是模糊的或會承受時

間而變化的時候,開發(fā)出的軟件往往不成功;而且維護起來仍然很困難。

2.

面向?qū)ο蠓椒▽W:優(yōu)點:降低了軟件產(chǎn)品的復(fù)雜性;提高了軟件的可理解性;簡化了軟件的開發(fā)和維護工作;

促進了軟件重用。

五、1-5根據(jù)歷史數(shù)據(jù)可以做出如下的假設(shè):對計算機存儲容量的需求大致按下面公式描述的趨勢逐年增加:M=4080e0.28<Y-1960>存儲器的價格按下面公式描述的趨勢逐年下降:P1=0.3×0.72Y-1974<美分/位>如果計算機字長為16位,則存儲器價格下降的趨勢為:P2=0.048×0.72Y-1974<美元/字>在上列公式中Y代表年份,M是存儲容量<字數(shù)>,P1和P2代表價格?;谏鲜黾僭O(shè)可以比較計算機硬件和軟件成本的變化趨勢。要求計算:<1>在1985年對計算機存儲容量的需求估計是多少?如果字長為16位,這個存儲器的價格是多少?存儲容量需求M=4080e0.28〔1985-1960=4474263〔字存儲器價格P=0.048*0.72〔1985-1974*4474263=5789美元<2>假設(shè)在1985年一名程序員每天可開發(fā)出10條指令,程序員的平均工資是每月4000美元。如果一條指令為一個字長,計算使存儲器裝滿程序所需用的成本。需要工作量4474263/200=22371〔人/月指令成本22371*4000=89484000美元<3>假設(shè)在1995年存儲器字長為32位,一名程序員每天可開發(fā)出30條指令,程序員的月平均工資為6000美元,重復(fù)<1>、<2>題。需求估計M=4080e0.28〔1995-1960=73577679字存儲器價格0.003*32*0.72〔1995-1974*73577679=7127美元工作量73577679/600=122629<人/月成本122629*6000=735776790美元六、什么是軟件過程?它與軟件工程方法學有何關(guān)系?軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。軟件工程方法學:通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學,也稱范型。軟件過程是軟件工程方法學的3個重要組成部分之一。七、什么是軟件生命周期模型?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點,說明每種模型的使用范圍。軟件生命周期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務(wù)的結(jié)構(gòu)框架。瀑布模型優(yōu)點:它提供了一個模板,這個模板使得分析、設(shè)計、編碼、測試和支持的方法可以在該模板下有一個共同的指導。雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多。缺點:<1>實際的項目大部分情況難以按照該模型給出的順序進行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。<2>經(jīng)常情況下客戶難以表達真正的需求,而這種模型卻要求如此,這種模型是不歡迎具有二義性問題存在的。<3>客戶要等到開發(fā)周期的晚期才能看到程序運行的測試版本,而在這時發(fā)現(xiàn)大的錯誤時,可能引起客戶的驚慌,而后果也可能是災(zāi)難性的??焖僭湍P蛢?yōu)點:使用戶能夠感受到實際的系統(tǒng),使開發(fā)者能夠快速地構(gòu)造出系統(tǒng)的框架。缺點:產(chǎn)品的先天性不足,因為開發(fā)者常常需要做實現(xiàn)上的折中,可能采用不合適的操作系統(tǒng)或程序設(shè)計語言,以使原型能夠盡快工作。增量模型優(yōu)點:<1>人員分配靈活,剛開始不用投入大量人力資源,當核心產(chǎn)品很受歡迎時,可增加人力實現(xiàn)下一個增量。<2>當配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。缺點:<1>至始至終開發(fā)者和客戶糾纏在一起,直到完全版本出來。<2>適合于軟件需求不明確、設(shè)計方案有一定風險的軟件項目。該模型具有一定的市場。螺旋模型優(yōu)點:對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法。開發(fā)者和客戶能夠較好地對待和理解每一個演化級別上的風險。缺點:<1>需要相當?shù)娘L險分析評估的專門技術(shù),且成功依賴于這種技術(shù)。<2>很明顯一個大的沒有被發(fā)現(xiàn)的風險問題,將會導致問題的發(fā)生,可能導致演化的方法失去控制。<3>這種模型相對比較新,應(yīng)用不廣泛,其功效需要進一步的驗證。該模型適合于大型軟件的開發(fā)八、為什么說噴泉模型較好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?因為使用面向?qū)ο蠓椒▽W開發(fā)軟件時,各個階段都使用統(tǒng)一的概念和表示符號,因此,整個開發(fā)過程都是吻合一致的,或者說是無縫連接的,這自然就很容易實現(xiàn)各個開發(fā)步驟的反復(fù)多次迭代,達到認識的逐步深化,而噴泉模型則很好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。九、試討論Rational統(tǒng)一過程的優(yōu)缺點。優(yōu)點:提高了團隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基于組建的體系結(jié)構(gòu)、可視化軟件建模、驗證軟件質(zhì)量及控制軟件變更等方面、針對所有關(guān)鍵的開發(fā)活動為每個開發(fā)成員提供了必要的準則、模版和工具指導,并確保全體成員共享相同的知識基礎(chǔ)。它建立了簡潔和清晰的過程結(jié)構(gòu),為開發(fā)過程提供較大的通用性。缺點:RUP只是一個開發(fā)過程,并沒有涵蓋軟件過程的全部內(nèi)容,例如它缺少關(guān)于軟件運行和支持等方面的內(nèi)容,此外,他沒有支持多項目的開發(fā)結(jié)構(gòu),這在一定程度上降低了在開發(fā)組織內(nèi)大范圍實現(xiàn)重用的可能性。十.Rational統(tǒng)一過程主要適用于何種項目?大型的需求不斷變化的復(fù)雜軟件系統(tǒng)項目十一.說明敏捷過程的適用范圍適用于商業(yè)競爭環(huán)境下對小型項目提出的有限資源和有限開發(fā)時間的約束十二.說明微軟過程的適用范圍適用于商業(yè)環(huán)境下具有有限資源和有限開發(fā)時間約束的項目的軟件過程模式第二章1.在軟件開發(fā)的早期階段為什么要進行可行性研究?應(yīng)該從哪些方面研究目標系統(tǒng)的可行性?答:〔1開發(fā)一個軟件時,需要判斷原定的系統(tǒng)模型和目標是否現(xiàn)實,系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個系統(tǒng)的程度,如果做不到這些,那么花費在這些工程上的任何時間、人力、軟硬件資源和經(jīng)費,都是無謂的浪費??尚行匝芯康膶嵸|(zhì)是要進行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計過程,就是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設(shè)計的過程??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定問題是否能夠解決?!?一般說來,至少應(yīng)該從以下三個方面研究每種解法的可行性:a.技術(shù)可行性。對要開發(fā)項目的功能、性能和限制條件進行分析,確定在現(xiàn)有的資源條件下,技術(shù)風險有多大,項目是否能實現(xiàn),這些即為技術(shù)可行性研究的內(nèi)容。這里的資源包括已有的或可以搞到的硬件、軟件資源,現(xiàn)有技術(shù)人員的技術(shù)水平和已有的工作基礎(chǔ)。b.經(jīng)濟可行性。進行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項目是否值得投資開發(fā),這些即為經(jīng)濟可行性研究的內(nèi)容對于大多數(shù)系統(tǒng),一般衡量經(jīng)濟上是否合算,應(yīng)考慮一個"底線",經(jīng)濟可行性研究范圍較廣,包括成本—效益分析,長期公司經(jīng)營策略,開發(fā)所需的成本和資源,潛在的市場前景。c.操作可行性。有時還要研究社會可行性問題,研究要開發(fā)的項目是否存在任何侵犯、妨礙等責任問題。社會可行性所涉及的范圍也比較廣,它包括合同、責任、侵權(quán)和其他一些技術(shù)人員常常不了解的陷阱等。必要時還應(yīng)該從法律、社會效益等更廣泛的方面研究每種解法的可行性。2.為方便儲戶,某銀行擬開發(fā)計算機儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶;如果是取款,系統(tǒng)計算利息并印出利息清單給儲戶。請寫出問題定義并分析此系統(tǒng)的可行性。數(shù)據(jù)流程圖:取票圖:航空訂票系統(tǒng)技術(shù)在目前是一個技術(shù)上成熟的系統(tǒng),并且在航空公司內(nèi)部準備采取有力措施保證資金和人員配置等。因此,分階段開發(fā)"航空訂票系統(tǒng)"的構(gòu)想是可行的。為了使航空公司適應(yīng)現(xiàn)代化市場競爭的需求,促進機票預(yù)訂管理信息化,不斷滿足旅客預(yù)訂機票的要求,爭取更好的經(jīng)濟效益,可立即著手系統(tǒng)的開發(fā)與完善。3、為方便旅客,某航空公司擬開發(fā)一個機票預(yù)定系統(tǒng)。旅行社把預(yù)定機票的旅客信息〔姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等輸入進入該系統(tǒng),系統(tǒng)為旅客安排航班,印出取票通知和賬單,旅客在飛機起飛的前一天憑取票通知和賬單交款取票,系統(tǒng)校對無誤即印出機票給旅客。寫出問題定義并分析系統(tǒng)的可行性。1>目標:在一個月內(nèi)建立一個高效率,無差錯的航空公司機票預(yù)定系統(tǒng)2>存在的主要問題:人工不易管理,手續(xù)繁瑣3>建立新系統(tǒng)①經(jīng)濟可行性成本效益分析成本估算:打印機一臺〔2000元+開發(fā)費〔3500元=5500元可承擔效益估算:該系統(tǒng)有很好的社會效益,提高了航空公司售票效率,方便了旅客,售票方便化,科學化②技術(shù)可行性經(jīng)過調(diào)查分析,得到目前航空公司機票預(yù)定系統(tǒng)流程圖如下:

客戶開購票證明

客戶開購票證明購票證明開購票發(fā)票發(fā)票收費機票單機票

客戶系統(tǒng)管理員系統(tǒng)管理員系統(tǒng)管理員系統(tǒng)管理員航班信息的更新查詢請求表達申請機票核對事物數(shù)據(jù)庫產(chǎn)生報表產(chǎn)生報表產(chǎn)生報表產(chǎn)生報表及賬單服務(wù)終端顯示數(shù)據(jù)客戶終端顯示數(shù)據(jù)客戶終端顯示數(shù)據(jù)在客戶端打印數(shù)據(jù)和賬單目前住院病人主要由護士護理,這樣做不僅需要大量護士,而且由于不能隨時觀察危重病人的病情變化,還可能會延誤搶救時機。某醫(yī)院打算開發(fā)一個以計算機為中心的患者監(jiān)護系統(tǒng),試寫出問題定義,并且分析開發(fā)這個系統(tǒng)的可行性可行性分析--原系統(tǒng)分析:護士檢查病患護士檢查病患救治結(jié)束需要救治開始可行性分析-邏輯圖:開始開始醫(yī)生輸出病患標準數(shù)據(jù)服務(wù)器采集病人生理數(shù)據(jù)對比大小警報結(jié)束在預(yù)測范圍內(nèi)不在預(yù)測范圍內(nèi)醫(yī)生醫(yī)生病人端客戶機D1:標準數(shù)據(jù)服務(wù)器D2:實測數(shù)據(jù)D3:警報數(shù)據(jù)護士D4:指定打印數(shù)據(jù)技術(shù)可行性;雖然生理數(shù)據(jù)的采集需要涉及大量的專業(yè)精密儀器,軟件工程師并不精通,但是可以在專業(yè)人士的幫助下完成。經(jīng)濟可行性:支出方面由醫(yī)院方面承擔,是否可行取決于醫(yī)院方面是否能支付所需的費用。操作可行性:醫(yī)生并不具有軟件維護的能力,在數(shù)據(jù)庫的維護上需要專業(yè)人士來進行,因為病患數(shù)目并不會太多,所以只需一個人或者幾個人定期對數(shù)據(jù)庫進行管理和維護就行了。5北京某高校可用的號碼有以下幾類:校內(nèi)號碼由4位數(shù)字組成,第一位數(shù)字不是0.校外又分為本市和外地兩類。撥校外需要先撥0,若是本市則接著撥8位數(shù)字〔第一位不是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)號碼或校外號碼中選擇一個;{}表示重復(fù),兩邊的數(shù)字表示重復(fù)次數(shù)的下限和上限;=意思是定義為;+意思是和,連接兩個分量。第三章〔1.為什么要進行需求分析?通常對軟件系統(tǒng)有哪些要求?答:1>為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論我們把設(shè)計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。2>確定對系統(tǒng)的綜合要求:1、功能需求;2、性能需求;3、可靠性和可用性需求;4、出錯處理需求;5、接口需求;6、約束;7、逆向需求;8、將來可以提出的要求,分析系統(tǒng)的數(shù)據(jù)要求?!?怎樣與用戶有效地溝通以獲取用戶的真實需求?答案:

與用戶溝通獲取需求的方法:訪談;面向數(shù)據(jù)流自頂向下求精;簡易的應(yīng)用規(guī)格說明技術(shù);快速建立軟件原型3銀行計算機儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址、身份證號碼等存款信息,并打印出存款存單給儲戶;如果是取款且存款時留有密碼,則系統(tǒng)首先核對儲戶密碼,若密碼正確或存款時未留密碼,則系統(tǒng)計算利息并打印出利息清單給儲戶。答案:用ER圖描繪系統(tǒng)中的數(shù)據(jù)對象?!?分所析習題2中第4題的患者監(jiān)獄系統(tǒng)。試用實體-聯(lián)系圖描述本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)流程描繪本系統(tǒng)的功能。..〔6復(fù)印機的工作過程大致如下:未接到復(fù)印命令時處于閑置狀態(tài),一旦接到復(fù)印命令則進入復(fù)印狀態(tài),完成一個復(fù)印命令規(guī)定的工作后又回到閑置狀態(tài),等待下一個復(fù)印命令;如果執(zhí)行復(fù)印命令時發(fā)現(xiàn)沒紙,則進入缺紙狀態(tài),發(fā)出警告,等待裝紙,裝滿紙后進入閑置狀態(tài),準備接收復(fù)印命令;如果復(fù)印時發(fā)生卡紙故障,則進入卡紙狀態(tài),發(fā)出警告等待維修人員來排除故障,故障排除后回到閑置狀態(tài)。請用狀態(tài)轉(zhuǎn)換圖描繪復(fù)印機的行為。答案:從問題陳述可知,復(fù)印機的狀態(tài)主要有"閑置"、"復(fù)印"、"缺紙"和"卡紙"。引起狀態(tài)轉(zhuǎn)換的事件主要是"復(fù)印命令"、"完成復(fù)印命令"、"發(fā)現(xiàn)缺紙"、"裝滿紙"、"發(fā)生卡紙故障"和"排除了卡紙故障"。閑置閑置復(fù)印do/復(fù)印缺紙do/警告卡紙do/警告復(fù)印命令完成復(fù)印命令裝滿紙排除了卡紙故障1,舉例說明形式化說明技術(shù)和欠形式化方法的優(yōu)缺點。答:優(yōu)點缺點形式化說明1,簡潔準確的描述物理現(xiàn)象,對象獲動作的結(jié)果2,可以在不同軟件工程活動之間平滑的過度。3,它提供了高層確認的手段大多形式化的規(guī)格說明主要關(guān)注系統(tǒng)的功能和數(shù)據(jù),而時序的問題,控制和行為等方面的需求卻更難于表示非形式化說明難度低可能存在矛盾,二義性,含糊性,不完整性級抽象層次混亂等問題以一個簡單的俄羅斯方塊游戲系統(tǒng)規(guī)格說明為例,用自然語言描述如下:游戲的每個狀態(tài)對應(yīng)一個游戲界面,開始狀態(tài)下,但變量cd_start=1是進入正常游戲的狀態(tài),cd_start=2時 進入讀取游戲狀態(tài),cd_start=3是進入得分榜界面查看。在得分榜界面按任意鍵返回開始界面,在讀取游戲界 面,當游戲數(shù)據(jù)讀取完成后進入正常游戲狀態(tài),正常游戲狀態(tài)下,同時按下左鍵和右鍵進入儲存游戲界面,數(shù) 據(jù)儲存結(jié)束后返回正常游戲狀態(tài),在正常游戲狀態(tài)下,如果變量game_res=0,則游戲結(jié)束,進入游戲結(jié)束畫面。 可見,用自然語言書寫的系統(tǒng)規(guī)格說明書,羅嗦繁雜,并且可能存在矛盾,二義性,含糊性,不完整性及抽象 層次混亂等問題。用有窮狀態(tài)的描述如下:狀態(tài)機J:{開始,正常游戲〔游戲進行中,得分榜,讀取游戲,儲存游戲,游戲結(jié)束}輸入集K:{按鍵UP,按鍵DOWN,按鍵LEFT,按鍵RIGHT,寄存器變量cd_start,寄存器變量game_res}轉(zhuǎn)換函數(shù)T:如圖4.1所示EEPROM寫入完成后LEFT&RIGHTGame_res=0EEPROM讀取完成后Cd_start=1EEPROM寫入完成后LEFT&RIGHTGame_res=0EEPROM讀取完成后Cd_start=1Cd_start=2按任意鍵Cd_start=3得分榜游戲結(jié)束開始儲存中讀取游戲游戲進行中圖4.1游戲狀態(tài)轉(zhuǎn)換圖終態(tài)集F:{游戲結(jié)束}可見用形式化語言描述,更加簡潔,準確,無歧義。2,在什么情況下應(yīng)該使用形式化說明技術(shù)?使用形式化說明技術(shù)應(yīng)遵守哪些規(guī)則?答:在用非形式化的方式描述時,存在矛盾,二義性,含糊性,不完整性級抽象層次混亂等問題時用形式化說明技術(shù)。應(yīng)用形式化方法的準則:A,應(yīng)該選用適當?shù)谋硎痉椒ǎ籅,應(yīng)該形式化,但不要過分形式化;C,應(yīng)該估算成本;D,應(yīng)該有形式化的方法顧問隨時提供咨詢;E,不應(yīng)該放棄傳統(tǒng)的開發(fā)方式;F,應(yīng)該建立詳盡的文檔;G,不應(yīng)該放棄質(zhì)量標準;H,不應(yīng)該盲目依賴形式化方法;I,應(yīng)該測試,測試再測試;J,應(yīng)該重用。3,一個浮點二進制數(shù)的構(gòu)成是:一個可選的符號<+或->,后跟一個或多個二進制位,再跟上一個字符E,再加上另一個可選符號<+或->及一個或多個二進制位。例如,下列的字符串都是浮點二進制數(shù):110101E-101-100111E11101+1E0更形式化地,浮點二進制數(shù)定義如下:〈floatingpointbinary〉∷=[〈sign〉]〈bitstring〉E[〈sign〉]〈bitstring〉〈sign〉∷=+|-〈bitstring〉∷=〈bit〉[〈bitstring〉]〈bit〉∷=0|1其中,符號∷=表示定義為;符號[...]表示可選項;符號a|b表示a或b。假設(shè)有這樣一個有窮狀態(tài)機:以一串字符為輸入,判斷字符串中是否含有合法的浮點二進制數(shù)。試對這個有窮狀態(tài)機進行規(guī)格說明。4,考慮下述的自動化圖書館流通系統(tǒng):每本書都有一個條形碼,每個人都有一個帶條形碼的卡片。但一個借閱人想借一本書時,圖書管理員掃描書上的條形碼和借閱人卡片的條形碼,然后在計算機終端上輸入C;當歸還一本書時,圖書管理員將再次掃描,并輸入R。圖書管理員可以把一些書加到〔+圖書集合中,也可以刪除〔—它們。借閱人可以再終端上查找到某個作者所有的書〔輸入"A="和作者名字,或具有指定標題的所有書籍〔輸入"T="和標題,或?qū)儆谔囟ㄖ黝}范圍內(nèi)的所有圖書〔輸入"S="加主題范圍。最后,如果借閱人想借的書已被別人借走,圖書管理員將給這本書設(shè)置一個預(yù)約,以便書歸還時把書留給預(yù)約的借閱人〔輸入"H="加書號。試用有窮狀態(tài)機說明上述的圖書流通系統(tǒng)答:圖書館流通系統(tǒng)的有窮狀態(tài)機描述如下:〔一圖書狀態(tài)的有窮狀態(tài)機描述狀態(tài)機J:{書在圖書館S1,書被借出S2,書被預(yù)約S3}輸入集K:{書上條形碼,借閱卡條形碼,終端輸入各種命令}轉(zhuǎn)換函數(shù)T:如圖所示初始態(tài)S:{書在圖書館S1,書被借出S2}終態(tài)集F:{書被借出S2,書被預(yù)約S3}書歸還,掃描兩個條形碼,在終端輸入書歸還,掃描兩個條形碼,在終端輸入R在終端輸入"H="加書號掃描兩個條形碼,在終端輸入R掃描兩個條形碼,在終端輸入C書在圖書館S1書被借出S2書被預(yù)約S3圖<二>圖書館終端管理員模式的有窮狀態(tài)機描述狀態(tài)機J:{管理員設(shè)置狀態(tài),書入庫,書出庫〔刪除,預(yù)約}輸入集K:{終端輸入管理員命令,書的各種狀態(tài)〔S1,S2,S3}轉(zhuǎn)換函數(shù)T:如圖所示初始態(tài)S:{管理員設(shè)置狀態(tài)}管理員刪除管理員添加管理員設(shè)置狀態(tài)書入庫書出庫〔刪除預(yù)約書狀態(tài)為管理員刪除管理員添加管理員設(shè)置狀態(tài)書入庫書出庫〔刪除預(yù)約書狀態(tài)為S2&終端輸入"H="加書名圖<二>圖書館終端用戶模式的有窮狀態(tài)機描述狀態(tài)機J:{讀者查詢狀態(tài),查詢結(jié)果}輸入集K:{終端輸入用戶查詢命令,書的各種狀態(tài)〔S1,S2,S3}轉(zhuǎn)換函數(shù)T:如圖所示讀者查詢狀態(tài)查詢結(jié)果終端輸入各種查詢命令圖初始態(tài)S:讀者查詢狀態(tài)查詢結(jié)果終端輸入各種查詢命令圖終態(tài)集F:{查詢結(jié)果}5,試用Petri網(wǎng)說明第四題所述圖書館中一本書的循環(huán)過程,在規(guī)格說明中應(yīng)該包括操作H、C及R。答:其中P1表示書在圖書館P2表示書在讀者手上,P3書被預(yù)約P1P1.P2.P36,試用Z語言對第四題所描述圖書館圖書流通系統(tǒng)做一個完整的規(guī)格說明。答:<這題真的不會!>BOOK_STATEBook_in,Book_out,Book_reserveBook_in∩Book_out∩Book_reserve=ΦBook_in∪Book_out∪Book_reserve=BOOK_STATE..第五章5.1為每種類型的模塊耦合舉一個具體的例子。答:耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互聯(lián)程度的度量。耦合強弱取決于接口的復(fù)雜度,進入或訪問某一模塊的點,以及通過接口的數(shù)據(jù)。一般模塊之間的可能的連接方式有七種,構(gòu)成耦合的七種類型,它們的關(guān)系為:低耦合性高非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合強獨立性弱下面舉例說明以上耦合:非直接耦合:兩個模塊沒有直接的關(guān)系〔模塊1和模塊2,獨立性最強模塊4模塊2模塊3模塊1B.數(shù)據(jù)耦合:即一個模塊訪問另一個模塊的時候,彼此之間是通過數(shù)據(jù)參數(shù)來交換輸入、輸出信息的,這種耦合為數(shù)據(jù)耦合。這種耦合較為松散,模塊間獨立性較強。模塊4模塊2模塊3模塊1用戶情況用戶情況計算水電費電費水費計算電費計算水費費金額單價數(shù)量交房費開發(fā)票C.特征耦合:即一組模塊通過參數(shù)傳遞記錄信息,用戶情況是個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此有關(guān),"計算水費"和"計算電費"本沒有關(guān)系,由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生了依賴關(guān)系

D.控制耦合:即如果一個模塊通過傳送開關(guān)、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合用戶情況用戶情況計算水電費電費水費計算電費計算水費費金額單價數(shù)量交房費開發(fā)票A模塊A模塊BFn…F2F1FlagE.外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。BFn…F2F1Flag

F使用使用打印機B模塊A模塊.公共耦合:若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。使用使用打印機B模塊A模塊全局數(shù)組C模塊B模塊A模塊G.內(nèi)容耦合:如果出現(xiàn)以下情況之一,兩個模塊就發(fā)生了內(nèi)容耦合全局數(shù)組C模塊B模塊A模塊一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)。一個模塊不通過正常入口兒轉(zhuǎn)到另一個模塊的內(nèi)部兩個模塊有一部分程序代碼重疊〔只可能發(fā)生在匯編程序中一個模塊有多個入口〔這意味著一個模塊有幾種功能SubAA<….>……GotoL…EndsubSubBB<..>……L:……Endsub5.2為每種類型的模塊內(nèi)聚舉一個例子答:內(nèi)聚標志著一個模塊內(nèi)各個元素之間彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴展。低內(nèi)聚:偶然內(nèi)聚:如果一個模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。這就叫做偶然內(nèi)聚偶然內(nèi)聚的例子:在模塊T中有A,B,C三條語句,至少從表面上看來這三條語句沒什么聯(lián)系,只是因為D,E,F,G中都有這三條語句,為了節(jié)省空間才把這三條語句作為一個模板放在一起。邏輯內(nèi)聚:如果一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類<例如一個模塊產(chǎn)生各種類型的全部輸出>,稱為邏輯內(nèi)聚邏輯內(nèi)聚的例子:某一個模塊將打印,年,月,日,具體打印什么,將由傳入的控制標志所決定。時間內(nèi)聚:一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行〔例如,模塊完成各種初始化工作,稱為時間內(nèi)聚時間內(nèi)聚的例子:將多個變量的初始化放在同一個模塊中實現(xiàn)。中內(nèi)聚:過程內(nèi)聚:如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,稱為過程內(nèi)聚過程內(nèi)聚的例子:一個子程序,將開始讀取學生的學號,然后是姓名,最后將讀取分數(shù),是由于特定的順序而將這些操作組合在一起的通訊內(nèi)聚:如果模塊中所有的元素都使用同一個輸入數(shù)據(jù)和〔或產(chǎn)生同一個輸出數(shù)據(jù),則稱為通訊內(nèi)聚通訊內(nèi)聚的例子:有一個子程序,它將打印實驗報告,并且在完成后重新初始化傳進來的實驗數(shù)據(jù)。這個程序具有通訊內(nèi)聚性。因為這兩個操作由于使用同一個數(shù)據(jù)源聯(lián)系在了一起。高內(nèi)聚:順序內(nèi)聚:如果一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行〔通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),則稱為順序內(nèi)聚。順序內(nèi)聚的例子:有一個子程序,通過給出的生日,先計算出年齡。再根據(jù)年齡算出退休的時間,則這個程序具有順序內(nèi)聚性。功能內(nèi)聚:如果模塊內(nèi)所有的元素屬于一個整體完成一個單一的功能,則成為功能內(nèi)聚。功能內(nèi)聚的例子:一個程序中所有的操作都是為了算出一個人的年齡5.3用面向數(shù)據(jù)流的方法設(shè)計下列系統(tǒng)的軟件結(jié)構(gòu)①儲蓄系統(tǒng)②機票預(yù)訂系統(tǒng) ③患者監(jiān)護系統(tǒng)5.4美國某大學有200名教師,校方與教師工會剛剛簽訂一項協(xié)議。按照協(xié)議,所有年工資超過$26000〔含$26000的教師工資將保持不變,年工資少于$26000的教師將增加工資,所增加工資數(shù)額按下述方法計算:給每位教師所贍養(yǎng)的人〔包括教師本人每年補助$100,此外,教師有一年工齡每年再多補助¥50,但是,增加后的年工資總額不能多于$26000。教師工資檔案存儲在行政辦公室的磁帶上,檔案中有目前的年工資、贍養(yǎng)的人數(shù)、雇傭日期等信息。需要寫一個程序計算并印出每名教師的原工資和調(diào)整后的新工資。要求:〔1畫出此系統(tǒng)的數(shù)據(jù)流圖;〔2寫出需求說明;〔3設(shè)計上述的工資調(diào)整程序<要求用HIPO圖描繪設(shè)計結(jié)果>,設(shè)計時分別采用兩種算法,并比較兩種算法的優(yōu)缺點:〔a搜索工資檔案數(shù)據(jù),找出年工資少于$26000的人,計算新工資,校核是否超過$26000,存儲新工資,印出新舊工資對照表;〔b把工資檔案數(shù)據(jù)按工資從最低到最高的次序排序,當工資數(shù)額超過$26000時即停止排序,計算新工資,校核是否超過限額,存儲新工資,印出結(jié)果。你所畫出的數(shù)據(jù)流圖適應(yīng)用那種算法?解:〔1數(shù)據(jù)流圖:

分解后:〔2需求說明:1.功能需求:可以輸入調(diào)資的標準,輸入教師檔案,經(jīng)調(diào)資給出新的教師檔案,需要存儲檔案2.性能需求:軟件的響應(yīng)時間應(yīng)小于0.5s,更新處理要快3.靈活需求:當需求發(fā)生某些變化時,該軟件應(yīng)該能夠適應(yīng)這些變化4.故障處理要求:出現(xiàn)錯誤時,應(yīng)給予警告或提示〔3〔a比較耗時,因為它要檢索所有的檔案,〔b從速度上看比較快,但是〔b需要排序算法,比較復(fù)雜,〔a對于設(shè)計來講比較簡單.〔4畫出的數(shù)據(jù)流圖比較適合〔A的算法5.5下面將給出兩個人玩的撲克牌游戲的一種玩法,試設(shè)計一個模擬程序,它的基本功能是:

〔1發(fā)兩手牌〔利用隨機數(shù)產(chǎn)生器。

〔2確定贏者和贏牌的類型。

〔3模擬N次游戲,計算每種類型牌贏或平局的概率。要求用HIPO圖描繪設(shè)計結(jié)果并且畫出高層控制流程圖。

撲克牌游戲規(guī)則如下:

〔1有兩個人玩分別為A和B。

〔2一副撲克牌有52張牌,4種花色〔黑桃、紅桃、梅花、方塊,每種花色的牌的點數(shù)按升序排列有2,3,4,.........,10,J,Q,K,A等13種。

〔3給每個人發(fā)三張牌,牌面向上,贏者立即可以確定。

〔4最高等級的一手牌成為同花,即3張牌均為同一種花色,最大的同花是同一種花色的Q,K,A。

〔6第三等級的牌是同點,即點數(shù)相同的三張牌,最大的同點是AAA。

〔7第四等級的牌是對子,即3張牌中有兩張點數(shù)相同,最大的對子是A,A,K。

〔8第五等級的牌是雜牌,即除去上列4等之外的任何一手牌,最大的雜牌是不同花色的A.K,J。

〔9若兩個人的牌類型不同,則等級高者勝;若等級相同,則點數(shù)高者勝;若點數(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; elsereturn0;}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; else return0;}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">; else printf<"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">; else printf<"B贏,順子\n">; } elseif<E3<A[][10]>>E3<B[][10]>> { e3++; printf<"A贏,同點\n">; } elseif<E3<A[][10]><E3<B[][10]>> { e3++; printf<"B贏,同點\n">; } elseif<E3<A[][10]>==E3<B[][10]>&&E3<B[][10]>==1> { e3++; if<max<A[][10]>>max<B[][10]>> printf<"A贏,同點\n">; else printf<"B贏,同點\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">; else printf<"B贏,對子\n">; } else { if<max<A[][10]>>max<B[][10]>> printf<"A贏,雜牌\n">; else printf<"B贏,雜牌\n">; } } printf<"同花順贏牌概率為%d,順子贏牌概率為%d,同點贏牌概率為%d,對子贏牌概率為%d,雜牌贏牌概率為%d",e1/times,e2/times,e3/times,e4/times,e5/times>;}控制流程圖:。第六章假設(shè)只有SEQUENCE和DO_WHILE兩種控制結(jié)構(gòu),怎么利用它們完成IF_THEN_ELSE操作?解:轉(zhuǎn)化如下:K=1DOWHILE〔條件.AND.K.EQ.1> 程序塊1 K=K+1ENDDODOWHILE〔<.NOT.條件>.AND.K.EQ.1> 程序塊2 K=K+1ENDDO假設(shè)只有SEQUENCE和IF_THEN_ELSE兩種控制結(jié)構(gòu),怎么利用它們完成DO_WHILE操作?解:轉(zhuǎn)化如下;label: IF<條件>THEN程序塊 GOTOlabel ELSE 程序塊 ENDIF畫出下列偽代碼程序的流程圖和盒圖:STARTIFpTHENWHILEqDOfENDDOELSEBLOCKgnENDBLOCKENDIFSTOP解:流程圖:盒圖:圖6.18給出的程序流程圖代表一個非結(jié)構(gòu)化的程序,問:為什么說它是非結(jié)構(gòu)化的?設(shè)計一個等價的結(jié)構(gòu)化程序。在〔2題的設(shè)計中使用附加的標識變量flag了嗎?若沒用,在設(shè)計一個使用flag的程序;若用了,在設(shè)計一個不用flag的程序。解:〔1通常所說的結(jié)構(gòu)化程序,是按照狹義的結(jié)構(gòu)程序的定義衡量,符合定義規(guī)定的程序,每個代碼塊只有一個入口和一個出口。圖示的程序的循環(huán)控制結(jié)構(gòu)有兩個出口,顯然不符合狹義的結(jié)構(gòu)程序的定義,因此是非結(jié)構(gòu)化的程序?!?使用附加的標志變量flag,至少有兩種方法可以把該程序改造為等價的結(jié)構(gòu)化程序,圖示盒圖描繪了等價的結(jié)構(gòu)化程序。不使用flag把該程序改造為等價的結(jié)構(gòu)化程序的方法如圖所示。5、研究下面的偽碼程序: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è)計一個等價的結(jié)構(gòu)化程序并畫出流程圖。此程序的功能是什么?它完成預(yù)定功能有什么隱含的前提條件嗎?解:〔1該程序流程圖如下:〔2該程序不是結(jié)構(gòu)化的,結(jié)構(gòu)化的程序只有一個入口和一個出口,而該程序的流程途中有兩個出口?!?等價的結(jié)構(gòu)化程序的流程圖如下:此程序有二分查找的功能,它完成預(yù)定功能的隱含前提條件是現(xiàn)有序列為從小到大順序排好的有序序列。6.用Ashcroft_Manna技術(shù)可以將非結(jié)構(gòu)化的程序轉(zhuǎn)化為結(jié)構(gòu)化程序,圖6.19是一個轉(zhuǎn)換的例子。<1>能否從這個例子總結(jié)出Ashcroft_Manna技術(shù)的一些基本方法?<2>進一步簡化6.19<b>給出的結(jié)構(gòu)化設(shè)計。開始開始FTFTccABABTCCCCCCCFTFTCCCCCCCFTFdcdcDCEDCE停止停止開始開始I=1I=1DOCASE=1DOCASE=1FCCCCCCCFCCCCCCCFCCCCCCCTCCCCCCCTCCCCCCCTCCCCCCCFCCCCCCCFCCCCCCCFCCCCCCCTCCCCCCCTCCCCCCCTCCCCCCCcdecdeCEBDDACEBDDAI=4I=4I=4I=4I=2I=3I=4I=4I=4I=4I=2I=3FCCCCCCCI=4FCCCCCCCI=4TCCCCCCCTCCCCCCC停止停止解:〔1從這個例子中看出,Ashcroft_Manna技術(shù)的基本方法是,當待改造的序含有嵌套的非結(jié)構(gòu)化的IF語句時,改造后的程序中增加DO-CASE語句和DO-UNTIL語句,并增加一個輔助變量I,I的初始值為1。最外層的IF語句在I=1時執(zhí)行,執(zhí)行完這個IF語句后把I賦值為隨后應(yīng)該執(zhí)行的內(nèi)層IF語句所對應(yīng)的CASE標號值。DO-CASE語句的最大分支數(shù)〔可執(zhí)行的最大標號值等于IF語句的個數(shù)。當執(zhí)行完最內(nèi)層的IF語句之后,把I賦值為可執(zhí)行的最大標號值加1,而DO-UNTIL循環(huán)的結(jié)束條件就是I等于這個值。進一步簡化后的結(jié)構(gòu)化程序的流程圖如下所示。某交易所規(guī)定給經(jīng)紀人的手續(xù)費計算方法如下:總手續(xù)費等于基本手續(xù)費加上與交易中的每股價格和股數(shù)有關(guān)的附加手續(xù)費。如果交易金額少于1000元,則基本手續(xù)費為交易金額的8.4%;如果交易總金額在1000元~10000元之間,則基本手續(xù)費為交易金額的5%,再加34元;如果金額超過10000元,則基本手續(xù)費為交易金額的4%加上134元。當每股售價低于14元時,附加手續(xù)費為基本手續(xù)費的5%,除非買進、賣出的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費的9%。當每股售價在14元到25元之間時,附加手續(xù)費為基本手續(xù)費的2%,除非交易的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費的6%。當每股售價超過25元時,如果交易的股數(shù)〔即不是100的倍數(shù),則附加手續(xù)費為基本手續(xù)費的4%,否則附加手續(xù)費為基本手續(xù)費的1%。要求:用判定表表示手續(xù)費的計算方法。用判定數(shù)表示手續(xù)費的計算方法。解:令P代表交易的總金額,Q代表每股的售價,n代表交易的股數(shù)?!?表示手續(xù)費計算方法的判定表如圖所示表示手續(xù)費計算方法的判定樹8、畫出下列偽碼程序的流圖,計算它的環(huán)形復(fù)雜度。你覺得這個程序的邏輯有什么問題嗎?CEXAMPLELOOP:DOWHILEX>0A=B+1IFA>10THENX=AELSEY=ZENDIFIFY<5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFG=H+RENDDOIFF>0THENPRINTGELSEPRINTKENDIFSTOP解:流程圖:環(huán)形復(fù)雜度:V<G>=結(jié)點E-弧數(shù)n+1=17-11+1=7=判斷結(jié)點+1=6+1=7=封閉的區(qū)域數(shù)邏輯有問題,當Z>0時,容易形成死循環(huán);條件Y<5包含條件Y=2。把統(tǒng)計空格程序的Jackson圖<圖6.13該畫為等價的程序流程圖和盒圖。開始解:流程圖:開始文件尾?文件尾?NYNY讀一個字符讀一個字符換行,輸出字符串,換行換行,輸出字符串,換行統(tǒng)計空格數(shù)并輸出統(tǒng)計空格數(shù)并輸出讀取下一個字符讀取下一個字符換行,輸出空格總數(shù)換行,輸出空格總數(shù)結(jié)束結(jié)束盒圖:文件不是文件尾?文件不是文件尾?讀一個字符串換行,輸出字符串,換行統(tǒng)計空格數(shù)并輸出取下一個字符串換行,輸出空格數(shù)10、人機對話由操作員信息和系統(tǒng)信息交替組成。假設(shè)一段對話總是由操作員信息開始以系統(tǒng)信息結(jié)束,用Jackson圖描繪這樣的人機對話過程。解:系統(tǒng)文件操作員文件系統(tǒng)文件操作員文件操作員記錄*操作員記錄*操作員記錄*操作員記錄*分數(shù)姓名學號專業(yè)班級姓名學號分數(shù)姓名學號專業(yè)班級姓名學號新文件新文件操作員記錄*操作員記錄*專業(yè)班級分數(shù)姓名學號專業(yè)班級分數(shù)姓名學號產(chǎn)生新文件產(chǎn)生新文件產(chǎn)生新紀錄取系統(tǒng)記錄取操作員文件記錄產(chǎn)生新紀錄取系統(tǒng)記錄取操作員文件記錄分數(shù)專業(yè)班級專業(yè)班級姓名學號專業(yè)班級姓名分數(shù)專業(yè)班級專業(yè)班級姓名學號專業(yè)班級姓名學號姓名學號第七章第一題1、下面給出的偽碼中有一個錯誤。請仔細閱讀這段偽碼,說明該偽碼的語法特點,找出并改正偽碼中的錯誤。字頻統(tǒng)計程序的偽碼如下:

INITIALIZEtheProgram

READthefirsttextrecord

DOWHILEtherearemorewordsinthetextrecordDOWHILEtherearemorewordsinthetextrecordEXTRACTthenexttextwordSEARCHtheword-tablefortheextractedwordIFtheextractedwordisfoundINCREMENTtheword’soccurrencecountELSEINSERTtheextractedwordintothetableENDIFINCREMENTthewords-processedcountENDDOattheendofthetextrecordREADthenexttextrecord

ENDDOwhenalltextrecordshaveheenread

PRINTthetableandsummaryinformation

TERMINATEtheprogram答:INSERTtheextractedwordintothetable在這個后面,有沒有給這個word的occurrence/count賦值為1第二題2、研究下面給出的偽碼程序,要求:

<1>畫出它的程序流程圖。

<2>它是結(jié)構(gòu)化的還是非結(jié)構(gòu)化的?說明理由。

<3>若是非結(jié)構(gòu)化的,則

<a>把它改造成僅用3種控制結(jié)構(gòu)的結(jié)構(gòu)化程序;

<b>寫出這個結(jié)構(gòu)化設(shè)計的偽碼;

<c>用盒圖表示這個結(jié)構(gòu)化程序。

<4>找出并改正程序邏輯中的錯誤。

COMMENT:PROGRAMSEARCHESFORFIRSTNREFERENCESTOATOPICINANINFORMATIONRETRIEVALSYSTEMWITHTTOTALENTRIESINPUTNINPUTKEYWORD<S>FORTOPICI=OMATCH=0DOWHILEI≤TI=I+1IFWORD=KEYWORDTHENMATCH=MATCH+1STOREINBUFFERENDIFMATCH=NTHENGOTOOUTPUTENDENDIFN=0THENPRINT″NOMATCH″

OUTPUT:ELSECALLSUBROUTINETOPRINTBUFFERINFORMATIONEND第三題3、在第2題的設(shè)計中若輸入的N值或KEYWORD不合理,會發(fā)生問題。

<1>給出這些變量的不合理值的例子。

<2>將這些不合理值輸入程序會有什么后果?

<3>怎樣在程序中加入防錯措施,以防止出現(xiàn)這些問題?答:N=1,KEYWOED=#。答:無法打印出任何信息。答:加入循環(huán)第四題4、〔1什么是模塊測試和集成測試?它們各有什么特點?答:模塊測試是對每個單獨的模塊,分別用黑盒和白盒測試技術(shù),測試它的功能是否正確,檢查模塊控制結(jié)構(gòu)中的特定路徑并發(fā)現(xiàn)最大數(shù)量的錯誤。其特點是:主要應(yīng)用白盒測試的技術(shù),對多個模塊的測試可以并發(fā)的進行。集成測試是把模塊裝配在一起形成完整的軟件包,在裝配的同時進行測試。特點是:可能發(fā)生接口問題?!?假設(shè)有一個由1000行FORTRAN語句構(gòu)成的程序,估計在對它進行測試期間將發(fā)現(xiàn)多少個錯誤?為什么?答:月25至100個錯誤,美國的一些統(tǒng)計數(shù)字告訴我們通常這個比值在0.005~0.02之間,也就是說,測試之前每1000條指令中大約有5~20個錯誤。假設(shè)測試之前每1000條指令中有10個錯誤,則估計對它進行測試期間將發(fā)現(xiàn)的錯誤數(shù)為:5000*10/1000=50?!?設(shè)計下列偽碼程序的語句覆蓋和路徑覆蓋測試用例:STARTINPUT<A,B,C>IFA>5THENX=10ELSEX=1ENDIFIFB>10THENX=20ELSEX=2ENDIFIFC>15THENX=30ELSEX=3ENDIFPRINT<X,Y,Z>STOP答:此程序的語句覆蓋用例:①A=5,B=10,C=15;②A=6,B=11,C=16條件覆蓋用例為:①A=5,B=10,C=15;②A=6,B=11,C=16。語句覆蓋測試用例30302010604020TTT2321111FFF1ZYXCBA321預(yù)期的輸出輸入判定序號語句覆蓋的含義是,選擇足夠多的測試數(shù)據(jù),使被測試程序中的每個語句至少執(zhí)行一次。30302010604020TTT83201014020FTT73021060120TFT632101120FFT53020160401TTF432011401FTF330216011TFF2321111FFF1ZYXCBA321預(yù)期的輸出輸入判定序號第五題5、某圖書館有一個使用CRT終端的信息檢索系統(tǒng),該系統(tǒng)有下列4個基本檢索命令要求:<1>設(shè)計測試數(shù)據(jù)以全面測試系統(tǒng)的正常操作;<2>設(shè)計測試數(shù)據(jù)以測試系統(tǒng)的非正常操作解:⑴測試系統(tǒng)正常操作的測試數(shù)據(jù)①順序執(zhí)行下列3個命令: b〔KEYWORD s〔L d〔N其中,KEYWORD是正確的關(guān)鍵字;L是執(zhí)行命令b后在屏幕上顯示的約20個行號中的一個〔至少應(yīng)該使L分別為第一個、最后一個和中央一個行號;N是執(zhí)行命令s后列出的索引號中的一個〔至少應(yīng)該使N分別為第一個、最后一個和中央一個索引號。針對若干個不同的KEYWORD重復(fù)執(zhí)行上述命令序列。②順序執(zhí)行下列2個命令: f〔NAME d〔N其中,NAME是已知的作者姓名;N是執(zhí)行命令f后列出的索引號中的一個〔至少應(yīng)該使N分別為第一個、最后一個和中央一個索引號。針對若干個不同的NAME重復(fù)執(zhí)行上述命令序列。⑵測試系統(tǒng)非正常操作的測試數(shù)據(jù)①用過長的關(guān)鍵字作為命令b的參數(shù):例如,b〔reliabilitysoftwareandhardwarecombined預(yù)期的輸出:系統(tǒng)截短過長的關(guān)鍵字,例如,上列命令中的關(guān)鍵字可能性被截短為reliabilitysoftware②用不正確的關(guān)鍵字作為命令b的參數(shù):例如,b〔AARDVARK預(yù)期的輸出:顯示出最接近的匹配結(jié)果,例如,執(zhí)行上列命令后可能顯示1.AARON,JULES〔book③用比執(zhí)行命令b后列出的最大行號大1的數(shù)作為命令s的參數(shù)預(yù)期的輸出:"命令s的參數(shù)不在行號列表中"④用數(shù)字和標點符號作為命令b和命令f的參數(shù)預(yù)期的輸出:"參數(shù)類型錯"⑤用字母字符作為命令s和命令d的參數(shù)預(yù)期的輸出:"參數(shù)類型錯"⑥用0和負數(shù)作為命令s和命令d的參數(shù)預(yù)期的輸出:"參數(shù)數(shù)值錯"⑦命令順序錯:例如,沒執(zhí)行命令b就執(zhí)行命令s,或沒執(zhí)行命令s就執(zhí)行命令d預(yù)期的輸出:"命令順序錯"⑧命令語法錯:例如,遺漏命令名b、s、d或f;或命令參數(shù)沒用圓括號括起來預(yù)期的輸出:"命令語法錯"⑨命令參數(shù)空:例如,b〔、s〔、d或f〔預(yù)期的輸出:系統(tǒng)提供默認參數(shù)或給出出錯信息⑩使用拼錯了的作者姓名作為f的參數(shù)預(yù)期的輸出:"找不到這們作者的著作"第六題6、航空公司A向軟件公司B訂購了一個規(guī)劃飛行路線的程序。假設(shè)你是軟件公司C的軟件工程師,A公司已雇用你所在的公司對上述程序進行驗收測試。任務(wù)是,根據(jù)下述事實設(shè)計驗收測試的輸入數(shù)據(jù),解釋你選取這些數(shù)據(jù)的理由。

領(lǐng)航員向程序輸入出發(fā)點和目的地,以及根據(jù)天氣和飛機型號而初步確定的飛行高度。程序讀入途中的風向風力等數(shù)據(jù),并且制定出3套飛行計劃<高度,速度,方向及途中的5個位置校核點>。所制定的飛行計劃應(yīng)做到燃料消耗和飛行時間都最少。

用正常的輸入數(shù)據(jù)作為測試數(shù)據(jù)①向程序輸入常規(guī)的出發(fā)點,目的地,飛機型號,5個位置校核點,高度和速度。

②輸入3~5組出發(fā)點和目的地,重復(fù)執(zhí)行步驟1

③輸入固定的出發(fā)點、目的地、飛機型號、5個位置校核點和高度,分別輸入3~5個不同的速度,重復(fù)執(zhí)行步驟1

④輸入固定的出發(fā)點、目的地、飛機型號、5個位置校核點和速度,分別輸入3~5個不同的高度,重復(fù)執(zhí)行步驟1

⑤輸入固定的出發(fā)點、目的地、飛機型號、速度和高度,分別輸入3~5組不同的位置校核點,重復(fù)執(zhí)行步驟1

⑥輸入固定的出發(fā)點、目的地、5個位置校核點和高度,分別輸入3~5個不同的飛機型號,重復(fù)執(zhí)行步驟1

⑦輸入固定的目的地、5個位置校核點和高度,分別輸入3~5個不同的飛機型號,重復(fù)執(zhí)行步驟1

⑧輸入固定的出發(fā)點、5個位置校核點和高度,分別輸入3~5個不同的目的地,重復(fù)執(zhí)行步驟1

〔2用特殊的數(shù)據(jù)值作為測試數(shù)據(jù)

①分別輸入非常高和非常低的數(shù)據(jù)組合測試

②用負數(shù)測試

③輸入數(shù)字0進行測試

④分別輸入相距非常遠和非常近的出發(fā)點和目的地測試ay和size,size小于數(shù)組的大小,并給出需要查找的值,該值在somearray中;

預(yù)期的輸出:返回-1;

⑤首先給出某個數(shù)組somearray和size,size大于數(shù)組的大小,并給出需要查找的值,該值不在somearray中;

預(yù)期的輸出:返回-1;

⑥首先給出某個數(shù)組somearray和size,size大于數(shù)組的大小,并給出需要查找的值,該值在somearray中;

預(yù)期的輸出:返回-1;第七題7、嚴格說來,有兩種不同的路徑覆蓋測試,分別為程序路徑覆蓋和程序圖路徑覆蓋。這兩種測試可分別稱為程序的自然執(zhí)行和強,,迫執(zhí)行。所謂自然執(zhí)行是指測試者<人或計算機>讀入程序中的條件表達式,根據(jù)程序變量的當前值計算該條件表達式的值<真或假>,并相應(yīng)地分支。強迫執(zhí)行是在用程序圖作為程序的抽象模型時產(chǎn)生的一個人為的概念,它可以簡化測試問題。強迫執(zhí)行的含義是,一旦遇到條件表達式,測試者就強迫程序分兩種情況<條件表達式的值為真和為假>執(zhí)行。顯然,強迫執(zhí)行將遍歷程序圖的所有路徑,然而由于各個條件表達式之間存在相互依賴的關(guān)系,這些路徑中的某一些在自然執(zhí)行時可能永遠也不會進入。為了使強迫執(zhí)行的概念在實際工作中有用,它簡化測試工具的好處應(yīng)該超過它使用額外的不可能達到的測試用例所帶來的壞處。在絕大多數(shù)情況下,強迫執(zhí)行的測試數(shù)并不比自然執(zhí)行的測試數(shù)大很多,此外,對強迫執(zhí)行的定義實際上包含了一種技術(shù),能夠縮短在測試含有循環(huán)的程序時所需要的運行時間。程序的大部分執(zhí)行時間通常用于重復(fù)執(zhí)行程序中的DO循環(huán),特別是嵌套的循環(huán)。因此必須發(fā)明一種技術(shù),使得每個DO循環(huán)只執(zhí)行一遍。這樣做并不會降低測試的功效,因為經(jīng)驗表明第一次或最后一次執(zhí)行循環(huán)時最容易出錯。

Laemmel教授提出的自動測試每條路徑的技術(shù)如下:當編寫程序時每個DO循環(huán)應(yīng)該寫成一種包含測試變量T和模式變量M的特殊形式,因此

DOI=1TO38應(yīng)變成DOI=1TOM*38+<1-M>*T可見,當M=0時處于測試模式,而M=1時處于正常運行模式。當處于測試模式時,令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正常運行時令M=1和T=0,測試期間令M=0,為測試THEN部分需令T=+1,測試ELSE部分則令T=-1。要求:

<1>選取一個包含循環(huán)和IF語句的程序,用Laemmel技術(shù)修改這個程序,上機實際測試這個程序并解釋所得到的結(jié)果。

<2>設(shè)計一個程序按照Laemmel技術(shù)自動修改待測試的程序。利用這個測試工具修改上一問中人工修改的程序,兩次修改得到的結(jié)果一致嗎?

<3>怎樣把Laemmel技術(shù)推廣到包含WHILEDO和REPEATUNTIL語句的程序?

<4>試分析Laemmel技術(shù)的優(yōu)缺點并提出改進意見。答:if<x+y>>2A=xElseA=y改為:ifM*<x+y>+T>2A=xElseA=y結(jié)果一致。答:兩次結(jié)果是一致的答:WHILEDO和IFELSE修改技術(shù)類似。答:優(yōu)點是可以使得結(jié)果更為精確。缺點是并不適用所有的程序,有時會有程序運行變得復(fù)雜。第八題8、對一個包含10000條機器指令的程序進行一個月集成測試后,總共改正了15個錯誤,此時MTTF=10h;經(jīng)過兩個月測試后,總共改正了25個錯誤〔第二個月改正了10個錯誤,MTTF=15h。要求:〔1根據(jù)上述數(shù)據(jù)確定MTTF與測試時間之間的函數(shù)關(guān)系,畫出MTTF與測試時間τ的關(guān)系曲線。在化這條曲線是做了什么假設(shè)?〔2為做到MTTF=100h,必須進行多長時間的集成測試?當集成測試結(jié)束時總共改正了多少個錯誤,還有多少個錯誤潛伏在程序中?答:〔1MTTF與測試時間τ的關(guān)系曲線如下:假設(shè)調(diào)試過程中沒有引入新的錯誤?!?根據(jù)估算平均無故障時間的公式可得:1/K<Et/10000-100/10000>=101/K<Et/10000-300/10000>=15計算可得:K=333,Et=45當MTTF=100h時,有1/333<45/10000-Ec/10000>=100計算可得:Ec=42.按前兩個月測試改錯的進度估算,需進行3個月的集成測試。當測試結(jié)束時,共改正了42個錯誤,還有3個錯誤潛伏在程序中。第九題9.如對一個長度為100000條指令的程序進行集成測試期間記錄下下面的數(shù)據(jù):〔a7月1日:集成測試開始,沒有發(fā)現(xiàn)錯誤?!瞓8月2日:總共改正100個錯誤,此時MTTF=0.4h〔c9月1日:總共改正300個錯誤,此時MTTF=2h根據(jù)上列數(shù)據(jù)完成下列各題。估計程序中的錯誤總數(shù)。為使MTTF達到10h,必須測試和調(diào)試這個程序多長時間?畫出MTTF和測試時間τ之間的函數(shù)關(guān)系曲線。答:〔1根據(jù)估算平均無故障時間的公式可得:1/K<Et/100000-100/100000>=0.41/K<Et/100000-300/100000>=2計算可得:K=1000,Et=350即程序中的錯誤總數(shù)為350?!?當MTTF=10h時,有1/K<350/100000-Ec/100000>=10計算可得:Ec=340.按前兩個月測試改錯的進度估算,還進行2個月的集成測試。〔3MTTF和測試時間τ之間的函數(shù)關(guān)系曲線如下:第十題10、在測試一個長度為24000條指令的程序時,第一個月由甲、乙兩名測試員各自獨立測試這個程序。經(jīng)一個月測試后,甲發(fā)現(xiàn)并改正20個錯誤,使MTTF達到10h。與此同時,乙發(fā)現(xiàn)24個錯誤,其中6個甲也發(fā)現(xiàn)了。以后由甲一個人繼續(xù)測試這個程序。問:〔1剛開始測試時程序中總共有多少個潛在的錯誤?〔2為使MTTF達到60h,必須再改正多少個錯誤?還需多長測試時間?〔3畫出MTTF與集成測試時間τ之間的函數(shù)關(guān)系曲線。答:〔1根據(jù)公式:B0=B2B1/bc,可得:B0=20*24/6=80,即剛開始測試時程序中總共有80個錯誤。〔2根據(jù)估算平均無故障時間的公式可得:1/K<80/24000-20/24000>=101/K<80/24000-Ec/24000>=60計算可得:K=40,Ec=70即還需要改正50個錯誤。根據(jù)甲的改正進度,估計還需要3個月?!?MTTF與集成測試時間τ之間的函數(shù)關(guān)系曲線如下:第八章一.答:軟件的可維護性與哪些因素有關(guān)?在軟件開發(fā)過程中應(yīng)該采取哪些措施來提高軟件產(chǎn)品的可維護性?答:〔1、可理解性〔2、可預(yù)測性〔3、可修改性〔4、可移植性〔5、可重用性在每個階段結(jié)束前的技術(shù)審查和管理復(fù)查中,應(yīng)該著重對可維護性進行復(fù)審過程中,應(yīng)該對將來要改進的部分和可能要改的部分加以注意指明,應(yīng)該討論軟件的可移植性問題,考慮可能影響軟件維護的系統(tǒng)界面。在設(shè)計和編碼過程中應(yīng)該盡量使用可重用的軟件構(gòu)件,每個測試步驟都可以暗示在軟件正式交付使用之前,程序中可能需要做預(yù)防性維護的部分。在完成每項維護工作之后,都應(yīng)該對軟件維護本身仔細認真地復(fù)審。二:答:應(yīng)該選取a和c因為文檔是影響軟件可維護性的決定因素。因此,文檔甚至比可執(zhí)行的程序代碼更重要,文檔必須和程序代碼同時維護,只有和程序代碼完全一致才能是真正有價值的代碼。文檔修改:針對系統(tǒng)中當前正在修改的那些部分文檔建立完整的文檔。代碼重構(gòu):首先用重構(gòu)工具分析源代碼,標注出和結(jié)構(gòu)化程序設(shè)計概念相違背的部分。然后重構(gòu)有問題的代碼〔此項可以工作可自動化進行。最后,復(fù)審和測試生成的重構(gòu)代碼〔以保證沒有引入異常并更新代碼文檔。三:答:對儲蓄系統(tǒng):一般大型軟件的維護成本遠遠高于開發(fā)成本若干倍,所以在設(shè)計時就應(yīng)該考慮到軟件維護成本,而且在開發(fā)過程中應(yīng)該使用標準的程序設(shè)計語言和標準的操作系統(tǒng)接口,可以大大提高軟件的可維護性,也可以減少軟件存在的錯誤;對機票預(yù)訂系統(tǒng):往往人一多系統(tǒng)癱瘓幾率就大,在開發(fā)人員不在場的情況下,很容易出現(xiàn)系統(tǒng)錯誤,維護軟件也是很困難的,也會給很多人帶來不便,所以,在設(shè)計過程中應(yīng)該嚴格科學的管理規(guī)劃還有合理設(shè)計模塊,是各個模塊的獨立性越高,這樣對軟件的改進越方便,也便于快速糾錯;對患者監(jiān)護系統(tǒng):應(yīng)該要考慮它的完善性和預(yù)防性,要能滿足用戶在使用過程中的增加和修改工作,還要為了改善未來的可維護性或可靠性而修改軟件。更要考慮系統(tǒng)數(shù)據(jù)的隱秘及安全,隨時備份。第13章1.研究本書小杰所述的訂貨系統(tǒng),要求:

〔1用代碼行技術(shù)估算本系統(tǒng)的規(guī)模;

〔2用功能點技術(shù)估算本系統(tǒng)的規(guī)模;

〔3用靜態(tài)單變量模型估算開發(fā)本系統(tǒng)所需的工作量;

〔4假設(shè)由一個人開發(fā)本系統(tǒng),試制定進度計劃;

〔5假設(shè)由兩個人開發(fā)本系統(tǒng),試制定進度計劃;〔不會做2.研究本書習題2第2題中描述的儲蓄系統(tǒng),要求:

〔1用代碼行技術(shù)估算本系統(tǒng)的規(guī)模;

〔2用功能點技術(shù)估算本系統(tǒng)的規(guī)模;

〔3用靜態(tài)單變量模型估算開發(fā)本系統(tǒng)所需的工作量;

〔4假設(shè)由一個人開發(fā)本系統(tǒng),試制定進度計劃;

〔5假設(shè)由兩個人開發(fā)本系統(tǒng),試制定進度計劃;〔不會做3.下面敘述對一個計算機輔助設(shè)計〔CAD軟件的需求:該CAD軟件接受由工程師提供的二維或三維幾何圖形數(shù)據(jù)。工程師通過用戶界面與CAD系統(tǒng)交互并控制它,該用戶界面應(yīng)該表現(xiàn)出良好的人機界面設(shè)計特征。幾何圖形數(shù)據(jù)及其他支持信息都保存在一個CAD數(shù)據(jù)庫中。開發(fā)必要的分析、設(shè)計模塊,以產(chǎn)生所需要的設(shè)計結(jié)果,這些輸出將顯示在各種不同的圖形設(shè)備上。應(yīng)該適當?shù)卦O(shè)計軟件,以便與外部設(shè)備交互并控制它們。所用的外部設(shè)備包括鼠標、數(shù)字化掃描儀和激光打印機。要求:

〔1進一步精化上述要求,把CAD軟件的功能分解成若干個子功能;

〔2用代碼行技術(shù)估算每個子功能的規(guī)模;

〔3用功能點技術(shù)估算每個子功能的規(guī)模;

〔4從歷史數(shù)據(jù)得知,開發(fā)這類系統(tǒng)的平均生產(chǎn)率是620LOC/PM

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論