軟件工程第一二三章習題參考答案_第1頁
軟件工程第一二三章習題參考答案_第2頁
軟件工程第一二三章習題參考答案_第3頁
軟件工程第一二三章習題參考答案_第4頁
軟件工程第一二三章習題參考答案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章 軟件工程概述軟件是計算機程序及其有關的數(shù)據(jù)和文檔的結合。軟件危機是指在計算機軟件開發(fā)和維護時所遇到的一系列問題。軟件危機主要包含兩方面的問題:一是如何開發(fā)軟件以滿足對軟件日益增長的需求;二是如何維護數(shù)量不斷增長的已有軟件。軟件工程是軟件開發(fā)、運行、維護和引退的系統(tǒng)方法。軟件工程是指導計算機軟件開發(fā)和維護的工程學科。軟件工程采用工程的概念、原理、技術和方法來開發(fā)與維護軟件。軟件工程的目標是實現(xiàn)軟件的優(yōu)質(zhì)高產(chǎn)。軟件工程學的主要內(nèi)容是軟件開發(fā)技術和軟件工程管理。軟件開發(fā)方法學是編制軟件的系統(tǒng)方法,它確定軟件開發(fā)的各個階段,規(guī)定每一階段的活動、產(chǎn)品、驗收的步驟和完成準則。常用的軟件開發(fā)方法有結

2、構化方法、面向數(shù)據(jù)結構方法和面向對象方法等。習題參考答案:1什么是軟件危機?為什么會出現(xiàn)軟件危機?答:軟件危機是指在計算機的開發(fā)和維護過程中所遇到的一系列嚴重問題。這些問題決不僅僅是不能正常運行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。出現(xiàn)軟件危機的原因:一方面與軟件本身的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。軟件不同于硬件,它是計算機系統(tǒng)中邏輯件而不是物理部件。管理和控制軟件開發(fā)過程相當困難。軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)人員對軟件開發(fā)和維護還有不少糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術

3、,這是使軟件問題發(fā)展成軟件危機的主要原因??偨Y如下:1) 取得正確的用戶需求和正確地描述需求很困難2) 開發(fā)人員對需求的正確理解也有困難3) 常常在沒有正確理解之前就倉促開始編程4) 軟件項目缺乏有效的組織、管理和內(nèi)部交流5) 缺乏軟件開發(fā)方法、模型和工具的支持6) 軟件維護的困難性2假設你是一家軟件公司的總工程師,當你把圖1.1給手下的軟件工程師們觀看,告訴他們及早發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意你的觀點,認為要求在錯誤進入軟件之前就清除它們是不現(xiàn)實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么,一個人怎么能在設計階段清除它呢?”你怎么反駁他?答:在軟件開發(fā)的不同階段進行修改付出的代

4、價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比較低;在開發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個變動要對所有已完成的配置成分都做相應的修改,不僅工作量大,而且邏輯上也更復雜,因此付出的代價劇增;在軟件已經(jīng)完成時再引入變動,當然付出的代價更高。一個故障是代碼錯誤造成的,有時這種錯誤是不可避免的,但要修改的成本是很小的,因為這不是整體構架的錯誤。3什么是軟件工程?它有哪些本質(zhì)特性?怎樣用軟件工程消除(至少是緩解)軟件危機?答:軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發(fā)和維護軟件,把經(jīng)過時間考驗而證明正確的管理技術和當前能夠得到的最好的

5、技術方法結合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。軟件工程本質(zhì)特性:1)軟件工程關注于大型程序的構造;2)軟件工程的中心課題是控制復雜性;3)軟件經(jīng)常變化;4)開發(fā)軟件的效率非常重要;5)和諧地合作是開發(fā)軟件的關鍵;6)軟件必須有效地支持它的用戶;7)在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。消除軟件危機的途徑:為了消除軟件危機,首先應該對計算機軟件有一個正確的認識。必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。應該推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并且研究探

6、索更好更有效的技術和方法,盡快消除在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤概念和做法。應該開發(fā)和使用更好的軟件工具。為了解決軟件危機,既要有技術措施(方法和工具),又要有必要的組織管理措施。6美國某科幻電影中有一個描寫計算機軟件錯誤的故事,很富于戲劇性。故事情節(jié)如下:由計算機HAL控制的宇宙飛船在飛往木星的旅途中,飛機指揮員鮑曼和HAL之間有一段對話。鮑曼命令道:“HAL,請對備用艙進行故障預報測試。”10秒鐘后HAL報告:“一切正常?!钡?,地面上的飛行指揮中心在重復做了故障預測報告后,卻得出了相反的結論:“鮑曼,我是飛行指揮中心,你的計算機在預報故障時可能犯了錯誤,我們的兩臺HAL計算機都得

7、出了和你的計算機相反的結論?!滨U曼用手指敲著控制臺說:“HAL,是不是有什么東西干擾了你,以致出了這個差錯?”“聽著,鮑曼,我知道你很想幫助我,但是我的信息處理是正常的。不信就查看我的記錄吧,你會看到它是完全正確的?!薄拔铱催^你的服務記錄,但是誰都可能犯錯誤啊。”“我并不固執(zhí)己見,但是,我是不可能犯錯誤的。”“喂,我是飛行指揮中心,我們已經(jīng)徹底分析了你所遇到的麻煩,我們的兩臺計算機得出了完全一致的結論。問題出在故障預報系統(tǒng)中,我們確信是程序設計有錯誤。你必須斷開你的計算機并改為地面控制模式,我們才能改正這個錯誤?!碑旛U曼斷開計算機時,HAL立即又把自己接了上去。最后,鮑曼只好拆下計算機的存儲器

8、,才得以控制他的宇宙飛船。請問:(1)為什么鮑曼拆下存儲器就能擺脫計算機的干擾而獨自控制宇宙飛船?我們現(xiàn)在遇到的軟件問題有這么嚴重嗎?(2)如果不依靠飛行指揮中心,鮑曼怎樣才知道HAL的故障預報有問題?(3)應該怎樣設計計算機系統(tǒng),才能避免出現(xiàn)故事中描述的這類問題?答:(1)計算機通過運行程序來控制宇宙飛船,而程序指令存放在存儲器中。拆下存儲器之后,計算機因取不來指令而無法運行程序,因此也就無法控制宇宙飛船了。我們現(xiàn)在遇到的軟件問題沒有這么嚴重,還沒有出現(xiàn)計算機不服從人的命令的情況。(2)除非鮑曼能親自分析有故障的部件,或者在計算機上還安裝有另外一套故障檢測系統(tǒng),否則不依靠飛行指揮中心他很難知

9、道HAL的故障預報有問題。(3)應該把HAL設計成具有若干個儲存的問題,供周期性測試之用。通過把應有的測試結果和HAL實際測試結果加以比較的方法,有可能發(fā)現(xiàn)HAL的故障預報問題。此外,不論怎樣具體設計HAL系統(tǒng),都應該設置一種人工操作模式,并把人工操作模式設置為最高等級的控制模式,在任何情況下計算機控制都不能取消人工操作命令。10 / 10第二章 軟件過程軟件過程定義了運用方法的順序、應該交付的文檔、開發(fā)軟件的管理措施、各階段任務完成的標志。軟件過程必須科學、合理,才能獲得高質(zhì)量的軟件產(chǎn)品。軟件產(chǎn)品從問題定義開始,經(jīng)過開發(fā)、使用和維護,直到最后被淘汰的整個過程稱為軟件生命周期。根據(jù)軟件生產(chǎn)工程

10、化的需要,生存周期的劃分有所不同,從而形成了不同的軟件生命周期模型(SW life cycle model),或稱軟件開發(fā)模型。軟件開發(fā)模型有以下幾種。· 瀑布模型:規(guī)范的、文檔驅動的方法。開發(fā)階段按順序進行,適用于需求分析較明確、開發(fā)技術較成熟的情況。· 快速原型模型:構建原型系統(tǒng)讓用戶試用并收集用戶意見,獲取用戶真實需求。· 增量模型:優(yōu)點是能在早期向用戶提交部分產(chǎn)品和易于維護,缺點是軟件的體系結構必須是開放的。· 噴泉模型:適用于面向對象方法。· 螺旋模型:適用于大規(guī)模內(nèi)部開發(fā)項目,有利于分析風險和排除風險。 · 統(tǒng)一過程:適用

11、于面向對象方法,使用統(tǒng)一建模語言UML,采取用例驅動和架構優(yōu)先的策略,采用迭代增量的建造方法。進行軟件開發(fā)時可把各種模型的特點結合起來,充分利用優(yōu)點,減少缺點。習題參考答案:1什么是軟件過程?它與軟件工程方法學有何關系?軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。軟件過程定義了運用技術方法的順序、應該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)軟件變化必須采取的管理措施,以及標志完成了相應開發(fā)活動的里程碑。軟件過程是軟件工程方法學的3個重要組成部分之一。2假設要求你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數(shù)開平方,所得到的結果應該精確到小數(shù)點后4位。

12、一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪些軟件生命周期模型?請說明你作出選擇的理由。答:對這個軟件的需求很明確,實現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗證設計方案。此外,一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄,因此也無須使用有助于提高軟件可維護性的增量模型或螺旋模型來開發(fā)該軟件。所以,為了開發(fā)這個簡單的軟件,使用大多數(shù)人所熟悉的瀑布模型就可以了。1)需求明確;2)功能單一,規(guī)模小;3)潛在功能變化少。3假設你要為一家生產(chǎn)和銷售長筒靴的公司開發(fā)一個軟件,使用此軟件來監(jiān)控該公司的存貨,并跟蹤從購買橡膠開始,到生產(chǎn)長筒靴、發(fā)貨給各個連鎖店,直至賣給顧客的全

13、部過程。以保證生產(chǎn)、銷售過程的各個環(huán)節(jié)供需平衡,既不會有停工待料現(xiàn)象,也不會有供不應求現(xiàn)象。你在為這個項目選擇生命周期模型時使用什么準則? 答:快速原型模型。1) 軟件系統(tǒng)的使用人員繁雜,需求確定困難。2) 軟件應用環(huán)節(jié)多,功能變化多,初期需求變化多,在修改原型的過程中明確功能。4列出在開發(fā)上述軟件產(chǎn)品過程中可能遇到的風險。你打算怎樣排除這些風險?答:1)需求不明確,在明確需求的過程中延誤交工期限。排除:利用快速原型法,選好快速開發(fā)工具,對用戶的需求變更做出快速反應,及早確定最后需求。2)需求越提越多,無法按照計劃及時定下需求。排除:幫助用戶對需求進行分析,確定下來近期完成的主要功能。其它附加

14、功能和次要功能可在升級版本中體現(xiàn)。確保項目的順利開展。3)開發(fā)人員不熟悉業(yè)務。排除:在和用戶確定需求的過程中,及時向用戶請教業(yè)務相關的知識,同時也可以請用戶針對與業(yè)務流程或專業(yè)術語進行專門的培訓。5你為靴類連鎖店開發(fā)的存貨監(jiān)控軟件很受用戶歡迎,現(xiàn)在軟件開發(fā)公司決定把它重新寫成一個通用軟件包,以賣給各種生產(chǎn)并通過自己的連鎖店銷售產(chǎn)品的公司。因此,這個新的軟件產(chǎn)品必須是可移植的,并且應該能夠很容易地適應新的運行環(huán)境(硬件或操作系統(tǒng)),以滿足不同用戶的需求。你在為本題中的軟件選擇生命周期模型時,使用的準則與在第3題中使用的準則有哪些不同?答:螺旋模型。什么準則?構件模型。1)通用模型,并滿足不同用戶

15、的需求。利用增量模型,確定出通用的部分,同時針對于不同用戶開發(fā)不同的構件,最后進行組合。2)可移植。適應新的運行環(huán)境。利用增量模型的開放式體系結構,合理組合配置軟件系統(tǒng)構件。補假設你被任命為一家軟件公司的項目負責人,你的工作是管理該公司已被廣泛應用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算采用哪種軟件生命周期模型?為什么?答:對這個項目的一個重要要求是,嚴格按照已對外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時應該著重考慮哪些模型有助于加快產(chǎn)品開發(fā)的進度。使用增量模型開發(fā)軟件時可以并行完成開發(fā)工作,因此能夠加快開發(fā)進度。這個項目是開發(fā)該

16、公司已被廣泛應用的字處理軟件的新版本,從上述事實至少可以得出3點結論:第一,舊版本相當于一個原型,通過收集用戶對舊版本的反映,較容易確定對新版本的需求,沒必要再專門建立一個原型系統(tǒng)來分析用戶的需求;第二,該公司的軟件工程師對字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗,具有采用增量模型開發(fā)新版字處理軟件所需要的技術水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應該把該軟件的體系結構設計成開放式的,以利于今后的改進和擴充。綜上所述,采用增量模型來完成這個項目比較恰當。第三章 結構化分析習題參考答案:1銀行計算機儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務

17、員鍵入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址(或電話號碼)、身份證號碼、存款類型、存款日期、到期日期、利率及密碼(可選)等信息,并印出存款存單給儲戶;,如果是取款而且取款時留有密碼,則系統(tǒng)首先核對儲戶密碼,若密碼正確或存款時未留密碼,則系統(tǒng)計算利息并印出利息清單給儲戶。請用數(shù)據(jù)流圖描述本系統(tǒng)的功能,并用實體-了解圖描述系統(tǒng)中的數(shù)據(jù)對象。答:頂級數(shù)據(jù)流圖:存款存單存款單利息清單取款單儲戶儲戶儲蓄系統(tǒng)第一級數(shù)據(jù)流圖: 利息清單取款單儲戶儲戶1 存款處理2 取款處理存款單存款存單第二級數(shù)據(jù)流圖:2.32.22.11.21.1利息存款信息+利息更新數(shù)據(jù)更新本問題中共有兩類實體,分別是“儲戶”和“儲

18、蓄所”,在它們之間存在“存取款”關系。因為一位儲戶可以在多家儲蓄所存取款,一家儲蓄所擁有多位儲戶,所以“存取款”是多對多(M:N)關系。儲戶的屬性主要有姓名、住址、電話號碼和身份證號碼,儲蓄所的屬性主要是名稱、住址和電話號碼,而數(shù)額、類型、到期日期、利率和密碼等則是了解類型存取款的屬性。存款日期取款日期2為方便旅客,某航空公司擬開發(fā)一個機票預訂系統(tǒng)。旅行社把預訂機票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等)輸入進該系統(tǒng),系統(tǒng)為旅客安排航班,印出取票通知和賬單,旅客在飛機起飛的前一天憑取票通知和賬單交款取票,系統(tǒng)校對無誤即印出機票給旅客。請用ER圖描繪本系統(tǒng)中的數(shù)據(jù)對

19、象并用數(shù)據(jù)流圖描繪本系統(tǒng)的功能。3目前住院病人主要由護士護理,這樣做不僅需要大量護士,而且由于不能隨時觀察危重病人的病情變化,還會延誤搶救時機。某醫(yī)院打算開發(fā)一個以計算機為中心的患者監(jiān)護系統(tǒng),請分層次地畫出描述本系統(tǒng)功能的數(shù)據(jù)流圖。醫(yī)院對患者監(jiān)護系統(tǒng)的基本要求是隨時接收每個病人的生理信號(脈搏、體溫、血壓、心電圖等),定時記錄病人情況以形成患者日志,當某個病人的生理信號超出醫(yī)生規(guī)定的安全范圍時向值班護士發(fā)出警告信號,此外,護士在需要時還可以要求系統(tǒng)輸出某個指定病人的病情報告。答:從問題陳述可知,本系統(tǒng)數(shù)據(jù)源點是“病人”和“護士”,他們分別提供生理信號和要求病情報告的信息。進一步分析問題陳述,從系統(tǒng)應該“定時記錄病人情況以形成患者日志”這項要求可以想到,還應該有一個提供日期和時間信息的“時鐘”作為數(shù)據(jù)源點。從問題陳述容易看出,本系統(tǒng)的數(shù)據(jù)終點是接收警告信息和病情報告的護士。系統(tǒng)對病人生理信號的處理功能主要是“接收信號”、“分析信號”和“產(chǎn)生警告信息”。此外,系統(tǒng)還應該具有“定時取樣生理信號”、“更新日志”和“產(chǎn)生病情報告”的功能。為了分析病人生理信號是否超出了醫(yī)生規(guī)定的安全范圍,應該存儲“患者安全范圍”信息。此外,定時記錄病人生理信號所形成的“患者日志”,顯然也

溫馨提示

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

評論

0/150

提交評論