軟件工程導(dǎo)論課后習(xí)題答案_第1頁
軟件工程導(dǎo)論課后習(xí)題答案_第2頁
軟件工程導(dǎo)論課后習(xí)題答案_第3頁
軟件工程導(dǎo)論課后習(xí)題答案_第4頁
軟件工程導(dǎo)論課后習(xí)題答案_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、word第一章一、什么是軟件危機(jī)?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機(jī)?軟件危機(jī)是指在計算機(jī)軟件開發(fā)、使用與維護(hù)過程中遇到的一系列嚴(yán)重問題和難題。它包括兩方面:如何開發(fā)軟件,已滿足對軟件日益增長的需求;如何維護(hù)數(shù)量不斷增長的已有軟件。軟件危機(jī)的典型表現(xiàn):(1) 對軟件開發(fā)本錢和進(jìn)度的估計常常很不準(zhǔn)確。常常出現(xiàn)實際本錢比估算本錢高出一個數(shù)量級、實際進(jìn)度比方案進(jìn)度拖延幾個月甚至幾年的現(xiàn)象。而為了趕進(jìn)度和節(jié)約本錢所采取的一些權(quán)宜之計又往往損害了軟件產(chǎn)品的質(zhì)量。這些都降低了開發(fā)商的信譽,引起用戶不滿。(2) 用戶對已完成的軟件不滿意的現(xiàn)象時有發(fā)生。(3) 軟件產(chǎn)品的質(zhì)量往往是靠不住的。(4) 軟件常

2、常是不可維護(hù)的。(5) 軟件通常沒有適當(dāng)?shù)奈臋n資料。文檔資料不全或不合格,必將給軟件開發(fā)和維護(hù)工作帶來許多難以想象的困難和難以解決的問題。(6) 軟件本錢、軟件維護(hù)費在計算機(jī)系統(tǒng)總本錢中所占比例逐年上升。(7) 開發(fā)生產(chǎn)率提高的速度遠(yuǎn)跟不上計算機(jī)應(yīng)用普及的需求。軟件危機(jī)出現(xiàn)的原因:(1) 來自軟件自身的特點:是邏輯部件,缺乏可見性;規(guī)模龐大、復(fù)雜,修改、維護(hù)困難。(2) 軟件開發(fā)與維護(hù)的方法不當(dāng):無視需求分析;認(rèn)為軟件開發(fā)等于程序編寫;輕視軟件維護(hù)。(3) 供求矛盾將是一個永恒的主題:面對日益增長的軟件需求,人們顯得力不從心。二、假設(shè)自己是一家軟件公司的總工程師,當(dāng)把圖1.1給手下的軟件工程師

3、們觀看,告訴他們及時發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意這個觀點,認(rèn)為要求在錯誤進(jìn)入軟件之前就清楚它們是不現(xiàn)實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么,一個人怎么能在設(shè)計階段去除它呢?應(yīng)該怎么反駁他?答:在軟件開發(fā)的不同階段進(jìn)行修改付出的代價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比擬低;在開發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個變動要對所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價劇增;在軟件“已經(jīng)完成是在引入變動,當(dāng)然付出的代價更高。一個故障是代碼錯誤造成的,有時這種錯誤是不可防止的,但要修改的本錢是很小的,因為這不是整

4、體構(gòu)架的錯誤。三、什么是軟件工程?它有哪些本質(zhì)特征?怎樣用軟件工程消除軟件危機(jī)?1993年IEEE的定義:軟件工程是: 把系統(tǒng)的、標(biāo)準(zhǔn)的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護(hù)過程,也就是把工程應(yīng)用于軟件; 研究中提到的途徑。軟件工程的本質(zhì)特征:(1) 軟件工程關(guān)注于大型程序(軟件系統(tǒng))的構(gòu)造(2) 軟件工程的中心課題是分解問題,控制復(fù)雜性(3) 軟件是經(jīng)常變化的,開發(fā)過程中必須考慮軟件將來可能的變化(4) 開發(fā)軟件的效率非常重要,因此,軟件工程的一個重要課題就是,尋求開發(fā)與維護(hù)軟件的更好更有效的方法和工具(5) 和諧地合作是開發(fā)軟件的關(guān)鍵(6) 軟件必須有效地支持它的用戶(7) 在軟件工程領(lǐng)

5、域中是由具有一種文化背景的人替具有另一種文化背景的人(完成一些工作)消除軟件危機(jī)的途徑:(1) 對計算機(jī)軟件有一個正確的認(rèn)識(軟件程序(2) 必須充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程工程(3) 推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法(4) 開發(fā)和使用更好的軟件工具四、簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c,并分析他們的優(yōu)缺點。1. 傳統(tǒng)方法學(xué):也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。 優(yōu)點:把軟件生命周期劃分成基干個階段,每個階段的任務(wù)相對獨立,而且比擬簡單,便于不同人員分工協(xié)作, 從而降

6、低了整個軟件開發(fā)過程的困難程度。缺點:當(dāng)軟件規(guī)模龐大時,或者對軟件的需求是模糊的或會承受時 間而變化的時候,開發(fā)出的軟件往往不成功;而且維護(hù)起來仍然很困難。 2. 面向?qū)ο蠓椒▽W(xué):優(yōu)點:降低了軟件產(chǎn)品的復(fù)雜性;提高了軟件的可理解性;簡化了軟件的開發(fā)和維護(hù)工作; 促進(jìn)了軟件重用。 五、1-5 根據(jù)歷史數(shù)據(jù)可以做出如下的假設(shè) :對計算機(jī)存儲容量的需求大致按下面公式描述的趨勢逐年增加:M=4080e0.28(Y-1960) 存儲器的價格按下面公式描述的趨勢逐年下降:P1=0.3×0.72Y-1974(美分/位)如果計算機(jī)字長為16位,那么存

7、儲器價格下降的趨勢為:P2=0.048×0.72Y-1974(美元/字)在上列公式中Y代表年份,M是存儲容量(字?jǐn)?shù)),P1和P2代表價格?;谏鲜黾僭O(shè)可以比擬計算機(jī)硬件和軟件本錢的變化趨勢。要求計算:(1) 在1985年對計算機(jī)存儲容量的需求估計是多少如果字長為16位,這個存儲器的價格是多少存儲容量需求M=4080e0.281985-1960=4474263字存儲器價格P=0.048*0.721985-1974*4474263=5789美元(2) 假設(shè)在1985年一名程序員每天可開發(fā)出10條指令,程序員的平均工資是每月4000美元。如果一條指令為一個字長,計算使存儲器裝滿程序所需用的

8、本錢。需要工作量4474263/200=22371人/月指令本錢22371*4000=89484000美元(3) 假設(shè)在1995年存儲器字長為32位,一名程序員每天可開發(fā)出30條指令,程序員的月平均工資為6000美元,重復(fù)(1)、(2)題。需求估計M=4080e0.281995-1960=73577679字存儲器價格0.003*32*0.721995-1974*73577679=7127美元工作量73577679/600=122629(人/月本錢122629*6000=735776790美元六、什么是軟件過程它與軟件工程方法學(xué)有何關(guān)系軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框

9、架,它規(guī)定了完成各項任務(wù)的工作步驟。軟件工程方法學(xué):通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱范型。軟件過程是軟件工程方法學(xué)的3個重要組成局部之一。七、什么是軟件生命周期模型?試比擬瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點,說明每種模型的使用范圍。軟件生命周期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護(hù)所實施的全部過程、活動和任務(wù)的結(jié)構(gòu)框架。瀑布模型 優(yōu)點:它提供了一個模板,這個模板使得分析、設(shè)計、編碼、測試和支持的方法可以在該模板下有一個共同的指導(dǎo)。雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多。缺點:(1) 實際的工程大局部情況難以按照該模型給出的順序

10、進(jìn)行,而且這種模型的迭代是間接的,這很容易由微小的變化而造成大的混亂。(2) 經(jīng)常情況下客戶難以表達(dá)真正的需求,而這種模型卻要求如此,這種模型是不歡送具有二義性問題存在的。(3) 客戶要等到開發(fā)周期的晚期才能看到程序運行的測試版本,而在這時發(fā)現(xiàn)大的錯誤時,可能引起客戶的驚慌,而后果也可能是災(zāi)難性的。快速原型模型優(yōu)點:使用戶能夠感受到實際的系統(tǒng),使開發(fā)者能夠快速地構(gòu)造出系統(tǒng)的框架。缺點:產(chǎn)品的先天性缺乏,因為開發(fā)者常常需要做實現(xiàn)上的折中,可能采用不適宜的操作系統(tǒng)或程序設(shè)計語言,以使原型能夠盡快工作。 增量模型優(yōu)點:(1) 人員分配靈活,剛開始不用投入大量人力資源,當(dāng)核心產(chǎn)品很受歡送時,可增加人力

11、實現(xiàn)下一個增量。(2) 當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布局部功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。缺點:(1) 至始至終開發(fā)者和客戶糾纏在一起,直到完全版本出來。(2) 適合于軟件需求不明確、設(shè)計方案有一定風(fēng)險的軟件工程。該模型具有一定的市場。螺旋模型優(yōu)點:對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法。開發(fā)者和客戶能夠較好地對待和理解每一個演化級別上的風(fēng)險。缺點:(1) 需要相當(dāng)?shù)娘L(fēng)險分析評估的專門技術(shù),且成功依賴于這種技術(shù)。(2) 很明顯一個大的沒有被發(fā)現(xiàn)的風(fēng)險問題,將會導(dǎo)致問題的發(fā)生,可能導(dǎo)致演化 的方法失去控制。(3) 這種

12、模型相比照擬新,應(yīng)用不廣泛,其成效需要進(jìn)一步的驗證。該模型適合于大型軟件的開發(fā)八、為什么說噴泉模型較好的表達(dá)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?因為使用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時,各個階段都使用統(tǒng)一的概念和表示符號,因此,整個開發(fā)過程都是吻合一致的,或者說是無縫連接的,這自然就很容易實現(xiàn)各個開發(fā)步驟的反復(fù)屢次迭代,到達(dá)認(rèn)識的逐步深化,而噴泉模型那么很好的表達(dá)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。九、試討論Rational統(tǒng)一過程的優(yōu)缺點。優(yōu)點:提高了團(tuán)隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基于組建的體系結(jié)構(gòu)、可視化軟件建模、驗證軟件質(zhì)量及控制軟件變更等方面、針對所有關(guān)鍵的開發(fā)活動為每個開發(fā)

13、成員提供了必要的準(zhǔn)那么、模版和工具指導(dǎo),并確保全體成員共享相同的知識根底。它建立了簡潔和清晰的過程結(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

14、.在軟件開發(fā)的早期階段為什么要進(jìn)行可行性研究應(yīng)該從哪些方面研究目標(biāo)系統(tǒng)的可行性?答:1開發(fā)一個軟件時,需要判斷原定的系統(tǒng)模型和目標(biāo)是否現(xiàn)實,系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個系統(tǒng)的程度,如果做不到這些,那么花費在這些工程上的任何時間、人力、軟硬件資源和經(jīng)費,都是無謂的浪費??尚行匝芯康膶嵸|(zhì)是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計過程,就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計的過程??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定問題是否能夠解決。2一般說來,至少應(yīng)該從以下三個方面研究每種解法的可行性:a.技術(shù)可行性。對要開發(fā)工程的功能、 性能和限制條件進(jìn)行分析,

15、 確定在現(xiàn)有的資源條件下,技術(shù)風(fēng)險有多大,工程是否能實現(xiàn),這些即為技術(shù)可行性研究的內(nèi)容。這里的資源包括已有的或可以搞到的硬件、軟件資源,現(xiàn)有技術(shù)人員的技術(shù)水平和已有的工作根底。b.經(jīng)濟(jì)可行性。進(jìn)行開發(fā)本錢的估算以及了解取得效益的評估, 確定要開發(fā)的工程是否值得投資開發(fā),這些即為經(jīng)濟(jì)可行性研究的內(nèi)容對于大多數(shù)系統(tǒng),一般衡量經(jīng)濟(jì)上是否合算,應(yīng)考慮一個“底線,經(jīng)濟(jì)可行性研究范圍較廣,包括本錢效益分析, 長期公司經(jīng)營策略, 開發(fā)所需的本錢和資源,潛在的市場前景。c.操作可行性。有時還要研究社會可行性問題,研究要開發(fā)的工程是否存在任何侵犯、阻礙等責(zé)任問題。社會可行性所涉及的范圍也比擬廣,它包括合同、責(zé)任

16、、 侵權(quán)和其他一些技術(shù)人員常常不了解的陷阱等。必要時還應(yīng)該從法律、社會效益等更廣泛的方面研究每種解法的可行性。2.為方便儲戶,某銀行擬開發(fā)計算機(jī)儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶;如果是取款,系統(tǒng)計算利息并印出利息清單給儲戶。 請寫出問題定義并分析此系統(tǒng)的可行性。數(shù)據(jù)流程圖:取票圖:航空訂票系統(tǒng)技術(shù)在目前是一個技術(shù)上成熟的系統(tǒng),并且在航空公司內(nèi)部準(zhǔn)備采取有力措施保證資金和人員配置等。因此,分階段開發(fā)“航空訂票系統(tǒng)的設(shè)想是可行的。為了使航空公司適應(yīng)現(xiàn)代化市場競爭的需求,促進(jìn)機(jī)票預(yù)訂管理信息化

17、,不斷滿足旅客預(yù)訂機(jī)票的要求,爭取更好的經(jīng)濟(jì)效益,可立即著手系統(tǒng)的開發(fā)與完善。 3、為方便旅客,某航空公司擬開發(fā)一個機(jī)票預(yù)定系統(tǒng)。旅行社把預(yù)定機(jī)票的旅客信息姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等輸入進(jìn)入該系統(tǒng),系統(tǒng)為旅客安排航班,印出取票通知和賬單,旅客在飛機(jī)起飛的前一天憑取票通知和賬單交款取票,系統(tǒng)校對無誤即印出機(jī)票給旅客。 寫出問題定義并分析系統(tǒng)的可行性。 1> 目標(biāo):在一個月內(nèi)建立一個高效率,無過失的航空公司機(jī)票預(yù)定系統(tǒng) 2> 存在的主要問題:人工不易管理,手續(xù)繁瑣 3> 建立新系統(tǒng) 經(jīng)濟(jì)可行性 本錢效益分析 本錢估算:打印機(jī)一臺2000元+開發(fā)費35

18、00元=5500元 可承當(dāng) 效益估算:該系統(tǒng)有很好的社會效益,提高了航空公司售票效率,方便了旅客,售票方便化,科學(xué)化 技術(shù)可行性 經(jīng)過調(diào)查分析,得到目前航空公司機(jī)票預(yù)定系統(tǒng)流程圖如下:  客戶開購票證明購票證明開購票發(fā)票發(fā)票收費機(jī)票單機(jī)票 客戶系統(tǒng)管理員系統(tǒng)管理員系統(tǒng)管理員系統(tǒng)管理員航班信息的更新查詢請求表達(dá)申請機(jī)票核對事物數(shù)據(jù)庫產(chǎn)生報表產(chǎn)生報表產(chǎn)生報表產(chǎn)生報表及賬單效勞終端顯示數(shù)據(jù)客戶終端顯示數(shù)據(jù)客戶終端顯示數(shù)據(jù)在客戶端打印數(shù)據(jù)和賬單4. 目前住院病人主要由護(hù)士護(hù)理,這樣做不僅需要大量護(hù)士,而且由于不能隨時觀察危重病人的病情變化,還可能會延誤搶救時機(jī)。某醫(yī)院打算開發(fā)一個以

19、計算機(jī)為中心的患者監(jiān)護(hù)系統(tǒng),試寫出問題定義,并且分析開發(fā)這個系統(tǒng)的可行性可行性分析-原系統(tǒng)分析:護(hù)士檢查病患救治結(jié)束需要救治開始可行性分析-邏輯圖:開始醫(yī)生輸出病患標(biāo)準(zhǔn)數(shù)據(jù)效勞器采集病人生理數(shù)據(jù)比照大小警報結(jié)束在預(yù)測范圍內(nèi)不在預(yù)測范圍內(nèi)醫(yī)生病人端客戶機(jī)D1:標(biāo)準(zhǔn)數(shù)據(jù)效勞器D2:實測數(shù)據(jù)D3:警報數(shù)據(jù)護(hù)士D4:指定打印數(shù)據(jù)技術(shù)可行性; 雖然生理數(shù)據(jù)的采集需要涉及大量的專業(yè)精密儀器,軟件工程師并不精通,但是可以在專業(yè)人士的幫助下完成。經(jīng)濟(jì)可行性: 支出方面由醫(yī)院方面承當(dāng),是否可行取決于醫(yī)院方面是否能支付所需的費用。操作可行性: 醫(yī)生并不具有軟件維護(hù)的能力,在數(shù)據(jù)庫的維護(hù)上需要專業(yè)人士來進(jìn)行,因為病

20、患數(shù)目并不會太多,所以只需一個人或者幾個人定期對數(shù)據(jù)庫進(jìn)行管理和維護(hù)就行了。5北京某高校可用的 號碼有以下幾類:校內(nèi) 號碼由4位數(shù)字組成,第一位數(shù)字不是0.校外 又分為本市 和外地 兩類。撥校外 需要先撥0,假設(shè)是本市 那么接著撥8位數(shù)字第一位不是0,假設(shè)是外地 那么撥3位區(qū)碼后再撥8位 號碼第一位不是0。答: 號碼 校內(nèi) 號碼校外 號碼校內(nèi) 號碼 非零數(shù)字 位數(shù)字校外 號碼 本市號碼外地號碼本市號碼 數(shù)字零 位數(shù)字外地號碼 數(shù)字零 位數(shù)字 位數(shù)字非零數(shù)字 數(shù)字零 位數(shù)字 數(shù)字位數(shù)字 非零數(shù)字 位數(shù)字位數(shù)字 數(shù)字?jǐn)?shù)字 其中, 意思是或,從校內(nèi) 號碼或校外 號碼中選擇一個; 表示重復(fù),兩邊的數(shù)字

21、表示重復(fù)次數(shù)的下限和上限;=意思是定義為;+意思是和,連接兩個分量。 第三章 1.為什么要進(jìn)行需求分析?通常對軟件系統(tǒng)有哪些要求? 答: 1) 為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不管我們把設(shè)計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。 2)確定對系統(tǒng)的綜合要求:1、功能需求;2、性能需求;3、可靠性和可用性需求;4、出錯處理需求;5、接口需求;6、約束;7、逆向需求;8、將來可以提出的要求,分析系統(tǒng)的數(shù)據(jù)要求。 2怎樣與用戶有效地溝通以獲取用戶的真實需求?答案 : 

22、60;與用戶溝通獲取需求的方法:訪談;面向數(shù)據(jù)流自頂向下求精;簡易的應(yīng)用規(guī)格說明技術(shù);快速建立軟件原型3 銀行計算機(jī)儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),如果是存款那么系統(tǒng)記錄存款人姓名、住址、身份證號碼等存款信息,并打印出存款存單給儲戶;如果是取款且存款時留有密碼,那么系統(tǒng)首先核對儲戶密碼,假設(shè)密碼正確或存款時未留密碼,那么系統(tǒng)計算利息并打印出利息清單給儲戶。 答案: 用ER圖描繪系統(tǒng)中的數(shù)據(jù)對象。5分所析習(xí)題2中第4題的患者監(jiān)獄系統(tǒng)。試用實體-聯(lián)系圖描述本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)流程描繪本系統(tǒng)的功能。 .word6 復(fù)印機(jī)的工作過程大致如下:未接到復(fù)印命令時

23、處于閑置狀態(tài),一旦接到復(fù)印命令那么進(jìn)入復(fù)印狀態(tài),完成一個復(fù)印命令規(guī)定的工作后又回到閑置狀態(tài),等待下一個復(fù)印命令;如果執(zhí)行復(fù)印命令時發(fā)現(xiàn)沒紙,那么進(jìn)入缺紙狀態(tài),發(fā)出警告,等待裝紙,裝滿紙后進(jìn)入閑置狀態(tài),準(zhǔn)備接收復(fù)印命令;如果復(fù)印時發(fā)生卡紙故障,那么進(jìn)入卡紙狀態(tài),發(fā)出警告等待維修人員來排除故障,故障排除后回到閑置狀態(tài)。 請用狀態(tài)轉(zhuǎn)換圖描繪復(fù)印機(jī)的行為。 答案: 從問題陳述可知,復(fù)印機(jī)的狀態(tài)主要有“閑置、“復(fù)印、“缺紙和“卡紙。引起狀態(tài)轉(zhuǎn)換的事件主要是“復(fù)印命令、“完成復(fù)印命令、“發(fā)現(xiàn)缺紙、“裝滿紙、“發(fā)生卡紙故障和“排除了卡紙故障。 閑置復(fù)印do /復(fù)印缺紙do /警告卡紙do /警告復(fù)印命令完成

24、復(fù)印命令裝滿紙排除了卡紙故障 第4章1,舉例說明形式化說明技術(shù)和欠形式化方法的優(yōu)缺點。答:優(yōu)點缺點形式化說明1,簡潔準(zhǔn)確的描述物理現(xiàn)象,對象獲動作的結(jié)果2,可以在不同軟件工程活動之間平滑的過度。3,它提供了高層確認(rèn)的手段大多形式化的規(guī)格說明主要關(guān)注系統(tǒng)的功能和數(shù)據(jù),而時序的問題,控制和行為等方面的需求卻更難于表示非形式化說明難度低可能存在矛盾,二義性,模糊性,不完整性級抽象層次混亂等問題以一個簡單的俄羅斯方塊游戲系統(tǒng)規(guī)格說明為例,用自然語言描述如下:游戲的每個狀態(tài)對應(yīng)一個游戲界面,開始狀態(tài)下,但變量cd_start=1是進(jìn)入正常游戲的狀態(tài),cd_start=2時進(jìn)入讀取游戲狀態(tài),cd_star

25、t=3是進(jìn)入得分榜界面查看。在得分榜界面按任意鍵返回開始界面,在讀取游戲界面,當(dāng)游戲數(shù)據(jù)讀取完成后進(jìn)入正常游戲狀態(tài),正常游戲狀態(tài)下,同時按下左鍵和右鍵進(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

26、_res轉(zhuǎn)換函數(shù)T:如圖4.1所示EEPROM寫入完成后LEFT&RIGHTGame_res=0EEPROM讀取完成后Cd_start=1Cd_start=2按任意鍵Cd_start=3得分榜游戲結(jié)束開始儲存中讀取游戲游戲進(jìn)行中圖4.1游戲狀態(tài)轉(zhuǎn)換圖初始態(tài)S:開始終態(tài)集F:游戲結(jié)束可見用形式化語言描述,更加簡潔,準(zhǔn)確,無歧義。2,在什么情況下應(yīng)該使用形式化說明技術(shù)?使用形式化說明技術(shù)應(yīng)遵守哪些規(guī)那么?答:在用非形式化的方式描述時,存在矛盾,二義性,模糊性,不完整性級抽象層次混亂等問題時用形式化說明技術(shù)。應(yīng)用形式化方法的準(zhǔn)那么:A,應(yīng)該選用適當(dāng)?shù)谋硎痉椒?;B,應(yīng)該形式化,但不要過分形式化

27、;C, 應(yīng)該估算本錢;D, 應(yīng)該有形式化的方法參謀隨時提供咨詢;E, 不應(yīng)該放棄傳統(tǒng)的開發(fā)方式;F,應(yīng)該建立詳盡的文檔;G,不應(yīng)該放棄質(zhì)量標(biāo)準(zhǔn);H,不應(yīng)該盲目依賴形式化方法;I,應(yīng)該測試,測試再測試;J,應(yīng)該重用。3,一個浮點二進(jìn)制數(shù)的構(gòu)成是:一個可選的符號(+或-),后跟一個或多個二進(jìn)制位,再跟上一個字符E,再加上另一個可選符號(+或-)及一個或多個二進(jìn)制位。例如,以下的字符串都是浮點二進(jìn)制數(shù):110101E-101-100111E11101+1E0更形式化地,浮點二進(jìn)制數(shù)定義如下:floatingpoint binary=signbitstringEsignbitstringsign=+-

28、bitstring=bitbitstringbit=01其中,符號=表示定義為;符號.表示可選項;符號ab表示a或b。 假設(shè)有這樣一個有窮狀態(tài)機(jī):以一串字符為輸入,判斷字符串中是否含有合法的浮點二進(jìn)制數(shù)。試對這個有窮狀態(tài)機(jī)進(jìn)行規(guī)格說明。4,考慮下述的自動化圖書館流通系統(tǒng):每本書都有一個條形碼,每個人都有一個帶條形碼的卡片。但一個借閱人想借一本書時,圖書管理員掃描書上的條形碼和借閱人卡片的條形碼,然后在計算機(jī)終端上輸入C;當(dāng)歸還一本書時,圖書管理員將再次掃描,并輸入R。圖書管理員可以把一些書加到+圖書集合中,也可以刪除它們。借閱人可以再終端上查找到某個作者所有的書輸入“A=和作者名字,或具有指定

29、標(biāo)題的所有書籍輸入“T=和標(biāo)題,或?qū)儆谔囟ㄖ黝}范圍內(nèi)的所有圖書輸入“S=加主題范圍。最后,如果借閱人想借的書已被別人借走,圖書管理員將給這本書設(shè)置一個預(yù)約,以便書歸還時把書留給預(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輸入集K:書上條形碼,借閱卡條形碼,終端輸入各種命令轉(zhuǎn)換函數(shù)T:如下圖初始態(tài)S:書在圖書館S1,書被借出S2終態(tài)集F:書被借出S2,書被預(yù)約S3書歸還,掃描兩個條形碼,在終端輸入R在終端輸入“H=加書號掃描兩個條形碼,在終端輸入R掃描兩個條

30、形碼,在終端輸入C書在圖書館S1書被借出S2書被預(yù)約S3圖(二)圖書館終端管理員模式的有窮狀態(tài)機(jī)描述狀態(tài)機(jī)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)為S2&終端輸入“H=加書名圖終態(tài)集F:書入庫,書出庫刪除,預(yù)約,(二)圖書館終端用戶模式的有窮狀態(tài)機(jī)描述狀態(tài)機(jī)J:讀者查詢狀態(tài),查詢結(jié)果輸入集K:終端輸入用戶查詢命令,書的各種狀態(tài)S1,S2,S3轉(zhuǎn)換函數(shù)T:如下圖讀者查詢狀態(tài)查詢結(jié)果終端輸入各種查詢命令圖初始態(tài)S:讀者查詢狀態(tài)終

31、態(tài)集F:查詢結(jié)果5,試用Petri網(wǎng)說明第四題所述圖書館中一本書的循環(huán)過程,在規(guī)格說明中應(yīng)該包括操作H、C及R。答:其中P1表示書在圖書館P2表示書在讀者手上,P3書被預(yù)約P1.P2.P36,試用Z語言對第四題所描述圖書館圖書流通系統(tǒng)做一個完整的規(guī)格說明。答:(這題真的不會!)BOOK_STATEBook_in,Book_out,Book_reserveBook_inBook_outBook_reserve=Book_inBook_outBook_reserve=BOOK_STATE.word第五章5.1為每種類型的模塊耦合舉一個具體的例子。答:耦合式對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互聯(lián)程度的度量

32、。耦合強弱取決于接口的復(fù)雜度,進(jìn)入或訪問某一模塊的點,以及通過接口的數(shù)據(jù)。一般模塊之間的可能的連接方式有七種,構(gòu)成耦合的七種類型,它們的關(guān)系為:低 耦合性 高非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合強 獨立性 弱下面舉例說明以上耦合:A 非直接耦合:兩個模塊沒有直接的關(guān)系模塊1和模塊2,獨立性最強模塊4模塊2模塊3模塊1B.數(shù)據(jù)耦合:即一個模塊訪問另一個模塊的時候,彼此之間是通過數(shù)據(jù)參數(shù)來交換輸入、輸出信息的,這種耦合為數(shù)據(jù)耦合。這種耦合較為松散,模塊間獨立性較強。用戶情況用戶情況計算水電費電費水費計算電費計算水費費金額單價數(shù)量交房費開發(fā)票C.特征耦合:即一組模塊通過參數(shù)傳遞

33、記錄信息,用戶情況是個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此有關(guān),“計算水費和“計算電費本沒有關(guān)系,由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生了依賴關(guān)系D.控制耦合:即如果一個模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合A模塊BFnF2F1FlagE.外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,那么稱之為外部耦合。F使用使用打印機(jī) B模塊A模塊.公共耦合: 假設(shè)一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,那么它們之間的耦合就稱為公共耦合。全局?jǐn)?shù)組C模塊B模塊A模塊G.內(nèi)容耦合:如果出現(xiàn)以下情況之一,兩個模塊就發(fā)生了內(nèi)容耦合 一個模塊訪問另

34、一個模塊的內(nèi)部數(shù)據(jù)。 一個模塊不通過正常入口兒轉(zhuǎn)到另一個模塊的內(nèi)部 兩個模塊有一局部程序代碼重疊只可能發(fā)生在匯編程序中 一個模塊有多個入口這意味著一個模塊有幾種功能Sub AA(.)Goto L End subSub BB(.)L: End sub5.2為每種類型的模塊內(nèi)聚舉一個例子答:內(nèi)聚標(biāo)志著一個模塊內(nèi)各個元素之間彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。低內(nèi)聚:A 偶然內(nèi)聚:如果一個模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。這就叫做偶然內(nèi)聚偶然內(nèi)聚的例子:在模塊T 中有A,B,C三條語句,至少從外表上看來這三條語句沒什么聯(lián)系,只是因為D,E,F,G中都有

35、這三條語句,為了節(jié)省空間才把這三條語句作為一個模板放在一起。B 邏輯內(nèi)聚:如果一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類(例如一個模塊產(chǎn)生各種類型的全部輸出),稱為邏輯內(nèi)聚邏輯內(nèi)聚的例子:某一個模塊將打印,年,月,日,具體打印什么,將由傳入的控制標(biāo)志所決定。C 時間內(nèi)聚:一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行例如,模塊完成各種初始化工作,稱為時間內(nèi)聚時間內(nèi)聚的例子:將多個變量的初始化放在同一個模塊中實現(xiàn)。中內(nèi)聚:A 過程內(nèi)聚:如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,稱為過程內(nèi)聚過程內(nèi)聚的例子:一個子程序,將開始讀取學(xué)生的學(xué)號,然后是姓名,最后將讀取分?jǐn)?shù),是由于特定的順序

36、而將這些操作組合在一起的B 通訊內(nèi)聚:如果模塊中所有的元素都使用同一個輸入數(shù)據(jù)和或產(chǎn)生同一個輸出數(shù)據(jù),那么稱為通訊內(nèi)聚通訊內(nèi)聚的例子:有一個子程序,它將打印實驗報告,并且在完成后重新初始化傳進(jìn)來的實驗數(shù)據(jù)。這個程序具有通訊內(nèi)聚性。因為這兩個操作由于使用同一個數(shù)據(jù)源聯(lián)系在了一起。高內(nèi)聚:A 順序內(nèi)聚:如果一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),那么稱為順序內(nèi)聚。順序內(nèi)聚的例子:有一個子程序,通過給出的生日,先計算出年齡。再根據(jù)年齡算出退休的時間,那么這個程序具有順序內(nèi)聚性。B 功能內(nèi)聚:如果模塊內(nèi)所有的元素屬于一個

37、整體完成一個單一的功能,那么成為功能內(nèi)聚。功能內(nèi)聚的例子:一個程序中所有的操作都是為了算出一個人的年齡5.3用面向數(shù)據(jù)流的方法設(shè)計以下系統(tǒng)的軟件結(jié)構(gòu)儲蓄系統(tǒng)機(jī)票預(yù)訂系統(tǒng)患者監(jiān)護(hù)系統(tǒng)5.4 美國某大學(xué)有 200 名教師,校方與教師工會剛剛簽訂一項協(xié)議。按照協(xié)議,所有年工資超過$26000含$26000 的教師工資將保持不變,年工資少于$26000的教師將增加工資,所增加工資數(shù)額按下述方法計算:給每位教師所贍養(yǎng)的人包括教師本人每年補助$100,此外,教師有一年工齡每年再多補助¥50,但是,增加后的年工資總額不能多于$26000。教師工資檔案存儲在行政辦公室的磁帶上,檔案中有目前的年工資、贍養(yǎng)的人數(shù)

38、、雇傭日期等信息。需要寫一個程序計算并印出每名教師的原工資和調(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ù)按工資從最低到最高的次序排序,當(dāng)工資數(shù)額超過$26000時即停止排序,計算新工資,校核是否超過限額,存儲新工資,印出結(jié)果。(4) 你所畫出的數(shù)據(jù)流圖適應(yīng)用那種算法?解:1數(shù)據(jù)流圖:分解后:2需求說明: 1. 功能需求:可以輸入調(diào)

39、資的標(biāo)準(zhǔn),輸入教師檔案,經(jīng)調(diào)資給出新的教師檔案,需要存儲檔案 2 性能需求:軟件的響應(yīng)時間應(yīng)小于0.5s,更新處理要快 3 靈活需求:當(dāng)需求發(fā)生某些變化時,該軟件應(yīng)該能夠適應(yīng)這些變化 4 故障處理要求:出現(xiàn)錯誤時,應(yīng)給予警告或提示 3A.B.a比擬耗時,因為它要檢索所有的檔案,b從速度上看比擬快,但是b需要排序算法,比擬復(fù)雜,a對于設(shè)計來講比擬簡單 .4畫出的數(shù)據(jù)流圖比擬適合A的算法 5.5下面將給出兩個人玩的撲克牌游戲的一種玩法,試設(shè)計一個模擬程序,它的根本功能是:1發(fā)兩手牌利用隨機(jī)數(shù)產(chǎn)生器。2確定贏者和贏牌的類型。3模擬N次游戲,計算每種類型牌贏或平局的概率。要求用HIPO圖描繪設(shè)計結(jié)果并

40、且畫出高層控制流程圖。撲克牌游戲規(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è)兩個人的牌類型不同,那么等級高者勝

41、;假設(shè)等級相同,那么點數(shù)高者勝;假設(shè)點數(shù)也相同,那么為平局。程序:#include "stdio.h"int rabl(int a,int b,int *r) int l,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); int max(int T1010) int t=0; if(T00>T10) t=T00; else t=T10; if(t<T20) t=T20; return t; int E

42、1(int T1010) if(T01=T11&&T11=T21) return 1; else return 0; int E2(int T1010) int q=0; if(max(T1010)-1)=T00|(max(T1010)-1)=T10|(max(T1010)-1)=T20)&&(max(T1010)-2)=T00|(max(T1010)-2)=T10|(max(T1010)-2)=T20) / if(q=max(T10) return 1; else return 0; int E3(int T1010) if(T00=T10=T20) retu

43、rn 1; else return 0; int E4(int T1010) if(T00=T10&&T00!=T20) return 1; else if(T00=T20&&T00!=T10) return 1; else if(T10=T20&&T10!=T00) return 1; else return 0; void main() int times=0,e1=0,e2=0,e3=0,e4=0,e5=0; int A1010,B1010; int r1=2,r2=3; printf("請輸入游戲的次數(shù)n"); sca

44、nf("%d",&times); for(int j=0;j<times;j+) for(int i=0;i<3;i+) Ai0=rabl(1,13,&r1); Ai1=rabl(14,17,&r2); Bi0=rabl(1,13,&r1); Bi1=rabl(14,17,&r2); if(E1(A10)>E1(B10) e1+; printf("A贏,同花順n"); else if(E1(A10)<E1(B10) e1+; printf("B贏,同花順n"); else

45、 if(E1(A10)=E1(B10)&&E1(B10)=1) e1+; if(max(A10)>max(B10) printf("A贏,同花順n"); else printf("B贏,同花順n"); else if(E2(A10)>E2(B10) e2+; printf("A贏,順子n"); else if(E2(A10)<E2(B10) e2+; printf("B贏,順子n"); else if(E2(A10)=E2(B10)&&E2(B10)=1) e2+;

46、 if(max(A10)>max(B10) printf("A贏,順子n"); else printf("B贏,順子n"); else if(E3(A10)>E3(B10) e3+; printf("A贏,同點n"); else if(E3(A10)<E3(B10) e3+; printf("B贏,同點n"); else if(E3(A10)=E3(B10)&&E3(B10)=1) e3+; if(max(A10)>max(B10) printf("A贏,同點n&q

47、uot;); else printf("B贏,同點n"); else if(E4(A10)>E4(B10) e4+; printf("A贏,對子n"); else if(E4(A10)>E4(B10) e4+; printf("B贏,對子n"); else if(E4(A10)=E4(B10)&&E4(B10)=1) ; e4+; if(max(A10)>max(B10) printf("A贏,對子n"); else printf("B贏,對子n"); else

48、 if(max(A10)>max(B10) printf("A贏,雜牌n"); else printf("B贏,雜牌n"); printf("同花順贏牌概率為%d,順子贏牌概率為%d,同點贏牌概率為%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)化如下:K = 1DO WHILE 條件 .AND. K.EQ.1)程序塊1K=K+1END DODO WHILE (.NOT. 條件) .AND. K.EQ.1)程序塊2K=K+1END DO2、 假設(shè)只有SEQUENCE和IF_THEN_ELSE兩種控制結(jié)構(gòu),怎么利用它們完成DO_WHILE操作?解:轉(zhuǎn)化如下;label:IF (條件) THEN程序塊GOTO labelELSE程序塊END IF3、 畫出以下偽代碼程序的流程圖和盒圖:STARTIF p THEN WHILE q DO f END DOELSE BLOCK g n END BLOCKEND IFSTOP解:流程圖:

溫馨提示

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

評論

0/150

提交評論