第一篇:軟件工程練習(xí)題1
《軟件工程概論》練習(xí)題
單選15 判斷10
一、概念解釋15
1.軟件2.軟件危機3.軟件生命周期4.概要設(shè)計、詳細設(shè)計5.軟件測試
6.信息隱藏7.耦合8.內(nèi)聚9.黑盒測試10.白盒測試11.對象
12.繼承13.多態(tài)性14.數(shù)據(jù)字典(DD)15.單元測試、集成測試、確認測試
二、簡答題30
1.簡述軟件工程方法學(xué)包括的三要素及其含義。
2.簡述繼承的含義,并通過一個具體例子加以說明。
3什么是軟件危機?軟件危機的表現(xiàn)是什么?其產(chǎn)生的原因是什么?如何消除軟件危機?
4.在軟件設(shè)計過程中需遵守一系列準(zhǔn)則和規(guī)則,模塊化是一條重要準(zhǔn)則:
(1)為什么說只有合理劃分模塊才能保證軟件的開發(fā)成本達到最???
(2)什么是模塊獨立性?如何度量?
5.根據(jù)你了解的知識,簡述“信息隱藏”在軟件設(shè)計中的作用
6.簡述面向?qū)ο蠓治龅幕静襟E
7.需求分析的任務(wù)是什么?
8.快速原型技術(shù)的基本思想是什么?
9.簡述三種面向?qū)ο竽P偷闹饕δ?/p>
第二篇:軟件工程 練習(xí)題
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
軟件工程
練習(xí)題
1.在軟件生產(chǎn)的程序系統(tǒng)時代由于軟件規(guī)模擴大和軟件復(fù)雜性提高的原因?qū)е铝耍ㄜ浖C)
2.面向?qū)ο蟮某绦蛟O(shè)計特征有(多態(tài) 繼承 封裝)
3.程序的三種控制結(jié)構(gòu)(順序結(jié)構(gòu)
選擇結(jié)構(gòu)
循環(huán)結(jié)構(gòu))4.白盒測試技術(shù)有(語句覆蓋
判斷覆蓋
條件覆蓋
條件組合 判斷/條件覆蓋)
5.數(shù)據(jù)字典是用來定義(數(shù)據(jù)流圖)中的各個成分的具體含義的6.結(jié)構(gòu)化分析方法(SA)的一個重要指導(dǎo)思想是(自頂向下,逐步分解)7.jackson設(shè)計方法是由英國的M.jackson提出的,它是一種面向(數(shù)據(jù)結(jié)構(gòu))的軟件設(shè)計方法
8.瀑布模型突出的缺點是不適應(yīng)(用戶需求)的變動
9.汽車有一個發(fā)動機,汽車與發(fā)動機的關(guān)系屬于(整體與部分)關(guān)系 10.進行需求分析可使用多種工具,但(PAD圖)是不適用的 11.軟件結(jié)構(gòu)中兩個模塊之間有調(diào)用關(guān)系,傳遞簡單數(shù)值相當(dāng)于高級語言中的值傳遞,這兩個模塊之間的耦合是(數(shù)據(jù)耦合)12.總體設(shè)計的目的是確定整個系統(tǒng)的(功能及模塊結(jié)構(gòu))13.程序的三種基本結(jié)構(gòu)的共同特點是(只有一個入口和一個出口)14.白盒測試的方法一般適用于(單元)測試
15.軟件配置管理包括(變動控制 配置顯示
配置審計)
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
16.使用白盒測試方法時,確定測試數(shù)據(jù)應(yīng)根據(jù)(程序的內(nèi)部邏輯)和指定的覆蓋標(biāo)準(zhǔn)
17.軟件測試方法有(白盒測試
黑盒測試
動態(tài)測試
功能測試)18.軟件結(jié)構(gòu)圖的形態(tài)特征能反映程序重用率的是(扇入)19.為了提高模塊的獨立性,模塊的內(nèi)部最好的是(功能內(nèi)聚)20.軟件開發(fā)過程中,抽取盒整理用戶需求建立問題及模型的過程叫(面向?qū)ο蠓治觯?/p>
21.完成系統(tǒng)邏輯模型的開發(fā)階段是(分析設(shè)計)22.屬于軟件開發(fā)工具的是(報表生成器)
23.系統(tǒng)可行性研究主要從(技術(shù)可行性
經(jīng)濟可行性
操作可行性)幾個方面進行
24.數(shù)據(jù)字典定義數(shù)據(jù)流或數(shù)據(jù)存儲組成時,使用了若干符號,其中(.....)的含義是(或)
25.劃分模塊時(作用范圍在其控制范圍之內(nèi))
26.(模塊)是指具有相對獨立的、由數(shù)據(jù)說明、執(zhí)行語句等程序?qū)ο髽?gòu)成的集合
27.軟件工程方法的目的是:使軟件生產(chǎn)規(guī)范化和工程化,而軟件工程的方法得以實施的主要保證是(軟件開發(fā)工具和軟件開發(fā)環(huán)境)28.(螺旋模型)引入了“風(fēng)險驅(qū)動”思想,使用于大規(guī)模的內(nèi)部開發(fā)項目
29.構(gòu)造原型時,主要考慮(原型要體現(xiàn)的特征)
30.數(shù)據(jù)字典是軟件需求分析階段最重要的工具之一,最基本的功能
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
是(數(shù)據(jù)定義)
31.面向數(shù)據(jù)流的設(shè)計方法把(數(shù)據(jù)流)映射成軟件結(jié)構(gòu) 32.內(nèi)聚程度最低的是(偶然)內(nèi)聚
33.軟件需求規(guī)格說明的內(nèi)容不應(yīng)包括(算法的詳細描述)34.在E-R模型中,包含的基本成分是(實體
聯(lián)系
屬性)35.詳細設(shè)計的基本任務(wù)是確定每個模塊的(算法)設(shè)計
36.面向?qū)ο蟮脑O(shè)計方法主要是建立三類模型,即(對象模型
動態(tài)模型
功能模型)
37.面向?qū)ο螅?0)由(對象+類+繼承+消息)組成 38.軟件維護組織成員不包括(編程人員)39.(代碼行技術(shù))定量估算。源程序行數(shù)
40.軟件生存中期由(分析
設(shè)計
實現(xiàn))三個時期組成41.軟件開發(fā)環(huán)境的目標(biāo)是(提高軟件成產(chǎn)率和提高軟件質(zhì)量)42.信息建模的核心概念是(和)43.數(shù)據(jù)流可分為(變換型和事務(wù)型)
44.面向?qū)ο笤O(shè)計主要包括(系統(tǒng)結(jié)構(gòu))設(shè)計、系統(tǒng)信息量設(shè)計和(數(shù)據(jù)結(jié)構(gòu))設(shè)計和劃分程序階段
45.在數(shù)據(jù)流圖中,沒有任何具體的物理元素,它僅僅描述數(shù)據(jù)在系統(tǒng)中的(流動和處理)的情況
46.模塊獨立性可通過(內(nèi)聚和耦合)兩方面來衡量
47.軟件開發(fā)是一個自頂向下逐步細化和求精的過程,而軟件測試是一個(自低向上)的集成過程
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
48.常見的軟件開發(fā)模型有(瀑布
圓形
螺旋)三種
49.從軟件工程管理的角度,軟件設(shè)計分為(概念設(shè)計和詳細設(shè)計)兩步完成
50.概要設(shè)計過程由(確定設(shè)計方案和結(jié)構(gòu)設(shè)計)兩個階段組成 51.動態(tài)測試既可以采用(白盒測試)對模塊進行邏輯測試,又可以用(黑盒)做功能測試
52.類之間的結(jié)構(gòu)關(guān)系主要有兩種,(一般與特殊結(jié)構(gòu)關(guān)系和整體與部分結(jié)構(gòu)關(guān)系)
53.(工程網(wǎng)絡(luò)技術(shù))能顯示地表示各個作業(yè)彼此間的依賴關(guān)系,從中容易事變出來關(guān)鍵路行和關(guān)鍵任務(wù)
54.自頂向下結(jié)合的漸增式測試方法,在組合模型時有兩種組合策略(深度優(yōu)先和寬度優(yōu)先)策略
55.模塊是一般具有如下三個屬性(功能)描述該模塊實現(xiàn)什么功能,(邏輯)描述模塊內(nèi)部怎么做,(狀態(tài))描述該模塊使用條件和環(huán)境 56.為了便于對照檢測,測試用例應(yīng)由(輸入數(shù)據(jù)和預(yù)期輸出結(jié)果)兩部分組成
57.(軟件測試階段)是在軟件投入運行前對軟件需求分析,軟件設(shè)計規(guī)格說明和軟件編碼進行查錯和糾錯
58.軟件維護的四類維護活動是(完善
預(yù)防
適應(yīng)性
改正)維護
59.軟件系統(tǒng)中常用(數(shù)據(jù)文件)存放數(shù)據(jù),供系統(tǒng)中各模塊共享系統(tǒng)外部做通信用,其設(shè)計主要是(數(shù)據(jù)格式)設(shè)計
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
60.(模塊)是指具有相對獨立性的,由數(shù)據(jù)說明,執(zhí)行語句等程序?qū)ο髽?gòu)成的集合
61.類是一組具有(相同數(shù)據(jù)結(jié)構(gòu)和相同數(shù)據(jù)類型)的對象集合 62.影響軟件可維護性的因素主要有(可理解性
可測試性
可修改性
可移植性
可使用性)
63.確認測試可以發(fā)現(xiàn)軟件系統(tǒng)是否符合用戶的(功能和性能)需求的
64.從結(jié)構(gòu)化的瀑布模型看,在軟件生存周期的幾個階段中,對軟件影響最大的是(需求分析)階段
65.模塊內(nèi)聚最好的是(功能內(nèi)聚)最差的是(偶然內(nèi)聚)66.軟件文檔可分為(用戶文檔和系統(tǒng)文檔)兩類
67.成本--效益分析的目的是從(經(jīng)濟)角度評價開發(fā)一個新軟件項目是否可行
68.(系統(tǒng)流程圖)中各個元素表達了系統(tǒng)中各種元素之間(信息流動)情況 簡答
1.軟件危機產(chǎn)生的原因 軟件日益復(fù)雜和龐大 軟件開發(fā)管理困難復(fù)雜 軟件開發(fā)技術(shù)落后 生產(chǎn)方式落后 開發(fā)工具落后
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
軟件開發(fā)費用不斷增加
2.結(jié)構(gòu)化設(shè)計步驟
對數(shù)據(jù)流圖進行復(fù)審,必要時修改或細化 根據(jù)流圖確定軟件結(jié)構(gòu)屬于變換型還是事務(wù)型 把數(shù)據(jù)流圖映射成初始結(jié)構(gòu)圖 改進結(jié)構(gòu)圖,使設(shè)計更完善 3.結(jié)構(gòu)化程序設(shè)計的主要思想 自頂向下,逐步求精的設(shè)計方法
使用三種基本控制結(jié)構(gòu),單入口、單出口來構(gòu)造程序 4.決定軟件可維護性的因素 系統(tǒng)大小,系統(tǒng)年齡 結(jié)構(gòu)合理性,模塊化 層次組織 系統(tǒng)文檔結(jié)構(gòu) 命令的格式和約定 程序的復(fù)雜性等等
5.數(shù)據(jù)字典與數(shù)據(jù)流圖的關(guān)系
數(shù)據(jù)字典與數(shù)據(jù)流圖相輔相成,互相配合,分析員應(yīng)遵守以下約定,有關(guān)數(shù)據(jù)流向在數(shù)據(jù)流圖中,數(shù)據(jù)組成在數(shù)據(jù)字典中描述,有關(guān)數(shù)據(jù)的加工細節(jié)在數(shù)據(jù)字典中描述,編寫數(shù)據(jù)字典時不能遺漏和重復(fù) 6.軟件測試和調(diào)試的目的的區(qū)別 測試的目的是判斷和發(fā)現(xiàn)軟件是否有錯
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
調(diào)試的目的是定位軟件錯誤并糾正 7.如何提高程序的可維護性 建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級 進行明確的質(zhì)量保證審查 選擇可維護的程序設(shè)計語言 改進程序的文檔
8.靜態(tài)測試和動態(tài)測試的區(qū)別
靜態(tài)分析技術(shù)不執(zhí)行被測試軟件,可對需求分析說明書、軟件設(shè)計說明書、源程序...9.需求分析與軟件設(shè)計二個階段的任務(wù)主要區(qū)別是什么 需求分析定義軟件的用戶需求即做什么 軟件設(shè)計定義軟件實現(xiàn)細節(jié)即研究如何實現(xiàn)軟件 10.軟件測試目的
發(fā)現(xiàn)程序錯誤而執(zhí)行程序的過程
好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤 成功的測試方案是發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤的測試 11.文檔在軟件工程中的作用 提高過程能見度 提高開發(fā)效率
作為階段工作成果和結(jié)束標(biāo)志 記錄有關(guān)信息便于使用于維護 提供運行、維護、培訓(xùn)的有關(guān)資料
精心收集
精心編輯
精致閱讀
如需請下載!
演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案
12.軟件測試步驟,說明這些步驟的測試對象是什么 單元測試
對象是段遠模塊
集成測試
對象是組裝后的程序模塊 確認測試
對象是可運行的目標(biāo)軟件系統(tǒng)
精心收集
精心編輯 精致閱讀
如需請下載!
第三篇:軟件工程練習(xí)題
練習(xí)題
一、判斷題
1.螺旋模型是在瀑布模型和增量模型的基礎(chǔ)上增加了風(fēng)險分析活動。(錯)2.軟件的模塊數(shù)越少,其軟件成本越低。(錯)3.JAVA語言編譯器是一個CASE工具。(對)。
4.發(fā)現(xiàn)錯誤多的程序模塊,一般殘留在模塊中的錯誤也多。(對)
5..軟件是指用程序設(shè)計語言(如PASCAL ,C,VISUAL BASIC 等)編寫的程序,軟件開發(fā)實際上就是編寫程序代碼。(錯)
6.軟件模塊之間的耦合性越弱越好。(對)7.數(shù)據(jù)庫設(shè)計說明書是一個軟件配置項(對)8.軟件測試就是程序測試。(錯)
9.PDL的語法是開放式的,其內(nèi)層語法是確定的,而外層語法則不確定。(錯)10.根據(jù)編程規(guī)范,在對方法命名時, 方法名稱的第一個單詞常常采用一個名詞。(錯)11.在面向?qū)ο蟮能浖_發(fā)方法中,每個類都存在其相應(yīng)的對象,類是對象的實例,對象是生成類的模板。(錯)
12.可行性研究的目的不是解決問題,而是確定問題是否值得去解決。13.過程描述語言可以用于描述軟件的系統(tǒng)結(jié)構(gòu)。(錯)
14.如果通過軟件測試沒有發(fā)現(xiàn)錯誤,則說明軟件是正確的。(錯)
15.快速原型模型可以有效地適應(yīng)用戶需求的動態(tài)變化。(對)
16.模塊化,信息隱藏,抽象和逐步求精的軟件設(shè)計原則有助于得到高內(nèi)聚,低耦合度的軟件產(chǎn)品。(對)
17.集成測試主要由用戶來完成。(錯)
18.隨著軟件技術(shù)的發(fā)展,人們逐漸認識到編碼不僅要強調(diào)效率還要強調(diào)清晰。(對)19.確認測試計劃應(yīng)該在可行性研究階段制定(錯)
20.白盒測試無需考慮模塊內(nèi)部的執(zhí)行過程和程序結(jié)構(gòu),只要了解模塊的功能即可。(錯)
21.軟件概要設(shè)計包括軟件系統(tǒng)結(jié)構(gòu)設(shè)計以及數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫設(shè)計。(對)
22.一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。(對)
23.在可行性研究中最難決斷和最關(guān)鍵的問題是經(jīng)濟可行性。(╳)24.耦合是指一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。(╳)25.一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。(√)
26.一筆交易、一個動作、甚至操作人員按一個按鈕都可以看做是一次事物。(√)27.集成測試時,一般希望較早地發(fā)現(xiàn)系統(tǒng)功能的錯誤,所以經(jīng)常采用自底向上的漸增式測試。(錯)28.程序要能直截了當(dāng)?shù)卣f明程序員的用意。(對)
29.編程作業(yè)中,代碼的檢查是對程序進行動態(tài)分析。(錯)30.概要設(shè)計階段完成的主要文檔是概要設(shè)計說明書。(√)
31.發(fā)現(xiàn)錯誤多的程序模塊,一般殘留在模塊中的錯誤也多。(對)32.在做程序的單元測試時,一般樁模塊比驅(qū)動模塊容易編寫。(錯)
33.過大的模塊可能是由于分解不充分造成的,即使降低模塊獨立性也必須繼續(xù)分解。(╳)34.代碼版本控制的優(yōu)點之一是能獲得版本控制工具中保存的任何版本。(√)35.在設(shè)計模塊時,其寬度和深度要適當(dāng)。(對)
36.37.38.39.40.程序設(shè)計語言中應(yīng)絕對禁止使用GOTO語句。(╳)類是關(guān)于對象性質(zhì)的描述,由方法和數(shù)據(jù)組成。(√)
隨著軟件技術(shù)的發(fā)展,人們逐漸認識到編碼不僅要強調(diào)效率還要強調(diào)清晰。(√)為保證程序的安全,必須做到程序中沒有任何錯誤存在,即容錯。(╳)如果把軟件開發(fā)所需的資源畫成一個金字塔,人是最基本的資源。(√)
41.功能性注釋嵌在源程序體中,用以解釋其后的語句或程序段是在怎么做。(錯)42.模塊耦合的強弱取決于模塊間接口的復(fù)雜程度。(對)
二、名字解釋: 1.軟件: 2.軟件危機: 3.軟件工程: 4.軟件生命周期: 5.軟件過程: 6.瀑布模型: 7.快速原型模型: 8.增量模型: 9.螺旋模型: 10.抽象: 11.模塊化: 12.逐步求精: 13.耦合: 14.內(nèi)聚: 15.模塊獨立: 16.信息隱蔽: 17.結(jié)構(gòu)程序設(shè)計: 18.測試用例: 19.單元測試: 20.白盒測試: 21.黑盒測試: 22.對象: 23.等價劃分:
三、選擇題
1.軟件工程的概念是哪年提出的()。A.1988 B.1968 C.1948 D.1928 2.瀑布模型的關(guān)鍵不足在于()。
A.過于簡單 B.各個階段需要進行評審 C.過于靈活 D.不能適應(yīng)需求的動態(tài)變更 3.以下哪一項不是軟件危機的表現(xiàn)形式()。
A.開發(fā)的軟件不滿足用戶需要 B.開發(fā)的軟件可維護性差 C.開發(fā)的軟件價格便宜 D.開發(fā)的軟件可靠性差
4.軟件可行性研究實質(zhì)上是要進行一次()需求分析、設(shè)計過程。A.簡化、壓縮的 B.詳細的 C.徹底的 D.深入的
5.結(jié)構(gòu)化設(shè)計是一種面向()的設(shè)計方法。A.數(shù)據(jù)流 B.模塊 C.數(shù)據(jù)結(jié)構(gòu) D.程序
6.與確認測試階段有關(guān)的文檔是()。
A.需求規(guī)格說明書 B.概要設(shè)計說明書 C.詳細設(shè)計說明書 D.源程序
7.軟件開發(fā)的需求活動,其主要任務(wù)是()。A.給出軟件解決方案 B.給出系統(tǒng)模塊結(jié)構(gòu)
C.定義模塊算法 D.定義需求并建立系統(tǒng)模型 8.以下說法錯誤的是()。
A.文檔僅僅描述和規(guī)定了軟件的使用范圍及相關(guān)的操作命令 B.文檔也是軟件產(chǎn)品的一部分,沒有文檔的軟件就不成軟件
C.軟件文檔的編制在軟件開發(fā)工作中占有突出的地位和相當(dāng)大的工作量 D.高質(zhì)量文檔對于發(fā)揮軟件產(chǎn)品的效益有著重要的意義
9.一個項目是否開發(fā),從經(jīng)濟上來說是否可行,歸根結(jié)底是取決于()。A.成本估算
B.項目計劃
C.工程管理
D.工程網(wǎng)絡(luò)圖
10.在面向?qū)ο蟮脑O(shè)計中,我們應(yīng)遵循的設(shè)計準(zhǔn)則除了模塊化、抽象、低耦合、高內(nèi)聚以外,還有()。
A.隱藏復(fù)雜性 B.信息隱蔽
C.經(jīng)常類的復(fù)用 D.類的開發(fā) 11.面向?qū)ο蟮闹饕卣鞒龑ο笪┮恍?、封裝、繼承外,還有()。A.多態(tài)性 B.完整性 C.可移植性 D.兼容性 12.下面說法正確的是()。
A.經(jīng)過測試沒有發(fā)現(xiàn)錯誤說明程序正確 B.測試的目標(biāo)是為了證明程序沒有錯誤
C.成功的測試是發(fā)現(xiàn)了迄今尚未發(fā)現(xiàn)的錯誤的測試 D.成功的測試是沒有發(fā)現(xiàn)錯誤的測試
13以下哪一條不屬于注釋的基本原則?()A.注釋應(yīng)該增加代碼的清晰度。B.避免使用裝飾性內(nèi)容。
C.注釋在源代碼中的比例至少為25%.D.注釋信息不僅要包括代碼的功能,還應(yīng)給出原因。
14.()有效地檢測輸入條件的各種組合可能會引起的錯誤。A.等價類劃分 B.邊界值分析 C.錯誤推測 D.因果圖
15火車是一種陸上交通工具?;疖嚭完懮辖煌üぞ咧g的關(guān)系是()關(guān)系。A.組裝 B.整體部分 C.has a D.一般特殊
16、軟件維護產(chǎn)生的副作用,是指()
A、開發(fā)時的錯誤 B、隱含的錯誤 C、因修改軟件而造成的錯誤 D、運行時誤操作
17、使用程序設(shè)計的控制結(jié)構(gòu)導(dǎo)出測試用例的測試方法是()A、黑盒測試 B、白盒測試
C、邊界測試 D、系統(tǒng)測試
18、軟件詳細設(shè)計的主要任務(wù)是確定每個模塊的()A、算法和使用的數(shù)據(jù)結(jié)構(gòu) B、外部接口 C、功能 D、編程
19、軟件結(jié)構(gòu)圖的形態(tài)特征能反映程序重用率的是()A、深度 B、寬度 C、扇入 D、扇出
20、為了提高模塊的獨立性,模塊內(nèi)部最好是()A、邏輯內(nèi)聚 B、時間內(nèi)聚 C、功能內(nèi)聚 D、通信內(nèi)聚
21、軟件是一種()
A、程序 B、數(shù)據(jù) C、邏輯產(chǎn)品 D、物理產(chǎn)品
22、需求分析最終結(jié)果是產(chǎn)生()
A、項目開發(fā)計劃 B、需求規(guī)格說明書 C、設(shè)計說明書 D、可行性分析報告
23、因計算機硬件和軟件環(huán)境的變化而作出的修改軟件的過程稱為()A、糾正性維護
B、適應(yīng)性維護 C、完善性維護
D、預(yù)防性維護
24、下列屬于維護階段的文檔是()A、軟件規(guī)格說明
B、用戶操作手冊
C、軟件問題報告
D、軟件測試分析報告
25、若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現(xiàn)從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設(shè)計這組測試用例的方法是()A、條件覆蓋法
B、等價分類法
C、邊界值分析法
D、錯誤推測法 26.如果一個程序常常需要根據(jù)多種條件的復(fù)雜組合,選擇執(zhí)行相應(yīng)的動作,則以下哪種設(shè)計工具比較適合描述它?()
A.判定表
B.流程圖
C.PDL
D.N-S圖
28、經(jīng)過嚴密的軟件測試后所提交給用戶的軟件產(chǎn)品中()
A、軟件不再包含任何錯誤 B、還可能包含少量軟件錯誤 C、所提交給用戶的可執(zhí)行文件不會含有錯誤 D、文檔中不會含有錯誤。
29、等價劃分測試方法屬于()
A、黑盒測試 B、白盒測試
C、邊界測試 D、系統(tǒng)測試
30、軟件按照設(shè)計的要求,在規(guī)定時間和條件下達到不出故障,持續(xù)運行的要求的質(zhì)量特性稱為()A.可用性
B.可靠性
C.正確性
D.完整性
31、確認軟件的功能是否與需求規(guī)格說明書中所要求的功能相符的測試屬于()
A、集成測試 B、恢復(fù)測試
C、確認測試 D、單元測試
33、從心理學(xué)角度看,一次大模塊分解為多少個子模塊為宜。()
A、3±1 B、7±2 C、15±1 D、18±2
34、結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()
A、程序的規(guī)模 B、程序的效率 C、程序設(shè)計語言的先進性 D、程序易讀性
35、在用戶界面層次上對軟件進行測試屬于哪種測試方法()
A、黑盒測試 B、白盒測試
C、邊界測試 D、系統(tǒng)測試
36、對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作()于對象的統(tǒng)一體中。A、結(jié)合 B、隱藏
C、封裝 D、抽象
37、()是比較理想的可重用軟構(gòu)件。
A.子程序庫 B.源代碼包含文件 C.對象 D.類
38、軟件設(shè)計啟發(fā)規(guī)則不包括()A.在耦合方式上降低模塊間接口的復(fù)雜性 B.模塊功能應(yīng)該可以預(yù)測
C.將模塊的控制域保持在其作用域內(nèi)
D.設(shè)計單入口單出口的模塊
39、軟件生存周期中時間最長的是()階段。
A、總體設(shè)計 B、需求分析 C、軟件測試 D、軟件維護
40、為了提高模塊的獨立性,模塊之間的聯(lián)系最好的是()。
A、公共耦合 B、控制耦合 C、內(nèi)容耦合 D、數(shù)據(jù)耦合
41、軟件概要設(shè)計結(jié)束后得到()
A、初始化的軟件結(jié)構(gòu)圖 B、優(yōu)化后的軟件結(jié)構(gòu)圖 C、模塊的接口圖和詳細算法 D、程序編碼
42、為使得開發(fā)人員對軟件產(chǎn)品的各個階段工作都進行周密的思考,從而減少返工,所以()的編制是很重要的。
A、需求說明 B、概要說明 C、軟件文檔 D、測試計劃
43、汽車有一個發(fā)動機,因而汽車與發(fā)動機之間的關(guān)系是()關(guān)系。
A、一般與特殊 B、整體與部分 C、分類關(guān)系 D、is a 關(guān)系
44、軟件部件的內(nèi)部實現(xiàn)與外部可訪問性的分離,是指軟件的()。
A、繼承性 B、共享性 C、封裝性 D、抽象性
45、單元測試是發(fā)現(xiàn)編碼錯誤,集成測試是發(fā)現(xiàn)模塊的接口錯誤,確認測試是為了發(fā)現(xiàn)功能錯誤,那么系統(tǒng)測試是為了發(fā)現(xiàn)()的錯誤。
A、接口錯誤 B、編碼錯誤
C、性能、質(zhì)量不合要求 D、功能錯誤 46.模塊的基本屬性不包括()
A 功能 B 接口 C 獨立性 D 邏輯
47、許多產(chǎn)品的質(zhì)量問題源于新產(chǎn)品的開發(fā)設(shè)計階段,因此在產(chǎn)品()階段就應(yīng)采取有力措施來消滅由于設(shè)計原因而產(chǎn)生的質(zhì)量隱患。
A、軟件評審 B、軟件測試 C、開發(fā)設(shè)計 D、軟件度量
48、下列幾種類型中,耦合性最弱的是()。
A、內(nèi)容型 B、控制型 C、公共型 D、數(shù)據(jù)型
50.瀑布模型的關(guān)鍵不足在于
A、過于簡單 B、不能適應(yīng)需求的動態(tài)變更C、過于靈活 D、各個階段需要進行評審
51.內(nèi)聚程度最高的是()A功能內(nèi)聚
B巧合內(nèi)聚
C 過程內(nèi)聚
D 信息內(nèi)聚
52.以下哪一項不是軟件危機的表現(xiàn)形式(3)(1)成本高(2)生產(chǎn)率低(3)技術(shù)發(fā)展快(4)質(zhì)量得不到保證 53.以下哪一項不是面向?qū)ο蟮奶卣鳎?)
(1)多態(tài)性(2)繼承性(3)封裝性(4)過程調(diào)用 55.軟件維護的副作用主要有以下哪幾種(3)
(1)編碼副作用、數(shù)據(jù)副作用、測試副作用(2)編碼副作用、數(shù)據(jù)副作用、調(diào)試副作用(3)編碼副作用、數(shù)據(jù)副作用、文檔副作用(4)編碼副作用、文檔副作用、測試副作用
56.軟件項目計劃一般不包括以下哪項內(nèi)容(4)
(1)培訓(xùn)計劃(2)人員安排(3)進度安排(4)軟件開發(fā)標(biāo)準(zhǔn)的選擇和制定 58.以下哪種測試方法不屬于白盒測試技術(shù)(2)
(1)基本路徑測試(2)邊界值分析測試(3)循環(huán)覆蓋測試(4)邏輯覆蓋測試 59.“軟件危機”是指()A.計算機病毒的出現(xiàn)
B.利用計算機進行經(jīng)濟犯罪活動
C.軟件開發(fā)和維護中出現(xiàn)的一系列問題 D.人們過分迷戀計算機系統(tǒng)
61.為了提高模塊的獨立性,模塊之間最好是()A.控制耦合 B.公共耦合 C.內(nèi)容耦合 D.數(shù)據(jù)耦合 62.下面關(guān)于PDL語言不正確的說法是()A.PDL是描述處理過程怎么做 B.PDL是只描述加工做什么 C.PDL也稱為偽碼
D.PDL的外層語法應(yīng)符合一般程序設(shè)計語言常用的語法規(guī)則 63.詳細設(shè)計與概要設(shè)計銜接的圖形工具是()A.DFD圖 B.程序圖 C.PAD圖 D.SC圖 65.下列關(guān)于功能性注釋不正確的說法是()A.功能性注釋嵌在源程序中,用于說明程序段或語句的功能以及數(shù)據(jù)的狀態(tài) B.注釋用來說明程序段,需要在每一行都要加注釋 C.可使用空行或縮進,以便很容易區(qū)分注釋和程序 D.修改程序也應(yīng)修改注釋
66.下列關(guān)于效率的說法不正確的是()A.效率是一個性能要求,其目標(biāo)應(yīng)該在需求分析時給出
B.提高程序效率的根本途徑在于選擇良好的設(shè)計方法,數(shù)據(jù)結(jié)構(gòu)與算法 C.效率主要指處理機時間和存儲器容量兩個方面 D.程序的效率與程序的簡單性無關(guān) 67.測試的關(guān)鍵問題是()A.如何組織對軟件的評審 B.如何驗證程序的正確性 C.如何采用綜合策略 D.如何選擇測試用例
68.結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護的主要區(qū)別在于()A.軟件是否結(jié)構(gòu)化 B.軟件配置是否完整 C.程序的完整性 D.文檔的完整性
69.軟件維護困難的主要原因是()A.費用低 B.人員少
C.開發(fā)方法的缺陷 D.得不到用戶支持 70.可維護性的特性中,相互矛盾的是()A.可理解性與可測試性 B.效率與可修改性 C.可修改性和可理解性 D.可理解性與可讀性
71.快速原型是利用原型輔助軟件開發(fā)的一種新思想,它是在研究()的方法和技術(shù)中產(chǎn)生的。
A.需求階段 B.設(shè)計階段
C.測試階段 D.軟件開發(fā)的各個階段
72.從目前情況來看,增量模型存在的主要問題是()A.用戶很難適應(yīng)這種系統(tǒng)開發(fā)方法 B.該方法的成功率很低
C.缺乏豐富而強有力的軟件工具和開發(fā)環(huán)境
D.缺乏對開發(fā)過程中的問題和錯誤具有應(yīng)付變化的機制 73.下列文檔與維護人員有關(guān)的有()A.軟件需求說明書 B.項目開發(fā)計劃 C.概要設(shè)計說明書 D.操作手冊 D.實現(xiàn)錯誤檢測和錯誤恢復(fù)的程序
74.()是為了確保每個開發(fā)過程的質(zhì)量,防止把軟件差錯傳遞到下一個過程而進行的工作。
A.質(zhì)量檢測 B.軟件容錯 C.軟件維護 D.系統(tǒng)容錯 78.軟件開發(fā)過程來自用戶方面的主要干擾是()A.功能變化 B.經(jīng)費減少 C.設(shè)備損壞 D.人員變化
81.為了提高軟件的可維護性或可靠性而對軟件進行的修改稱為()A.糾錯性維護 B.適應(yīng)性維護 C.完善性維護 D.預(yù)防性維護
82.面向維護的技術(shù)涉及軟件開發(fā)的()階段。A.設(shè)計 B.編碼 C.測試 D.所有
83.用白盒技術(shù)設(shè)計測試用例的方法包括()A.邊界值分析 B.條件組合覆蓋 C.因果圖 D.錯誤推測
84.軟件測試的目的是()A.為了表明程序沒有錯誤 B.為了說明程序能正確地執(zhí)行 C.為了發(fā)現(xiàn)程序中的錯誤 D.為了評價程序的質(zhì)量
85.針對軟件需求分析所進行的軟件測試是指()A.集成測試 B.確認測試
C.黑盒子測試 D.白盒子測試
87.結(jié)構(gòu)化程序設(shè)計采用的三種基本控制結(jié)構(gòu)是()A.順序、分支、選擇 B.選擇、循環(huán)、重復(fù) C.順序、選擇、循環(huán) D.輸入、變換、輸出
88.在軟件設(shè)計中詳細描述處理過程常用的三種工具是()A.SA,SD,SP B.程序流程圖,IPO,PAD C.SA,SC,SD D.圖形,表格,語言
89.通信內(nèi)聚、邏輯內(nèi)聚、順序內(nèi)聚和時間內(nèi)聚的內(nèi)聚性從高到低順序是()
A.通信、邏輯、順序、時間 B.通信、時間、順序、邏輯 C.順序、通信、時間、邏輯 D.順序、通信、邏輯、時間
90.在下列四種模塊的耦合性中,信息隱蔽性能最好的是()A.控制耦合 B.內(nèi)容耦合 C.標(biāo)記耦合 D.數(shù)據(jù)耦合
91.結(jié)構(gòu)化方法是一種()的軟件開發(fā)方法。A.面向用戶 B.面向數(shù)據(jù)結(jié)構(gòu) C.面向?qū)ο?D.面向數(shù)據(jù)流
92.需求分析是回答系統(tǒng)必須()的問題。A.做什么 B.怎么做 C.何時做 D.為誰做
93.在軟件生產(chǎn)的(),使用的工具主要是機器語言和匯編語言。A.程序系統(tǒng)時代 B.軟件工程時代 C.面向?qū)ο髸r代 D.人工智能時代
.維護中因刪除一個標(biāo)識符而引起的錯識是 _________ 副作用。()A .文檔 B .?dāng)?shù)據(jù) C .編碼 D .設(shè)計
98.軟件維護的困難主要原因是()A .費用低 B .人員少
C .開發(fā)方法的缺陷 D .維護難
.用白盒法技術(shù)設(shè)計測試用例的方法包括()A .錯誤推測 B .因果圖
C .基本路徑測試 D .邊界值分析
100.軟件測試中根據(jù)測試用例設(shè)計的方法的不同可分為黑盒測試和白盒測試兩種,它們()
A .前者屬于靜態(tài)測試,后者屬于動態(tài)測試 B .前者屬于動態(tài)測試,后者屬于靜態(tài)測試 C .都屬于靜態(tài)測試 D .都屬于動態(tài)測試
101.程序的三種基本控制結(jié)構(gòu)的共同特點是()A .只能用來描述簡單程序 B .不能嵌套使用 C .單入口,單出口 D .僅用于自動控制系統(tǒng) 102、代碼版本控制的基本操作不包括()A.檢入
B 檢出
C.刪除
D.更新
.當(dāng)一個模塊直接使用另一個模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為()
A .?dāng)?shù)據(jù)耦合 B .公共耦合 C .標(biāo)記耦合 D .內(nèi)容耦合 104 .軟件設(shè)計的方法有多種,_________ 方法不屬于面向數(shù)據(jù)流的設(shè)計方法。()
A .基于 Jackson 圖的設(shè)計 B .基于 IDEF0圖的設(shè)計 C .交換分析設(shè)計 D .事務(wù)分析設(shè)計 105.為高質(zhì)量地開發(fā)軟件項目,在軟件結(jié)構(gòu)設(shè)計時,必須遵循 _________ 原則。()
A .信息隱蔽 B .質(zhì)量控制 C .程序優(yōu)化 D .?dāng)?shù)據(jù)共享
107.螺旋模型是一種將瀑布模型和 _________ 結(jié)合起來的軟件開發(fā)模型。()
A .增量模型 B .專家系統(tǒng) C .噴泉模型 D .變換模型
108.需求規(guī)格說明書的作用不包括()A .軟件驗收的依據(jù)
B .用戶與開發(fā)人員對軟件要做什么的共同理解 C .軟件可行性研究的依據(jù) D .軟件設(shè)計的依據(jù)
109.?dāng)?shù)據(jù)字典是用來定義 _________ 中的各個成份的具體含義的。()A .流程圖 B .功能結(jié)構(gòu)圖 C .系統(tǒng)結(jié)構(gòu)圖 D .?dāng)?shù)據(jù)流圖
.在軟件生產(chǎn)的程序系統(tǒng)時代由于軟件規(guī)模擴大和軟件復(fù)雜性提高等原因?qū)е铝耍ǎ?/p>
A .軟件危機 B .軟件工程
C .程序設(shè)計革命 D .結(jié)構(gòu)化程序設(shè)計
.對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作()于對象的統(tǒng)一體中。A .結(jié)合 B .隱藏 C .封裝 D .抽象 117 .軟件調(diào)試技術(shù)包括()
A .邊界值分析 B .演繹法 C .循環(huán)覆蓋 D .集成測試 118 .瀑布模型的存在問題是()A .用戶容易參與開發(fā) B .缺乏靈活性
C .用戶與開發(fā)者易溝通 D .適用可變需求
.軟件測試方法中的靜態(tài)測試方法之一為()A .計算機輔助靜態(tài)分析 B .黑盒法 C .路徑覆蓋 D .邊界值分析
.軟件生命周期中所花費用最多的階段是()
A .詳細設(shè)計 B .軟件編碼 C .軟件測試 D .軟件維護 122 .程序的三種基本控制結(jié)構(gòu)是()A .過程、子程序和分程序 B .順序、選擇和重復(fù) C .遞歸、堆棧和隊列 D .調(diào)用、返回和轉(zhuǎn)移
.在詳細設(shè)計階段,經(jīng)常采用的工具有()A . PAD B . SA C . SC D . DFD 124 .詳細設(shè)計的結(jié)果基本決定了最終程序的()
A .代碼的規(guī)模 B .運行速度 C .質(zhì)量 D .可維護性 125 .需求分析中開發(fā)人員要從用戶那里了解()
A .軟件做什么 B .用戶使用界面 C .輸入的信息 D .軟件的規(guī)模 126 .結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()A. 程序的規(guī)模 B .程序的效率
C. 程序設(shè)計語言的先進性 D .程序易讀性
.經(jīng)濟可行性研究的范圍包括()
A .資源有效性 B .管理制度 C .效益分析 D .開發(fā)風(fēng)險 129 .可行性分析是在系統(tǒng)開發(fā)的早期所做的一項重要的論證工作,它是決定該系統(tǒng)是否開 發(fā)的決策依據(jù),因必須給出()的回答。A .確定 B.行或不行 C.正確 D.無二義 130 .需求分析階段的任務(wù)是確定()A. 軟件開發(fā)方法 B. 軟件開發(fā)工具 C. 軟件開發(fā)費 D.軟件系統(tǒng)的功能
134.信息隱蔽概念與()這一概念直接的相關(guān)。A.模塊的獨立性 B.模塊類型的劃分 C.軟件結(jié)構(gòu)定義 D.軟件生命周期
135.在軟件的概要設(shè)計中,不使用的圖形工具是()圖。A.SC B.IPO C.PAD D.IDEF0
136.不屬于詳細設(shè)計的主要工具有()。A.IPO圖 B.PAD圖 C.PDL D.SC
137.不屬于序言性注釋的有()。A.模塊設(shè)計者 B.修改日期
C.程序的整體說明 D.語句功能
138.單元測試階段主要涉及()的文檔。A.需求設(shè)計 B.編碼和詳細設(shè)計 C.詳細設(shè)計 D.概要設(shè)計
139.在軟件測試中,白盒測試方法是通過分析程序的()來設(shè)計測試用例的方法。
A.應(yīng)用范圍 B.內(nèi)部邏輯 C.功能 D.輸入數(shù)據(jù)
140.需求分析是分析員經(jīng)了解用戶的要求,認真細致地調(diào)研、分析,最終建立目標(biāo)系統(tǒng)的邏輯模型并寫出()的過程。A.模塊說明書 B.軟件規(guī)格說明 C.項目開發(fā)計劃 D.合同文檔
141.數(shù)據(jù)耦合和控制耦合相比,則()成立。A.數(shù)據(jù)耦合的耦合性強 B.控制耦合的耦合性強
C.兩者的耦合性相當(dāng) D.兩者的耦合性需要根據(jù)具體情況分析 142.魚是一種水生動物。魚與水生生物之間的關(guān)系是()。A.分類關(guān)系 B.組裝關(guān)系 C.整體成員關(guān)系 D.has a 146 .用白盒法技術(shù)設(shè)計測試用例的方法包括()A .錯誤推測 B .因果圖
C .基本路徑測試 D .邊界值分析 147 .軟件測試中根據(jù)測試用例設(shè)計的方法的不同可分為黑盒測試和白盒測試兩種,它們()
A .前者屬于靜態(tài)測試,后者屬于動態(tài)測試 B .前者屬于動態(tài)測試,后者屬于靜態(tài)測試 C .都屬于靜態(tài)測試 D .都屬于動態(tài)測試
.當(dāng)一個模塊直接使用另一個模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為()
A .?dāng)?shù)據(jù)耦合 B .公共耦合 C .標(biāo)記耦合 D .內(nèi)容耦合 150.為高質(zhì)量地開發(fā)軟件項目,在軟件結(jié)構(gòu)設(shè)計時,必須遵循 _________ 原則。()
A .信息隱蔽 B .質(zhì)量控制 C .程序優(yōu)化 D .?dāng)?shù)據(jù)共享
151 .螺旋模型是一種將瀑布模型和 _________ 結(jié)合起來的軟件開發(fā)模型。()
A .增量模型 B .專家系統(tǒng) C .噴泉模型 D .變換模型
152 .需求規(guī)格說明書的作用不包括()A .軟件驗收的依據(jù)
B .用戶與開發(fā)人員對軟件要做什么的共同理解 C .軟件可行性研究的依據(jù) D .軟件設(shè)計的依據(jù)
157.單元測試階段主要涉及()的文檔。A.需求設(shè)計 B.編碼和詳細設(shè)計 C.詳細設(shè)計 D.概要設(shè)計
158.在軟件測試中,白盒測試方法是通過分析程序的()來設(shè)計測試用例的方法。
A.應(yīng)用范圍 B.內(nèi)部邏輯 C.功能 D.輸入數(shù)據(jù)
159.需求分析是分析員經(jīng)了解用戶的要求,認真細致地調(diào)研、分析,最終建立目標(biāo)系統(tǒng)的邏輯模型并寫出()的過程。A.模塊說明書 B.軟件規(guī)格說明
C.項目開發(fā)計劃 D.合同文檔
第四篇:《軟件工程》期末考試模擬練習(xí)題
期末考試模擬練習(xí)題
一、填空題
1、用軟件工程的觀點看,軟件=__程序____+____數(shù)據(jù)____+___系列文檔__。
2、軟件是計算機系統(tǒng)中與硬件相互依存的部分,它是包括_____程序_____,_____數(shù)據(jù)
____和___系列文檔___的完整集合。
3、可行性分析的內(nèi)容包括四個方面:__技術(shù)可行性_____,_經(jīng)濟可行性__,_操作可行
性____和___法律可行性__。
4、軟件開發(fā)的結(jié)構(gòu)化分析方法中,數(shù)據(jù)加工是組成內(nèi)容之一。常用的加工說明的描述
方法有__結(jié)構(gòu)化語言___、_____判定樹____和____判定表__。
5、面向數(shù)據(jù)流的軟件設(shè)計方法,一般將數(shù)據(jù)流圖分成兩種類型,一種稱為__變換型___,另一種稱為_事務(wù)型_。
6、內(nèi)聚和耦合是模塊獨立性的重要度量,內(nèi)聚是指__模塊內(nèi)部各軟件元素之間結(jié)合的緊密程度___,耦合是指__度量一個軟件結(jié)構(gòu)中模塊與模塊之間聯(lián)系程度強弱的一個指標(biāo)__,從設(shè)計策略講,模塊的分解應(yīng)遵循____高___內(nèi)聚____低___耦合的原則。
7、程序設(shè)計語言的三個特性分別是_工程特性__,__技術(shù)特性__,_心理特性__。
8、大型軟件系統(tǒng)的測試基本上由以下幾個步驟組成,分別是__單元測試__,__集成測
試___,_確認測試___,_系統(tǒng)測試__和__驗收測試___,其中需要最終用戶參與的測試為___驗收測試和系統(tǒng)測試__。
9、白盒子測試技術(shù)是從程序內(nèi)部的邏輯結(jié)構(gòu)及處理過程入手來設(shè)計測試用例,故
又稱為__結(jié)構(gòu)測試__測試;而黑盒子測試技術(shù)則相反,它是以需求規(guī)格說明書為根據(jù)來設(shè)計測試用例,故又稱為__功能測試__測試。
10、軟件維護的類型分為4種,分別是_改正性維護_,__適應(yīng)性維護_,___完善性維
護_,___預(yù)防性維護_。
11、在軟件運行中發(fā)生異?;蚬收蠒r進行的維護工作稱為__改正性維護___維護。在軟
件的使用過程中,根據(jù)用戶提出的新增系統(tǒng)功能和改善性能的要求而對軟件進行修改或再開發(fā),以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件質(zhì)量的工作成為____完善性維護__維護。
12、面向?qū)ο缶褪沁\用___對象___、___類____、____繼承______、___封裝____、___消息____等面向?qū)ο蟮母拍顚栴}進行分析,求解的系統(tǒng)開發(fā)技術(shù)。
13、由Rumbaugh等人提出的一種面向?qū)ο蠓椒ń凶鰧ο竽P突夹g(shù)(OMT),它要求
把分析時收集的信息建立在3個模型中。第一個模型是__對象模型__,它的作用是描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括構(gòu)成系統(tǒng)的對象和類、它們的屬性和操作,以及它們之間的聯(lián)系。第二個模型是_動態(tài)模型_,它描述系統(tǒng)的控制邏輯,主要涉及系統(tǒng)中各個對象和類的時序及變化狀況。第三個模型是_功能模型_,它著重于描述系統(tǒng)內(nèi)部數(shù)據(jù)的傳送與處理,它由多個數(shù)據(jù)流圖組成。
14、在軟件研制過程中,CASE是指__計算機輔助軟件工程_。
15、面向?qū)ο蟮能浖_發(fā)方法中,UML指__統(tǒng)一建模語言_。
二、選擇題
1、瀑布模型將軟件生命周期劃分為計劃、開發(fā)和運行三個時期。在下述工作中,屬于
軟件開發(fā)期的內(nèi)容是_D___。
I 需求分析II 可行性分析III 結(jié)構(gòu)設(shè)計
A)都是C)只有I
B)I和IID)I和III2、軟件計劃的目的是提供一個框架,使主管人員對項目能在短時間內(nèi)進行合理的估價。
在下述內(nèi)容中,不屬于計劃期的內(nèi)容是_C___。A)資源需求
C)功能需求
B)成本估算D)項目進度
3、數(shù)據(jù)流圖是用于軟件需求分析的工具,下列元素中_C____是數(shù)據(jù)流圖的基本元素。
I 數(shù)據(jù)流II 數(shù)據(jù)加工III 數(shù)據(jù)存儲IV 外部實體 A)I、II和III C)全部
B)I和IIID)I、III和IV4、軟件開發(fā)的結(jié)構(gòu)化分析方法中,數(shù)據(jù)加工是組成內(nèi)容之一。在下列方法中,常采用
編寫加工說明方法的是__D__。
I 結(jié)構(gòu)化語言II 判定樹III判定表A)只有I
B)只有IID)都是
C)II和III5、軟件工程的結(jié)構(gòu)化分析方法強調(diào)的是分析開發(fā)對象的__A___。
A)數(shù)據(jù)流
B)控制流D)進程通信
C)時間限制
6、原型化方法是用戶和軟件開發(fā)人員之間進行的一種交互過程,適用于___A___系統(tǒng)。
A)需求不確定性高的C)管理信息
B)需求確定的 D)決策支持
7、軟件的設(shè)計分兩個階段,即結(jié)構(gòu)設(shè)計和詳細設(shè)計,結(jié)構(gòu)設(shè)計又稱為_B__。
A)邏輯設(shè)計C)規(guī)劃設(shè)計
B)總體設(shè)計 D)抽象設(shè)計
8、模塊本身的內(nèi)聚是模塊獨立性的重要度量因素之一,7類內(nèi)聚中具有最強內(nèi)聚的一
類是_D___。
A)順序性內(nèi)聚C)邏輯性內(nèi)聚
B)過程性內(nèi)聚 D)功能性內(nèi)聚
9、軟件測試的對象是___C___。A)程序
B)文檔 D)模塊算法
C)程序和各個軟件配置項
10、成功的測試是指___B___。
A)運行測試實例后未發(fā)現(xiàn)錯誤項
C)證明程序正確
B)發(fā)現(xiàn)程序中的錯誤 D)改正程序中的錯誤
11、若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現(xiàn)在從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設(shè)計這組測試用例的方法是__A_。A)邊界值分析法C)條件覆蓋法
B)等價分類法 D)錯誤推測法
12、因計算機硬件和軟件環(huán)境的變化而做出的修改軟件的過程稱為______C______維
護。在軟件維護類型中占全部維護活動一半以上的是______________維護。
I 改正性維護A)I,II
II 適應(yīng)性維護 B)II,I
III 完善性維護 C)II,III
IV 預(yù)防性維護 D)II,IV13、在面向?qū)ο蠓治鲋?,下列各項可列入類的實例的是____D_。
I 學(xué)生II 網(wǎng)上購物III白馬IV 張三A)I 和 II
B)II 和IV D)都是
C)II、II、IV14、下列哪些問題是項目管理工作應(yīng)該重點考慮的___C___。
I 風(fēng)險分析和管理IV軟件項目計劃
II 項目進度安排V 軟件配置管理
III 軟件需求分析 VI軟件測試
A)III,VIB)III,IV,VIC)I、II、IV、VD)都是
15、軟件文檔是軟件工程實施中的重要成分,它不僅是軟件開發(fā)各階段的重要依據(jù)而且
也影響軟件的_B____。
A)可理解性
B)可維護性 D)可移植性
C)可擴展性
第五篇:軟件工程
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)過思想教育后,精神抖擻,隨時準(zhǔn)備為優(yōu)化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優(yōu)化工作的復(fù)雜之處是很多目標(biāo)存在千絲萬縷的關(guān)系,可謂數(shù)不清理還亂。當(dāng)不能夠使所有的目標(biāo)都得到優(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ā)軟件的書籍,書中充滿了標(biāo)準(zhǔn)與示例,可以幫助我們解決軟件開發(fā)中遇到的任何問題。
客觀情況:好的參考書無疑能指導(dǎo)我們的工作。充分利用書籍中的方法、技術(shù)和技巧,可以有效地解決軟件開發(fā)中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現(xiàn)實的工作中,由于條件千差萬別,即使是相當(dāng)成熟的軟件工程規(guī)范,常常也無法套用。(2)軟件技術(shù)日新月異,沒有哪一種軟件標(biāo)準(zhǔn)能長盛不衰。祖?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)生倒退的后果。
觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。
客觀情況:對需求把握得越準(zhǔ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了嗎?”
不懂英語的人準(zhǔn)以為easy和OK是貶義詞。要讓軟件項目失敗很容易,只要符合下列條件之一即可:
(1)項目經(jīng)理對軟件一無所知;
(2)技術(shù)負責(zé)人對編程不感興趣;
(3)真真編寫代碼的程序員是臨時雇用的。
如果上述三個條件同時具備,就請放心失敗好了。
讓我們少幻想自己是比爾·蓋茨,先當(dāng)好程序員和程序經(jīng)理再說。
3.1了解程序員
早期的程序員干活能從軟件直通硬件,個個生猛無比。又因他們的作息時間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業(yè)被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書籍也加入了這個行業(yè)?,F(xiàn)在國內(nèi)號稱有上百萬程序員,這支大軍魚龍混雜,已搞不清那些是正規(guī)軍,那些是民兵游擊隊了。