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

下載本文檔

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

文檔簡介

1、軟件工程作業(yè)第一章1什么是軟件危機,它有哪些典型表現(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)生軟件危機的原因:一方面與軟件本身的特點有關(guān),另一方面也和軟件

2、開發(fā)與維護的方法不正確有關(guān)。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。管理和控制軟件開發(fā)過程相當困難。軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)人員對軟件開發(fā)和維護還有不省糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術(shù),這是使軟件問題發(fā)展成軟件危機的主要原因。2簡述產(chǎn)生軟件危機的原因和解決的思路。答:軟件危機產(chǎn)生的原因一方面與軟件本身的特點有關(guān),另一方面,是與已有軟件開發(fā)、維護的方法不正確有密切關(guān)系。解決軟件危機,既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。即采用工程化的原則和方法組織軟件開發(fā)是擺脫軟件危機的一個主要

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

4、個方面來研究如何更好地開發(fā)和維護計算機軟件,從源頭上消除軟件危機。5假設你是某軟件開發(fā)企業(yè)的CEO,當你把教材P.4的圖1.1給手下的軟件工程師們看,同時告訴他們應及早發(fā)現(xiàn)并改正錯誤的重要性時,有人不以為然,認為要求在錯誤進入軟件前就發(fā)現(xiàn)并清除它們是不現(xiàn)實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么又如何能夠在設計階段就發(fā)現(xiàn)并清除呢?”那你應該如何說服?首先要對錯誤造成工作的延誤或一些問題表示歉意。錯誤是難免,關(guān)鍵是要虛心接受,在以后工作中要更加認真,避免錯誤機率降到最低。在編碼過程中要,首先要在頭腦清醒,要保持工作前有足夠的睡眠。這樣錯誤機會也會降小。在編程結(jié)束后,首先要驗證,是否能正

5、常運行或工作。再以后的工作更要虛心,認真,保證這種機會降到最低6簡述軟件的定義。軟件 程序 + 數(shù)據(jù) + 文檔7軟件工程的目的是什么?為高質(zhì)量的軟件開發(fā)提供一個科學的體系框架。8什么是軟件工程方法學?軟件工程是一種什么樣的技術(shù)?包括哪三大要素?分為哪三個分支?軟件工程方法學就是指在軟件生命周期全過程中使用的一整套管理和開發(fā)技術(shù)方法的集合。目前,使用最廣泛的軟件工程方法學分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W。軟件工程作為一種層次化的技術(shù),有方法、工具和過程三大要素,并由于其涉及學科內(nèi)容的極為廣泛,而分為三個分支:軟件開發(fā)技術(shù)、軟件項目管理技術(shù)、軟件質(zhì)量管理技術(shù)。9簡述軟件工程的基本原理。軟件工程有7

6、條基本原理:1嚴格按照軟件生命周期計劃進行管理2堅持進行階段評審3實行嚴格的產(chǎn)品控制4采用先進的程序設計技術(shù)5結(jié)果應能清楚的審查6開發(fā)小組成員應少而精7承認不斷改進軟件工程實踐的必要性10軟件工程的基本開發(fā)原則有哪些?軟件工程的基本開發(fā)原則有:1模塊化2抽象和信息隱蔽3模塊的高內(nèi)聚和低耦合4確定性5一致性6完備性11構(gòu)成軟件工程的基本元素有哪些?除了前面給出的軟件工程三大要素,還應該包括控制和質(zhì)量保證。這里的控制,即規(guī)??刂啤⒊杀究刂?、復雜性控制等。12什么是軟件過程?它與軟件工程方法學有何關(guān)系?軟件過程是指為了獲得高質(zhì)量軟件產(chǎn)品,在軟件工具支持下,由軟件人員完成的一系列軟件工程活動。軟件過程

7、規(guī)定了開發(fā)軟件所需完成的各項任務步驟。過程步驟的設定與軟件生命周期、生命周期模型、軟件開發(fā)工具,以及參與開發(fā)的人員等諸方面因素有關(guān)。13什么是軟件生命周期?什么是軟件生命周期模型?答: 軟件如同自然界任何事物一樣,都有其孕育、誕生、成長、成熟、衰亡的生存過程。軟件的這一過程,稱為軟件生命周期。軟件生命周期模型也稱軟件開發(fā)過程模型,是為了解決產(chǎn)業(yè)環(huán)境中的實際問題,而提出的開發(fā)策略。是反映整個軟件生命期中,系統(tǒng)開發(fā)、運行、維護等實施活動的一種結(jié)構(gòu)框架。14簡述軟件生命周期方法學的途徑,以及劃分階段步驟的目的和實質(zhì)。軟件生命周期方法學是軟件工程的傳統(tǒng)途徑,劃分階段步驟的目的和實質(zhì)是:控制開發(fā)工作的復

8、雜性,通過有限步驟,把抽象邏輯概念,轉(zhuǎn)化為具體物力實現(xiàn)。15試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點,說明它們各自的適用范圍。1瀑布模型。瀑布模型廣為人知和歷史悠久,其優(yōu)勢是規(guī)范及文檔驅(qū)動的方法。但問題是,往往不能夠真正滿足用戶的需求。適用于傳統(tǒng)軟件工程領域的結(jié)構(gòu)化開發(fā)。2原型模型。是為了克服瀑布模型的缺點而提出來的。通過快速構(gòu)建一個在機器上可運行的原型系統(tǒng),讓用戶試用原型,并收集反饋意見的辦法,來獲取用戶真實的需求。3螺旋模型。螺旋模型適用于大型軟件項目,比起之前的其它模型而言,有其一定的優(yōu)越性,但這些優(yōu)越性并不是絕對的。主要體現(xiàn)在對開發(fā)人員的風險評估經(jīng)驗和專門知識的要求較高

9、。如果項目風險較大,而開發(fā)人員的水平較低,不能準確的識別和分析風險,則勢必造成重大損失。4增量模型。具有在軟件開發(fā)早期階段使投資獲得明顯回報和交易維護的優(yōu)點,但是要求軟件具有開放的結(jié)構(gòu)。第二章1在軟件開發(fā)的早期階段,為什么要進行可行性研究?其目的和任務各是什么?可行性研究的目的是用最小的代價,在盡可能短的時間內(nèi)確定問題是否可解決,以及是否值得解決??尚行匝芯康娜蝿詹皇墙鉀Q問題,而是確定是否可解/值得解。2應該從哪些方面研究目標系統(tǒng)的可行性?主要從以下幾個方面進行可行性研究:1. 技術(shù)可行性。以現(xiàn)有技術(shù),能否在預定時間內(nèi)完成該系統(tǒng)開發(fā)。2. 經(jīng)濟可行性。通過成本-效益分析,估算系統(tǒng)的整體經(jīng)濟效益

10、是否滿足要求。3. 操作可行性。分析系統(tǒng)的運行方式、操作規(guī)程是否適應用戶應用需要。4. 社會可行性。分析系統(tǒng)在法律、社會、市場等方面的認可度。3可行性研究有哪些工作步驟?(1) 復查定義,確定系統(tǒng)規(guī)模和目標。(2) 研究老系統(tǒng)(3) 導出高層邏輯模型(conceptual design)(4) 重新定義 (5) 導出多種解法(6) 推薦行動方針(7) 開發(fā)計劃(粗略)(8) 審查、存檔4簡述系統(tǒng)流程圖在可行性研究中的作用。系統(tǒng)流程圖是概括的描述物理系統(tǒng)的傳統(tǒng)工具。系統(tǒng)流程圖反映的是信息在系統(tǒng)各部分間流動的情況。系統(tǒng)流程圖可以幫助了解和分析系統(tǒng),以概括的方式表達對系統(tǒng)的認識,并可以描述未來物理系

11、統(tǒng)的概貌。5簡述數(shù)據(jù)流圖在可行性研究中的作用和用途。數(shù)據(jù)流圖在可行性分析中可以幫助分析和描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程,用圖形的方式描述系統(tǒng)的邏輯功能,是系統(tǒng)分析員和用戶之間理想的通信工具。6簡單描述數(shù)據(jù)字典但內(nèi)容和定義數(shù)據(jù)的方法。數(shù)據(jù)字典主要由下列4種元素定義組成:1數(shù)據(jù)流2數(shù)據(jù)流分量3數(shù)據(jù)存儲4處理除了數(shù)據(jù)定義外,數(shù)據(jù)字典還應包含一些關(guān)于數(shù)據(jù)的其它信息。定義數(shù)據(jù)的方法通常采用自頂向下分解的方式。并由順序、選擇、重復三種基本數(shù)據(jù)元素類型組成數(shù)據(jù)。7說明軟件計劃的內(nèi)容和目標。軟件計劃的內(nèi)容 項目任務范圍 + 環(huán)境資源 + 工作量 + 進度軟件計劃的目標是為了提供一個框架,以便于管理者對

12、資源、成本和進度等進行合理的估算。8什么是軟件范圍?定義軟件范圍需要哪些信息?軟件范圍就是在技術(shù)和管理層面上都是無二義性和可理解的項目范圍,是軟件開發(fā)各階段的工作依據(jù)。定義軟件范圍需要以下信息:a. 與用戶、總體目標及利益相關(guān)的問題。b. 有利于系統(tǒng)分析員理解的問題。c. 集中于交流效果的問題。9簡述軟件開發(fā)環(huán)境資源的三個層次。軟件開發(fā)環(huán)境資源由三個層次構(gòu)成:開發(fā)環(huán)境、軟件構(gòu)件以及最重要的資源人。10軟件環(huán)境資源的特征有哪些?它們對制定軟件計劃都有哪些意義?每一類資源都有四個特征:資源描述、可用性說明和資源提供的時間、資源使用的延續(xù)時間??梢詾橹贫ㄜ浖媱澒浪丬浖_發(fā)所需的資源。11軟件計劃中

13、,安排軟件開發(fā)進度主要可以用哪些工具?都有哪些優(yōu)缺點?編制進度計劃的常用工具主要有甘特圖和網(wǎng)絡計劃法。甘特圖的優(yōu)點是簡單,能動態(tài)地反映開發(fā)進展;缺點是難以反映多個任務間的邏輯關(guān)系。網(wǎng)絡計劃法則恰好彌補了甘特圖的缺點,最適合反映多個工作之間的邏輯關(guān)系。12主要的成本估計技術(shù)有哪些?其依據(jù)的主要是什么?主要有,代碼行技術(shù)。是一種基于規(guī)模的分解估算:D=f(vi)以及基于問題的分解估算:EV(Sopt+4Sm+Spess)/6還有功能點技術(shù)。這種技術(shù)以功能點(FP)為單位,度量軟件的規(guī)模。由于項目本身的復雜性,因此,成本估計技術(shù)主要采用“分而治之”的分解技術(shù)對軟件項目進行估算。13為什么說成本估計是

14、不可能精準的?那是由于太多的變化因素人員、技術(shù)、環(huán)境、策略、復雜性等等,使得成本估算永遠不可能精確。14進行成本/效益分析的方法主要有哪些?常用成本/效益分析的方法主要有:(1) 貨幣的時間價值(2) 投資回收期(3) 純收入(4) 投資回收率15軟件計劃的主要內(nèi)容有哪些?16如何對制定完成的軟件計劃進行復審?為什么要復審?軟件計劃的復審通常涉及有關(guān)軟件工作范圍和軟硬件資源問題等。復審應該邀請用戶參加,用戶可提出建議,并與開發(fā)人員最終商定內(nèi)容。復審內(nèi)容分為技術(shù)和管理兩個方面:技術(shù)方面需要考慮的問題有:1.系統(tǒng)的任務是否合理;2.系統(tǒng)的給你復雜性是否與開發(fā)成本、進度以及風險一致;3.系統(tǒng)規(guī)格說明

15、書是否足夠充分;4.系統(tǒng)性能要求是否恰當管理方面需要考慮的問題有:1.計劃中描述的工作范圍是否符合用戶需求2.計劃中對資源的描述是否有效、合理?3.計劃中系統(tǒng)的開發(fā)成本與進度要求是否合理?4.計劃中人員的安排是否合理?5.系統(tǒng)開發(fā)存在哪些風險?復審可以盡早發(fā)現(xiàn)錯誤,復審是軟件質(zhì)量保證的重要措施。第三章1為什么要進行需求分析?通常對軟件系統(tǒng)有哪些需求?需求問題是軟件工程項目失敗的主要原因。一個高質(zhì)量的軟件,很大程度上取決于對要解決的問題的認識,以及如何準確的表達用戶的需求。需求分析就是要解決這個問題。通常,對一個軟件系統(tǒng)的需求可以有功能需求、性能需求、可靠性和可用性需求、出錯處理需求、接口需求等

16、多個方面。2怎樣與用戶有效地溝通,以獲得用戶的真實需求?訪談、情景分析,以及面向數(shù)據(jù)流的自頂向下求精等方法,編制簡易的系統(tǒng)規(guī)格說明文檔,創(chuàng)建原型等,是獲取真實需求的有效方法。3需求分析的任務是什么?確定對待開發(fā)系統(tǒng)的綜合要求。4通常系統(tǒng)的需求可以分為哪幾個層次?一般可以分成5個層次:(1) 功能需求:系統(tǒng)必須做什么?(2) 業(yè)務需求:反映客戶組織機構(gòu)對系統(tǒng)高層次的目標要求。(3) 運行需求:運行環(huán)境、軟硬件配置等。(4) 屬性需求:包括用戶關(guān)心的屬性,如效率、靈活性、完整性、可靠性等;開發(fā)者關(guān)心的屬性,如可維護性、可復用性、可移植性等。(5) 未來可能的擴充需求:如HDIS各組的合并,3維虛擬

17、現(xiàn)實的效果等等。5進行需求分析的步驟有哪些?1確定系統(tǒng)的綜合要求2分析系統(tǒng)的數(shù)據(jù)要求3導出邏輯模型4修正系統(tǒng)開發(fā)計劃6簡述建立原型模型對軟件需求分析的作用??梢钥焖贅?gòu)建旨在演示目標系統(tǒng)主要功能的可運行程序,幫助用戶確定及提供更為精準的需求,以利用戶和開發(fā)者能夠在目標系統(tǒng)應該“做什么”這一問題上盡快達成一致。7解釋實體-聯(lián)系圖及其用途。實體-聯(lián)系圖是按照用戶的觀點對數(shù)據(jù)建立的模型。描述從用戶角度看到的數(shù)據(jù),反映用戶的現(xiàn)實環(huán)境,并且與在軟件系統(tǒng)中的實現(xiàn)方法無關(guān)。8說明為什么需要進行需求驗證及驗證的步驟有哪些?進行需求驗證是為了確保軟件開發(fā)的質(zhì)量,降低開發(fā)成本。通常對需求進行驗證的步驟有:驗證需求的

18、一致性、驗證需求的現(xiàn)實性、驗證需求的完整性和有效性。9銀行計算機儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務人員鍵入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址(或電話號碼)、身份證號碼、存款類型、存款日期、到期日期、利率及密碼(可選)等信息,并印出存單給儲戶;如果是取款而且存款時留有密碼,則系統(tǒng)首先核對儲戶密碼,若密碼正確或存款時未留密碼,則系統(tǒng)計算利息并印出利息清單給儲戶。請用數(shù)據(jù)流圖描繪本系統(tǒng)的功能,并用實體聯(lián)系圖描繪系統(tǒng)中的數(shù)據(jù)對象。第四章 1為每種類型的模塊耦合舉一個具體的例子。耦合分別是:內(nèi)容耦合,共用耦合(公共環(huán)境耦合),控制耦合,印記耦合(特征耦合),數(shù)據(jù)耦合2為每

19、種類型的模塊內(nèi)聚舉一個具體的例子。內(nèi)聚分別是:偶然內(nèi)聚,邏輯內(nèi)聚,時間內(nèi)聚,過程內(nèi)聚,通信內(nèi)聚,順序內(nèi)聚,功能內(nèi)聚,信息內(nèi)聚3簡單說明系統(tǒng)總體設計的步驟步驟。典型的總體設計包括以下9個步驟:1、確定最佳方案2、選取合理方案3、推薦最佳方案4、功能分解5、軟件結(jié)構(gòu)設計6、設計數(shù)據(jù)庫7、制定測試計劃8、書寫文檔9、審查和復審4舉例說明模塊化原理的經(jīng)驗1和經(jīng)驗2。5為什么要盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合?減少模塊之間的關(guān)聯(lián)度,提高模塊的獨立性。因為內(nèi)容耦合會導致一個模塊修改另一個模塊的內(nèi)容,使得程序邏輯發(fā)生嚴重問題。而公共耦合是若干模塊通過一個公共數(shù)據(jù)環(huán)境相互作

20、用,公共部分的改動將影響所有調(diào)用它的模塊,公共部分的數(shù)據(jù)存取無法控制,并且復雜程度也會隨耦合模塊的個數(shù)增加而增加??刂岂詈鲜且粋€模塊通過傳遞開關(guān)、標志、名字等控制信息,明顯地控制選擇另一個模塊的功能。由于接口單一,因此仍然會影響被控模塊的內(nèi)部邏輯。而數(shù)據(jù)耦合只是模塊間通過數(shù)據(jù)參數(shù)來交換I/O信息,因此不會對其它模塊產(chǎn)生任何等影響。6為什么模塊的規(guī)模要適中?過大不易理解;太小則接口開銷過大。7請說明為什么模塊控制的寬度和深度要適度。深度過大表示分工過細,而寬度過大則表示系統(tǒng)復雜度大,所以模塊控制的寬度和深度要適度。8簡述面向數(shù)據(jù)流設計方法的基本思想。將由數(shù)據(jù)流圖描繪的信息在系統(tǒng)中加工和流動的情況

21、映射成軟件結(jié)構(gòu)。9常用數(shù)據(jù)流類型有哪些?變換流和事務流。10面向數(shù)據(jù)流的設計方法主要有哪幾個步驟?主要有下面7個步驟:1復查基本系統(tǒng)模型2復查并精化數(shù)據(jù)流圖3確定數(shù)據(jù)流圖具有變換特性還是事務特性4確定輸入流和輸出流動邊界,從而孤立出變換中心5完成“第一級分解”6完成“第二級分解”7使用設計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進一步精化11用面向數(shù)據(jù)流的方法設計第二章習題17系統(tǒng)的軟件結(jié)構(gòu)。第五章1詳細設計的任務是什么?包括模塊的算法設計、模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)設計、模塊接口設計、其它根據(jù)軟件特點需要完成的設計、模塊測試用例設計、設計文檔編寫、設計評審。2在對系統(tǒng)做詳細設計時,應遵循哪些原則?

22、模塊的邏輯描述應清晰易讀、正確可靠; 設計的處理過程應該簡明易懂; 選擇恰當?shù)拿枋龉ぞ邅砻枋瞿K算法。3簡述結(jié)構(gòu)化設計的特點。 自頂向下、逐步求精; 具有單入、單出的控制結(jié)構(gòu)(取消GOTO語句)4結(jié)構(gòu)化程序設計中有哪幾種基本控制結(jié)構(gòu)?分別描繪在程序流程圖、盒圖和PDA圖中這些基本控制的圖例。PDA圖中這些基本控制的圖例。(1) 順序結(jié)構(gòu)(2) 選擇結(jié)構(gòu)(3) 先判定型循環(huán)結(jié)構(gòu)(4) 后判定型循環(huán)結(jié)構(gòu)(5) 多情況選擇5假設只有SEQUENCE和DO_WHILE兩種控制結(jié)構(gòu),請問應該如何完成IF_THEN_ELSE操作?6假設只有SEQUENCE和IF_THEN_ELSE兩種控制結(jié)構(gòu),請問應該如

23、何完成DO_WHILE操作?7試說明ISO為什么要建議停止使用程序流程圖,而推薦使用PDA圖?由于程序流程圖中的GOTO語句回嚴重地損害程序結(jié)構(gòu),而無法實行結(jié)構(gòu)化設計。PDA圖則既吸取了程序流程圖好學、好用、好懂,方便、靈活的優(yōu)點,又保留了N-S圖結(jié)構(gòu)化設計的特點,很好地滿足了軟結(jié)構(gòu)構(gòu)設計圖形工具的要求,以及PDA圖所具有的 結(jié)構(gòu)清晰,層次分明,易讀; 支持逐步求精的設計思想; 容易將PAD自動轉(zhuǎn)換為高級語言源程序等特點,因此,ISO要推薦使用PDA圖。8請畫出下列偽碼程序的程序流程圖、盒圖和PDA圖。STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND

24、BLOCKEND IFSTOP9試說明Jackson方法是一種怎么樣的程序設計方法。它有哪些工作步驟?Jackson方法是以數(shù)據(jù)結(jié)構(gòu)(data structure)為基礎設計每個模塊的處理過程,將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化成程序結(jié)構(gòu)。具體工作步驟有:第1步:用Jackson圖描述 IO 的數(shù)據(jù)結(jié)構(gòu);第2步:在兩個圖中指出有直接因果關(guān)系、可以同時處理的單元;第3步:將數(shù)據(jù)結(jié)構(gòu)映射到程序結(jié)構(gòu);第4步:列出所有操作條件,并分配到上幅程序結(jié)構(gòu)圖中;第5步:用Pseudocode 表示程序10請將教材P.124圖6.13統(tǒng)計空格程序的Jackson圖改畫成為等價的盒圖和PDA圖。11人機對話由操作員信息和系統(tǒng)信息交替

25、組成。假設一段對話總是由操作員信息開始,以系統(tǒng)信息結(jié)束,請用Jackson圖描繪這樣的一段人機對話過程。第六章1說明什么是程序編碼?為什么程序設計語言的特點和編碼風格會影響到程序的可靠性、可讀性、可測試性和可維護性?所謂“編碼”,就是將在低級抽象層次得到的詳細設計結(jié)果,翻譯成用某種程序設計語言書寫的程序。是軟件設計的自然結(jié)果。而程序設計語言是否有理想的結(jié)構(gòu)化、模塊化機制,是否有可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)等特性,以及程序設計語言提供的編譯、軟件工具等,再加上程序的設計風格會很深刻的影響軟件的質(zhì)量和可維護性、可測試性、可靠性等。2用戶界面設計的最一般原則,即所謂“黃金規(guī)則”是什么?1.置用戶于控

26、制之下;2.減少用戶的記憶負擔;3.保持界面一致。3軟件界面設計包含了哪幾個方面的基本內(nèi)容?界面設計包括三個方面:1.軟件構(gòu)件間接口;2.軟件與其它系統(tǒng)的接口;3.軟件與操作者之間的接口,即用戶界面。4用戶界面提供系統(tǒng)服務的方式通常有哪兩種?命令驅(qū)動和屏幕菜單驅(qū)動5WIMP界面是屏幕菜單驅(qū)動用戶界面的一種形式,其設計準則有哪些?(1) 明確的動作:在屏幕上指點并操縱對象(2) 即時反饋:操作結(jié)構(gòu)即見(3) 增量效應:圖標應被拖曳連續(xù)移動,而非跳躍(4) 可視交互:交互操作與用戶概念模型匹配(5) 剝皮式學習:學習系統(tǒng)功能復雜性逐層加深(6) 可逆動作:也即應有退回操作(7) 事先驗證:只允許合

27、法操作產(chǎn)生效果6為什么說軟件界面設計的質(zhì)量會直接影響到用戶對軟件產(chǎn)品的評價?用戶界面(User-interface)又稱人機界面(man-computer interface),是用戶和計算機聯(lián)系的中間媒介,是系統(tǒng)中最重要、最關(guān)鍵的部分之一。用戶界面設計的好壞,直接影響到系統(tǒng)設計的成敗。這是因為,如果一個界面設計的不好,也即通常所說的用戶界面不友好,可以使用戶在使用時感到不便,甚至制造麻煩,系統(tǒng)就難以發(fā)揮應有的效益,甚至可能被用戶棄用。7什么是系統(tǒng)響應時間?系統(tǒng)響應時間有哪些重要屬性?系統(tǒng)響應時間指從用戶完成某個控制動作,到系統(tǒng)給出預期響應的時間。系統(tǒng)響應時間有2個重要的屬性:長度和易變性。8

28、在設計軟件系統(tǒng)的用戶幫助設施時,需要注意解決哪些問題?1在用戶與系統(tǒng)交互期間,是否任何時候都能獲得關(guān)于系統(tǒng)任何功能的幫助信息?2用戶怎樣請求幫助?3怎樣顯示幫助信息?4用戶怎樣返回到正常的交互方式中?5怎樣組織幫助信息?9軟件出錯處理設計,即軟件安全性設計。一個交互式出錯處理程序應該具備哪些功能和屬性?1信息應該使用用戶可以理解的術(shù)語描述。2信息應該提供有助于從錯誤中恢復的建設性意見。3信息應該指出錯誤可能導致的后果。4信息應該伴隨感官提示。5信息不能帶有指責色彩。10測試的最基本目標是什么?以盡可能小的代價,發(fā)現(xiàn)盡可能多的錯誤。11軟件測試的原則有哪些? 應當把“盡早和不斷的測試”作為座右銘

29、 測試應由獨立的專業(yè)測試機構(gòu)來完成 測試工作要全面,但不可能實現(xiàn)“窮舉” 只能盡可能查錯,不能證明程序中沒有錯 軟件測試符合2-8(Pareto)原理 應妥善保存測試文檔 制定嚴格、合理的測試計劃 錯誤經(jīng)過修改后,相關(guān)的測試必不可少12軟件測試的方法有哪幾種?黑盒測試和白盒測試。13簡單說明什么是白盒測試,什么是黑盒測試。黑盒測試是把程序看成一個黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的測試方法。黑盒測試又稱功能測試。14簡述軟件測試的步驟。(1) 單元測試 程序設計 & 代碼bugs(2) 子系統(tǒng)測試 模塊連接(3) 系統(tǒng)測試 需求確認 & 系統(tǒng)設計(4) 驗收測試 用戶加入 (5) 平行

30、運行 新舊系統(tǒng)比較運行結(jié)果15舉例說明通常情況下窮盡測試是不可能的。16為什么單元測試必須由編程者自己完成?單元測試是對程序邏輯結(jié)構(gòu)的測試。而對程序結(jié)構(gòu)最為熟悉的,莫過于編程者。再者,高質(zhì)量的程序模塊是構(gòu)造系統(tǒng)的基礎,因此編程者必須向下一道工序提交符合質(zhì)量要求的產(chǎn)品。17單元測試的主要手段有哪些?代碼審查、計算機測試等。18單元測試主要從哪5個方面進行?主要測試以下五個方面:1. 模塊接口2. 局部數(shù)據(jù)結(jié)構(gòu)3. 重要的執(zhí)行通路4. 出錯處理通路5. 邊界條件 19為什么人工代碼審查十分重要?一次審查可發(fā)現(xiàn)多個錯誤,不必改一個測一個。20集成測試主要有漸增式測試、非漸增式測試兩種,試述兩種方式的

31、異同點。漸增式測試:可以較早發(fā)現(xiàn)模塊間的接口錯誤、出現(xiàn)的錯誤往往跟最新加入的模塊有關(guān)、在不斷集成的過程中使模塊不斷在新的條件下受到新的檢測,測試更徹底,但較非漸增式測試費時。非漸增式測試由于最后才組裝,因此錯誤發(fā)現(xiàn)得晚、發(fā)現(xiàn)錯誤后難以診斷定位,但可以同時并行測試所有模塊,能充分利用人力。21描述集成測試的兩種策略,并比較它們的優(yōu)缺點。自頂向下測試和自底向上測試兩種。自頂向下測試的優(yōu)點是不需要測試驅(qū)動程序,能夠在測試階段的早期實現(xiàn)并驗證系統(tǒng)的主要功能,在早期發(fā)現(xiàn)上層模塊的接口錯誤。主要缺點是需要存根程序,可能遇到與此相聯(lián)系的測試困難,底層模塊的錯誤發(fā)現(xiàn)較晚,而且對人力的使用也不利。而自底向上測試

32、的優(yōu)缺點與自頂向下測試的優(yōu)缺點正好相反。22什么是回歸測試?回歸測試的測試用例集如何確定?回歸測試是指重新執(zhí)行已經(jīng)做過的測試的某個子集,以保證系統(tǒng)在發(fā)生調(diào)試、功能變化等事項后,沒有帶來非預期的副作用?;貧w測試的測試用例集按以下方法確定:1檢測軟件全部功能的代表性測試用例。2專門針對可能受修改影響的軟件功能的附加測試。3針對被修改過的軟件成分的測試。23什么是確認測試?確認測試的任務是什么?如何確認其范圍?驗收軟件的有效性(功能和性能達標)。確認測試的工作范圍主要有:1按合同規(guī)定審查軟件配置;2設計測試計劃,使通過測試保證軟件能滿足所有功能、性能要求;3文檔與程序一致,具有維護階段所必須的細節(jié);

33、4嚴格按用戶手冊操作,以檢查手冊的完整性和正確性。24設計測試方案的任務有哪些?預定要測試的功能設計輸入的測試數(shù)據(jù)列出預期結(jié)果25什么是邏輯覆蓋測試法?它主要用于什么測試?邏輯覆蓋測試是一種對程序邏輯通路進行覆蓋的測試,通常適用于白盒測試。26什么是等價劃分法?它主要用于什么測試?是一種很常用的測試方法。其對測試數(shù)據(jù)的選擇是基于對程序功能的分析,按照程序輸入要求和輸出要求,選擇若干數(shù)據(jù)進行測試功能的過程。等價劃分法主要用于黑盒測試。27什么是邊值分析法?它主要用于什么測試?根據(jù)經(jīng)驗,在程序處理的邊界最容易發(fā)生錯誤的地方進行測試,主要用于黑盒測試。28什么是錯誤推測法?它主要用于什么測試?利用有

34、經(jīng)驗的測試者對程序可能發(fā)生錯誤的位置的推測進行測試的方法,主要用于黑盒測試。29一個軟件的測試策略應該是怎樣的? 在任何情況下都應首先使用邊界值分析的方法; 必要時用等價劃分法補充; 必要時再用錯誤推測法補充; 對照程序邏輯,檢查測試方案。30什么是調(diào)試?調(diào)試和測試有什么不同?測試 發(fā)現(xiàn)錯誤 ;調(diào)試 改正錯誤調(diào)試與測試的區(qū)別在于,調(diào)試作為測試的后續(xù)工作,主要是解決和排除測試中出現(xiàn)的錯誤。31簡單說明調(diào)試的方法和策略。調(diào)試過程的關(guān)鍵不是調(diào)試技術(shù),而是用來推斷錯誤原因的基本策略。主要有: 試探法:憑經(jīng)驗猜測。 回溯法:由癥狀(symptom)最先出現(xiàn)的地方,沿control flow向回檢查。適用

35、于小型程序。 對分法:在關(guān)鍵點插入變量的正確值。 歸納法:從錯誤癥狀中找出規(guī)律,推斷根源。 演繹法:普通 特殊32什么是軟件的可靠性、可用性和正確性?軟件可靠性是指程序在給定的時間間隔內(nèi),按照說明書的規(guī)定,成功地運行的概率。軟件可用性是指程序在給定的時間點,按照說明書的規(guī)定,成功地運行的概率。軟件正確性是指程序的功能正確。第七章1什么是軟件維護?在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。2軟件維護有哪幾種類型?改正性維護:診斷和改正錯誤;適應性維護:為了和變化了的環(huán)境(如軟硬件升級、新數(shù)據(jù)庫等)適當?shù)嘏浜隙薷能浖?;完善性維護:為了增加新功能,修改已有功能,改造界面,

36、增加HELP等,而修改軟件; 預防性維護:為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎而修改軟件。3為什么說軟件文檔維護和代碼維護同樣重要?這是因為,軟件文檔是影響軟件可維護性的決定因素。4為什么說維護的代價很高?應該怎樣做才能降低維護的代價?一般維護的工作量占生存周期70%以上,維護成本約為開發(fā)成本的4倍(滿足8-2規(guī)則)。維護代價分為:1有形代價:費用已上升至總預算的80%;2無形代價: 占用資源以致延誤開發(fā);修改不及時引起用戶不滿; 維護引入新錯誤,降低了軟件質(zhì)量;等等。3維護工作量的經(jīng)驗模型:M = P + K*ec-d降低維護代價的通常認識是:提高程序的可維護性,

37、這也是軟件工程學的主要目的。5導致維護成本高企的原因主要有哪些?軟件開發(fā)途徑不好,導致軟件可維護性差,原來的開發(fā)人員沒有參與維護,維護成本日益高漲等,從維護工作量的經(jīng)驗模型可以看到,維護工作量和成本將呈指數(shù)增加。6什么是軟件的可維護性?軟件可維護性可定性地定義為:維護人員理解、改正、改動和改進這個軟件的難易程度。7如何提高軟件的可維護性?可以從提高決定軟件可維護性的因素著手,這些因素是:可理解性、可測試性、可修改性、可移植性、可重用性、可靠性、可使用性、效率等。9為什么說文檔是影響軟件可維護性的決定因素?由于長期使用的軟件系統(tǒng)在使用過程中會有多次修改的經(jīng)歷,而文檔應該記載了這些重要的修改,所以

38、文檔比之代碼更為重要。10什么是軟件的系統(tǒng)文檔?系統(tǒng)文檔是指軟件系統(tǒng)從問題定義、需求說明、設計、實現(xiàn)到驗收測試計劃等一系列和系統(tǒng)實現(xiàn)密切相關(guān)的技術(shù)文檔。11什么是軟件的用戶文檔?提供用戶了解、使用、操作和安裝系統(tǒng)的文檔資料。12什么是可重用性?如何通過提高軟件的可重用性來提高軟件的可維護性?可重用性是指同一事物不加修改或稍加修改,就可以在不同環(huán)境多次重復使用。大量使用可重用軟件構(gòu)件,可大幅提高軟件的可維護性。主要體現(xiàn)在兩個方面:1可重用構(gòu)件通常都是組裝成功的部件,加上每次重用又都會進一步完善部件,因此可以大幅提高軟件的可靠性,而改正性維護要求會降低。2很容易修改可重用的軟件構(gòu)件,使之適應新的應

39、用環(huán)境,因此軟件中使用可重用構(gòu)件越多,軟件的適應性維護和完善性維護也越容易。13為什么要進行軟件可維護性復審?目的是提高軟件的可維護性??删S護性復審在軟件開放的不同階段有不同的重點。例如,在分析階段的復審重點是:可靠性、可移植性、可用性。而編碼階段則主要是:可理解性、可修改性、可移植性和效率。14什么是軟件的逆向工程和再工程?軟件逆向工程是指當維護對象缺乏必要的文檔資料時,分析已有程序,尋求比源代碼更高級的抽象表現(xiàn)形式,恢復軟件原有設計的過程。換言之,是一個恢復設計的過程。軟件再工程則是以軟件工程學為指導,對目標軟件進行重新設計、重新編碼和測試的過程。15逆向工程與再工程與軟件的預防性維護有什

40、么樣的關(guān)系?預防性維護是為了改進軟件未來的可維護性或可靠性,或為了給軟件未來的改進奠定更好的基礎而修改軟件的過程。預防性維護就是對軟件將來可能需要的改動,使用逆向工程與再工程方法對軟件進行維護。16假設你的任務是對一個已有軟件進行重大修改,而且只允許你從以下文檔中選取兩份:(a)程序的規(guī)格說明;(b)程序的詳細設計結(jié)果(自然語言描述加上某種設計工具表示);(b)源程序清單(其中有適當數(shù)量的注解)。你將選取哪兩份文檔?為什么這樣選???你打算如何完成這個任務?應該選擇(a)程序的規(guī)格說明和(b)程序的詳細設計結(jié)果。因為是重大修改,所以需要從修改程序規(guī)格說明和詳細設計開始,對開發(fā)文檔進行重大修改,而

41、源碼也會需要重新編制。第八章1為什么要引入面向?qū)ο蠓椒▽W?1、瀑布模型的缺點:僵化2、SA - SD - SP 技術(shù)的缺點:本質(zhì)上是基于過程的設計不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴充和修改。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應用環(huán)境的依賴,可重用性(reusability)較差。2面向?qū)ο蠓椒▽W有哪4個基本要素?對象、類、繼承、消息3面向?qū)ο蠓椒▽W的優(yōu)點主要有哪些?1以object為核心,強調(diào)對現(xiàn)實概念的模擬而不是算法。2以object模擬實體,需求變化不會引起結(jié)構(gòu)的整體變化,因為實體相對穩(wěn)定,故

42、系統(tǒng)也相應穩(wěn)定。3一個class所有的 instances 都可重用它的代碼;由 inheritance 派生出的新的 class 可重用其父類的代碼,并且可以修改、擴充而不影響其父類的使用。4從穩(wěn)定性、Class 的獨立性強、繼承和多態(tài)性、容易理解、容易測試、調(diào)試等幾方面改善了可維護性。4什么是“對象”?它與傳統(tǒng)數(shù)據(jù)有何不同?對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,可以表示為:對象Object: = 身份ID + 方法Method + 屬性Attribute+ 消息Message。與傳統(tǒng)數(shù)據(jù)相比,對象有以下特點: 以數(shù)據(jù)為中心,不設與數(shù)據(jù)無關(guān)的操作; Object主動處

43、理而不 被動地等待被處理,外部只能通過message請求操作; 具有黑盒性:外部操作時,無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法; 具有并行性:不同object各自獨立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信; 模塊獨立性好:內(nèi)聚強( )、耦合松( )5什么是“類”?具有相同數(shù)據(jù)和相同操作的一組對象。6什么是“繼承”?子類自動共享父類的attributes 和methods ,而不必重復定義。子類自動共享父類的attributes 和methods ,而不必重復定義。7什么是模型?軟件開發(fā)為什么要建立模型?模型就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描

44、述。軟件開發(fā)建立模型是為了幫助我們思考問題、定義術(shù)語、作出適當?shù)募僭O,并幫助我們保持定義和假設的一致性。對于較為復雜而不能直接理解的系統(tǒng),特別需要建立模型,其目的是可以減少復雜性。8什么是對象模型?建立對象模型時主要使用哪些圖形符號?這些符號的含義是什么?描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)。對象模型具體是描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。9什么是動態(tài)模型?建立動態(tài)模型時主要使用哪些圖形符號?這些符號的含義是什么?描述系統(tǒng)控制結(jié)構(gòu)。動態(tài)模型具體是表示系統(tǒng)瞬時的控制性質(zhì)。10什么是功能模型?建立功能模型時主要使用哪些圖形符號?描述系統(tǒng)功能。功能模型具體描述的是表明系統(tǒng)應該做什么。第九章1進行面向?qū)ο蠓治龅幕具^程是怎么樣的?需求

45、陳述 快速原型 模型 其中模型 有三個:對象模型、動態(tài)模型、功能模型。2建立對象模型有哪幾個步驟?1、確定類與對象:第1步:列出所有候選對象 第2步:去粗取精2、確定關(guān)聯(lián) 結(jié)構(gòu)層第1步:收集 第2步:篩選刪除 第3步:完善3、劃分主題 4、確立屬性 5、識別繼承關(guān)系及其它修改3復雜問題的對象模型有哪5個層次?主題層、類&對象層、結(jié)構(gòu)層、屬性層、服務層。4建立動態(tài)模型的步驟有哪些?1、編寫腳本,描述事件序列:事件 = 觸發(fā)器 + 接收器 + 參數(shù)2、設想用戶界面 修改原型.3、畫事件跟蹤圖4、畫狀態(tài)圖5如何建立功能模型?1畫出基本系統(tǒng)模型圖2畫出功能級數(shù)據(jù)流圖3描述處理框功能6用面向?qū)ο蠓椒ǚ治?/p>

46、第二章習題17中描述的儲蓄系統(tǒng),試建立它的對象模型、動態(tài)模型和功能模型。第十章1面向?qū)ο笤O計應該遵循哪些準則?簡述每條準則的內(nèi)容,并說明遵循該條準則的必要性。1模塊化2抽象。抽出事物的本質(zhì)特性, 暫不考慮其細節(jié),使設計從具體實現(xiàn)方法中超脫。包括程序抽象、數(shù)據(jù)抽象、參數(shù)抽象。3信息隱蔽。對象封裝。4弱耦合。包括交互耦合、繼承耦合。5強內(nèi)聚。包括服務內(nèi)聚、類內(nèi)聚、一般-特殊內(nèi)聚。6可重用。是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)質(zhì)量的重要途徑。2簡述有助于提高面向?qū)ο笤O計質(zhì)量的每條主要啟發(fā)式規(guī)則的內(nèi)容和必要性。1、設計結(jié)果清晰易懂,應做到: 用詞一致 按習慣用法命名。不同類中相似的方法最好取同一名字。 使用

47、已有的協(xié)議。 盡量減少消息模式的數(shù)目。 避免模糊定義。2、一般-特殊結(jié)構(gòu)的深度應適當(約100個類,則設計72層)3、設計簡單的類(定義不超過一頁紙或兩屏)。應注意: 避免過多屬性; 能用簡單的語句描述一個類的任務; 對象之間合作關(guān)系要簡單;避免過多方法( 7個)。4、使用簡單的協(xié)議,減少消息中傳遞的參數(shù)5、使用簡單的方法(CASE 可考慮用 繼承替代)。6、把設計變動減至最小。3為什么說類構(gòu)件是目前較為理想的可重用軟構(gòu)件?它有哪些重用方式?具備可重用的軟構(gòu)件應有的特點:獨立、可塑、接口清晰(文檔詳盡)重用方式有:實例重用、繼承重用和多態(tài)重用。4什么是繼承耦合?繼承是一般化類和特殊類之間耦合的一種形式。從本質(zhì)上看,通過繼承關(guān)系結(jié)合起來的基類和派生類,構(gòu)成了系統(tǒng)中粒度更大的模塊。因此,與交互耦合相反,繼承的耦合程度會更高。5如何計算軟件重用帶來的凈成本節(jié)省?6試用面向?qū)ο蟮姆椒ㄔO計第二章習題17中描述的儲蓄系統(tǒng)。第十一章1.面向?qū)ο髮崿F(xiàn)應該選用哪種程序設計語言?為什么?應該選擇能夠更完整、更正確地表達問題域語義的面向?qū)ο笳Z言。這是由于面向?qū)ο笳Z言相對非面向?qū)ο蟮恼Z言,其突出的優(yōu)點:一致的表示方法、可重用性、可維護性。2.面向?qū)ο蟪绦蛟O計語言主要有哪些技術(shù)特點?面向?qū)?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論