軟件工程作業(yè)及答案_第1頁
軟件工程作業(yè)及答案_第2頁
軟件工程作業(yè)及答案_第3頁
軟件工程作業(yè)及答案_第4頁
軟件工程作業(yè)及答案_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程作業(yè)及答案1-1 什么是軟件危機?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機?答: 軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。概括地說,軟件危機包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。軟件危機典型表現(xiàn):對軟件開發(fā)成本和進度的估計常常很不準確。用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。軟件常常是不可維護的。軟件通常沒有適當?shù)奈臋n資料。軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。產(chǎn)生軟件危機的原因:一方面與軟件本身

2、的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。管理和控制軟件開發(fā)過程相當困難。軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)人員對軟件開發(fā)和維護還有不省糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術,這是使軟件問題發(fā)展成軟件危機的主要原因。1-2 假設你是一家軟件公司的總工程師,當你把圖1.1給手下的軟件工程師們觀看,告訴他們及早發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意你的觀點,認為要求在錯誤進入軟件之前就清除它們是不現(xiàn)實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么,一個人怎么能

3、在設計階段清除它呢?”你怎么反駁他?1-3 什么是軟件工程?它有哪些本質(zhì)特性?怎樣用軟件工程消除軟件危機?答: 軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。軟件工程本質(zhì)特性:1、軟件工程關注于大型程序的構造;2、軟件工程的中心課題是控制復雜性;3、軟件經(jīng)常變化;4、開發(fā)軟件的效率非常重要;5、和諧地合作是開發(fā)軟件的關鍵;6、軟件必須有效地支持它的用戶;7、在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)

4、品。消除軟件危機的途徑:為了消除軟件危機,首先應該對計算機軟件有一個正確的認識。必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。應該推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并且研究探索更好更有效的技術和方法,盡快消除在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤概念和做法。應該開發(fā)和使用更好的軟件工具。為了解決軟件危機,既要有技術措施(方法和工具),又要有必要的組織管理措施。1-6 什么是軟件過程?它與軟件工程方法學有何關系?答: 軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步

5、驟。軟件工程方法學包含軟件過程。1-7 什么是軟件生命周期模型?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點,說明每種模型的適用范圍。答: 生命周期模型簡潔地描述軟件過程,規(guī)定了把生命周期劃分成哪些階段及各個階段執(zhí)行順序。瀑布模型歷史悠久、廣為人知,它的優(yōu)勢在于它是規(guī)范的、文檔驅(qū)動的方法;這種模型的問題是,最終開發(fā)出的軟件產(chǎn)品可能并不是用戶真正需要的??焖僭湍P驼菫榱丝朔俨寄P偷娜秉c而提出來的。它通過快速構建起一個可在計算機上運行的原型系統(tǒng),讓用戶試用原型并收集用戶反饋意見的辦法,獲取用戶的真實需求。增量模型具有可在軟件開發(fā)的早期階段使投資獲得明顯回報和較易維護的優(yōu)點,但是,

6、要求軟件具有開放的結構是使用這種模型時固有的困難。風險驅(qū)動的螺旋模型適用于內(nèi)部開發(fā)的大型軟件項目,但是,只有在開發(fā)人員具有風險分析和排除風險的經(jīng)驗及專門知識時,使用這種模型才會獲得成功。 快速原型模型:適合小型軟件;螺旋模型:適合內(nèi)部開發(fā)的大規(guī)模軟件項目。2-1 在軟件開發(fā)的早期階段為什么要進行可行性研究?應該從哪些方面研究目標系統(tǒng)的可行性?答: 可行性研究的目的,就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。至少應該從下述三方面研究每種解法的可行性:(1)技術可行性;(2)經(jīng)濟可行性;(3)操作可行性。2-5 北京某高??捎玫碾娫捥柎a有以下幾類:校內(nèi)電話號碼由4位數(shù)字組成,第1位數(shù)

7、字不是0;校外電話又分為本市電話和外地電話兩類,撥校外電話需先撥0,若是本市電話則再接著撥8位數(shù)字(第1位不是0),若是外地電話則撥3位區(qū)碼再撥8位電話號碼(第1位不是0)。請用2.5.2小節(jié)講述的定義數(shù)據(jù)的方法,定義上述的電話號碼。答: 電話號碼校內(nèi)電話|本市電話|外地電話 非零數(shù)字字符=1|2|3|4|5|6|7|8|9 校內(nèi)電話=非零數(shù)字字符+3數(shù)字3本市電話=0+非零數(shù)字字符+7數(shù)字7外地電話=0+區(qū)碼+非零數(shù)字字符+7數(shù)字73-1 為什么要進行需求分析?通常對軟件系統(tǒng)有哪些需求?答: 為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得

8、成功的前提條件,不論我們把設計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。確定對系統(tǒng)的綜合要求:1、功能需求;2、性能需求;3、可靠性和可用性需求;4、出錯處理需求;5、接口需求;6、約束;7、逆向需求;8、將來可以提出的要求,分析系統(tǒng)的數(shù)據(jù)要求。3-2 怎樣與用戶有效地溝通以獲取用戶的真實需求?答: 與用戶溝通獲取需求的方法:訪談;面向數(shù)據(jù)流自頂向下求精;簡易的應用規(guī)格說明技術;快速建立軟件原型3-3 銀行計算機儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務員鍵入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址(或電話號碼)、身份證號碼、存款類型

9、、存款日期、到期日期、利率及密碼(可選)等信息,并印出存單給儲戶;如果是取款而且存款時留有密碼,則系統(tǒng)首先核對儲戶密碼,若密碼正確或存款時未留密碼,則系統(tǒng)計算利息并印出利息清單給儲戶。請用數(shù)據(jù)流圖描繪本系統(tǒng)的功能,并用實體-聯(lián)系圖描繪系統(tǒng)中的數(shù)據(jù)對象。答:儲戶存款處理取款處理核對密碼現(xiàn)金庫數(shù)據(jù)流圖: 存折、存款單 存折(無密碼)、取款單 帳目 存折(無密碼)、取款單 儲蓄所儲戶存款、取款存款日期取款日期姓名利率存款類型住址利率身份證號利率名稱利率地址 實體-聯(lián)系圖: m n4-2 在什么情況下應該使用形式化說明技術?使用形式化說明技術時應遵守哪些準則?答: 在開發(fā)大型軟件系統(tǒng)的過程中應該使用形

10、式化說明技術。應用形式化方法的準則:(1)應該選用適當?shù)谋硎痉椒?。?)應該形式化,但不要過分形式化。(3)應該估算成本。(4)應該有形式化方法顧問隨時提供咨詢。(5)不應該放棄傳統(tǒng)的開發(fā)方法。(6)應該建立詳盡的文檔。(7)不應該放棄質(zhì)量標準。(8)不應該盲目依賴形式化方法。(9)應該測試、測試再測試。(10)應該重用。5-4 美國某大學共有200名教師,校方與教師工會剛剛簽訂一項協(xié)議。按照協(xié)議,所有年工資超過26 000(含26 000)的教師工資將保持不變,年工資少于26 000的教師將增加工資,所增加的工資數(shù)按下述方法計算:給每個由此教師所贍養(yǎng)的人(包括教師本人)每年補助100,此外,

11、教師有一年工齡每年再多補助50,但是,增加后的年工資總額不能多于26 000。教師的工資檔案儲存在行政辦公室的磁帶上,檔案中有目前的年工資、贍養(yǎng)的人數(shù)、雇用日期等信息。需要寫一個程序計算并印出每名教師的原有工資和調(diào)整后的新工資。要求:(1) 畫出此系統(tǒng)的數(shù)據(jù)流圖;(2) 寫出需求說明;(3) 設計上述的工資調(diào)整程序(要求用hipo圖描繪設計結果),設計時請分別采用下述兩種算法,并比較這兩種算法的優(yōu)缺點:(a) 搜索工資檔案數(shù)據(jù),找出年工資少于26 000的人,計算新工資,校核是否超過26 000,儲存新工資,印出新舊工資對照表;(b) 把工資檔案數(shù)據(jù)按工資從最低到最高的次序排序,當工資數(shù)額超過

12、26 000時即停止排序,計算新工資,校核是否超過限額,儲存新工資,印出結果。答: (1) 數(shù)據(jù)流圖:計算應漲工資s1讀贍養(yǎng)人數(shù)讀雇傭日期計算新工資計算工齡計算應漲工資s2贍養(yǎng)人口 人數(shù) s1 新工資 s2雇傭日期 日期 工齡(2) 需求說明1 任務概述:對于年工資未超過2600的教師漲工資:每贍養(yǎng)1人補助$100,每有一年工齡補助$50,漲工資上限為2600;2 數(shù)據(jù)描述:數(shù)據(jù)庫描述:工資表、功能需求:對于年工資未超過2600的教師漲工資:每贍養(yǎng)1人補助$100,每有一年工齡補助$50,漲工資上限為2600;漲工資系統(tǒng)檢索1.0修改2.0校核3.0打印4.0(3) hipo圖:(a) 打印4

13、.0校核3.0修改2.0排序1.0漲工資系統(tǒng) (b) (4)所畫的流程圖適合(a)種算法.6-8 畫出下列偽碼程序的流圖,計算它的環(huán)形復雜度。你覺得這個程序的邏輯有什么問題嗎? c example loop:do while z0a=b+1if a10 then x=a else y=zend ifif y0 then print c else print kendifstop12,34581097611121413答: 對應的流圖: 環(huán)形復雜度:v(g)=e-n+2=17-13+2=6存在的邏輯問題:1)當z0時易形成死循環(huán). 2) 條件 y5 包含條件 y=26-9 把統(tǒng)計空格程序的jac

14、kson圖(下圖)改畫為等價的程序流程圖和盒圖。統(tǒng)計空格程序體印總數(shù)處理字符串印字符串分析字符串印空格數(shù)分析字符處理非空格處理空格 i i s 開始結束文件尾?讀一個字符串換行,輸出字符串, 換行統(tǒng)計空格數(shù)并輸出取下一個字符串換行,輸出空格總數(shù)答: 程序流程圖: 盒圖(n-s 圖) 文件不是文件尾?讀一個字符串換行,輸出字符串, 換行統(tǒng)計空格數(shù)并輸出取下一個字符串換行,輸出空格總數(shù)y n7-8 對一個包含10000條機器指令的程序進行一個月集成測試后,總共改正了15個錯誤,此時mttf=10h;經(jīng)過兩個月測試后,總共改正了25個錯誤(第二個月改正了10個錯誤),mttf=15h。要求:(1)

15、根據(jù)上述數(shù)據(jù)確定mttf與測試時間之間的函數(shù)關系,畫出mttf與測試時間的關系曲線。在畫這條曲線時做了什么假設?(2) 為做到mttf=100h,必須進行多長時間的集成測試?當集成測試結束時總共改正了多少個錯誤,還有多少個錯誤潛伏在程序中?答:(1) 所做假設:1)單位長度里的錯誤數(shù)近似為常數(shù);2)失效率正比于軟件中剩余的錯誤數(shù),而平均無故障時間與剩余的錯誤數(shù)成反比. 3)發(fā)現(xiàn)的每一個錯誤都立即正確地改正了.(2)由shooman公式:mttf=it/(k*(et-ec(t) 其中,it=104,mttf1=10,n1=15,mttf2=15,n2=25。得:mttf1=it/(k*(et-e

16、c(t1)10=10000/(k*(et-15)mttf2=it/(k*(et-ec(t2)15=10000/(k*(et-25) (1) 解得程序中固有的錯誤總數(shù)et=45,此外k=100/3。(2)設mttf=100,有100=10000/((100/3)*(45-x)解得x=42。 所以,當集成測試結束時,改正了42個錯誤,還剩3個錯誤。7-9 如對一個長度為100000條指令的程序進行集成測試期間記錄下下面的數(shù)據(jù):(a) 7月1日:集成測試開始,沒有發(fā)現(xiàn)錯誤。(b) 8月2日:總共改正100個錯誤,此時mttf=0.4h(c) 9月1日:總共改正300個錯誤,此時,mttf=2h根據(jù)上

17、列數(shù)據(jù)完成下列各題:(1) 估計程序中的錯誤總數(shù);(2) 為使mttf達到10h,必須測試和調(diào)試這個程序多長時間?(3) 畫出mttf和測試時間之間的函數(shù)關系線。答: 由shooman公式:mttf=it/(k*(et-ec(t) 其中,it=105,mttf1=0.4,t1=160,n1=100,mttf2=2,t2=320,n2=300。得:mttf1=it/(k*(et-ec(t1)0.4=100000/(k*(et-100)mttf2=it/(k*(et-ec(t2)2=100000/(k*(et-300) (1)解得程序中固有的錯誤總數(shù)et=350,此外k=1000。(2)設mttf

18、=10,有10=100000/(1000*(350-x)解得x=340。由可靠性積累曲線ec(t)=et(1-exp(-k1t))得:100=350*(1-exp(-160k1))300=350*(1-exp(-320k1))解得:k=0.01。 代入 340=350*(1-exp(-k1t))= 350*(1-exp(-0.01t),得:t=(ln(35)/0.01=356h因此求得為使 mttf=10,測試和調(diào)試該程序需要花費365h。8-1 軟件的可維護性與哪些因素有關?在軟件開發(fā)過程中應該采取哪些措施才能提高軟件產(chǎn)品的可維護性?答: 1、決定軟件可維護性的因素主要有下述5個:1、可理解

19、性;2、可測試性;3、可修改性;4、可移植性;5、可重用性。在軟件工程過程的每一個階段都應該考慮并努力提高軟件的可維護性,在每個階段結束前的技術審查和管理復審中,應該著重對可維護性進行復審。在需求分析階段的復審過程中,應該對將來要改進的部分和可能會修改的部分加以注意并指明;應該討論軟件的可移植性問題,并且考慮可能影響軟件維護的系統(tǒng)界面。在正式的和非正式的設計復審期,應該從容易修改、模塊化和功能獨立的目標出發(fā),評價軟件的結構和過程;設計中應該對將來可能修改的部分預作準備。代碼復審應該強調(diào)編碼風格和內(nèi)部說明文檔這兩個影響可維護性的因素。在設計和編碼過程中應該盡量使用可重用的軟件構件,如果需要開發(fā)新

20、的構件,也應該注意提高構件的可重用性。每個測試步驟都可以暗示在軟件正式交付使用前,程序中可能需要做預防性維護的部分。在測試結束時進行最正式的可維護性復審.在完成了每項維護工作之后,都應該對軟件維護本身進行仔細認真的復審。維護應該針對整個軟件配置,不應該只修改源程序代碼。每當對數(shù)據(jù)、軟件結構、模塊過程或任何其他有關的軟件特點做了改動時,必須立即修改相應的技術文檔。9-1 什么是面向?qū)ο蠓椒▽W?它有哪些優(yōu)點?答: oo=objects+classes+inheritance+communication with messages也就是說,面向?qū)ο缶褪羌仁褂脤ο笥质褂妙惡屠^承等機制,而且對象之間僅能

21、通過傳遞消息實現(xiàn)彼此通信。面向?qū)ο蠓椒▽W的優(yōu)點:1、與人類習慣的思維方法一致;2、穩(wěn)定性好;3、可重用性好;4、較易開發(fā)大型軟件產(chǎn)品;5、可維護性好。9-5 什么是模型?開發(fā)軟件為何要建模?答: 所謂模型,就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。模型是一種思考工具,利用這種工具可以把知識規(guī)范地表示出來。為了開發(fā)復雜的軟件系統(tǒng),系統(tǒng)分析員應該從不同角度抽象出目標系統(tǒng)的特性,使用精確的表示方法構造系統(tǒng)的模型,驗證模型是否滿足用戶對目標系統(tǒng)的需求,并在設計過程中逐漸把和實現(xiàn)有關的細節(jié)加進模型中,直至最終用程序?qū)崿F(xiàn)模型。對于那些因過分復雜而不能直接理解的系統(tǒng),特別需要建

22、立模型,建模的目的主要是為了減少復雜性。應該依據(jù)什么準則來評價用例圖、腳本和狀態(tài)圖?11-1 面向?qū)ο笤O計應該遵循哪些準則?簡述每條準則的內(nèi)容,并說明遵循這條準則的必要性。答: 面向?qū)ο笤O計準則:1、模塊化;2、抽象;3、信息隱藏;4、弱耦合;5、強內(nèi)聚;6、可重用。11-2 簡述有助于提高面向?qū)ο笤O計質(zhì)量的每條主要啟發(fā)規(guī)則的內(nèi)容和必要性。答: 1、設計結果應該清晰易懂,使設計結果清晰、易讀、易懂,是提高軟件可維護性和可重用性的重要措施;2、一般、特殊結構的深度應適當,應該使類等級中包含的層次數(shù)適當;3、設計簡單的類,應該盡量設計小而簡單的類,以便于開發(fā)和管理;4、使用簡單的協(xié)議,一般說來,消

23、息中的參數(shù)不要超過3個;5、使用簡單的服務,一般只有35行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能;6、把設計變動減至最小,即使出現(xiàn)必須修改設計的情況,也應該使修改的范圍盡可能小。12-1 面向?qū)ο髮崿F(xiàn)應該選用哪種程序設計語言?為什么?答: 開發(fā)人員在選擇面向?qū)ο笳Z言時,還應該著重考慮以下一些實際因素。1、將來能否占主導地位,為了使自己的產(chǎn)品在若干年后仍然具有很強的生命力;2、可重用性,采用面向?qū)ο蠓椒ㄩ_發(fā)軟件的基本目的和主要優(yōu)點,是通過重用提高軟件生產(chǎn)率;3、類庫和開發(fā)環(huán)境,決定可重用性的因素,不僅僅是面向?qū)ο蟪绦蛘Z言本身,開發(fā)環(huán)境和類庫也是非常重要的因素;4、其他因素,對用戶學習面向?qū)ο蠓治?、設計和編碼技術所能提供的培訓服務;在使用這個面向?qū)ο笳Z言期間能提供的技術支持;能提供給開發(fā)人員使用的開發(fā)工具、開發(fā)平臺、發(fā)行平臺;對機器性能和內(nèi)存的需求;集成已有軟件的容易程度等。12-4 良好的面向?qū)ο蟪绦蛟O計風格主要有哪些準則?答: 良好的面向?qū)ο蟪绦蛟O計風格,即包括傳統(tǒng)的程序設計風格準則,也包括為適應面向?qū)ο蠓椒ㄋ赜械母拍睿ɡ纾^承性)而必須遵循的一些新準則。提高可重用性:1、提高方法的內(nèi)聚;2、減小方法的規(guī)模;3、保持方法的一致性;4、把策略與實現(xiàn)分開;5、全面覆蓋;6、盡量不

溫馨提示

  • 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

提交評論