版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程導(dǎo)論第六版張海藩牟永敏課后習(xí)題答案軟件工程導(dǎo)論第六版張海藩牟永敏課后習(xí)題答案75/75軟件工程導(dǎo)論第六版張海藩牟永敏課后習(xí)題答案第一章一、什么是軟件危機(jī)?它有哪些典型表現(xiàn)?為何會出現(xiàn)軟件危機(jī)?軟件危機(jī)是指在計算機(jī)軟件開發(fā)、使用與保護(hù)過程中碰到的一系列嚴(yán)重問題和難題。它包含雙方面:如何開發(fā)軟件,已滿足對軟件日趨增加的需求;如何保護(hù)數(shù)目不停增加的已有軟件。軟件危機(jī)的典型表現(xiàn):對軟件開發(fā)成本和進(jìn)度的預(yù)計常常很不正確。常常出現(xiàn)實質(zhì)成本比估量成本超出一個數(shù)目級、實質(zhì)進(jìn)度比計劃進(jìn)度遲延幾個月甚至幾年的現(xiàn)象。而為了趕進(jìn)度和節(jié)儉成本所采納的一些瞞天過海又常常傷害了軟件產(chǎn)品的質(zhì)量。這些都降低了開發(fā)商的信
2、用,惹起用戶不滿。用戶對已達(dá)成的軟件不滿意的現(xiàn)象時有發(fā)生。軟件產(chǎn)品的質(zhì)量常常是靠不住的。(4)軟件常常是不行保護(hù)的。軟件平常沒有適合的文檔資料。文檔資料不全或不合格,勢必給軟件開發(fā)和保護(hù)工作帶來很多災(zāi)以想象的困難和難以解決的問題。軟件成本、軟件保護(hù)費在計算機(jī)系統(tǒng)總成本中所占比率逐年上漲。開發(fā)生產(chǎn)率提升的速度遠(yuǎn)跟不上計算機(jī)應(yīng)用普及的需求。軟件危機(jī)出現(xiàn)的原由:來自軟件自己的特色:是邏輯零件,缺乏可見性;規(guī)模宏大、復(fù)雜,更正、保護(hù)困難。軟件開發(fā)與保護(hù)的方法不妥:忽視需求分析;以為軟件開發(fā)等于程序編寫;小看軟件保護(hù)。供求矛盾將是一個永久的主題:面對日趨增加的軟件需求,人們顯得力所不及。二、假定自己是一
3、家軟件企業(yè)的總工程師,當(dāng)把圖1.1給手下的軟件工程師們觀看,告訴他們及時發(fā)現(xiàn)并更正錯誤的重要性時,有人不一樣意這個看法,以為要求在錯誤進(jìn)入軟件從前就清楚它們是不現(xiàn)實的,并舉例說:“假如一個故障是編碼錯誤造成的,那么,一個人怎么能在設(shè)計階段除去它呢?”應(yīng)當(dāng)怎么辯駁他?答:在軟件開發(fā)的不一樣階段進(jìn)行更正付出的代價是很不同樣的,在初期引入改動,波及的面較少,因此代價也比較低;在開發(fā)的中期,軟件配置的很多成分已經(jīng)達(dá)成,引入一個改動要對所有已達(dá)成的配置成分都做相應(yīng)的更正,不但工作量大,并且邏輯上也更復(fù)雜,所以付出的代價劇增;在軟件“已經(jīng)達(dá)成”是在引入改動,自然付出的代價更高。一個故障是代碼錯誤造成的,有
4、時這種錯誤是不行防范的,但要更正的成本是很小的,因為這不是整體構(gòu)架的錯誤。三、什么是軟件工程?它有哪些實質(zhì)特色?如何用軟件工程除去軟件危機(jī)?1993年IEEE的定義:軟件工程是:把系統(tǒng)的、規(guī)范的、可胸懷的門路應(yīng)用于軟件開發(fā)、運轉(zhuǎn)和保護(hù)過程,也就是把工程應(yīng)用于軟件;研究中提到的門路。軟件工程的實質(zhì)特色:(1)軟件工程關(guān)注于大型程序(軟件系統(tǒng))的結(jié)構(gòu)(2)軟件工程的中心課題是分解問題,控制復(fù)雜性(3)軟件是常常變化的,開發(fā)過程中一定考慮軟件未來可能的變化開發(fā)軟件的效率特別重要,所以,軟件工程的一個重要課題就是,追求開發(fā)與保護(hù)軟件的更好更有效的方法和工具(5)友好地合作是開發(fā)軟件的重點(6)軟件一定
5、有效地支持它的用戶在軟件工程領(lǐng)域中是由擁有一種文化背景的人替擁有另一種文化背景的人(達(dá)成一些工作)除去軟件危機(jī)的門路:對計算機(jī)軟件有一個正確的認(rèn)識(軟件程序)一定充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神奇技巧,而應(yīng)當(dāng)是一種組織優(yōu)秀、管理嚴(yán)實、各種人員共同配合、共同達(dá)成的工程項目推行使用在實踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法開發(fā)和使用更好的軟件工具四、簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷闹攸c,并分析他們的優(yōu)弊端。1.傳統(tǒng)方法學(xué):也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。長處:把軟件生命周期區(qū)分紅基干個階段,每個階段的任務(wù)相對獨立,并且比較簡單,便于不一樣人員分工協(xié)作,從而降低了整個軟件開發(fā)過程的困難程度。弊
6、端:當(dāng)軟件規(guī)模宏大時,或許對軟件的需求是模糊的或會承受時間而變化的時候,開發(fā)出的軟件常常不行功;并且保護(hù)起來仍舊很困難。面向?qū)ο蠓椒▽W(xué):長處:降低了軟件產(chǎn)品的復(fù)雜性;提升了軟件的可理解性;簡化了軟件的開發(fā)和保護(hù)工作;促進(jìn)了軟件重用。五、1-5依據(jù)歷史數(shù)據(jù)能夠做出以下的假定:對計算機(jī)儲存容量的需求大概按下邊公式描述的趨向逐年增加:M=4080e0.28(Y-1960)儲存器的價錢按下邊公式描述的趨向逐年降落:P1=0.30.72Y-1974(美分/位)假如計算機(jī)字長為16位,則儲存器價錢降落的趨向為:P2=0.0480.72Y-1974(美元/字)在上列公式中Y代表年份,M是儲存容量(字?jǐn)?shù)),P
7、1和P2代表價錢。鑒于上述假定能夠比較計算機(jī)硬件和軟件成本的變化趨向。要求計算:在1985年對計算機(jī)儲存容量的需求預(yù)計是多少?假如字長為16位,這個儲存器的價錢是多少?儲存容量需求M=4080e0.28(1985-1960)=4474263(字)儲存器價錢P=0.048*0.72(1985-1974)*4474263=5789美元假定在1985年一名程序員每日可開發(fā)出10條指令,程序員的均勻薪資是每個月4000美元。假如一條指令為一個字長,計算使儲存器裝滿程序所需用的成本。需要工作量4474263/200=22371(人/月)指令成本22371*4000=89484000美元假定在1995年儲
8、存器字長為32位,一名程序員每日可開發(fā)出30條指令,程序員的月均勻薪資為6000美元,重復(fù)(1)、(2)題。需求預(yù)計M=4080e0.28(1995-1960)=73577679字儲存器價錢0.003*32*0.72(1995-1974)*73577679=7127美元工作量73577679/600=122629(人/月)成本122629*6000=735776790美元六、什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需達(dá)成的一系列任務(wù)的框架,它規(guī)定了達(dá)成各項任務(wù)的工作步驟。軟件工程方法學(xué):平常把在軟件生命周期全過程中使用的一整套技術(shù)方法的會合稱為方法學(xué),
9、也稱范型。軟件過程是軟件工程方法學(xué)的3個重要構(gòu)成部分之一。七、什么是軟件生命周期模型?試比較瀑布模型、迅速原型模型、增量模型和螺旋模型的優(yōu)弊端,說明每種模型的使用范圍。軟件生命周期模型是超越整個生計期的系統(tǒng)開發(fā)、運作和保護(hù)所實行的所有過程、活動和任務(wù)的結(jié)構(gòu)框架。瀑布模型長處:它供給了一個模板,這個模板使得分析、設(shè)計、編碼、測試和支持的方法能夠在該模板下有一個共同的指導(dǎo)。固然有許多缺點但比在軟件開發(fā)中任意的狀態(tài)要好得多。弊端:(1)實質(zhì)的項目大部分狀況難以依據(jù)該模型給出的序次進(jìn)行,并且這種模型的迭代是間接的,這很簡單由細(xì)小的變化而造成大的紛亂。常常狀況下客戶難以表達(dá)真切的需求,而這種模型卻要求這
10、樣,這種模型是不歡迎擁有二義性問題存在的??蛻粢鹊介_發(fā)周期的后期才能看到程序運轉(zhuǎn)的測試版本,而在這時發(fā)現(xiàn)大的錯誤時,可能惹起客戶的慌張,爾結(jié)果也可能是災(zāi)害性的。迅速原型模型長處:使用戶能夠感覺到實質(zhì)的系統(tǒng),使開發(fā)者能夠迅速地結(jié)構(gòu)出系統(tǒng)的框架。弊端:產(chǎn)品的先本性不足,因為開發(fā)者常常需要做實現(xiàn)上的折中,可能采納不適合的操作系統(tǒng)或程序設(shè)計語言,以使原型能夠趕快工作。增量模型長處:(1)人員分派靈巧,剛開始不用投入大批人力資源,當(dāng)核心產(chǎn)品很受歡迎時,可增加人力實現(xiàn)下一個增量。當(dāng)裝備的人員不可以在設(shè)定的限期內(nèi)達(dá)成產(chǎn)品時,它供給了一種先推出核心產(chǎn)品的門路,這樣就能夠先公布部分功能給客戶,對客戶起到冷靜劑
11、的作用。弊端:(1)至始至終開發(fā)者和客戶糾葛在一同,直到完好版本出來。適合于軟件需求不明確、設(shè)計方案有必定風(fēng)險的軟件項目。該模型擁有必定的市場。螺旋模型長處:對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法。開發(fā)者和客戶能夠較好地對待和理解每一個演化級別上的風(fēng)險。弊端:(1)需要相當(dāng)?shù)娘L(fēng)險分析評估的特地技術(shù),且成功依靠于這種技術(shù)。(2)很明顯一個大的沒有被發(fā)現(xiàn)的風(fēng)險問題,將會以致問題的發(fā)生,可能以致演化的方法失掉控制。這種模型對比較較新,應(yīng)用不寬泛,其功能需要進(jìn)一步的考證。該模型適合于大型軟件的開發(fā)八、為何說噴泉模型較好的表現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特征?因為使用面向?qū)ο蠓椒▽W(xué)開發(fā)
12、軟件時,各個階段都使用一致的看法和表示符號,所以,整個開發(fā)過程都是符合一致的,或許說是無縫連結(jié)的,這自然就很簡單實現(xiàn)各個開發(fā)步驟的頻頻多次迭代,達(dá)到認(rèn)識的逐漸深入,而噴泉模型則很好的表現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特征。九、試談?wù)揜ational一致過程的優(yōu)弊端。長處:提升了團(tuán)隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、鑒于組建的系統(tǒng)結(jié)構(gòu)、可視化軟件建模、考證軟件質(zhì)量及控制軟件改正等方面、針對所有重點的開發(fā)活動為每個開發(fā)成員供給了必需的準(zhǔn)則、模版和工具指導(dǎo),并保證全體成員共享同樣的知識基礎(chǔ)。它成立了簡短和清楚的過程結(jié)構(gòu),為開發(fā)過程供給較大的通用性。弊端:RUP不過一個開發(fā)過程,并無涵蓋軟件過程
13、的所有內(nèi)容,比方它缺乏對于軟件運轉(zhuǎn)和支持等方面的內(nèi)容,其余,他沒有支持多項目的開發(fā)結(jié)構(gòu),這在必定程度上降低了在開發(fā)組織內(nèi)大范圍實現(xiàn)重用的可能性。十Rational一致過程主要合用于何種項目?大型的需求不停變化的復(fù)雜軟件系統(tǒng)項目十一.說明矯捷過程的合用范圍合用于商業(yè)競爭環(huán)境下對小型項目提出的有限資源和有限開發(fā)時間的拘束十二.說明微軟過程的合用范圍合用于商業(yè)環(huán)境下?lián)碛杏邢拶Y源和有限開發(fā)時間拘束的項目的軟件過程模式第二章1.在軟件開發(fā)的初期階段為何要進(jìn)行可行性研究?應(yīng)當(dāng)從哪些方面研究目標(biāo)系統(tǒng)的可行性?答:(1)開發(fā)一個軟件時,需要判斷原定的系統(tǒng)模型和目標(biāo)能否現(xiàn)實,系統(tǒng)達(dá)成后所能帶來的效益能否大到值得
14、投資開發(fā)這個系統(tǒng)的程度,假如做不到這些,那么花銷在這些工程上的任何時間、人力、軟硬件資源和經(jīng)費,都是無謂的浪費。可行性研究的實質(zhì)是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計過程,就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計的過程??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確立問題能否能夠解決。(2)一般說來,最少應(yīng)當(dāng)從以下三個方面研究每種解法的可行性:a.技術(shù)可行性。對要開發(fā)項目的功能、性能和限制條件進(jìn)行分析,確立在現(xiàn)有的資源條件下,技術(shù)風(fēng)險有多大,項目能否能實現(xiàn),這些即為技術(shù)可行性研究的內(nèi)容。這里的資源包含已有的或能夠搞到的硬件、軟件資源,現(xiàn)有技術(shù)人員的技術(shù)水平易已有的工作基礎(chǔ)。
15、b.經(jīng)濟(jì)可行性。進(jìn)行開發(fā)成本的估量以及認(rèn)識獲得效益的評估,確立要開發(fā)的項目能否值得投資開發(fā),這些即為經(jīng)濟(jì)可行性研究的內(nèi)容對于大部分系統(tǒng),一般衡量經(jīng)濟(jì)上能否合算,應(yīng)試慮一個“底線”,經(jīng)濟(jì)可行性研究范圍較廣,包含成本效益分析,長遠(yuǎn)企業(yè)經(jīng)營策略,開發(fā)所需的成本和資源,潛伏的市場遠(yuǎn)景。c.操作可行性。有時還要研究社會可行性問題,研究要開發(fā)的項目能否存在任何入侵、阻礙等責(zé)任問題。社會可行性所波及的范圍也比較廣,它包含合同、責(zé)任、侵權(quán)和其余一些技術(shù)人員常常不認(rèn)識的圈套等。必需時還應(yīng)當(dāng)從法律、社會效益等更寬泛的方面研究每種解法的可行性。為方便儲戶,某銀行擬開發(fā)計算機(jī)儲存系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員
16、鍵入系統(tǒng),假如是存款,系統(tǒng)記錄存款人姓名、地點、存款種類、存款日期、利率等信息,并印出存款單給儲戶;假如是取款,系統(tǒng)計算利息并印出利息清單給儲戶。請寫出問題定義并分析此系統(tǒng)的可行性。數(shù)據(jù)流程圖:取票圖:航空訂票系統(tǒng)技術(shù)在目前是一個技術(shù)上成熟的系統(tǒng),并且在航空企業(yè)內(nèi)部準(zhǔn)備采納有力措施保證資本和人員配置等。所以,分階段開發(fā)“航空訂票系統(tǒng)”的構(gòu)思是可行的。為了使航空企業(yè)適應(yīng)現(xiàn)代化市場競爭的需求,促進(jìn)機(jī)票預(yù)定管理信息化,不停滿足游客預(yù)定機(jī)票的要求,爭取更好的經(jīng)濟(jì)效益,可馬上著手系統(tǒng)的開發(fā)與完美。3、為方便游客,某航空企業(yè)擬開發(fā)一個機(jī)票預(yù)約系統(tǒng)。旅行社把預(yù)約機(jī)票的游客信息(姓名、性別、工作單位、身份證號
17、碼、旅行時間、旅行目的地等)輸入進(jìn)入該系統(tǒng),系統(tǒng)為游客安排航班,印出取票通知和賬單,游客在飛機(jī)騰躍的前一天憑取票通知和賬單交款取票,系統(tǒng)校正無誤即印出機(jī)票給游客。寫出問題定義并分析系統(tǒng)的可行性。1目標(biāo):在一個月內(nèi)成立一個高效率,無差錯的航空企業(yè)機(jī)票預(yù)約系統(tǒng)2存在的主要問題:人工不易管理,手續(xù)繁瑣3成立新系統(tǒng)經(jīng)濟(jì)可行性成本效益分析成本估量:打印機(jī)一臺(2000元)+開發(fā)費(3500元)=5500元可擔(dān)當(dāng)效益估量:該系統(tǒng)有很好的社會效益,提升了航空企業(yè)售票效率,方便了游客,售票方便化,科學(xué)化技術(shù)可行性經(jīng)過檢查分析,獲取目前航空企業(yè)機(jī)票預(yù)約系統(tǒng)流程圖以下:客開購票證發(fā)票收費購票證開購票發(fā)機(jī)票機(jī)票客戶
18、系統(tǒng)航班信息的更新系統(tǒng)查詢數(shù)據(jù)系統(tǒng)表達(dá)庫系統(tǒng)機(jī)票產(chǎn)生產(chǎn)生產(chǎn)生服務(wù)終端客戶終端客戶終端在客戶端產(chǎn)生報表及賬單打印數(shù)據(jù)目前住院病人主要由護(hù)士護(hù)理,這樣做不但需要大批護(hù)士,并且因為不可以隨時觀察危大病人的病情變化,還可能會延遲急救機(jī)遇。某醫(yī)院打算開發(fā)一個以計算機(jī)為中心的患者監(jiān)護(hù)系統(tǒng),試寫出問題定義,并且分析開發(fā)這個系統(tǒng)的可行性可行性分析-原系統(tǒng)分析:可行性分析-邏輯圖:開始開始醫(yī)生D1:標(biāo)準(zhǔn)數(shù)據(jù)技術(shù)可行性;護(hù)士檢查病患固然生理數(shù)據(jù)的收集需要波及大批的專業(yè)精巧儀器,軟件工程師其實不精曉,可是能夠在專業(yè)人士的幫助下達(dá)成。服務(wù)D4:指定打印醫(yī)生輸出經(jīng)濟(jì)可行性:病人端客戶機(jī)需要救治服務(wù)器D2:實測數(shù)據(jù)收集病
19、人生理數(shù)據(jù)支出方面由醫(yī)院方面擔(dān)當(dāng),能否可行取決于醫(yī)院方面能否能支付所需的花費。操作可行性:醫(yī)生其實不擁有軟件保護(hù)的能力,在數(shù)據(jù)庫的保護(hù)上需要專業(yè)人士來進(jìn)行,因為病患數(shù)目其實不會太多,所以只要一個人或許幾個人按期對數(shù)據(jù)庫進(jìn)行管理和保護(hù)就行了。5北京某高??捎玫碾娫捥柎a有以下幾類:校內(nèi)電話號碼由4位數(shù)字構(gòu)成,第一位數(shù)字不是0.校外電話又分為本市電話和外處電話兩類。撥校外電話需要先撥0,假如本市電話則接著撥8位數(shù)字(第一位不是0),假如外處電話則撥3位區(qū)碼后再撥8位電話號碼(第一位不是0)。答:電話號碼校內(nèi)電話號碼校外電話號碼校內(nèi)電話號碼非零數(shù)字位數(shù)字校外電話號碼本市號碼外處號碼本市號碼數(shù)字零位數(shù)字
20、外處號碼數(shù)字零位數(shù)字位數(shù)字非零數(shù)字?jǐn)?shù)字零位數(shù)字?jǐn)?shù)字位數(shù)字非零數(shù)字位數(shù)字位數(shù)字?jǐn)?shù)字?jǐn)?shù)字此中,意思是或,從校內(nèi)電話號碼或校外電話號碼中選擇一個;表示重復(fù),兩邊的數(shù)字表示重復(fù)次數(shù)的下限和上限;=意思是定義為;+意思是和,連結(jié)兩個重量。第三章(1).為何要進(jìn)行需求分析?平常對軟件系統(tǒng)有哪些要求?答:1)為了開發(fā)出真切滿足用戶需求的軟件產(chǎn)品,第一一定知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲取成功的前提條件,無論我們把設(shè)計和編碼工作做得如何優(yōu)秀,不可以真切滿足用戶需求的程序只會令用戶絕望,給開發(fā)者帶來煩憂。確立對系統(tǒng)的綜合要求:1、功能需求;2、性能需求;3、靠譜性和可用性需求;4、犯錯辦理需
21、求;5、接口需求;6、拘束;7、逆向需求;8、未來能夠提出的要求,分析系統(tǒng)的數(shù)據(jù)要求。2)如何與用戶有效地交流以獲取用戶的真切需求?答案:與用戶交流獲取需求的方法:訪談;面向數(shù)據(jù)流自頂向下求精;簡單的應(yīng)用規(guī)格說明技術(shù);迅速成立軟件原型銀行計算機(jī)儲存系統(tǒng)的工作過程大概以下:儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng),假如是存款則系統(tǒng)記錄存款人姓名、地點、身份證號碼等存款信息,并打印出存款存單給儲戶;如果是取款且存款時留有密碼,則系統(tǒng)第一核對儲戶密碼,若密碼正確或存款時未留密碼,則系統(tǒng)計算利息并打印出利息清單給儲戶。答案:用ER圖描述系統(tǒng)中的數(shù)據(jù)對象。(5)分所析習(xí)題2中第4題的患者牢獄系統(tǒng)。試用實
22、體-聯(lián)系圖描述本系統(tǒng)中的數(shù)據(jù)對象并用數(shù)據(jù)流程描述本系統(tǒng)的功能。(6)復(fù)印機(jī)的工作過程大概以下:未接到復(fù)印命令時處于閑置狀態(tài),一旦接到復(fù)印命令則進(jìn)入復(fù)印狀態(tài),達(dá)成一個復(fù)印命令規(guī)定的工作后又回到閑置狀態(tài),等候下一個復(fù)印命令;假如履行復(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)變換圖描述復(fù)印機(jī)的行為。答案:從問題陳說可知,復(fù)印機(jī)的狀態(tài)主要有“閑置”、“復(fù)印”、“缺紙”和“卡紙”。惹起狀態(tài)變換的事件主假如“復(fù)印命令”、“達(dá)成復(fù)印命令”、“發(fā)現(xiàn)缺紙”
23、、“裝滿紙”、“發(fā)生卡紙故障”和“除去了卡紙故障”。除去了卡紙故障缺紙do/警示復(fù)印命令復(fù)印閑置達(dá)成復(fù)印命do/復(fù)印卡紙裝滿紙do/警示1,舉例說明形式化說明技術(shù)和欠形式化方法的優(yōu)弊端。答:長處弊端形式化說明1,簡短正確的描述大多形式化的規(guī)格說明主要物理現(xiàn)象,對象獲動作關(guān)注系統(tǒng)的功能和數(shù)據(jù),而時序的結(jié)果的問題,控制和行為等方面的需2,能夠在不一樣軟件求卻更難于表示工程活動之間光滑的過度。3,它供給了高層確認(rèn)的手段非形式化說難度低可能存在矛盾,二義性,含明糊性,不完好性級抽象層次紛亂等問題以一個簡單的俄羅斯方塊游戲系統(tǒng)規(guī)格說明為例,用自然語言描述以下:游戲的每個狀態(tài)對應(yīng)一個游戲界面,開始狀態(tài)下,
24、但變量cd_start=1是進(jìn)入正常游戲的狀態(tài),cd_start=2進(jìn)入讀取游戲狀態(tài),cd_start=3是進(jìn)入得分榜界面查察。在得分榜界面按任意鍵返回開始界面,在讀取游戲面,當(dāng)游戲數(shù)據(jù)讀取達(dá)成后進(jìn)入正常游戲狀態(tài),正常游戲狀態(tài)下,同時按下左鍵和右鍵進(jìn)入儲存游戲界面,據(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,
25、按鍵DOWN,按鍵LEFT,按鍵RIGHT,存放器變量cd_start,存放器變量game_res變換函數(shù)T:如圖4.1所示初始態(tài)S:開始終態(tài)集F:游戲結(jié)束得分榜可見用形式化語言描述,更為簡短,準(zhǔn)Cd確,start=無歧義。讀取游戲EEPROM讀2,在什么狀況下應(yīng)當(dāng)使用形式化說明技術(shù)?使用形式化說明技術(shù)應(yīng)恪守哪些規(guī)則?按任意鍵Cd_star答:游戲進(jìn)行中在用非形式化的方式描述時,存在矛盾,二義性,含糊性,不完好性級抽象層次紛亂等問題時用形開始Cd_start=式化說明技術(shù)。LEFT&RIGHT應(yīng)用形式化方法的準(zhǔn)則:A,應(yīng)當(dāng)采納適合的表示方法Game;_res=EEPROM寫B(tài),應(yīng)當(dāng)形式化,但不
26、要過分形式化;游戲結(jié)束C,應(yīng)當(dāng)估量成本;儲存中D,應(yīng)當(dāng)有形式化的方法顧問隨時供給咨詢;圖4.1游戲狀態(tài)變換E,不該當(dāng)放棄傳統(tǒng)的開發(fā)方式;F,應(yīng)當(dāng)成立詳細(xì)的文檔;G,不該當(dāng)放棄質(zhì)量標(biāo)準(zhǔn);H,不該當(dāng)盲目依靠形式化方法;,應(yīng)當(dāng)測試,測試再測試;J,應(yīng)當(dāng)重用。3,一個浮點二進(jìn)制數(shù)的構(gòu)成是:一個可選的符號(+或-),后跟一個或多個二進(jìn)制位,再跟上一個字符E,再加上另一個可選符號(+或-)及一個或多個二進(jìn)制位。比方,以下的字符串都是浮點二進(jìn)制數(shù):110101E-101-100111E11101+1E0更形式化地,浮點二進(jìn)制數(shù)定義以下:floatingpointbinary=signbitstringEsi
27、gnbitstringsign=+-bitstring=bitbitstringbit=01此中,符號=表示定義為;符號.表示可選項;符號ab表示a或b。假定有這樣一個有窮狀態(tài)機(jī):以一串字符為輸入,判斷字符串中能否含有合法的浮點二進(jìn)制數(shù)。試對這個有窮狀態(tài)機(jī)進(jìn)行規(guī)格說明。4,考慮下述的自動化圖書室流通系統(tǒng):每本書都有一個條形碼,每一個人都有一個帶條形碼的卡片。但一個借閱人想借一本書時,圖書管理員掃描書上的條形碼和借閱人卡片的條形碼,而后在計算機(jī)終端上輸入C;當(dāng)送還一本書時,圖書管理員將再次掃描,并輸入R。圖書管理員能夠把一些書加到(+)圖書會合中,也能夠刪除()它們。借閱人能夠再終端上查找到某個
28、作者所有的書(輸入“A=”和作者名字),或擁有指定標(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:書上條形碼,借閱卡條形碼,終端輸入各樣命令變換函數(shù)T:如圖4.4.1所示初始態(tài)S:書在圖書室S1,書被借出S2終態(tài)集F:書被借出S2,書被預(yù)約S3掃描兩個條形
29、在終端輸入(二)圖書室終端管理員模式的有窮狀態(tài)機(jī)描述書在圖書室書被借出書被預(yù)約狀態(tài)機(jī)J:管理員設(shè)置狀態(tài),書入庫,書出庫(刪除),預(yù)約掃描兩個條形書送還,掃描兩輸入集K:終端輸入管理員命令,書的各樣狀態(tài)(S1,S2,S3變換函數(shù)T:如圖所示圖初始態(tài)S:管理員設(shè)置狀態(tài)終態(tài)集F:書入庫,書出庫(刪除),預(yù)約,(二)圖書室終端用戶模式的有窮狀態(tài)機(jī)描述預(yù)約書狀態(tài)為S2&終端狀態(tài)機(jī)J:讀者查問狀態(tài),查問結(jié)果管理員設(shè)置狀S1,S2,S3)輸入集K:終端輸入用戶查問命令,書的各樣狀態(tài)(管理員刪除變換函數(shù)T:如圖4.4.3所示管理員增加初始態(tài)S:讀者查問狀態(tài)終端輸入終態(tài)集F:查問結(jié)果書出庫(刪除)書入各樣查問查
30、問結(jié)讀者查問狀H、C及R。5,試用Petri網(wǎng)說明第四題所述圖書室中一本書的循環(huán)過程,在規(guī)格說明中應(yīng)當(dāng)包含操作圖答:此中態(tài)P1表示書在圖書室P2命表令示書在讀者手上,P3書被預(yù)約圖P26,試用Z語言對第四題所描述圖書室圖書流通系統(tǒng)做一個完好的規(guī)格說明。P1.答:(這題真的不會!)BOOK_STATEBook_in,Book_out,Book_reserveP3Book_inBook_outBook_reserve=Book_inBook_outBook_reserve=BOOK_STATE第五章5.1為每各樣類的模塊耦合舉一個詳細(xì)的例子。答:耦合是對一個軟件結(jié)構(gòu)內(nèi)不一樣模塊之間互聯(lián)程度的胸懷。
31、耦合強(qiáng)弱取決于接口的復(fù)雜度,進(jìn)入或接見某一模塊的點,以及經(jīng)過接口的數(shù)據(jù)。一般模塊之間的可能的連結(jié)方式有七種,構(gòu)成耦合的七各樣類,它們的關(guān)系為:低耦合性高非直數(shù)據(jù)特色控制外面公共內(nèi)接耦合耦合耦合耦合耦合耦合容耦合強(qiáng)獨立性弱下邊舉例說明以上耦合:A非直接耦合:兩個模塊沒有直接的關(guān)系(模塊1和模塊2),獨立性最強(qiáng)B.數(shù)據(jù)耦合:即一個模塊接見另一個模塊的時候,相互之間是經(jīng)過數(shù)據(jù)參數(shù)來互換輸入、輸出信息的,這種耦合為數(shù)據(jù)耦合。這種耦合較為松懈,模塊間獨立性較模強(qiáng)。塊模塊模塊模塊計算水電用戶狀況用戶狀況水費電費C.特色耦合:即一組模塊經(jīng)過參數(shù)傳達(dá)記錄信息,用戶狀況是個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此有關(guān),“計算水
32、費”和“計算電費”本沒有關(guān)系,因為引用了此開發(fā)票數(shù)據(jù)結(jié)構(gòu)產(chǎn)生了依靠關(guān)系單金交房費D.控制耦合:即假如一個模塊經(jīng)過傳遞開關(guān)、標(biāo)記、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合模塊E.外面耦合:一組模塊都接見同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),并且不是經(jīng)過參數(shù)表傳達(dá)該全局變量的信息,則稱之為外面耦合。FlagBFFFF.公共耦合:若一組模塊都接見同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。A模塊B模塊使用使用打印機(jī)G.內(nèi)容耦合:假如出現(xiàn)以下狀況之一,兩個模塊就發(fā)生了內(nèi)容耦合A模塊B模塊一個模塊接見另一個模塊的內(nèi)部數(shù)據(jù)。C模塊一個模塊不經(jīng)過正常進(jìn)口子轉(zhuǎn)到另一個模塊的內(nèi)部兩個
33、模塊有一部分程序代碼重疊(只可能發(fā)生在匯編程序中)一個模塊有多個進(jìn)口(全這意局味數(shù)著一個模塊有幾種功能)SubAA(.)GotoLEndsubSubBB(.)Endsub5.2為每各樣類的模塊內(nèi)聚舉一個例子答:內(nèi)聚標(biāo)記著一個模塊內(nèi)各個元素之間相互聯(lián)合的密切程度,它是信息隱蔽和局部化看法的自然擴(kuò)展。低內(nèi)聚:A有時內(nèi)聚:假如一個模塊達(dá)成一組任務(wù),這些任務(wù)相互間即使有關(guān)系,關(guān)系也是很松懈的。這就叫做有時內(nèi)聚有時內(nèi)聚的例子:在模塊T中有A,B,C三條語句,最少從表面上看來這三條語句沒什么聯(lián)系,不過因為D,E,F,G中都有這三條語句,為了節(jié)儉空間才把這三條語句作為一個模板放在一同。B邏輯內(nèi)聚:假如一個模
34、塊達(dá)成的任務(wù)在邏輯上屬于同樣或相像的一類(比方一個模塊產(chǎn)生各各樣類的所有輸出),稱為邏輯內(nèi)聚邏輯內(nèi)聚的例子:某一個模塊將打印,年,月,日,詳細(xì)打印什么,將由傳入的控制標(biāo)記所決定。C時間內(nèi)聚:一個模塊包含的任務(wù)一定在同一段時間內(nèi)履行(比方,模塊達(dá)成各樣初始化工作),稱為時間內(nèi)聚時間內(nèi)聚的例子:將多個變量的初始化放在同一個模塊中實現(xiàn)。中內(nèi)聚:A過程內(nèi)聚:假如一個模塊內(nèi)的辦理元素是有關(guān)的,并且一定以特定序次履行,稱為過程內(nèi)聚過程內(nèi)聚的例子:一個子程序,將開始讀取學(xué)生的學(xué)號,而后是姓名,最后將讀取分?jǐn)?shù),是因為特定的序次而將這些操作組合在一同的B通信內(nèi)聚:假如模塊中所有的元素都使用同一個輸入數(shù)據(jù)和(或)
35、產(chǎn)生同一個輸出數(shù)據(jù),則稱為通信內(nèi)聚通信內(nèi)聚的例子:有一個子程序,它將打印實驗報告,并且在達(dá)成后從頭初始化傳進(jìn)來的實驗數(shù)據(jù)。這個程序擁有通信內(nèi)聚性。因為這兩個操作因為使用同一個數(shù)據(jù)源聯(lián)系在了一同。高內(nèi)聚:A序次內(nèi)聚:假如一個模塊內(nèi)的辦理元素和同一個功能親近有關(guān),并且這些辦理一定序次履行(平常一個辦理元素的輸出數(shù)據(jù)作為下一個辦理元素的輸入數(shù)據(jù)),則稱為序次內(nèi)聚。序次內(nèi)聚的例子:有一個子程序,經(jīng)過給出的誕辰,先計算出年紀(jì)。再依據(jù)年紀(jì)算出退休的時間,則這個程序擁有序次內(nèi)聚性。B功能內(nèi)聚:假如模塊內(nèi)所有的元素屬于一個整體達(dá)成一個單調(diào)的功能,則成為功能內(nèi)聚。功能內(nèi)聚的例子:一個程序中所有的操作都是為了算出
36、一個人的年紀(jì)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é)議。依據(jù)協(xié)議,所有年薪資超出$26000(含$26000)的教師薪資將保持不變,年薪資少于$26000的教師將增加薪資,所增加薪資數(shù)額按下述方法計算:給每位教師所奉養(yǎng)的人(包括教師自己)每年補貼$100,其余,教師有一年工齡每年再多補貼¥50,可是,增加后的年薪資總數(shù)不可以多于$26000。教師薪資檔案儲存內(nèi)行政辦公室的磁帶上,檔案中有目前的年薪資、奉養(yǎng)的人數(shù)、聘用日期等信息。需要寫一個程序計算并印出每名教師的原薪資和調(diào)整后的新薪資。要求:(1)
37、畫出此系統(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)需求說明:功能需求:能夠輸入調(diào)資的標(biāo)準(zhǔn),輸入教師檔案,經(jīng)調(diào)資給出新的教師檔案,需要儲存檔案2性能需求:軟件
38、的響應(yīng)時間應(yīng)小于0.5s,更新辦理要快3靈巧需求:當(dāng)需求發(fā)生某些變化時,該軟件應(yīng)當(dāng)能夠適應(yīng)這些變化4故障辦理要求:出現(xiàn)錯誤時,應(yīng)賞賜警示或提示(3)(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é)果并且畫出高層控制流程圖。撲克牌游戲規(guī)則以下:(1)有兩個人玩分
39、別為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ù)高者勝;
40、若點數(shù)也同樣,則為平局。程序:#includestdio.hintrabl(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(lT10)t=T00;elset=T10;if(tT20)t=T20;returnt;intE1(intT1010)if(T01=T11&T11=T21)return1;elsereturn0;intE2(intT1010)intq=0;if(max(T1010)-1)=T00|(max(T1010)-1)=T10|(max(T1010)-1)=T20)&(ma
41、x(T1010)-2)=T00|(max(T1010)-2)=T10|(max(T1010)-2)=T20)/if(q=max(T10)return1;elsereturn0;intE3(intT1010)if(T00=T10=T20)return1;elsereturn0;intE4(intT1010)if(T00=T10&T00!=T20)return1;elseif(T00=T20&T00!=T10)return1;elseif(T10=T20&T10!=T00)return1;elsereturn0;voidmain()inttimes=0,e1=0,e2=0,e3=0,e4=0,e5
42、=0;intA1010,B1010;intr1=2,r2=3;printf(請輸入游戲的次數(shù)n);scanf(%d,×);for(intj=0;jtimes;j+)for(inti=0;iE1(B10)e1+;printf(A贏,同花順n);elseif(E1(A10)max(B10)printf(A贏,同花順n);elseprintf(B贏,同花順n);elseif(E2(A10)E2(B10)e2+;printf(A贏,順子n);elseif(E2(A10)max(B10)printf(A贏,順子n);elseprintf(B贏,順子n);elseif(E3(A10)E3(B10
43、)e3+;printf(A贏,同點n);elseif(E3(A10)max(B10)printf(A贏,同點n);elseprintf(B贏,同點n);elseif(E4(A10)E4(B10)e4+;printf(A贏,對子n);elseif(E4(A10)E4(B10)e4+;printf(B贏,對子n);elseif(E4(A10)=E4(B10)&E4(B10)=1);e4+;if(max(A10)max(B10)printf(A贏,對子n);elseprintf(B贏,對子n);elseif(max(A10)max(B10)printf(A贏,雜牌n);elseprintf(B贏,雜
44、牌n);printf(同花順贏牌概率為%d,順子贏牌概率為%d,同點贏牌概率為%d,對子贏牌概率為%d,雜牌贏牌概率為%d,e1/times,e2/times,e3/times,e4/times,e5/times);控制流程圖:。第六章1、假定只有SEQUENCE和DO_WHILE兩種控制結(jié)構(gòu),怎么利用它們達(dá)成IF_THEN_ELSE操作?解:轉(zhuǎn)變以下:K=1DOWHILE(條件程序塊1K=K+1ENDDODOWHILE((.NOT.條件程序塊2K=K+1ENDDO2、假定只有SEQUENCE和IF_THEN_ELSE兩種控制結(jié)構(gòu),怎么利用它們達(dá)成DO_WHILE操作?解:轉(zhuǎn)變以下;label
45、:IF(條件)THEN程序塊GOTOlabelELSE程序塊ENDIF3、畫出以下偽代碼程序的流程圖和盒圖:STARTIFpTHENWHILEqDOfENDDOELSEBLOCKgnENDBLOCKENDIFSTOP解:流程圖:盒圖:4、圖6.18給出的程序流程圖代表一個非結(jié)構(gòu)化的程序,問:(1)為何說它是非結(jié)構(gòu)化的?(2)設(shè)計一個等價的結(jié)構(gòu)化程序。(3)在(2)題的設(shè)計中使用附帶的表記變量flag了嗎?若沒用,在設(shè)計一個使用flag的程序;若用了,在設(shè)計一個不用flag的程序。解:(1)平常所說的結(jié)構(gòu)化程序,是依據(jù)狹義的結(jié)構(gòu)程序的定義衡量,符合定義規(guī)定的程序,每個代碼塊只有一個進(jìn)口和一個出口
46、。圖示的程序的循環(huán)控制結(jié)構(gòu)有兩個出口,明顯不符合狹義的結(jié)構(gòu)程序的定義,所以是非結(jié)構(gòu)化的程序。(2)使用附帶的標(biāo)記變量flag,最罕有兩種方法能夠把該程序改造為等價的結(jié)構(gòu)化程序,圖示盒圖描述了等價的結(jié)構(gòu)化程序。(3)不使用flag把該程序改造為等價的結(jié)構(gòu)化程序的方法以以下圖。5、研究下邊的偽碼程序:LOOP:SetIto(START+FINISH)/2IFTABLE(I)=ITMEgotoFOUNDIFTABLE(I)TMESetFINSHto(I-1)IF(FINSH-START)1gotoLOOPIFTABLE(START)=ITEMgotoFOUNDIFTABLE(FINSH)=ITEMg
47、otoFOUNDSetFLAGto0GotoDONEFOUND:SetFLAGto1DONE:EXIT要求:(1)畫出流程圖。(2)程序是結(jié)構(gòu)化的嗎?說明原由。(3)若此程序是非結(jié)構(gòu)化,設(shè)計一個等價的結(jié)構(gòu)化程序并畫出流程圖。(4)此程序的功能是什么?它達(dá)成預(yù)約功能有什么隱含的前提條件嗎?解:(1)該程序流程圖以下:(2)該程序不是結(jié)構(gòu)化的,結(jié)構(gòu)化的程序只有一個進(jìn)口和一個出口,而該程序的流程途中有兩個出口。(3)等價的結(jié)構(gòu)化程序的流程圖以下:(4)此程序有二分查找的功能,它達(dá)成預(yù)約功能的隱含前提條件是現(xiàn)有序列為從小到大序次排好的有序序列。6用Ashcroft_Manna技術(shù)能夠?qū)⒎墙Y(jié)構(gòu)化的程序轉(zhuǎn)
48、變?yōu)榻Y(jié)構(gòu)化程序,圖6.19是一個變換的例子??煞駨倪@個例子總結(jié)出Ashcroft_Manna技術(shù)的一些基本方法?進(jìn)一步簡化6.19(b)給出的結(jié)構(gòu)化設(shè)計。開始FTAcBFTFTdcCDE停止開始I=1DOCASE=1FTFTFTcdeABCDDI=I=I=I=I=FI=4T停止解:(1)從這個例子中看出,Ashcroft_Manna技術(shù)的基本方法是,當(dāng)待改造的序含有嵌套的非結(jié)構(gòu)化的IF語句時,改造后的程序中增加DO-CASE語句和DO-UNTIL語句,并增加一個協(xié)助變量I,I的初始值為。最外層的IF語句在I=時履行,履行完這個IF語句后把I賦值為隨后應(yīng)當(dāng)履行的內(nèi)層IF語句所對應(yīng)的CASE標(biāo)號值
49、。DO-CASE語句的最大分支數(shù)(可履行的最大標(biāo)號值)等于IF語句的個數(shù)。當(dāng)履行完最內(nèi)層的IF語句以后,把I賦值為可履行的最大標(biāo)號值加,而DO-UNTIL循環(huán)的結(jié)束條件就是I等于這個值。EI=(2)進(jìn)一步簡化后的結(jié)構(gòu)化程序的流程圖以下所示。7、某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費計算方法以下:總手續(xù)費等于基本手續(xù)費加上與交易中的每股價錢和股數(shù)有關(guān)的附帶手續(xù)費。假如交易金額少于1000元,則基本手續(xù)費為交易金額的8.4%;假如交易總金額在1000元10000元之間,則基本手續(xù)費為交易金額的5%,再加34元;假如金額超出10000元,則基本手續(xù)費為交易金額的4%加上134元。當(dāng)每股售價低于14元時,附帶手
50、續(xù)費為基本手續(xù)費的5%,除非買進(jìn)、賣出的股數(shù)不是100的倍數(shù),在這種狀況下附帶手續(xù)費的9%。當(dāng)每股售價在14元到25元之間時,附帶手續(xù)費為基本手續(xù)費的2%,除非交易的股數(shù)不是100的倍數(shù),在這種狀況下附帶手續(xù)費的6%。當(dāng)每股售價超出25元時,假如交易的股數(shù)(即不是100的倍數(shù)),則附帶手續(xù)費為基本手續(xù)費的4%,不然附帶手續(xù)費為基本手續(xù)費的1%。要求:(1)用判斷表表示手續(xù)費的計算方法。(2)用判斷數(shù)表示手續(xù)費的計算方法。解:令P代表交易的總金額,Q代表每股的售價,n代表交易的股數(shù)。(1)表示手續(xù)費計算方法的判斷表以以下圖(2)表示手續(xù)費計算方法的判斷樹8、畫出以下偽碼程序的流圖,計算它的環(huán)形復(fù)
51、雜度。你感覺這個程序的邏輯有什么問題嗎?EXAMPLELOOP:DOWHILEX0A=B+1IFA10THENX=AELSEY=ZENDIFIFY0THENPRINTGELSEPRINTKENDIFSTOP解:流程圖:環(huán)形復(fù)雜度:V(G)結(jié)點E弧數(shù)n1=17-11+1=7=判斷結(jié)點1=617關(guān)閉的區(qū)域數(shù)邏輯有問題,當(dāng)Z0時,簡單形成死循環(huán);條件Y10THENX=20ELSEX=2ENDIFIFC15THENX=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
52、=6,B=11,C=16。語句覆蓋測試用例語序句覆蓋的含義是,判選擇足定夠多的測試數(shù)據(jù),使被輸測試入程序中的每個語預(yù)句至期的輸少履行一次。號123ABCXYZ序號判斷輸入預(yù)期1FFF311A1123X12BC第五題5、某圖書室有一個使用CRT終端的信息檢索系統(tǒng),該系統(tǒng)有以下4個基本檢索命令要求:設(shè)計測試數(shù)據(jù)以全面測試系統(tǒng)的正常操作;設(shè)計測試數(shù)據(jù)以測試系統(tǒng)的非正常操作解:測試系統(tǒng)正常操作的測試數(shù)據(jù)序次履行以下3個命令:b(KEYWORD)s(L)d(N)此中,KEYWORD是正確的重點字;L是履行命令b后在屏幕上顯示的約20個行號中的一個(最少應(yīng)當(dāng)使L分別為第一個、最后一個和中央一個行號);N是
53、履行命令s后列出的索引號中的一個(最少應(yīng)當(dāng)使N分別為第一個、最后一個和中央一個索引號)。針對若干個不一樣的KEYWORD重復(fù)履行上述命令序列。序次履行以下2個命令:f(NAME)d(N)此中,NAME是已知的作者姓名;N是履行命令f后列出的索引號中的一個(最少應(yīng)當(dāng)使N分別為第一個、最后一個和中央一個索引號)。針對若干個不一樣的NAME重復(fù)履行上述命令序列。測試系統(tǒng)非正常操作的測試數(shù)據(jù)用過長的重點字作為命令b的參數(shù):比方,b(reliabilitysoftwareandhardwarecombined)預(yù)期的輸出:系統(tǒng)截短過長的重點字,比方,上列命令中的重點字可能性被截短為reliability
54、software用不正確的重點字作為命令b的參數(shù):比方,b(AARDVARK)預(yù)期的輸出:顯示出最湊近的般配結(jié)果,比方,履行上列命令后可能顯示1AARON,JULES(book)用比履行命令b后列出的最大行號大1的數(shù)作為命令s的參數(shù)預(yù)期的輸出:“命令s的參數(shù)不內(nèi)行號列表中”用數(shù)字和標(biāo)點符號作為命令b和命令f的參數(shù)預(yù)期的輸出:“參數(shù)種類錯”用字母字符作為命令s和命令d的參數(shù)預(yù)期的輸出:“參數(shù)種類錯”用0和負(fù)數(shù)作為命令s和命令d的參數(shù)預(yù)期的輸出:“參數(shù)數(shù)值錯”命令序次錯:比方,沒履行命令b就履行命令s,或沒履行命令s就履行命令d預(yù)期的輸出:“命令序次錯”命令語法錯:比方,遺漏命令名b、s、d或f;
55、或命令參數(shù)沒用圓括號括起來預(yù)期的輸出:“命令語法錯”命令參數(shù)空:比方,b()、s()、d或f()預(yù)期的輸出:系統(tǒng)供給默認(rèn)參數(shù)或給出犯錯信息使用拼錯了的作者姓名作為f的參數(shù)預(yù)期的輸出:“找不到這們作者的著作”第六題6、航空企業(yè)A向軟件企業(yè)B訂購了一個規(guī)劃翱翔路線的程序。假定你是軟件企業(yè)C的軟件工程師,A企業(yè)已聘用你所在的企業(yè)對上述程序進(jìn)行查收測試。任務(wù)是,依據(jù)下述事實設(shè)計查收測試的輸入數(shù)據(jù),解說你采納這些數(shù)據(jù)的原由。領(lǐng)航員向程序輸入出發(fā)點和目的地,以及依據(jù)天氣和飛機(jī)型號而初步確立的翱翔高度。程序讀入途中的風(fēng)向風(fēng)力等數(shù)據(jù),并且制定出3套翱翔計劃(高度,速度,方向及途中的5個地點校核點)。所制定的翱
56、翔計劃應(yīng)做到燃料耗費和翱翔時間都最少。用正常的輸入數(shù)據(jù)作為測試數(shù)據(jù)向程序輸入常例的出發(fā)點,目的地,飛機(jī)型號,5個地點校核點,高度和速度。輸入35組出發(fā)點和目的地,重復(fù)履行步驟1輸入固定的出發(fā)點、目的地、飛機(jī)型號、5個地點校核點和高度,分別輸入35個不一樣的速度,重復(fù)履行步驟1輸入固定的出發(fā)點、目的地、飛機(jī)型號、5個地點校核點和速度,分別輸入35個不一樣的高度,重復(fù)履行步驟1輸入固定的出發(fā)點、目的地、飛機(jī)型號、速度和高度,分別輸入35組不一樣的地點校核點,重復(fù)履行步驟1輸入固定的出發(fā)點、目的地、5個地點校核點和高度,分別輸入35個不一樣的飛機(jī)型號,重復(fù)履行步驟1輸入固定的目的地、機(jī)型號,重復(fù)履行
57、步驟15個地點校核點和高度,分別輸入35個不一樣的飛輸入固定的出發(fā)點、的地,重復(fù)履行步驟15個地點校核點和高度,分別輸入35個不一樣的目(2)用特別的數(shù)據(jù)值作為測試數(shù)據(jù)分別輸入特別高和特別低的數(shù)據(jù)組合測試用負(fù)數(shù)測試輸入數(shù)字0進(jìn)行測試分別輸入相距特別遠(yuǎn)和特別近的出發(fā)點和目的地測試ay和size,size小于數(shù)組的大小,并給出需要查找的值,該值在somearray中;預(yù)期的輸出:返回-1;第一給出某個數(shù)組somearray和size,size大于數(shù)組的大小,并給出需要查找的值,該值不在somearray中;預(yù)期的輸出:返回-1;第一給出某個數(shù)組somearray和size,size大于數(shù)組的大小,
58、并給出需要查找的值,該值在somearray中;預(yù)期的輸出:返回-1;第七題7、嚴(yán)格說來,有兩種不一樣的路徑覆蓋測試,分別為程序路徑覆蓋和程序圖路徑覆蓋。這兩種測試可分別稱為程序的自然履行和強(qiáng),迫履行。所謂自然執(zhí)行是指測試者(人或計算機(jī))讀入程序中的條件表達(dá)式,依據(jù)程序變量的目前值計算該條件表達(dá)式的值(真或假),并相應(yīng)地分支。逼迫履行是在用程序圖作為程序的抽象模型時產(chǎn)生的一個人為的看法,它能夠簡化測試問題。逼迫履行的含義是,一旦碰到條件表達(dá)式,測試者就逼迫程序分兩種狀況(條件表達(dá)式的值為真和為假)履行。明顯,逼迫履行將遍歷程序圖的所有路徑,可是因為各個條件表達(dá)式之間存在互相依靠的關(guān)系,這些路徑
59、中的某一些在自然履行時可能永久也不會進(jìn)入。為了使逼迫履行的看法在實質(zhì)工作中實用,它簡化測試工具的利處應(yīng)當(dāng)超過它使用額外的不行能達(dá)到的測試用例所帶來的弊端。在絕大部分狀況下,逼迫履行的測試數(shù)其實不比自然履行的測試數(shù)大很多,其余,對逼迫履行的定義實質(zhì)上包含了一種技術(shù),能夠縮短在測試含有循環(huán)的程序時所需要的運轉(zhuǎn)時間。程序的大部分履行時間平常用于重復(fù)履行程序中的DO循環(huán),特別是嵌套的循環(huán)。所以一定發(fā)明一種技術(shù),使得每個DO循環(huán)只履行一遍。這樣做其實不會降低測試的功能,因為經(jīng)驗表示第一次或最后一次履行循環(huán)時最簡單犯錯。Laemmel教授提出的自動測試每條路徑的技術(shù)以下:當(dāng)編寫程序時每個DO循環(huán)應(yīng)當(dāng)寫成一
60、種包含測試變量T和模式變量M的特別形式,所以DOI=1TO38應(yīng)變?yōu)镈OI=1TOM*38+(1-M)*T可見,當(dāng)M=0時處于測試模式,而M=1時處于正常運轉(zhuǎn)模式。當(dāng)處于測試模式時,令T=0則該循環(huán)一次也不履行,令T=1則該循環(huán)只履行一次。近似地應(yīng)當(dāng)使用模式變量和測試變量改寫IF語句,比方IFX+Y0THENZ=XELSEZ=Y應(yīng)變?yōu)镮FM*(X+Y)+T0THENZ=XELSEZ=Y正常運轉(zhuǎn)季節(jié)M=1和T=0,測試時期令M=0,為測試THEN部分需令T=+1,測試ELSE部分則令T=-1。要求:采納一個包含循環(huán)和IF語句的程序,用Laemmel技術(shù)更正這個程序,上機(jī)實質(zhì)測試這個程序并解說所獲
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆北京市第一五九中學(xué)高二物理第一學(xué)期期末監(jiān)測試題含解析
- 河北省豐潤車軸山中學(xué)2025屆物理高一上期末檢測模擬試題含解析
- 2025屆江蘇省宿遷市重點中學(xué)物理高一上期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 湖北省安陸市第一中學(xué)2025屆高三物理第一學(xué)期期中教學(xué)質(zhì)量檢測模擬試題含解析
- 2025屆江蘇常熟市張橋中學(xué)高二物理第一學(xué)期期中學(xué)業(yè)水平測試試題含解析
- 遼寧省大連市普蘭店區(qū)第二中學(xué)2025屆物理高一上期中質(zhì)量檢測模擬試題含解析
- 2025屆遼寧省大連渤海高級中學(xué)高一物理第一學(xué)期期中學(xué)業(yè)水平測試試題含解析
- 廣西北海市2025屆物理高二上期中達(dá)標(biāo)測試試題含解析
- 2025屆福建省泉州市安溪八中高三上物理期中檢測模擬試題含解析
- 2025屆廣東省肇慶學(xué)院附屬中學(xué)物理高二第一學(xué)期期中復(fù)習(xí)檢測模擬試題含解析
- 2024-年體育賽事承辦合同協(xié)議書共五則
- 走進(jìn)生活中的化學(xué)智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱學(xué)院
- 走近核科學(xué)技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年蘭州大學(xué)
- 《1+X幼兒照護(hù)(中級)》課件-6.3.3呼吸系統(tǒng)疾病的識別與照護(hù)
- 大學(xué)生成長賽道職業(yè)規(guī)劃
- 基于STM32的智能避障循跡小車系統(tǒng)設(shè)計答辯模板
- (骨筋膜室綜合征)骨科小講課
- 課程規(guī)劃和課程方案
- 財務(wù)管理的數(shù)字化轉(zhuǎn)型
- 當(dāng)前臺海局勢分析課件
- 基于云計算的醫(yī)療物聯(lián)網(wǎng)系統(tǒng)的設(shè)計與應(yīng)用
評論
0/150
提交評論