第一篇:軟件工程復(fù)習(xí)題
第三章 軟件工程
一、軟件工程基本概念
1.軟件是計算機系統(tǒng)中與硬件相互依存的重要部分,包括程序、數(shù)據(jù)及相關(guān)的 文檔。其中,程序 是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計語言描述的、適
合計算機執(zhí)行的指令(語句)序列。
2.下列敘述中,正確的是(D)。A.軟件就是程序清單B.軟件就是存放在計算機中的文件 C.軟件應(yīng)包括程序
清單及運行結(jié)果D.軟件包括程序和文檔3.軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)
4.軟件工程的出現(xiàn)是由于(軟件危機的出現(xiàn))5.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做(軟件危機)
軟件工程概念的出現(xiàn)源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題??傊?,可以將軟件危機歸結(jié)為成本、質(zhì)量、生產(chǎn)率等問題。
6.開發(fā)大型軟件時,產(chǎn)生困難的根本原因是(大型系統(tǒng)的復(fù)雜性)。
7.軟件危機出現(xiàn)于20世紀60年代末,為了解決軟件危機,人們提出了 軟件工程學(xué) 的原理來設(shè)計軟件這就是軟件工程誕生的基礎(chǔ)。
8.下列不屬于軟件工程的3個要素的是(D)A.工具B.過程C.方法D.環(huán)境 軟件工程過程與軟件生命周期
9.軟件工程過程是把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的 資源 和活動。通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為 軟件生命周期 10.軟件生命周期中所花費用最多的階段是(軟件維護)11.軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成(定義、開發(fā)、運行維護)。12.軟件生命周期一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。軟件工程的目標與原則
13.軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學(xué)、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境,主體內(nèi)容是軟件開發(fā)方法學(xué)。軟件工程管理包括:軟件管理學(xué)、軟件工程經(jīng)濟學(xué)、軟件心理學(xué)等內(nèi)容。14.軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括軟件開發(fā)技術(shù)和(軟件工程管理)
15.軟件工程的原則包括抽象、信息隱藏、模塊化、局部化、確定性、一致性、完備性和可驗證性。
軟件開發(fā)工具與軟件開發(fā)環(huán)境
16.開發(fā)軟件時對提高開發(fā)人員工作效率至關(guān)重要的是(先進的軟件開發(fā)工具和環(huán)境)17.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的 軟件工具 集合。常用的軟件開發(fā)方法和技術(shù)可以分為三大類:瀑布型、增量型和變換型。瀑布型開發(fā)方法將軟件生命周期的各項活動規(guī)定為按固定順序連接的若干階段,強調(diào)早期的需求分析和開發(fā)的階段性,強調(diào)產(chǎn)品測試;但是不能適應(yīng)需求的變化。增量型則先建立一個不完全的系統(tǒng),通過對需求的理解再進一步擴充和完善。例:瀑布模型突出的缺點是不適應(yīng)(D)的變動 A.算法B.平臺C)程序語言D.用戶需求
二、結(jié)構(gòu)化分析方法需求分析與需求分析方法
18.在軟件生產(chǎn)過程中,需求信息的給出是(軟件用戶)。19.需求分析中,開發(fā)人員要從用戶那里了解(軟件做什么)。
20.需求分析階段的任務(wù)是確定(軟件系統(tǒng)功能)21.需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求的過程。需求分析將創(chuàng)建所需的數(shù)據(jù)模型、功能模型和 控制模型
22.需求分析階段的工作:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審
下列工具中屬于需求分析常用工具的是(D)。A)PADB)PFDC)N—SD)DFD 結(jié)構(gòu)化分析方法 常用的需求分析方法:
(1)結(jié)構(gòu)化分析方法。主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(SA),面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法(JSD)和面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法(DSSD)(2)面向?qū)ο蟮姆治龇椒?OOA)
23.結(jié)構(gòu)化方法的核心和基礎(chǔ)是 結(jié)構(gòu)化程序設(shè)計理論24.下列不屬于結(jié)構(gòu)化分析的常用工具的是(D)。A)數(shù)據(jù)流圖B)數(shù)據(jù)字典C)判定樹D)PAD圖 25.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是(B)
A)可行性分析 B)需求分析C)詳細設(shè)計D)程序編碼
26.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型.?dāng)?shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是(A)。
A)控制流B)加工C)數(shù)據(jù)存儲D)源和潭 說明:數(shù)據(jù)流圖中的主要圖形元素與說明: 27.在數(shù)據(jù)流圖(DFD)中的箭頭代表的是(數(shù)據(jù)流)28.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示(數(shù)據(jù)的流向)。
29.在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為 數(shù)據(jù)字典軟件需求規(guī)格說明書
30.軟件需求規(guī)格說明書 是需求分析階段的最后結(jié)果 31.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是(D)
A.便于用戶、開發(fā)人員進行理解和交流B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)C.作為確認測試和驗收的依據(jù)D.便于開發(fā)人員進行需求分析
32.(數(shù)據(jù)描述)是對軟件系統(tǒng)所必須解決的問題做出的詳細說明
說明:需求規(guī)格說明書一般包括以下內(nèi)容:概述、數(shù)據(jù)描述、性能描述、功能描述、參考文獻目錄等。其中概述從系統(tǒng)角度描述軟件的目標和任務(wù);功能描述中描述了為解決用戶問題所需要的每一項功能的過程細節(jié);性能描述說明系統(tǒng)應(yīng)達到的性能和應(yīng)該滿足的限制條件、檢測的方法和標準。
三、結(jié)構(gòu)化設(shè)計方法軟件設(shè)計的基本概念
33.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是(D)A)數(shù)據(jù)結(jié)構(gòu)設(shè)計 B)給出系統(tǒng)模塊結(jié)構(gòu) C)定義模塊算法 D)定義需求并建立系統(tǒng)模型
34.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)、接口和過程設(shè)計,其中軟件的過程設(shè)計是指(系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述)。
說明:結(jié)構(gòu)設(shè)計:定義軟件系統(tǒng)各主要部件之間的關(guān)系;數(shù)據(jù)設(shè)計:將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口定義:描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信;過程設(shè)計:把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程性描述。
35.下面不屬于軟件設(shè)計原則的是(C)A.抽象 B.模塊化C.自底向上D.信息隱藏
36.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中內(nèi)聚 反映了模塊內(nèi)各成分之間的聯(lián)系,耦合反映了模塊間互相連接的緊密程度。
37.內(nèi)聚性是信息隱蔽和局部化概念的自然擴展,一個模塊的內(nèi)聚性越強,則該模塊的模塊獨立性越 強。一個模塊與其它模塊的耦合性越強,則它的模塊獨立性越 弱。38.下列敘述中,正確的是(C)
A.接口復(fù)雜的模塊,其耦合程度一定低B.耦合程度弱的模塊,其內(nèi)聚程度一定低C.耦合程度弱的模塊,其內(nèi)聚程度一定高D.以上都不對
39.下列選項中,不屬于模塊間耦合的是(B)。A.數(shù)據(jù)耦合B.同構(gòu)耦合C.異構(gòu)耦D.公用耦合40.軟件設(shè)計中,有
利于提高模塊獨立性的一個準則是(C)。
A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合 概要設(shè)計
41.軟件的概要 設(shè)計又稱為總體結(jié)構(gòu)設(shè)計,其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu),設(shè)計數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫,編寫概要設(shè)計文檔,概要設(shè)計文檔評審。
42.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是(C)
A.詳細設(shè)計 B.需求分析 C.總體設(shè)計 D.編程調(diào)試 43.在概要設(shè)計階段,常用的軟件結(jié)構(gòu)設(shè)計工具是 結(jié)構(gòu)圖(sc),也稱程序結(jié)構(gòu)圖。生成的結(jié)構(gòu)圖中,帶有箭頭的連線表示(模塊之間的調(diào)用關(guān)系),矩形表示模塊。44.在概要設(shè)計階段,一般采用面向數(shù)據(jù)流的設(shè)計方法。數(shù)據(jù)流的類型有 變換型和事務(wù)型。將變換型映射成結(jié)構(gòu)圖稱為 變換分析。將事務(wù)型映射成結(jié)構(gòu)圖稱為 事務(wù)分析。
45.好的軟件設(shè)計結(jié)構(gòu)通常 頂層 高 扇出,中間扇出較少,底層 高 扇入。46.模塊的控制范圍包括它本身以及它所有的從屬模塊,模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受到這個判定影響的所有模塊都屬于這個判定的作用范圍。理想的情況是(模塊的作用范圍應(yīng)在控制范圍內(nèi))詳細設(shè)計
47.詳細設(shè)計 的任務(wù)是為軟件結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。確定怎樣來具體實現(xiàn)所要求的系統(tǒng)。48.為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為(N—S圖)。
49.詳細設(shè)計的結(jié)果基本決定了最終程序的(質(zhì)量)。50.軟件設(shè)計模塊化的目的是 降低復(fù)雜性。51.詳細設(shè)計的典型語言描述工具是(PDL)
結(jié)構(gòu)化分析(需求階段)的常用工具有:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表
結(jié)構(gòu)設(shè)計(概要設(shè)計階段)工具是:結(jié)構(gòu)圖(SC, structure chart)
過程設(shè)計(詳細設(shè)計階段)常見的工具有:程序流程圖、N—S圖、PAD圖(問題分析圖,)和PDL(過程設(shè)計語言)
四、軟件測試 軟件測試的目的52.在軟件測試設(shè)計中,軟件測試的主要目的是(D)。A.實驗性運行軟件B.證明軟件正確 C.找出軟件中全部錯誤D.發(fā)現(xiàn)軟件錯誤而執(zhí)行程序
(注意:不是為了證明軟件的正確性,也不是為了找出全部錯誤)
軟件測試的準則
53.下列敘述中.不屬于測試的特征的是(C)。A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性 軟件測試技術(shù)與方法
軟件測試方法從是否需要執(zhí)行被測試軟件的角度,可以分為 靜態(tài)測試 和 動態(tài)測試 ;按功能劃分為 白盒測試 和 黑盒測試。
靜態(tài)測試包括 代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量量度 等
白盒測試和黑盒測試都屬于 動態(tài)測試
白盒測試的主要方法: 邏輯覆蓋、基本路徑測試 等 黑盒測試的主要方法: 等價類劃分法、邊界值分析法、錯誤推測法、因果圖 等
54.下列不屬于靜態(tài)測試方法的是(B)。
A.代碼檢查B.白盒法C.靜態(tài)結(jié)構(gòu)分析D.代碼質(zhì)量度量
55.在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是(A)。
A.路徑的集合B.循環(huán)的集合C.目標的集臺D.地址的集合56.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例的測試方法是(A)A.黑箱測試法B.白箱測試法C.錯誤推測法D.安裝測試法
57.黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證,不考慮程序內(nèi)部的邏輯結(jié)構(gòu),在軟件接口處進行。常用的黑箱測試有等價分類法、邊界值分析法、因果圖法和錯誤推測法4種。軟件測試的實施
58.軟件測試過程一般按4個步驟進行,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試58.檢查軟件產(chǎn)品是否符合需求定義的過程稱為(A)A.確認測試B.集成測試C.驗證測試D.驗收測試 說明:軟件的測試過程一般按4個步驟進行:單元測試:對軟件設(shè)計的最小單位—模塊進行正確性檢驗的測試,發(fā)現(xiàn)模塊內(nèi)部可能存在的錯誤。由于模塊通常不是一個獨立的程序,不能單獨運行,所以常常需要用到模擬環(huán)境??梢圆捎渺o態(tài)測試和動態(tài)測試(以白盒測試為主)。
集成測試:測試和組裝模塊的過程,主要是發(fā)現(xiàn)與接口有關(guān)的錯誤,依據(jù)是概要設(shè)計說明書。涉及的內(nèi)容有:軟件單元的接口測試、全局數(shù)據(jù)結(jié)構(gòu)測試、邊界條件和非法輸入的測試等。通常采用兩種方式:非增量方式組裝域增量方式組裝
驗收測試(確認測試):驗證軟件的功能和性能以及其
他特性是否滿足了需求規(guī)格說明書中確定的各種需求,以及軟件配置是否完全、正確。采用黑盒測試。系統(tǒng)測試:將軟件與硬件、用戶、數(shù)據(jù)等組合,在實際運行環(huán)境下對整個系統(tǒng)進行集成測試和確認測試。59.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持.其中必要的測試數(shù)據(jù)屬于(D)。
A.硬件資源B.通信資源C.支持軟件D.輔助資源
軟件測試過程中,輔助資源包括測試用例(測試數(shù)據(jù))、測試計劃、出錯統(tǒng)計和最終分析報告等。60.為了提高測試的效率,應(yīng)該(D)
A.隨機選取測試數(shù)據(jù)B.取一切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù) C.在完成編碼以后制定軟件的測試計劃D.集中對付那些錯誤群集的程序
61.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的 輸出結(jié)果 兩部分組成。
四、程序的調(diào)試
軟件調(diào)試(Debug,即排錯)的任務(wù)是診斷和改正程序中的錯誤,與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。軟件測試貫穿整個軟件生命期,調(diào)試主要在開發(fā)階段。
62.程序調(diào)試的基本步驟:錯誤定位、修改和設(shè)計代碼以排除錯誤、進行回歸測試防治引進新的錯誤。63.下列敘述正確的是(D)
A.測試和調(diào)試工作必須由程序編制者自己完成B.測試用例和調(diào)試用例必須完全一致
C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進行測試 D.上述三種說法都不對 軟件調(diào)試方法
64.下列不屬于軟件調(diào)試技術(shù)的是(B)。
A.強行排錯法B.集成測試法C.回溯法D.原因排除法
六、軟件維護
65.軟件維護活動包括以下幾類:校正性維護、適應(yīng)性維護、完善性維護和預(yù)防性維護。
第二篇:軟件工程期末復(fù)習(xí)題
1、軟件定義:問題定義、可行性研究,需求分析
2、軟件開發(fā):總體設(shè)計,詳細設(shè)計,編碼和單元測試,綜合測試
3、軟件維護:改正性維護、適應(yīng)性維護、完善性維護、預(yù)防性維護
4、軟件過程:瀑布模型,快速原型模型,增量模型,螺旋模型,噴泉模型,Rational統(tǒng)一過程,敏捷過程與極限編程,微軟過程
5、從3個方面研究每種解決的可行性:技術(shù)可行性、經(jīng)濟可行性、操作可行性
6、軟件需求分析階段的工作:可以分為以下4個方面:對問題的識別、分析與綜合、編寫需求分析文檔以及需求分析評審
7、設(shè)計原理:模塊化、抽象、逐步求精、信息隱藏和局部化、模塊獨立性(耦合、內(nèi)聚)
8、決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性
一、假設(shè)要求你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點后4位。一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪些軟件生命周期模型?請說明你作出選擇的理由。
答:對這個軟件的需求很明確,實現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗證設(shè)計方案。此外,一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄,因此也無須使用有助于提高軟件可維護性的增量模型或螺旋模型來開發(fā)該軟件。綜上所述,為了開發(fā)這個簡單的軟件,使用大多數(shù)人所熟悉的瀑布模型就可以了
二、假設(shè)你被任命為一家軟件公司的項目負責(zé)人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算采用哪種軟件生命周期模型?為什么?。
答:對這個項目的一個重要要求是,嚴格按照已對外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時應(yīng)該著重考慮哪些模型有助于加快產(chǎn)品開發(fā)的進度。使用增量模型開發(fā)軟件時可以并行完成開發(fā)工作,因此能夠加快開發(fā)進度。
這個項目是開發(fā)該公司已被廣泛應(yīng)用的字處理軟件的新版本,從上述事實至少可以得出3點結(jié)論:第一,舊版本相當(dāng)于一個原型,通過收集用戶對舊版本的反映,較容易確定對新版本的需求,沒必要再專門建立一個原型系統(tǒng)來分析用戶的需求;第二,改公司的軟件工程師對字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗,具有采用增量模型開發(fā)新版字處理軟件所需要的技術(shù)水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應(yīng)該把該軟件的體系結(jié)構(gòu)設(shè)計成開放式的,以利于今后的改進和擴充。綜上所述,采用增量模型來完成這個項目比較恰當(dāng)。
三、考慮一個修改磁帶上主文件的系統(tǒng)。文件管理員把修改信息穿孔在卡片上,系統(tǒng)讀入穿孔卡片上的信息并按照記錄號把修改信息順序排列好。然后系統(tǒng)逐個讀入主文件上的記錄,根據(jù)記錄上的校驗碼校核每個讀入的記錄,丟掉出錯的記錄,按照修改信息修改余下的記錄,產(chǎn)生的新文件存儲在磁盤上。最后,系統(tǒng)輸出一份修改報告供文件管理員參閱。請分層次地畫出上述主文件修改系統(tǒng)的數(shù)據(jù)流圖。
答:本系統(tǒng)的數(shù)據(jù)源點和終點都是文件管理員,他既向系統(tǒng)提供修改信息,又接收系統(tǒng)生成的修改報告。系統(tǒng)功能主要有:接收修改信息,讀主文件,校核記錄,修改原始記錄和產(chǎn)生報告。注意,問題陳述中所描述的“系統(tǒng)安裝記錄號把修改信息順序排列好”,是具體的實現(xiàn)方法。在數(shù)據(jù)流圖中無須描述具體實現(xiàn)方法,因此,在本系統(tǒng)的數(shù)據(jù)流圖中不需要包含“排序”功能。類似地,“文件管理員把修改信息穿孔在卡片上,系統(tǒng)讀入穿孔卡片上的信息”,是系統(tǒng)接收修改信息的具體方法。在數(shù)據(jù)流圖中無須描繪這個具體的實現(xiàn)方案,因此,在本系統(tǒng)的數(shù)據(jù)流圖中不需要包含“穿卡片”和“讀卡片”的功能。
本系統(tǒng)包含的數(shù)據(jù)存儲是:修改信息,主文件和修改后的主文件。圖2.6是本系統(tǒng)的基本系統(tǒng)模型,圖2.7是功能級數(shù)據(jù)流圖。
四、用Jackson圖描繪下述的一列火車的構(gòu)成:
一列火車最多有兩個火車頭。只有一個火車頭時則位于列車最前面,若還有第二個火車頭時,則第二個火車頭位于列車最后面。火車頭既可能是內(nèi)燃機車也可能是電氣機車。車廂分為硬座車廂、硬臥車廂和軟臥車廂等3種。硬座車廂在車內(nèi)所有車廂的前面部分,軟臥車廂在所有車廂的后面部分。此外,在硬臥車廂和軟臥車廂之間還有一節(jié)餐車。
答:Jackson圖善于描繪復(fù)雜事物的組成。用Jackson圖描繪一列火車的構(gòu)成的方法至少有兩種,一種方法是把火車分為一個車頭和兩個車頭兩類,另一種方法是把后車頭作為可選的。圖3.29給出了描繪一列火車的構(gòu)成的Jackson圖。
解法1(b)解法2
五、為方便出乎,某銀行擬開發(fā)計算機儲蓄系統(tǒng),儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶,如果是取款,系統(tǒng)計算利息并印出利息清單給儲戶。寫出問題定義并分析系統(tǒng)的可行性。
答:技術(shù)上的可行性:開發(fā)系統(tǒng)的計算機硬件已經(jīng)非常普及,完全沒有問題;現(xiàn)在的計算機各方面的技術(shù)都非常成熟,相對來說開發(fā)此系統(tǒng)的技術(shù)也要求比較簡單,因此在技術(shù)方面是可行的;同時銀行還必須有一定量的系統(tǒng)管理和維護的專業(yè)人員,在這方面可以通過培訓(xùn)原來的技術(shù)人員成為新的需要的技術(shù)人員,也可以雇用所需這方面的專業(yè)技術(shù)員;若按計劃,在規(guī)定的期限內(nèi),本系統(tǒng)的開發(fā)是可以完成的。
操作可行性:開發(fā)的系統(tǒng)操作要非常簡單,以便適合大人小孩老人各類人們都可以很方便操作使用。還有,要有經(jīng)過培訓(xùn)的專業(yè)人員在指導(dǎo),以便當(dāng)儲戶有什么疑難問題時能及時得到正確的答復(fù) 社會、政策允許的可行性:全部軟件購買正版,機器設(shè)置通過正當(dāng)途徑購得
六、分析圖3.1所示的層次圖,確定每個模塊的內(nèi)聚類型。分析圖3.2,確定模塊之間的耦合類型
圖3.1 計算多地點日平均溫度的程序
答:從圖3.1所示的層次圖可以看出,這個程序的功能是計算若干個指定地點的每日平均溫度。變量sum保存某地一天之內(nèi)在指定的時間取樣點的溫度之和。程序運行時首先初始化變量sum并打開文件,然后讀取地點、時間和溫度等原始數(shù)據(jù),創(chuàng)建用于保存這些數(shù)據(jù)的溫度記錄,接下來計算特定地點的日平均溫度,存儲溫度記錄。重復(fù)調(diào)用“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等模塊,直至計算出并保存好所有指定地點的日平均溫度。最后,打印平均溫度并關(guān)閉文件。
從上述敘述可知,“計算多個地點的日平均溫度”、“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等5個模塊,每個都完成一個單一的功能,模塊內(nèi)所有元素都為完成同一個功能服務(wù),彼此結(jié)合的十分緊密,因此,這5個模塊的內(nèi)聚類型都是功能內(nèi)聚。
初看起來,由于初始化變量sum和打開文件這兩個操作都是在程序運行的初始階段完成的,“初始化變量sum和打開文件” 這個模塊的內(nèi)聚類型似乎是時間內(nèi)聚。但是,初始化變量sum是本程序特有的操作,而打開文件是硬件要求的操作,是任何使用文件的程序都包含的一個操作,并非本程序特有的操作。當(dāng)可以分配兩個或更多個不同級別的內(nèi)聚類型給一個模塊時,規(guī)則是分配最低級別的內(nèi)聚類型給該模塊。因此,“初始化變量sum和打開文件”這個模塊的內(nèi)聚類型都是偶然內(nèi)聚。同理,“關(guān)閉文件并打印平均溫度” 這個模塊的內(nèi)聚類型也是偶然內(nèi)聚。
分析圖3.2,確定模塊之間的耦合類型。
圖3.2 一個程序的模塊互連圖 在圖3.2中已經(jīng)給模塊之間的接口編了號碼,表3.1描述了模塊間的接口。表3.1 模塊接口描述
綜合分析圖3.2和表3.1所提供的信息可知各個模塊之間的耦合情況。例如,當(dāng)模塊p調(diào)用模塊 q時(接口1),它傳遞一個參數(shù)----飛機類型。當(dāng)模塊q把控制返還給模塊p時,它傳回一個狀態(tài)標志。
某些模塊之間的耦合類型是明顯的,例如,模塊p和q之間(接口1)、模塊r和t之間(接口5)及模塊s和u之間(接口6)都是數(shù)據(jù)耦合,因為它們傳遞的都是一個簡單變量。
如果兩個模塊中的一個模塊給另一個模塊傳遞控制元素,也就是說,如果一個模塊明顯地控制另一個模塊的邏輯,則它們之間具有控制耦合。例如,當(dāng)給具有邏輯內(nèi)聚的模塊傳遞功能代碼時就傳遞了控制元素。另一個控制耦合的例子是把控制開關(guān)作為一個參數(shù)傳遞。圖3.2中模塊q調(diào)用模塊r時(接口3)傳遞一個功能代碼,因此,這兩個模塊之間是控制耦合。
圖3.2右側(cè)文字說明,模塊p、t和u更新同一個數(shù)據(jù)庫,因此,它們之間具有公共環(huán)境耦合。
當(dāng)模塊p調(diào)用模塊s時(接口2),如果模塊s使用或更新模塊p傳遞給它的零件清單中的所有元素,則模塊p和s之間的耦合是數(shù)據(jù)耦合;但是,如果模塊s只訪問該清單中的一部分元素,則模塊p和s之間的耦合是特征耦合。模塊q和s之間(接口4)的耦合情況與此類似。由于圖3.2和表3.1中給出的信息尚不足以準確地描述各個模塊的功能,所以不能確定這兩對模塊之間的耦合是數(shù)據(jù)耦合還是特征耦合。
第三篇:GIS軟件工程期末考試復(fù)習(xí)題
《軟件工程》選擇題
一、選擇題(在每小題的四個備選答案中,選出一個正確答案,并將正確答案的序號填在題干的括號內(nèi),每小題1分)
1.軟件產(chǎn)品的開發(fā)主要是(D)。
A.復(fù)制B.再生產(chǎn)C.拷貝D.研制
2.可行性研究的目的是決定(B)。
A.開發(fā)項目B.項目值得開發(fā)否C.規(guī)劃項目D.維護項目
3.SA方法用DFD描述(D)。
A.系統(tǒng)的控制流程B.系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
C.系統(tǒng)的基本加工D.系統(tǒng)的功能
4.進行需求分析可使用多種工具,但(C)是不適用的。
A.數(shù)據(jù)流圖(DFD)B.判定表C.PAD圖D.數(shù)據(jù)字典
5.軟件設(shè)計階段一般又可分為(B)。
A.邏輯設(shè)計與功能設(shè)計B.總體設(shè)計與詳細設(shè)計
C.概念設(shè)計與物理設(shè)計D.模型設(shè)計與程序設(shè)計
6.軟件設(shè)計中劃分模塊的一個準則是(C)。
A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合7.下列語言中哪個語言是低級語言(D)
A.PASCALB.VISUAL BASICC.C++D.匯編語言
14.軟件測試的目的是(B)。
A.試驗性運行軟件B.發(fā)現(xiàn)軟件錯誤
C.證明軟件正確D.找出軟件中全部錯誤
8.軟件測試中,白盒法是通過分析程序的(B)來設(shè)計測試用例的。
A.應(yīng)用范圍B.內(nèi)部邏輯C.功能D.輸入數(shù)據(jù)
9.黑盒法是根據(jù)程序的(C)來設(shè)計測試用例的。
A.應(yīng)用范圍B.內(nèi)部邏輯C.功能D.輸入數(shù)據(jù)
10.把一組具有相似特性的對象組合在一起,稱之為(C)。
A、多態(tài)性B、繼承性C、類D、消息
11.面向?qū)ο蟮闹饕卣鞒龑ο笪ㄒ恍浴⒎庋b、繼承外,還有(A)
A、多態(tài)性B、完整性C、可移植性D、兼容
12.軟件生存周期中時間最長的是(D)階段。
A.需求分析B.概要設(shè)計C.測試D.維護
13.與計算機科學(xué)的理論研究不同,軟件工程是一門(C)學(xué)科。
A.理論性B.原理性C.工程性D.心理性
14.從結(jié)構(gòu)化的瀑布模型看,在它的生命周期中的八個階段中,下面的幾個選項中哪個環(huán)節(jié)
出錯,對軟件的影響最大(C)。
A、詳細設(shè)計階段B、總體設(shè)計階段C、需求分析階段D、測試和運行階段
15.軟件工程的出現(xiàn)主要是由于(C)。
A.程序設(shè)計方法學(xué)的影響B(tài).其它工程科學(xué)的影響 C.軟件危機的出現(xiàn)D.計算機的發(fā)展
16.SA方法的基本思想是(C)
A.自底向上逐步抽象B.自底向上逐步分解C自頂向下逐步分解 D.自頂向下逐步抽象
17、為了提高軟件測試的效率,應(yīng)該(D)。
A.隨機地選取測試數(shù)據(jù)
B.取一切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù)
C.在完成編碼以后制定軟件的測試計劃
D.選擇發(fā)現(xiàn)錯誤可能性較大的數(shù)據(jù)作為測試用例
18.與設(shè)計測試用例無關(guān)的文檔是(A)。
A.項目開發(fā)計劃B.需求規(guī)格說明書C.設(shè)計說明書D.源程序
19.使用白箱測試方法時確定測試數(shù)據(jù)應(yīng)根據(jù)(A)和指定的覆蓋標準。
A.程序的內(nèi)部邏輯B.程序的復(fù)雜程度C.使用說明書D.程序的功能
20.軟件部件的內(nèi)部實現(xiàn)與外部可訪問性的分離,是指軟件的(C)。
A.繼承性B.共享性C.封裝性D.抽象性
21、軟件管理的具體內(nèi)容包括對(D)
A.開發(fā)人員、組織機構(gòu)B.用戶管理、配置管理C.控制、文檔資料 D.(A)、(B)和(C)
22.軟件需求分析階段的工作,可以分為四個方面:對問題的識別.分析與綜合.編寫需求分
析文檔以及(B)
A.軟件的總結(jié)B.需求分析評審C.階段性報告D.以上答案都不正確
23..數(shù)據(jù)流圖是常用的進行軟件需求分析的圖形工具,其主要圖形元素是(C)
A.輸入.輸出.外部實體和加工B.變換.加工.數(shù)據(jù)流和存儲
C.加工.數(shù)據(jù)流.數(shù)據(jù)文件和源或宿D(zhuǎn).變換.數(shù)據(jù)存儲.加工和數(shù)據(jù)流
24、軟件的集成測試工作最好由(D)承擔(dān),以提高集成測試的效果。
A.該軟件的設(shè)計人員B.該軟件開發(fā)組的負責(zé)人
C.該軟件的編程人員D.不屬于該軟件開發(fā)組的軟件設(shè)計人員
25.軟件生命周期的最后的一個階段是(B)
A.書寫軟件文檔B.軟件維護C.穩(wěn)定性測試D.書寫詳細用戶說明McCall提出了表明軟件質(zhì)量的11個質(zhì)量特性。它們是正確性、可靠性、可使用性、完整性、(D)、可移植性、可復(fù)用性、效率、可測試性、互聯(lián)性。
A.模塊獨立性、安全性B.文檔完備性、靈活性
C.可維護性、安全性D.可維護性、靈活性
27、每個對象可用它自己的一組屬性和它可以執(zhí)行的一組(C)來表征。
A、行為B、功能C、操作D、數(shù)據(jù)
28、面向?qū)ο筌浖夹g(shù)的許多強有力的功能和突出的優(yōu)點,都來源于把類組織成一個層次結(jié)構(gòu)的系統(tǒng),一個類的上層可以由父類,下層可以有子類,這種層次結(jié)構(gòu)系統(tǒng)的一個重要性質(zhì)是(B),一個類獲得其父親的全部描述(數(shù)據(jù)和操作)
A、傳遞性B、繼承性C、復(fù)用性D、并行性
29、軟件開發(fā)在需求分析、設(shè)計、編碼、測試這幾個階段所需不同層次的技術(shù)人員大致是
(C)
A.初級、高級、高級、初級B.中級、中級、高級、中級
C.高級、中高級、初級、中高級D.中級、中高級、中級、初級
30、軟件重用的單位是(A)。
A.軟件模塊 B.性能C.系統(tǒng)D.功能
31、軟件開發(fā)常使用的兩種基本方法是結(jié)構(gòu)化和原型化方法,在實際的應(yīng)用中,它們之間的關(guān)系表現(xiàn)為(B)
A、相互排斥B、相互補充C、獨立使用D、交替使用
32、系統(tǒng)分析員是(B)
A、用戶中系統(tǒng)的直接使用者B、用戶和軟件人員的中間人
C、軟件的編程人員D、用戶和軟件人員的領(lǐng)導(dǎo)
33、結(jié)構(gòu)化分析SA方法以數(shù)據(jù)流圖、(D)和加工說明等描述工具,即用直觀的圖和簡潔的語言來描述軟系統(tǒng)模型。
A、DFD圖B、PAD圖C、IPO圖D、數(shù)據(jù)字典
34、在E-R 模型中,包含以下基本成分(C)。
A、數(shù)據(jù)、對象、實體B、控制、聯(lián)系、對象
C、實體、關(guān)系、屬性D、對象、屬性、操作
35、結(jié)構(gòu)設(shè)計是一種應(yīng)用最廣泛的系統(tǒng)設(shè)計方法,是以(A)為基礎(chǔ)、自頂向下、逐步求精和模塊化的過程。
A、數(shù)據(jù)流B、數(shù)據(jù)流圖C、數(shù)據(jù)庫D、數(shù)據(jù)結(jié)構(gòu)
36、初步用戶手冊在(B)階段編寫。
A.可行性研究 B.需求分析 C.軟件總體設(shè)計 D.軟件詳細設(shè)計
37、在軟件結(jié)構(gòu)化設(shè)計中,好的軟件結(jié)構(gòu)設(shè)計應(yīng)該力求做到(B)。
A、頂層扇出較少,中間層扇出較高,底層模塊低扇入
B、頂層扇出較高,中間層扇出較少,底層模塊高扇入
C、頂層扇入較少,中間層扇出較高,底層模塊高扇入
D、頂層扇入較少,中間層扇入較高,底層模塊低扇入
38、軟件詳細設(shè)計主要采用的方法是(D)。
A、模塊設(shè)計B、結(jié)構(gòu)化設(shè)計C、PDL語言D、結(jié)構(gòu)化程序設(shè)計
39、軟件測試的手段有多種,通過人工來評審文檔或程序,借以發(fā)現(xiàn)其中錯誤,該手段是(D)。
A、黑盒測試B、正確性測試C、動態(tài)測試D、靜態(tài)測試
40、黑盒測試在設(shè)計測試用例時,主要需要研究(A)。
A、需求規(guī)格說明與概要設(shè)計說明B、詳細設(shè)計說明
C、項目開發(fā)計劃D、概要設(shè)計說明與詳細設(shè)計說明
41、在整個軟件維護階段所花費的全部工作中,(C)所占比例最大。
A、改正性維護B、適應(yīng)性維護C、完善性維護D、預(yù)防性維護
42.軟件需求分析階段的工作,可以分為以下4個方面:對問題的識別、分析與綜合、編寫需
求分析文檔以及(C)。
A.總結(jié)B.階段性報告C.需求分析評審D.以上答案都不正確
43.在結(jié)構(gòu)化分析方法中,用以表達系統(tǒng)內(nèi)數(shù)據(jù)的運動情況的工具有(A)。
A.數(shù)據(jù)流圖B.數(shù)據(jù)詞典C.結(jié)構(gòu)化語言 D.判定表與判定樹
44.來輔助軟件開發(fā)、運行、維護、管理、支持等過程中的活動的軟件稱為軟件開發(fā)工具,通常也稱為(D)工具。
A.CADB.CAIC.CAMD.CASE
45.螺旋模型綜合了(A)的優(yōu)點,并增加了風(fēng)險分析。
A.瀑布模型和演化模型B.瀑布模型和噴泉模型
C.演化模型和噴泉模型D.原型和噴泉模型
46.SA方法的分析步驟是首先調(diào)查了解當(dāng)前系統(tǒng)的工作流程,然后(A)。
A.獲得當(dāng)前系統(tǒng)的物理模型,抽象出當(dāng)前系統(tǒng)的邏輯模型,建立目標系統(tǒng)的邏輯模型
B.獲得當(dāng)前系統(tǒng)的物理模型,抽象出目標系統(tǒng)的邏輯模型,建立目標系統(tǒng)的物理模型
C.獲得當(dāng)前系統(tǒng)的物理模型,建立當(dāng)前系統(tǒng)的物理模型,抽象出目標系統(tǒng)的邏輯模型
D.獲得當(dāng)前系統(tǒng)的物理模型,建立當(dāng)前系統(tǒng)的物理模型,建立目標系統(tǒng)的物理模型
47.設(shè)計軟件結(jié)構(gòu)一般不確定(C)。
A.模塊的功能B.模塊的接口
C.模塊內(nèi)的局部數(shù)據(jù)D.模塊間的調(diào)用關(guān)系
48.結(jié)構(gòu)分析方法就是面向(D)自頂向下逐步求精進行需求分析的方法。
A.目標B.功能C.對象D.數(shù)據(jù)流
49.軟件是一種(B)產(chǎn)品。
A.物質(zhì)B.邏輯C.有形D.消耗
50.瀑布模型把軟件生命周期劃分為八個階段:問題的定義、可行性研究、軟件需求分析、系統(tǒng)總體設(shè)計、詳細設(shè)計、編碼、測試和運行、維護。八個階段又可歸納為三個大的階段:計劃階段、開發(fā)階段和(C)。
A、詳細計劃B、可行性分析C、運行階段D、測試與排錯
51.結(jié)構(gòu)化分析方法是一種預(yù)先嚴格定義需求的方法,它在實施時強調(diào)的是分析對象的(B)
A、控制流B、數(shù)據(jù)流C、程序流D、指令流
52.在軟件的可行性研究中,可以從不同的角度對軟件的可行性進行研究,其中是從軟件的功能可行性角度考慮的是(B)
A、經(jīng)濟可行性B、技術(shù)可行性C、操作可行性D、法律可行性
53、下述任務(wù)中,不屬于軟件工程需求分析階段的是(D)。
A.分析軟件系統(tǒng)的數(shù)據(jù)要求B.確定軟件系統(tǒng)的功能需求
C.確定軟件系統(tǒng)的性能要求D.確定軟件系統(tǒng)的運行平臺
54、火車是一種陸上交通工具,火車和陸上交通工具之間的關(guān)系是(D)關(guān)系。
A.組裝B.整體成員C.has aD.一般具體
55.瀑布模型的存在問題是(B)
A.用戶容易參與開發(fā)B.缺乏靈活性
C.用戶與開發(fā)者易溝通D.適用可變需求
56.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做(C)
A.軟件工程B.軟件周期
C.軟件危機D.軟件產(chǎn)生
57.軟件測試的目的是(B)。
A. 評價軟件的質(zhì)量B.發(fā)現(xiàn)軟件的錯誤
C. 找出軟件的所有錯誤D.證明軟件是正確的58.需求分析最終結(jié)果是產(chǎn)生(B)。
A.項目開發(fā)計劃B.需求規(guī)格說明書
C.設(shè)計說明書D.可行性分析報告
59.快速原型模型的主要特點之一是(D)
A.開發(fā)完畢才見到產(chǎn)品B.及早提供全部完整的軟件產(chǎn)品
C.開發(fā)完畢后才見到工作軟件D.及早提供工作軟件
60.結(jié)構(gòu)分析方法就是面向(B)自頂向下逐步求精進行需求分析的方法。
A. 目標B.數(shù)據(jù)流C.功能D.對象
61.研究開發(fā)所需要的成本和資源是屬于可行性研究中的(B)研究的一方面。
A.技術(shù)可行性B.經(jīng)濟可行性C.社會可行性D.法律可行性
62.為了提高軟件的可維護性,在編碼階段應(yīng)注意(D)
A.保存測試用例和數(shù)據(jù)B.提高模塊的獨立性
C.文檔的副作用D.養(yǎng)成好的程序設(shè)計風(fēng)格
《軟件工程》填空題
二、填空題(請把答案寫在相應(yīng)的橫線上,每小題1.5分)
1、面向?qū)ο箝_發(fā)方法包括 OOA、OOD、OOP 三部分。
2、在單元測試時,需要為被測模塊設(shè)計 驅(qū)動模塊和樁模塊。
3、軟件工程管理的具體內(nèi)容包括對開發(fā)人員、組織機構(gòu)、用戶、文檔資料等方面的管理。
4、可行性研究的三個方面是 技術(shù)可行性、社會可行性 和__經(jīng)濟可行性__。
5、對象的抽象是___類___。
6、軟件工程包括軟件開發(fā)技術(shù)和__軟件工程管理__兩大部分內(nèi)容。
7、需求分析階段產(chǎn)生的最重要的文檔是__需求規(guī)格說明書_。
8、結(jié)構(gòu)化方法是一種面向數(shù)據(jù)流的開發(fā)方法。由結(jié)構(gòu)化分析、_結(jié)構(gòu)化設(shè)計_、結(jié)構(gòu)化程序設(shè)計構(gòu)成。
9、對象之間進行通信的構(gòu)造叫做_消息_。
10、結(jié)構(gòu)化分析方法的分析策略是__自頂向下逐步求精__。
11、規(guī)定功能的軟件,在一定程度上能從錯誤狀態(tài)自動恢復(fù)到正常狀態(tài),則稱該軟件為___容錯__軟件。
12、軟件生存周期包括問題定義、可行性研究,需求分析,總體設(shè)計,詳細設(shè)計,_編碼_,測試,維護活動,可以將這些活動以適當(dāng)方式分配到不同階段去完成13、___可行性研究___的目的就是用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否能夠開發(fā),是否值得去開發(fā)。
軟件工程簡答題
三、簡答題(簡要回答下列問題,每小題4分*5=20)
1、什么是軟件工程?它目標和內(nèi)容是什么?
軟件工程就是用科學(xué)的知識和技術(shù)原理來定義,開發(fā),維護軟件的一門學(xué)科。
軟件工程目標:付出較低開發(fā)成本;達到要求的功能;取得較好的性能;開發(fā)的軟件易于移植;只需較低的維護費用;能按時完成開發(fā)任務(wù),及時交付使用;開發(fā)的軟件可靠性高。
軟件工程內(nèi)容:包括開發(fā)技術(shù)和開發(fā)管理兩個方面。
2、什么是軟件生存周期?它有哪幾個活動?
軟件生存周期:一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。
包括:可行性分析和項目開發(fā)計劃,需求分析,概要設(shè)計,詳細設(shè)計,編碼,測試,維護。
3、衡量模塊獨立性的兩個標準是什么?各表示什么含義?
內(nèi)聚和耦合。
內(nèi)聚:又稱為塊內(nèi)聯(lián)系,指模塊內(nèi)部各成分之間相互關(guān)聯(lián)的程度,以高內(nèi)聚為設(shè)計目標。耦合:也稱塊間聯(lián)系,模塊之間相互聯(lián)系程度的度量,聯(lián)系越緊密,耦合性越強,獨立性越差,以低耦合為設(shè)計目標。
4、軟件設(shè)計的基本原理包括哪些內(nèi)容?
⑴模塊化:模塊是軟件的組成部分,是具有獨立功能且可命名的一段程序,所有模塊組成整體,可以滿足問題的要求。
⑵抽象:認識復(fù)雜現(xiàn)象過程所使用權(quán)的工具,只考慮事物本質(zhì)的共同特性,忽略細節(jié)和其它因素。通過抽象確定組成軟件的過程實體。
⑶信息隱蔽:將模塊實現(xiàn)自身功能的細節(jié)與數(shù)據(jù)“隱蔽”起來。模塊間僅交換為完成系統(tǒng)功能所必須的信息。
⑷模塊獨立性:每個模塊只完成系統(tǒng)要求的獨立的子功能。
5、軟件生命周期劃分為哪幾個階段?
軟件生命周期分為三個時期八個階段:
軟件定義:問題定義、可行性研究;
軟件開發(fā):需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試;
軟件運行:軟件維護
《軟件工程》應(yīng)用題
四、綜合應(yīng)用題(每小題10分*3=30)
1.給你一個GIS軟件開發(fā)任務(wù)由 你負責(zé),你將怎樣進行?
2.目前常用的GIS開發(fā)、應(yīng)用平臺軟件有哪些,各有什么特點
3.合格的GIS軟件工程負責(zé)人應(yīng)該有什么樣的素質(zhì)和知識?
第四篇:浙江財經(jīng)大學(xué) 2018 軟件工程復(fù)習(xí)題參考答案
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
浙江財經(jīng)大學(xué)2014~2015學(xué)年第1學(xué)期
《軟件工程》課程期末考復(fù)習(xí)題參考答案
一、是非題
1-10.√×√×√ √√××√ 11-20.√××√× ×√√×× 21-30.××√×× ×√√×√
31-40.√××√× √√×√× 41-50.×√√×√ ×√√××
二、單項選擇題
1-10 CBCBB BCCBA 11-20 ADBBD BCBDA 21-30 DCADD BBCDD 31-40 ACBBC CDADB 41-50 DCCBA CACBB 51-60 DCDCC BCACB 61-70 AACDA BBCDC 71-80 DBBAC CCBCA 81-90 ABBDB CBBAA 91-100 DACCD BCBDC 101-110 DBDCB BABAB 111-120 CBDCC DD
三、多項選擇題
1.AC 2.ABCD 3.BD
4.ABCD 6.ABCD 7.ABD 8.ABCD 9.ACD 11.ABCD 12.ACD 13.ACD
14.ABCD 16.ABCD 17.BD 18.ACD
19.ABC 21.ABCD 22.BD 23.ABCD 24.ACD 26.ABCD 27.ACD 28.AC
29.ABCD 31.ABCD 32.AB 33.ABD
34.ABC 36.BCD
37.ABC 38.BCD
39.BD 41.ABD
42.ABCD 43.ABC
44.ABCD 46.ABD 47.BD
48.ABCD
49.AC
第1頁,共9頁
5.AB 10.AC 15.BD 20.ABCD 25.ACD 30.BC 35.BCD 40.ABC 45.BCD 50.ACD
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
51.ABD 56.ABCD 61.ABCD 66.ABC 71.ABC
52.ABC 57.BD 62.BD 67.ABCD 72.ACD 53.ABC 58.ABC 63.ACD 68.ABCD 73.CD
54.ABCD 59.AC 64.ABC 69.ABCD
55.ABCD 60.ABCD 65.ABCD 70.ABCD
四、填空題
1.耦合 2.集成 3.維護 4.等價類劃分法 5.回歸 6.扇入數(shù) 7.單元 8.可維護 9.條件 10.網(wǎng)狀性 11.數(shù)據(jù)字典 12.模塊獨立性 13.因果圖
14.可維護性 15.變換
事務(wù)
16.自頂向下,逐步求精 17.類屬模型
參考模型
18.表示層
應(yīng)用邏輯層
數(shù)據(jù)層 19.需求建模技術(shù) 20.編碼
四、簡述題
1.“軟件危機” 的出現(xiàn)是由于軟件的規(guī)模越來越大,復(fù)雜度不斷增加,軟件需求量增大。而軟件開發(fā)過程是一種高密集度的腦力勞動,軟件開發(fā)的模式及技術(shù)不能適應(yīng)軟件發(fā)展的需要。
2.結(jié)構(gòu)程序設(shè)計:是一種設(shè)計程序的技術(shù),它采用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu)。順序,選擇,循環(huán)。
3.多態(tài)性:子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。
4.任務(wù)是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤。
1.CMM把企來控制軟件過程的能力分為5級:初始級、可重復(fù)級、可定義級、可管理級、)可優(yōu)化級
2.順序型、選擇型、先判定(while)型循環(huán)、后判定(until)型循環(huán)、多情況(case)型選擇。
第2頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
3.Alpha測試是由一個用戶在開發(fā)者的場所進行的,軟件在開發(fā)者對用戶的“指導(dǎo)下”進行測試。經(jīng)α測試后的軟件稱為β版軟件。
4.人員、產(chǎn)品、過程、項目,即所謂 4P(People、Product、Process、Project)。
五、分析題(共30分)1.輸入一個整數(shù)ni=2,j=1n<=3 i<=(n-1)n%i==0是j=0否是否j=0i=ni=i+1是j==0是不是素數(shù)是素數(shù) 2.void Sort(int* list, int n){ for(int i = 1;i < n;i++){
int t = list[i];
int j = i;
while((j > 0)&&(list[j-1] > t))
{
list[j] = list[j-1];
--j;
}
list[j] = t;} }
第3頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
開始i=1i
3.void Sort(int* list, int n){ int i, j, temp;j = 1;while((j < n)){
for(i = 0;i < n-j;i++)
{
if(list[i] > list[i+1])
{
temp = list[i];
list[i] = list[i+1];
list[i+1] = temp;
}
}
j++;} }
第4頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
開始定義i, j, tempj=1j
4.N第5頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
While C(A>0)是否A1A1(B>0)B1C>0是否B2C1C2B3 5.繪出左表得3分,繪出右表得5分。
6.Vehicle+Motor: StringRail TransitBicycleCarBusTrainTrain
7.第6頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
Animal1WingBirdDog21ChickenDuckGoose8.GeometryItem11..*PointPolygonEllipseLineSquareCircle9.在第一層上樓向上移動到達到達上樓向第一層移動向下移動到達空閑下樓超時10.第7頁,共9頁
2..4FootCattleCow
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
登錄失敗登錄登錄成功操作取消登錄取消操作完成操作返回操作取消完成
11.: BillDetailAcceptor : TotalAccountCaculator : BillPrinter : 辦事員1 : 輸入賬單材料()2 : 核對賬單材料()3 : 計算總賬()4 : 打印賬單()
12.一共四條路徑:
a.(y = 3 and z = 2)or(x > 4 and y > 1 and z = 2),預(yù)期結(jié)果為x/y+1 b.(x <= 4 and y > 1 and y!= 3 and z = 2),預(yù)期結(jié)果為x/y c.(x > 4 and y <= 1)or(x > 4 and z!= 2)or(y = 3 and z!= 2),預(yù)期結(jié)果為x+1 d.(x <= 4 and y <= 1)or(x <= 4 and y!= 3 and z!= 2),預(yù)期結(jié)果為x 如:
測試數(shù)據(jù) x=6, y=3, z=2
預(yù)期結(jié)果 x=3
第8頁,共9頁
浙江財經(jīng)大學(xué)課程期末復(fù)習(xí)題參考答案
13.a.4條。b.14 16 9 14 c.1 3 5 6 8 d.16
x=1 x=6 x=2
第9頁,共9頁 x=4, y=4, z=2 x=5, y=1, z=2 x=2, y=1, z=2
第五篇:軟件工程
2.2軟件開發(fā)的基本策略
人們都有自己的世界觀和方法論,能自然而然地運用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會無形地支配其怎么去做事情。軟件工程三十年的發(fā)展,已經(jīng)積累了相當(dāng)多的方法,但這些方法不是嚴密的理論。實踐人員不應(yīng)該教條地套用方法,更重要的是學(xué)會“選擇合適的方法”和“產(chǎn)生新方法”。有謀略才會有好的戰(zhàn)術(shù)。幾千年前,我們的祖先就在打鬧之際寫下了很多心得體會,被現(xiàn)代人很好地運用于工業(yè)和商業(yè)。本節(jié)講述軟件開發(fā)中的三種基本策略:“復(fù)用”、“分而治之”、“優(yōu)化——折衷”。
2.2.1復(fù)用
復(fù)用就是指“利用現(xiàn)成的東西”,文人稱之為“拿來主義”。被復(fù)用的對象可以是有形的物體,也可以是無形的成果。復(fù)用不是人類懶惰的表現(xiàn)而是智慧的表現(xiàn)。因為人類總是在繼承了前人的成果,不斷加以利用、改進或創(chuàng)新后才會進步。所以當(dāng)我們歡度國慶時,要搞清楚祖國遠不止50歲,我們今天享用到的財富還有上下五千年人民的貢獻。進步只是應(yīng)該的,不進步則就可恥了。
復(fù)用的內(nèi)涵包括了提高質(zhì)量與生產(chǎn)率兩者。由經(jīng)驗可知,在一個新系統(tǒng)中,大部分的內(nèi)容是成熟的,只有小部分內(nèi)容是創(chuàng)新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質(zhì)量),而大量成熟的工作可以通過復(fù)用來快速實現(xiàn)(即具有高生產(chǎn)率)。勤勞并且聰明的人們應(yīng)該把大部分的時間用在小比例的創(chuàng)新工作上,而把小部分的時間用在大比例的成熟工作中,這樣才能把工作做得又快又好。
把復(fù)用的思想用于軟件開發(fā),稱為軟件復(fù)用。據(jù)統(tǒng)計,世上已有1000億多行程序,無數(shù)功能被重寫了成千上萬次,真是浪費哪。面向?qū)ο螅∣bject Oriented)學(xué)者的口頭禪就是“請不要再發(fā)明相同的車輪子了”。
將具有一定集成度并可以重復(fù)使用的軟件組成單元稱為軟構(gòu)件(Software Component)。軟件復(fù)用可以表述為:構(gòu)造新的軟件系統(tǒng)可以不必每次從零做起,直接使用已有的軟構(gòu)件,即可組裝(或加以合理修改)成新的系統(tǒng)。復(fù)用方法合理化并簡化了軟件開發(fā)過程,減少了總的開發(fā)工作量與維護代價,既降低了軟件的成本又提高了生產(chǎn)率。另一方面,由于軟構(gòu)件是經(jīng)過反復(fù)使用驗證的,自身具有較高的質(zhì)量。因此由軟構(gòu)件組成的新系統(tǒng)也具有較高的質(zhì)量。利用軟構(gòu)件生產(chǎn)應(yīng)用軟件的過程如圖1.5所示。
軟件復(fù)用不僅要使自己拿來方便,還要讓別人拿去方便,是“拿來拿去主義”。面向?qū)ο蠓椒?,Microsoft公司的COM規(guī)范 [Rogerson 1999],都能很好地用于實現(xiàn)大規(guī)模的軟件復(fù)用。
2.2.2分而治之
分而治之是指把一個復(fù)雜的問題分解成若干個簡單的問題,然后逐個解決。這種樸素的思想來源于人們生活與工作的經(jīng)驗,完全適合于技術(shù)領(lǐng)域。軟件人員在執(zhí)行分而治之的時候,應(yīng)該著重考慮:復(fù)雜問題分解后,每個問題能否用程序?qū)崿F(xiàn)?所有程序最終能否集成為一個軟件系統(tǒng)并有效解決原始的復(fù)雜問題?
圖1.6表示了軟件領(lǐng)域的分而治之策略。諸如軟件的體系結(jié)構(gòu)設(shè)計、模塊化設(shè)計都是分而治之的具體表現(xiàn)。軟件的分而治之不可以“硬分硬治”。不像為了吃一個西瓜或是一只雞,揮刀斬成n塊,再把每塊塞進嘴里粉碎攪拌,然后交由胃腸來消化吸收,象征復(fù)雜問題的西瓜或是雞也就此消失了。
2.2.3優(yōu)化——折衷
軟件的優(yōu)化是指優(yōu)化軟件的各個質(zhì)量因素,如提高運行速度,提高對內(nèi)存資源的利用率,使用戶界面更加友好,使三維圖形的真實感更強等等。想做好優(yōu)化工作,首先要讓開發(fā)人員都有正確的認識:優(yōu)化工作不是可有可無的事情,而是必須要做的事情。當(dāng)優(yōu)化工作成為一種責(zé)任時,程序員才會不斷改進軟件中的算法,數(shù)據(jù)結(jié)構(gòu)和程序組織,從而提高軟件質(zhì)量。
著名的3D游戲軟件Quake,能夠在PC機上實時地繪制高度真實感的復(fù)雜場景。Quake的開發(fā)者能把很多成熟的圖形技術(shù)發(fā)揮到極致,例如把Bresenham畫線、多邊形裁剪、樹遍歷等算法的速度提高近一個數(shù)量級。我第一次看到Quake時不僅感到震動,而且深受打擊。這個PC游戲軟件的技術(shù)水平已經(jīng)遠勝于我所見識到的國內(nèi)領(lǐng)先的圖形學(xué)相關(guān)科研成果。這對我們?nèi)找媸⑿械狞c到完止的研發(fā)工作真是莫大的諷刺。所以當(dāng)我們開發(fā)的軟件表現(xiàn)出很多不可救藥的病癥時,不要怨機器差。真的是我們自己沒有把工作做好,寫不好字卻嫌筆鈍。
就假設(shè)我們經(jīng)過思想教育后,精神抖擻,隨時準備為優(yōu)化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優(yōu)化工作的復(fù)雜之處是很多目標存在千絲萬縷的關(guān)系,可謂數(shù)不清理還亂。當(dāng)不能夠使所有的目標都得到優(yōu)化時,就需要“折衷”策略。
軟件中的折衷策略是指通過協(xié)調(diào)各個質(zhì)量因素,實現(xiàn)整體質(zhì)量的最優(yōu)。就象黨支部副書記扮演和事佬的角色:“…為了使整個組織具有最好的戰(zhàn)斗力,我們要重用幾個人,照顧一些人,在萬不得已的情況下委屈一批人”。
軟件折衷的重要原則是不能使某一方損失關(guān)鍵的職能,更不可以象“舍魚而取熊掌”那樣拋棄一方。例如3D動畫軟件的瓶頸通常是速度,但如果為了提高速度而在程序中取消光照明計算,那么場景就會喪失真實感,3D動畫也就不再有意義了(如果人類全是色盲,計算機圖形學(xué)將變得異常簡單)。
人都有惰性,如果允許濫用折衷的話,那么一當(dāng)碰到困難,人們就會用拆東墻補西墻的方式去折衷,不再下苦功去做有意義的優(yōu)化。所以我們有必要為折衷制定嚴正的立場:在保證其它因素不差的前提下,使某些因素變得更好。
下面讓我們用“優(yōu)化——折衷”的策略解決“魚和熊掌不可得兼”的難題。
問題提出:假設(shè)魚每千克10元,熊掌每千克一萬元。有個倔脾氣的人只有20元錢,非得要吃上一公斤美妙的“熊掌燒魚”,怎么辦?
解決方案:化9元9角9分錢買999克魚肉,化10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。
2.3一些不正確的觀念
本節(jié)例舉并分析一些不正確的軟件工程觀念,可幫助初學(xué)者少犯相似的錯誤。
觀念之一:我們擁有一套講述如何開發(fā)軟件的書籍,書中充滿了標準與示例,可以幫助我們解決軟件開發(fā)中遇到的任何問題。
客觀情況:好的參考書無疑能指導(dǎo)我們的工作。充分利用書籍中的方法、技術(shù)和技巧,可以有效地解決軟件開發(fā)中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現(xiàn)實的工作中,由于條件千差萬別,即使是相當(dāng)成熟的軟件工程規(guī)范,常常也無法套用。(2)軟件技術(shù)日新月異,沒有哪一種軟件標準能長盛不衰。祖?zhèn)髅胤皆谀承╊I(lǐng)域很吃香,而在軟件領(lǐng)域則意味著落后。
觀念之二:我們擁有最好的開發(fā)工具、最好的計算機,一定能做出優(yōu)秀的軟件。
客觀情況:良好的開發(fā)環(huán)境只是產(chǎn)出成果的必要條件,而不是充分條件。如果擁有好環(huán)境的是一群庸人,難保他們不干出南轅北轍的事情。
觀念之三:如果我們落后于計劃,可以增加更多的程序員來解決。
客觀情況:軟件開發(fā)不同于傳統(tǒng)的農(nóng)業(yè)生產(chǎn),人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。因為:(1)新手會產(chǎn)生很多新的錯誤,使項目混亂。(2)老手向新手解釋工作以及交流思想都要花費時間,使實際開發(fā)時間更少。所以科學(xué)的項目計劃很重要,不在乎計劃能提前多少,重在恰如其分。如果用“大躍進”的方式奔向共產(chǎn)主義,只會產(chǎn)生倒退的后果。
觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。
客觀情況:對需求把握得越準確,軟件的修修補補就越少。有些需求在一開始時很難確定,在開發(fā)過程中要不斷地加以改正。軟件修改越早代價越少,修改越晚代價越大,就跟治病一樣道理。
2.4一些有爭議的觀念
本節(jié)探討一些有爭議的觀念,目的不在于得出“正確”或“錯誤”的評斷,而在于爭議會激發(fā)更多理性的思考。
爭議之一:如果軟件運行較慢,是換一臺更快的計算機,還是設(shè)計一種更快的算法?
作者觀點:如果開發(fā)軟件的目的是為了學(xué)習(xí)或是研究,那么應(yīng)該設(shè)計一種更快的算法。如果該軟件已經(jīng)用于商業(yè),則需謹慎考慮:若換一臺更快的計算機能解決問題,則是最快的解決方案。改進算法雖然可以從根本上提高軟件的運行速度,但可能引入錯誤以及延誤進程。技術(shù)狂毫無疑問會選擇后者,因為他們覺得放棄任何可以優(yōu)化的機會就等于犯罪。
類似的爭議還有:是買現(xiàn)成的程序,還是徹底自己開發(fā)?技術(shù)人員和商業(yè)人士常常會有不同的選擇。
爭議之二:有最好的軟件工程方法,最好的編程語言嗎?
作者觀點:在軟件領(lǐng)域永遠沒有最好的,只有更好的。能解決問題的都是好方法或是好語言。程序員在最初學(xué)習(xí)Basic、Fortran、Pascal、C、C++等語言時會感覺一個比一個好,不免有喜新厭舊之舉。而如今 的Visual Basic、Delphi、Visual C++、Java等語言各有所長,真的難分優(yōu)劣。開發(fā)人員應(yīng)該根據(jù)客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質(zhì)量與生產(chǎn)率。
程序設(shè)計是自由與快樂的事情,不要發(fā)誓忠于某某主義而自尋煩惱。
爭議之三:編程時是否應(yīng)該多使用技巧?
作者觀點:就軟件開發(fā)而言,技巧的優(yōu)點在于能另辟蹊徑地解決一些問題,缺點是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優(yōu)點對整個系統(tǒng)而言是微不足道的,而一個錯誤則可能是致命的。作者建議用自然的方式編程,少用技巧。
《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當(dāng)我們在編程時無法判斷是用了技巧還是用了技倆,那就少用?!顿u油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產(chǎn)生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。
爭議之四:軟件中的錯誤是否可按嚴重程度分等級?
作者觀點:在定量分析時,可以將錯誤分等級,以便于管理。微軟的一些開發(fā)小組將錯誤分成四個等級 [Cusumano 1996],如表1.1所示。
一級嚴重:錯誤導(dǎo)致軟件崩潰。
二級嚴重:錯誤導(dǎo)致一個特性不能運行并且沒有替代方案。
三級嚴重:錯誤導(dǎo)致一個特性不能運行但有替代方案。
四級嚴重:錯誤是表面化的或是微小的。
表1.1 錯誤的四個等級
上述分類是非常技術(shù)性的,并不是普適的。假設(shè)某個財務(wù)軟件有兩個錯誤:錯誤A使該軟件死掉,錯誤B導(dǎo)致工資計算錯誤。按表1.1分類,錯誤A屬一級嚴重,錯誤B屬二級嚴重。但事實上B要比A嚴重。工資算多了或者算少了,將會使老板或員工遭受經(jīng)濟損失。而錯誤A只使操作員感到厭煩,并沒有造成經(jīng)濟損失。另一個示例是操作手冊寫錯,按表1.1分類則屬四級嚴重,但這種錯誤可能導(dǎo)致機毀人亡。
開發(fā)人員應(yīng)該意識到:所有的錯誤都是嚴重的,不存在微不足道的錯誤。這樣才能少犯錯誤。
2.5小 結(jié)
軟件工程學(xué)科發(fā)展到今天,已經(jīng)有了很多方法和規(guī)范,學(xué)之不盡。本章只在宏觀上討論了軟件工程的一些
思想,更具體的內(nèi)容將在后面的章節(jié)論述。無論是什么好方法,貴在理解與靈活運用,而不可當(dāng)成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來”。
3程序員與程序經(jīng)理
工作在第一線的軟件開發(fā)人員是程序員和程序經(jīng)理,他們決定著軟件的命運。良好的程序員隊伍和出色的管理是軟件項目成功的必要條件。管理不是管制,不是去卡住人家的脖子,因為程序員不是一群野鴨子。管理的目的是讓大家一起把工作做好,并且讓各人獲得各自的快樂和滿足。當(dāng)一個組織被出色地領(lǐng)導(dǎo)時,雇員甚至不知道他們已被領(lǐng)導(dǎo)。在項目完成時,他們會自豪地說:“看看我們通過努力取得的成績吧”。所以管理者不能老惦記著自己是一個官,而應(yīng)時刻意識到自己是責(zé)任的主要承擔(dān)者。
我們經(jīng)常會聽到有經(jīng)理頭銜的人在高談闊論:“編程我不會,做個項目還不easy?派個人去搞系統(tǒng)分析,回頭再叫幾個程序員把需求譯成程序,不就OK了嗎?”
不懂英語的人準以為easy和OK是貶義詞。要讓軟件項目失敗很容易,只要符合下列條件之一即可:
(1)項目經(jīng)理對軟件一無所知;
(2)技術(shù)負責(zé)人對編程不感興趣;
(3)真真編寫代碼的程序員是臨時雇用的。
如果上述三個條件同時具備,就請放心失敗好了。
讓我們少幻想自己是比爾·蓋茨,先當(dāng)好程序員和程序經(jīng)理再說。
3.1了解程序員
早期的程序員干活能從軟件直通硬件,個個生猛無比。又因他們的作息時間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業(yè)被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書籍也加入了這個行業(yè)?,F(xiàn)在國內(nèi)號稱有上百萬程序員,這支大軍魚龍混雜,已搞不清那些是正規(guī)軍,那些是民兵游擊隊了。