軟件工程理論知識_第1頁
軟件工程理論知識_第2頁
軟件工程理論知識_第3頁
軟件工程理論知識_第4頁
軟件工程理論知識_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程理論知識軟件工程基礎(chǔ)知識精解一.什么是軟件? 4二.軟件危機以及產(chǎn)生軟件危機的原因? 4三.有哪些流行的軟件工程方法學及其要素? 4四.什么是軟件生存周期?有哪些活動? 44.1軟件生存周期 44.2開發(fā)活動 44.3各活動階段主要文檔 54.3.1可行性分析和項目開發(fā)計劃 54.3.2需求分析中的文檔 54.3.3概要設(shè)計階段文檔 54.4.4詳細設(shè)計階段 54.4.5編碼 54.4.5測試 54.4.6系統(tǒng)測試階段 5五.有哪些主要生存期模型? 55.1瀑布模型(傳統(tǒng)的軟件周期模型) 55.2原型模型 65.2.1快速原型模型 65.2.2演化模型 65.2.3增量模型(漸增式) 65.2.4原型模型小結(jié) 65.3螺旋模型 75.4噴泉模型 75.5迭代軟件開發(fā)技術(shù) 75.6極限編程(XP) 8六.軟件過程基礎(chǔ)知識 96.1軟件過程 96.2評估工具 9七.軟件工程項目管理基本知識 97.1時間管理 97.1.1Gantt圖 97.1.2PERT網(wǎng)圖與關(guān)鍵路徑 107.2成本管理 117.3風險管理 117.3.1風險的定義 117.3.2風險的類型 117.3.3風險管理活動 127.3.3風險曝光度 12八.模塊化基本知識 128.1模塊特性 128.1.1可分解性 128.1.2可組裝性 138.1.3可理解性 138.1.4連續(xù)性 138.1.5保護性 138.2模塊與模塊的耦合性(7種) 138.2.1內(nèi)容耦合 138.2.2公共耦合 138.2.3外部耦合 138.2.4控制耦合 138.2.5標記耦合 138.2.6數(shù)據(jù)耦合 138.2.7非直接耦合(無耦合) 138.3模塊的內(nèi)聚性 138.4模塊的深度、寬度、扇出與扇入 148.5模塊作用域和控制域 148.6模塊化基礎(chǔ)知識小結(jié) 14九.什么是軟件開發(fā)方法?有哪些主要方法? 149.1結(jié)構(gòu)化方法學 149.1.1數(shù)據(jù)流圖(DFD圖) 149.1.2數(shù)據(jù)字典 169.1.3結(jié)構(gòu)化語言 169.1.4實體-關(guān)系圖(E-R圖) 169.2結(jié)構(gòu)化設(shè)計 179.2.1概要設(shè)計 179.2.2詳細設(shè)計 199.3Jackson方法 199.4面向?qū)ο蠓治龇椒ǎ?0A) 19十.軟件工具 20十一.軟件開發(fā)環(huán)境 20十二.軟件質(zhì)量管理基礎(chǔ)知識 2012.1軟件質(zhì)量 2012.2軟件質(zhì)量保證 2012.3代碼評審技術(shù) 21十三.成本-效益分析可用哪些指標進行度量? 21十四.第四代語言(4GL)的主要特征? 21十五.軟件測試 2115.1軟件測試經(jīng)過的步驟 2115.2測試與軟件開發(fā)各階段的關(guān)系 2215.3白盒測試 2215.4黑盒測試 2315.4灰盒測試 2315.5回歸測試 2315.6單元測試 2315.7集成測試 2315.8確認測試 2415.9系統(tǒng)測試 24十六.軟件工程標準和軟件文檔 2417.1軟件維護類型 2517.2軟件的可維護性 25十八.軟件的可靠性 25一.什么是軟件?1.滿足用戶功能需求和性能的指令或計算機程序集合;2.處理信息的數(shù)據(jù)結(jié)構(gòu);3.描述程序功能以及程序如何操作和使用所要求的文檔;以上三部分的組合構(gòu)成了軟件二.軟件危機以及產(chǎn)生軟件危機的原因?1.軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機迅速普及的趨勢。軟件產(chǎn)品“供不應(yīng)求”。2.軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。“開發(fā)成本高”3.軟件開發(fā)人員和用戶之間的信息交流往往很不充分,用戶對“已完成的”的軟件系統(tǒng)不滿足的現(xiàn)象經(jīng)常發(fā)生。4.軟件產(chǎn)品的質(zhì)量不容易保證。5.軟件產(chǎn)品常常是不可維護的。6.軟件產(chǎn)品的重用性差,同樣的軟件多次重復(fù)開發(fā)。7.軟件通常沒有適當?shù)奈臋n資料。產(chǎn)生軟件危機的原因可歸結(jié)為兩個重要的方面:軟件生產(chǎn)本身存在的復(fù)雜性;軟件開發(fā)所使用的方法和技術(shù)。三.有哪些流行的軟件工程方法學及其要素?1.使用最廣泛的軟件工程方法學是面向結(jié)構(gòu)化方法學和面向?qū)ο蟮姆椒▽W(上世紀70-90年代,流行面向結(jié)構(gòu)化方法學,上世紀90年代到現(xiàn)在,流行面向?qū)ο蠓椒▽W)。2.要素:方法、工具和過程。四.什么是軟件生存周期?有哪些活動?4.1軟件生存周期一個軟件從提出開發(fā)要求開始到軟件廢棄不用的整個過程。4.2開發(fā)活動可行性分析和項目開發(fā)計劃、需求分析和定義、軟件設(shè)計(先后細分為:概要設(shè)計和詳細設(shè)計)、編碼、測試和運行維護可行性分析和項目開發(fā)計劃:用戶、項目負責人和系統(tǒng)分析師搞清楚系統(tǒng)要解決的問題是什么?以及從技術(shù)、經(jīng)濟、時間等方面論證項目開發(fā)可行性。需求分析和定義:用戶、項目負責人和系統(tǒng)分析師確定系統(tǒng)必須做什么?但不關(guān)心具體怎么做?要確定系統(tǒng)的功能、性能、數(shù)據(jù)、界面等要求,從而確定系統(tǒng)的邏輯模型,同時制定后期測試計劃。軟件設(shè)計-概要設(shè)計:系統(tǒng)分析師和軟件設(shè)計師在需求定義的基礎(chǔ)上,把各功能需求轉(zhuǎn)換成需要的體系結(jié)構(gòu),即劃分模塊、模塊的層次、模塊之間的調(diào)用關(guān)系以及各模塊的功能,同時設(shè)計應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu)。軟件設(shè)計-詳細設(shè)計:軟件設(shè)計師和程序員對概要設(shè)計階段得出的各功能模塊進行詳細描述成精確的、結(jié)構(gòu)化的過程描述,即各個功能模塊具體怎么實現(xiàn),用相應(yīng)的工具把模塊的控制結(jié)構(gòu)表示出來,但還未進行編碼。編碼:由程序員詳細設(shè)計階段得出的各模塊控制結(jié)構(gòu)(圖形)轉(zhuǎn)變成計算機能識別的指令代碼。測試:由另一部門(單位)的軟件設(shè)計師或系統(tǒng)分析師花費最少的人力物力找出程序最多、最大的錯誤(bug)。維護:由用戶和維護人員進行的軟件生存周期中時間最長的階段。4.3各活動階段主要文檔4.3.1可行性分析和項目開發(fā)計劃可性行研究報告項目開發(fā)計劃4.3.2需求分析中的文檔需求規(guī)格說明書初步用戶使用手冊確認測試的測試計劃修改完善的軟件開發(fā)計劃系統(tǒng)測試計劃文檔4.3.3概要設(shè)計階段文檔概要設(shè)計說明書數(shù)據(jù)庫說明書用戶手冊修訂的測試計劃(測試的策略、方法、步驟)4.4.4詳細設(shè)計階段詳細設(shè)計說明書4.4.5編碼程序清單4.4.5測試完善的測試計劃書軟件測試報告4.4.6系統(tǒng)測試階段系統(tǒng)測試報告2005年下半年應(yīng)該在(7)階段制定系統(tǒng)測試計劃。(7)A.需求分析B.概要設(shè)計C.詳細設(shè)計D.系統(tǒng)測試●(29)詳細描述軟件的功能、性能和用戶界面,以使用戶了解如何使用軟件。(29)A.概要設(shè)計說明書B.詳細設(shè)計說明書C.用戶手冊D.用戶需求說明書五.有哪些主要生存期模型?瀑布模型、原型開發(fā)模型(快速原型模型、演化模型、增量模型)、螺旋模型、噴泉模型、基于知識的模型和變化模型。5.1瀑布模型(傳統(tǒng)的軟件周期模型)瀑布模型嚴格遵循軟件生命周期各階段的固定順序:計劃、分析、設(shè)計、編程、測試和維護,上一階段完成后才能進入到下一階段,整個模型就像一個飛流直下的瀑布,如下圖所示。優(yōu)點:以文檔作為驅(qū)動,強迫開發(fā)人員采用規(guī)范的方法,嚴格規(guī)定了各階段必須提交的文檔;要求每一階段結(jié)束后,都要進行嚴格的評審。與它最相適應(yīng)的開發(fā)方法是結(jié)構(gòu)化方法。缺點:不適應(yīng)用戶需求的改動。2004年下半年:●軟件開發(fā)中的瀑布模型典型的刻畫了軟件生存周期的階段劃分,與其最相適應(yīng)的軟件開發(fā)方法是(9)。

(9)A.構(gòu)件化方法B.結(jié)構(gòu)化方法C.面向?qū)ο蠓椒―.快速原型法5.2原型模型5.2.1快速原型模型快速原型的用途是獲知用戶的真正需求,一旦需求確定了,原型即被拋棄。主要用于需求分析階段。不追求也不可能要求對需求的嚴格定義,而是采用了動態(tài)定義需求的方法,所以不能定義完善的文檔。特征:簡化項目管理、盡快建立初步需求、加強用戶參與和決策。具有廣泛技能水平的原型化人員是原型實施的重要保證。原型化人員應(yīng)該是具有經(jīng)驗與才干、訓練有素的專業(yè)人員。衡量原型化人員能力的重要標準是他是否能夠從用戶的模糊描述中快速獲取需求。5.2.2演化模型在快速原型模型中,原型的用途是獲知用戶的真正需求,一旦需求確定了,原型即被拋棄。而演化模型應(yīng)用于整個軟件開發(fā)過程,是從初始模型逐步演化為最終軟件產(chǎn)品的漸進過程。也就是說,快速原型模型是一種“拋棄式”的原型化方法,而演化模型則是一種“漸進式”的原型化方法。5.2.3增量模型(漸增式)增量模型主要用于設(shè)計階段,把軟件產(chǎn)品劃分為一系列的增量構(gòu)件,分別進行設(shè)計、編程、集成和測試。新的增量構(gòu)件不得破壞已經(jīng)開發(fā)出來的產(chǎn)品。其示意圖如圖4-2所示。5.2.4原型模型小結(jié)從下面的有關(guān)原型化方法的敘述中,選擇出正確的敘述:(1)快速原型方法是一種企圖克服傳統(tǒng)軟件周期模型缺點的開發(fā)方法。(2)在用戶的數(shù)據(jù)資源沒有得到很好地組織和管理的時候,應(yīng)該使用原型化方法。(3)在用戶沒有明確地肯定其需求的時候,應(yīng)該使用原型化方法。(4)在用戶不希望把自己的時間花在軟件開發(fā)過程中的時候,應(yīng)該使用原型化方法。(5)使用原型化方法時應(yīng)該使用第三代編程語言。(6)原型化加強了開發(fā)過程中用戶的參與和決策。(7)原型化方法大致可分為三類:拋棄式、演化式和遞增式。(8)原型化方法大致可分為演化式和遞增式。(9)采用原型化方法時,軟件的開發(fā)成本較高。(10)采用原型化方法時,關(guān)鍵的因素是建立原形的速度,而不是原形運行的效率。5.3螺旋模型螺旋模型綜合了瀑布模型和原型模型中的演化模型的優(yōu)點,還增加了風險分析。螺旋線第一圈的開始點可能是一個概念項目。從第二圈開始,一個新產(chǎn)品開發(fā)項目開始了,新產(chǎn)品的演化沿著螺旋線進行若干次迭代,一直轉(zhuǎn)到軟件生命期結(jié)束。5.4噴泉模型噴泉模型主要用于描述面向?qū)ο蟮拈_發(fā)過程。噴泉一詞體現(xiàn)了面向?qū)ο箝_發(fā)過程的迭代和無間隙特征。迭代指的是開發(fā)活動常常需要重復(fù)多次,在不斷的迭代中逐漸完善軟件系統(tǒng),無間歇性指在開發(fā)活動之間不存在明顯的邊界,允許各開發(fā)活動交叉、迭代地進行。5.5迭代軟件開發(fā)技術(shù)Rational統(tǒng)一開發(fā)流程RUP(RationalUnifiedProcess)是一個通用的軟件流程框架,它是一個以架構(gòu)為中心、用例驅(qū)動的迭代化軟件開發(fā)流程。RUP是從幾千個軟件項目的實踐經(jīng)驗中總結(jié)出來的,對于實際的項目具有很強的指導(dǎo)意義,是軟件開發(fā)行業(yè)事實上的行業(yè)標準。在RUP中,我們把軟件開發(fā)生命周期劃分為四個階段,每個階段的結(jié)束標志就是一個主要的里程碑(如下圖所示)。這四個階段主要是為了達到以下階段性的目標里程碑:先啟(Inception):確定項目開發(fā)的目標和范圍精化(Elaboration):確定系統(tǒng)架構(gòu)和明確需求構(gòu)建(Construction):實現(xiàn)剩余的系統(tǒng)功能產(chǎn)品化(Transition):完成軟件的產(chǎn)品化工作,將系統(tǒng)移交給客戶2005年下半年:在開發(fā)一個系統(tǒng)時,如果用戶對系統(tǒng)的目標是不很清楚,難以定義需求,這時最好使用(6)。(6)A.原型法B.瀑布模型C.V-模型D.螺旋模型2006年上半年:漸增式開發(fā)方法有利于(4)。

(4)A.獲取軟件需求B.快速開發(fā)軟件C.大型團隊開發(fā)D.商業(yè)軟件開2006年下半年:常見的軟件開發(fā)模型有瀑布模型、演化模型、螺旋模型、噴泉模型等。其中(5)模型適用于需求明確或很少變更的項目,(6)主要用來描述面向?qū)ο蟮能浖_發(fā)過程。(5)A.瀑布模型B.演化模型C.螺旋模型D.噴泉模型(6)A.瀑布模型B.演化模型C.螺旋模型D.噴泉模型●統(tǒng)一過程(UP)的基本特征是“用例驅(qū)動,以架構(gòu)為中心的和受控的迭代式增量開發(fā)”。UP將一個周期的開發(fā)過程化分為4個階段,其中(26)提交結(jié)果包含了系統(tǒng)架構(gòu)。(26)A.先啟階段B.精化階段C.構(gòu)建階段D.提交階段5.6極限編程(XP)一種輕量(敏捷)、高效、低風險、柔性、可預(yù)測、科學而且充滿樂趣的軟件開發(fā)方法。與其他方法對比,最大的不同在于:1.在更短的周期內(nèi),更早地提供具體、持續(xù)的反饋信息2.迭代地進行計劃編制,首先在最開始迅速生成一個總體計劃,然后在整個項目開發(fā)過程中不斷地發(fā)展3.依賴于自動測試程序來監(jiān)控開發(fā)進度,并及早地捕獲缺陷4.依賴于口頭交流,測試和源程序進行溝通5.倡導(dǎo)持續(xù)的演化式的設(shè)計6.依賴于開發(fā)團隊內(nèi)部的緊密協(xié)作7.盡可能達到程序員短期利益和項目長期利益的平衡如上圖所示,xp由價值觀、原則、實踐和行為四個部分組成,它們彼此相互依賴、關(guān)聯(lián),并通過行為貫穿于整個生命周期。xp的核心是其總結(jié)的四大價值觀:溝通、簡單、反饋和勇氣、它們是xp的基礎(chǔ),也是xp的靈魂。5個原則:快速反饋、簡單性假設(shè)、逐步修改、提倡更改和優(yōu)質(zhì)工作。在xp方法中,貫徹的是“小步快走”的開發(fā)原則,因此工作質(zhì)量絕不可打折扣,通常采用測試先行的編碼方式來提供支持。在xp中,繼承了12個最佳實踐:計劃游戲、小型發(fā)布、隱喻、簡單設(shè)計、測試先行、重構(gòu)、結(jié)對編程、集體代碼所有制、持續(xù)繼承、每周工作40小時,現(xiàn)場客戶,編碼標準。六.軟件過程基礎(chǔ)知識6.1軟件過程軟件過程是指人們用于開發(fā)和維護軟件及相關(guān)產(chǎn)品的一系列活動,包括軟件工程過程和軟件管理過程。6.2評估工具軟件過程的評估,通常采用軟件能力成熟度模型(CapabilityMaturityModel,CMM)。CMM1.1的5個等級(由低級到高級):初始級軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決于個人努力,管理是反應(yīng)式(消防式)的。可重復(fù)級建立了基本的項目管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重復(fù)早先類似應(yīng)用項目取得的成功。已定義級已將軟件管理和工程兩方面的過程文檔化、標準化,并綜合成該組織的標準化軟件過程。所有項目均使用經(jīng)標準、裁減的標準軟件過程來開發(fā)和維護軟件。已管理級收集對軟件過程和產(chǎn)品質(zhì)量的詳細度量,對軟件過程和產(chǎn)品都有定量的理解與控制。優(yōu)化級加強了定量分析,通過來自過程質(zhì)量反饋和來自新觀念、新技術(shù)的反饋使過程能持續(xù)不斷地改進。巧記:初級程序員,可重復(fù)寫程序,現(xiàn)已定義了管理策略來優(yōu)化程序設(shè)計!2006年下半年:●軟件能力成熟度模型(CMM)是目前國際上最流行、最實用的軟件生產(chǎn)過程標準和軟件企業(yè)成熟度的等級認證標準。該模型將軟件能力成熟度自低到高依次劃分為初始級、可重復(fù)級、已定義級、已管理級、優(yōu)化級。從(17)開始,要求企業(yè)建立基本的項目管理過程的政策和管理規(guī)程,使項目管理過程有章可循。(17)A.初始級B.可重復(fù)級C.已定義級D.已管理級七.軟件工程項目管理基本知識軟件項目管理開始于任何技術(shù)活動之前,并且貫穿于整個的軟件生命周期。軟件工程項目管理一般分為時間管理、成本管理、人力資源管理、風險管理。7.1時間管理7.1.1Gantt圖是一種簡單的水平條形圖,它以水平線段表示子任務(wù)的工作階段,線段的起點和終點分別對應(yīng)著子任務(wù)的起始時間,線段長度指示完成該任務(wù)所需要的時間。甘特圖的優(yōu)點:直觀簡明、易學易繪、可從圖上清楚地標出子任務(wù)間的時間對比,但它也有缺點:(a)不能顯示地描繪各項彼此間的依賴關(guān)系;(b)進度計劃的關(guān)鍵部分不明顯,難以判斷哪些部分應(yīng)當是主攻和主控的對象;(c)計劃中有潛力的部分以及潛力的大小不明確,往往造成潛力的浪費。2006年5月:●在軟件項目管理中可以使用各種圖形工具來輔助決策,下面對Gantt圖的描述中,不正確的是(5)。

A.Gantt圖表現(xiàn)了各個活動的持續(xù)時間B.Gantt圖表現(xiàn)了各個活動的起始時間

C.Gantt圖反映了各個活動之間的依賴關(guān)系D.Gantt圖表現(xiàn)了完成各個活動的進度7.1.2PERT網(wǎng)圖與關(guān)鍵路徑PERT網(wǎng)圖是一個由箭頭(標識任務(wù))和結(jié)點(標識事件)組成的有向圖。將網(wǎng)絡(luò)方法用于工作計劃安排的評審和檢查。開發(fā)模塊A、B、C模塊的任務(wù)網(wǎng)絡(luò)圖PERT圖不僅給出了每個任務(wù)的開始時間、結(jié)束時間和完成該任務(wù)所需的時間,還給出了任務(wù)之間的依賴關(guān)系,即哪些任務(wù)完成后才能開始另一些任務(wù),以及如期完成整個工程的“關(guān)鍵路徑”。關(guān)鍵路徑(CriticalPath)是由一連串的任務(wù)所組成的鏈,距離最大的一條路徑。軟件項目的管理人員應(yīng)該密切注視關(guān)鍵任務(wù)的進展情況。如果希望縮短工期,只有往關(guān)鍵任務(wù)中增加資源才會有效果。7.2成本管理一種常用的成本估算方法是先估計完成軟件項目所需的工作量(人月數(shù)),然后根據(jù)每個人月的代價(金額)計算機軟件的開發(fā)費用:開發(fā)費用=人月數(shù)×每個人月的代價另一種方法是估計軟件的規(guī)模(通常指源代碼行數(shù)),然后根據(jù)每行源代碼的平均開發(fā)費用(包括分析、設(shè)計、編碼、測試所花的費用),計算機軟件的開發(fā)費用:開發(fā)費用=源代碼行數(shù)×每行平均費用估算源代碼行數(shù)時,可以請n為有經(jīng)驗的專家,每位專家對軟件給出3個估計值:ai最少源代碼行數(shù)(該軟件可能的最小規(guī)模)bi最大源代碼行數(shù)(該軟件可能的最大規(guī)模)mi最可能的代碼行數(shù)(該軟件最可能的規(guī)模)然后計算出每位專家的估算期,n位專家的估算期望值的平均值就是代碼行數(shù)的估算值。Putnam模型和COCOMO模型:Putnam模型和COCOMO模型是常用的成本估算模型。Putnam模型:是一種動態(tài)多變量模型,它是假設(shè)在軟件開發(fā)的整個生存期中工作量的分布。COCOMO模型:是結(jié)構(gòu)性成本模型,是最精確、最易于使用的成本估算模型之一。該模型可以分為:(1)基本COCOMO模型,是一個靜態(tài)單變量模型,它是對整個軟件系統(tǒng)進行估算。(2)中級COCOMO模型,是一個靜態(tài)多變量模型。它將軟件系統(tǒng)模型分為系統(tǒng)和部件兩個層次,系統(tǒng)由部件構(gòu)成,它把軟件開發(fā)所需人力(成本)看作是程序大小和一系列“成本驅(qū)動屬性”的函數(shù)。(3)詳細COCOMO模型,它將軟件系統(tǒng)模型分為系統(tǒng)、子系統(tǒng)和模塊3個層次,它除包括中級模型所考慮的因素外,還考慮了在需求分析、軟件設(shè)計等每一步的成本驅(qū)動屬性的影響。2006年上半年:●使用LOC(linesofcode)度量軟件規(guī)模的優(yōu)點是(9)。

(9)A.容易計算B.與使用的編程語言相關(guān)C.與使用的開發(fā)模型有關(guān)D.在設(shè)計之前就可以計算出LOC●軟件項目開發(fā)成本的估算依據(jù),通常是開發(fā)成本估算模型,常用的模型有:①IBM模型②Putnam模型③基本COCOMO模型④中級COCOMO模型⑤高級OCOMO模型其中(18)都是靜態(tài)單變量模型。(18)A.①②B.②④⑤C.①③D.③④⑤7.3風險管理7.3.1風險的定義1.關(guān)心未來:風險是否會導(dǎo)致軟件項目失?。?.關(guān)心變化:在用戶需求、開發(fā)技術(shù)、目標機器,以及所有其他與項目及時工作和全面完成有關(guān)的實體中會發(fā)生什么樣的變化?3.關(guān)心選擇:應(yīng)采用什么方法和工具,應(yīng)配置多少人力,在質(zhì)量上強調(diào)到什么程度才能滿足要求?7.3.2風險的類型1.項目風險:指潛在的預(yù)算、進度、人力(工作人員及組織)、資源、客戶和需求等方面的問題以及它們對軟件項目的影響。例如:項目復(fù)雜性、規(guī)模和結(jié)構(gòu)不確定性等都是項目風險、項目風險威脅到項目計劃,即如果項目風險變成現(xiàn)實,有可能會拖延項目的進度,增加項目的成本。2.技術(shù)風險:指潛在的設(shè)計、實現(xiàn)、接口、驗證和維護等方面的問題。此外,規(guī)約的二義性、技術(shù)的不正確性,陳舊的技術(shù)和“先進的”技術(shù)也是技術(shù)風險因素。技術(shù)風險威脅到開發(fā)軟件的質(zhì)量及軟件交付時間,如果技術(shù)風險比恩成現(xiàn)實,則開發(fā)工作可能變得很困難或根本不可能。3.商業(yè)風險:在信息系統(tǒng)項目中,商業(yè)風險威脅到要開發(fā)系統(tǒng)的生存能力。一般主要有5類商業(yè)風險:市場風險:開發(fā)了一個沒有人真正需要的優(yōu)秀產(chǎn)品或系統(tǒng)策略風險:開發(fā)的產(chǎn)品不再符合公司的整體商業(yè)策略銷售風險:開發(fā)了一個銷售部門不知道如何去賣的產(chǎn)品管理風險:由于重點的轉(zhuǎn)移或人員的變動而失去了高級管理層的支持預(yù)算風險:沒有得到預(yù)算或人力上的保證7.3.3風險管理活動1.風險識別:找的哦啊潛風險并將其文檔化,它包括項目風險、技術(shù)風險和商業(yè)風險三種2.風險評估:可分為定量評估和定性評估。通過對各種風險發(fā)生的可能性和破壞性這兩個方面進行評估,并將它們按優(yōu)先級別進行排列。在進行軟件工程分析時,項目管理人員要進行四種風險評估活動,包括建立表示風險概率的尺度,面熟風險引起的后果,估計風險影響的大小,確定風險估計的正確性3.風險駕馭:利用某種技術(shù),如原型化、軟件自動化、軟件心理學、可靠性工程學等方法設(shè)法避開風險。統(tǒng)稱可以把風險應(yīng)對策略分為兩種類型:防范策略和相應(yīng)策略(1)風險防范策略規(guī)避策略:想方設(shè)法阻止風險的發(fā)生或消除風險發(fā)生的危害。避免策略如果成功則可以消除風險對項目的影響。例如:針對技術(shù)風險可以采取聘請技術(shù)專家、針對項目進度風險可以采取延長項目時間或縮減項目范圍的辦法。減輕策略:當風險很難避免或轉(zhuǎn)移時,可以考慮采取減輕策略來降低風險發(fā)生的概率或減輕風險帶來的損失。風險是一種不確定因素,可以通過前期的一些工作來降低風險發(fā)生的可能性;或者也可以通過一些準備來降低風險發(fā)生的損失。例如對于需求風險,如果認為需求變化可能很劇烈,那么可以考慮采用柔性設(shè)計的方法降低需求變更的代價。尤其對于IT項目而言,越早發(fā)現(xiàn)問題越容易解決,例如對于需求風險帶來的問題,在設(shè)計階段發(fā)現(xiàn)要好過編碼階段發(fā)現(xiàn)。針對這些特點,也可以采用盡早暴露風險的方法降低發(fā)生風險的損失。(2)制定風險相應(yīng)策略注意,雖然我們采用了很多方法防范風險的發(fā)生,但風險本身就是一種不確定因素,不可能在項目中完全消除。我們還需要制定一些風險發(fā)生后的應(yīng)急措施來解決風險帶來的問題。例如:對于系統(tǒng)性能的風險,由于不清楚目前的系統(tǒng)是否能夠滿足用戶的需求,可能在系統(tǒng)發(fā)布后出現(xiàn)系統(tǒng)性能不足的問題。對于這個風險,我們可以定義其風險響應(yīng)策略為增加硬件資源以提高系統(tǒng)性能。風險響應(yīng)策略與風險防范策略不同,無論風險是否發(fā)生,風險防范策略都需要體現(xiàn)在項目技術(shù)中,在項目過程中需求有人來執(zhí)行對應(yīng)的方法策略;而風險響應(yīng)策略是在事件觸發(fā)的,直到當風險發(fā)生后才會被執(zhí)行,如果始終沒有發(fā)生風險,則始終不會被安排到項目活動中。7.3.3風險曝光度風險曝光度(riskexposure)=風險損失*風險概率例如:正在開發(fā)的軟件項目可能存在一個未將發(fā)現(xiàn)的錯誤,這個錯誤出現(xiàn)的概率是0.5%,給公司造成的損失將是100萬元,那么這個錯誤的風險曝光度是5000元。八.模塊化基本知識模塊是指執(zhí)行某一特定任務(wù)的數(shù)據(jù)和可執(zhí)行語句程序元素的集合,通常是指可通過名字來訪問的過程、函數(shù)、子程序或宏調(diào)用等。模塊化就是將一個待開發(fā)的軟件劃分成若干個可完成某一子功能的模塊,每個模塊可獨立地開發(fā)、測試,最后組裝成完整的程序。8.1模塊特性8.1.1可分解性如果一種設(shè)計方法提供了將問題分解成子問題的系統(tǒng)化機制,它就能降低整個系統(tǒng)的復(fù)雜性,從而實現(xiàn)一種有效的模塊化解決方案。8.1.2可組裝性如果一種設(shè)計方法使現(xiàn)存的(可復(fù)用的)設(shè)計構(gòu)件能被組裝成新系統(tǒng),它就能提供一種不需要一切從頭開始的模塊化解決方案。8.1.3可理解性如果一個模塊可以作為一個獨立的單位(不用參考其他模塊)被理解,那么它就易于構(gòu)造和修改。8.1.4連續(xù)性如果對系統(tǒng)需求的微小修改只導(dǎo)致對單個模塊,而不是整個系統(tǒng)的修改,則修改引起副作用就會被最小化。8.1.5保護性如果模塊內(nèi)部出現(xiàn)異常情況,并且它的影響限制在模塊內(nèi)部,不會影響其他模塊,則錯誤引起的副作用就會被最小化。注意“連續(xù)性”和“保護性”的區(qū)別??!8.2模塊與模塊的耦合性(7種)耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合可以分成下列幾種,它們之間的耦合度由高到低排列。8.2.1內(nèi)容耦合直接操作或修改另一模塊的數(shù)據(jù),或不通過正常入口轉(zhuǎn)入另一個模塊。軟件設(shè)計時應(yīng)堅決禁止內(nèi)容耦合,應(yīng)設(shè)計成單入口、單出口的模塊,避免病態(tài)連接。8.2.2公共耦合多個模塊引用同一全局數(shù)據(jù)區(qū)。例如,C語言中的external數(shù)據(jù)類型、磁盤文件等都是全局數(shù)據(jù)區(qū)。8.2.3外部耦合模塊與軟件以外的環(huán)境有關(guān)聯(lián)。例如,輸入輸出把一個模塊與特定的設(shè)備、格式、通信協(xié)議耦合在一起。8.2.4控制耦合一模塊明顯把開關(guān)量、名字等信息送入另一模塊,控制另一模塊的功能。8.2.5標記耦合兩個模塊之間通過傳遞公共指針或地址相互作用的耦合。8.2.6數(shù)據(jù)耦合模塊間通過傳遞數(shù)據(jù)交換信息。8.2.7非直接耦合(無耦合)模塊間無任何關(guān)系,獨立工作 原則上講,模塊化設(shè)計總是希望模塊之間的耦合表現(xiàn)為非直接耦合方式。在以上耦合中,耦合度從高到低,內(nèi)容耦合度最高,非直接耦合度最低??偨Y(jié):內(nèi)公不好,家外被控了,標志數(shù)年心血白非了!(內(nèi)功不好,家外被控了,標志數(shù)年心血白費了?。?.3模塊的內(nèi)聚性內(nèi)聚是指一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度,它是信息隱蔽和局部的概念的自然擴展。設(shè)計時應(yīng)該力求高內(nèi)聚,理想內(nèi)聚的模塊應(yīng)當恰好做一件事情。1)偶然內(nèi)聚:一個模塊的各成分之間毫無關(guān)系。比如:一組語句在程序的多處出現(xiàn),為了節(jié)省內(nèi)存空間,這些語句放在一個模塊中,該模塊的內(nèi)聚是偶然內(nèi)聚的。 2)邏輯內(nèi)聚:把幾種邏輯上相關(guān)的功能組放在同一模塊中。 3)瞬時內(nèi)聚(時間內(nèi)聚):一個模塊所包含的任務(wù)必須在同一時間間隔內(nèi)執(zhí)行,例如初始化模塊。 4)過程內(nèi)聚:一個模塊的處理元素是相關(guān)的,而且必須按特定的次序執(zhí)行。 5)通信內(nèi)聚:一個模塊的所有成分都結(jié)合在同一個數(shù)據(jù)結(jié)構(gòu)上。 6)順序內(nèi)聚:模塊的成分同一個功能密切相關(guān),且輸出,作為另外一個成分的輸入。 7)功能內(nèi)聚:模塊內(nèi)的所有成分屬于一個整體,完成單一的功能。在以上的內(nèi)聚中,內(nèi)聚度從低到高,偶然內(nèi)聚度最低,功能內(nèi)聚度最高。 模塊的高內(nèi)聚、低耦合的原則稱為模塊獨立原則,也稱為模塊設(shè)計的原則。巧記:偶然邏輯混亂,瞬間遺忘過程,打電話(通信)詢問,順序清楚,功能也搞定!8.4模塊的深度、寬度、扇出與扇入深度:表示軟件結(jié)構(gòu)中控制的層數(shù)。寬度是軟件結(jié)構(gòu)中同一個層次上的模塊總數(shù)的最大值一個模塊的扇入是指直接調(diào)用該模塊的上級模塊的個數(shù)。設(shè)計原則:低扇出、高扇入。8.5模塊作用域和控制域軟件設(shè)計時,模塊的作用域應(yīng)在控制域之內(nèi)。8.6模塊化基礎(chǔ)知識小結(jié)通過模塊的合并和分解,降低模塊的耦合度。模塊的扇入應(yīng)盡量大,扇出應(yīng)盡量小。一個模塊的扇入是指直接調(diào)用該模塊的上級模塊的個數(shù)。一個模塊的扇出是指該模塊直接調(diào)用的下級模塊的個數(shù)。扇入大表示模塊的重用性高,利用率高。扇出大表示模塊的復(fù)雜度高。所以要高扇入,低扇出。要將模塊的作用范圍限制在模塊的控制范圍之內(nèi)。降低模塊之間的復(fù)雜性,避免“病態(tài)連接”。2006年上半年:●模塊的耦合度描述了(16)。

(16)A.模塊內(nèi)各種元素結(jié)合的程度B.模塊內(nèi)多個功能之間的接口

C.模塊之間公共數(shù)據(jù)的數(shù)量D.模塊之間相互關(guān)聯(lián)的程度●內(nèi)聚是一種指標,表示一個模塊(17)。

(17)A.代碼優(yōu)化的程度B.代碼功能的集中程度C.完成任務(wù)時及時程度D.為了與其他模塊連接所要完成的工作量九.什么是軟件開發(fā)方法?有哪些主要方法?軟件開發(fā)方法:使用已定義好的技術(shù)集及符號表示習慣組織軟件生產(chǎn)的過程。結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、JACKSON方法、維也納開發(fā)方法(VDM)等。9.1結(jié)構(gòu)化方法學結(jié)構(gòu)化方法學也稱為生命周期方法學(瀑布模型方法),是一種面向數(shù)據(jù)流的需求分析方法。它的基本思想是自頂向下逐層分解。為了在需求改變時對軟件的影響較小,結(jié)構(gòu)化分析時應(yīng)該使程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)。 常用工具:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、實例—關(guān)系圖(E-R圖)及描述加工處理的結(jié)構(gòu)化語言、判定表、判定樹。9.1.1數(shù)據(jù)流圖(DFD圖)DFD的基本成分數(shù)據(jù)流圖主要由4種成分組成,如下表所示:數(shù)據(jù)流(dataflow):由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向。它可以從源、文件流向加工,也可以從加工流向文件和宿,還可以從一個加工流向另一個加工。通常每個數(shù)據(jù)流必須有一個合適的名字,一方面是為了區(qū)別,另一方面也給人一個直觀的印象,使人容易理解這個數(shù)據(jù)流的含義。但流向文件或從文件流出的數(shù)據(jù)流不必命名,因為這種數(shù)據(jù)流的組成部分就是相應(yīng)文件的組成部分。加工(process):描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流之間的變換,也就是輸入數(shù)據(jù)流做了什么處理后變成了輸出數(shù)據(jù)流。每個加工有一個名字和一個編號。編號反映了該加工位于分層DFD的哪個層次和哪張圖中以及它是哪個加工分解出來的子加工。文件(file):可以表示數(shù)據(jù)文件,也可以表示一個數(shù)據(jù)記錄。流向文件的數(shù)據(jù)流表示寫文件,流出文件的數(shù)據(jù)流表示讀文件,雙向箭頭表示對文件既讀又寫。每個文件都有一個文件名。源/宿(source/sink):源是指系統(tǒng)所需數(shù)據(jù)的發(fā)源地,宿(也稱數(shù)據(jù)池)是指系統(tǒng)所產(chǎn)生的數(shù)據(jù)的歸宿地。無論源或宿,均對應(yīng)于外部實體,在框內(nèi)應(yīng)加注實體的名字,在一個軟件各級軟件系統(tǒng)中,有些源和宿可以是一個外部實體,外部實體是指存在于軟件系統(tǒng)之外的人員或組織,它指出系統(tǒng)所需數(shù)據(jù)的發(fā)源地和系統(tǒng)所產(chǎn)生數(shù)據(jù)的歸宿地。分層數(shù)據(jù)流圖一套分層的的數(shù)據(jù)流圖由頂層、底層、和中間層組成。畫分層數(shù)據(jù)流圖基本原則與注意事項a.自外向內(nèi),自頂向下,逐層細化,完善求精。b.保持父圖與子圖的平衡。也就是說,父圖中某加工的輸入數(shù)據(jù)流中的數(shù)據(jù)必須與它的子圖的輸入數(shù)據(jù)流在數(shù)量和意義上相同。c.保持數(shù)據(jù)守恒。也就是說,一個加工所有輸出數(shù)據(jù)流中的數(shù)據(jù)必須能從該加工的輸入數(shù)據(jù)流中直接獲得,或者是通過該加工能產(chǎn)生的數(shù)據(jù)。c.加工細節(jié)隱藏。根據(jù)抽象原則,在畫父圖時,只需畫出加工和加工之間的關(guān)系,而不必畫出各個加工內(nèi)部的細節(jié)。d.簡化加工間關(guān)系。在數(shù)據(jù)流圖中,加工間的數(shù)據(jù)流越少,各加工就越相對獨立,所以應(yīng)盡量減少加工間輸入輸出數(shù)據(jù)流的數(shù)目。e.均勻分解。應(yīng)該使一個數(shù)據(jù)流中的各個加工分解層次大致相同。f.適當?shù)貫閿?shù)據(jù)流、加工、文件、源/宿命名,名字應(yīng)反映該成分的實際意義,避免空洞的名字。g.忽略枝節(jié)。應(yīng)集中精力于主要的數(shù)據(jù)流,而暫不考慮一些例外情況、出錯處理等枝節(jié)性問題。h.表現(xiàn)的是數(shù)據(jù)流而不是控制流。i.每個加工必須既有輸入數(shù)據(jù)流,又有輸出數(shù)據(jù)流.在整套數(shù)據(jù)流圖中,每個文件必須既有讀文件的數(shù)據(jù)流又有寫文件的數(shù)據(jù)流,但在某一張子圖中可能只有讀沒有寫或者只有寫沒有讀。小結(jié):一個軟件系統(tǒng),其數(shù)據(jù)流圖往往有多層。如果父圖有N個加工(Process),則父圖允許有0~N張子圖,但是每張子圖只能對應(yīng)一張父圖。在一張DFD圖中,任意兩個加工之間可以有0條或多條名字互不相同的數(shù)據(jù)流;在畫數(shù)據(jù)流圖時,應(yīng)該注意父圖和子圖的平衡,即父圖中某加工的輸入輸出數(shù)據(jù)流必須與其輸入輸出流在數(shù)量和名字上相同。DFD信息流大致可分為兩類:交換流和事務(wù)流。2006年上半年:●在繪制數(shù)據(jù)流圖時,要遵循的一個原則是父圖與子圖的平衡,所謂平衡是指___(31)___。

(31)A.父圖和子圖都不得改變數(shù)據(jù)流的性質(zhì)B.子圖不改變父圖數(shù)據(jù)流的—致性

C.父圖的輸入/輸出數(shù)據(jù)流與子圖的輸入/輸出數(shù)據(jù)流一致

D.子圖的輸出數(shù)據(jù)流完全由父圖的輸入數(shù)據(jù)流確定9.1.2數(shù)據(jù)字典數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。組成部分:a.數(shù)據(jù)項條目b.數(shù)據(jù)流條目c.文件條目d.加工條目加工條目是對數(shù)據(jù)流圖中每一個不能再分解的基本加工的精確說明。對于加工的描述是數(shù)據(jù)字典的組成內(nèi)容之一,常用的加工描述方法有結(jié)構(gòu)化語言、判定樹和判定表。9.1.3結(jié)構(gòu)化語言結(jié)構(gòu)化語言實際上是一種半形式化語言,它的結(jié)構(gòu)通??煞譃閮?nèi)外兩層。外層接近于形式化語言,而內(nèi)層近似于自然語言的描述。9.1.4實體-關(guān)系圖(E-R圖)實體-關(guān)系圖(Entity-RelabionshipDiagram),簡稱E-R圖,包含實體、關(guān)系和屬性等3種基本成分。通常用矩形框代表實體,并用直線把實體(或關(guān)系)與其屬性連接起來。E-R圖通常用于數(shù)據(jù)庫應(yīng)用系統(tǒng)。9.2結(jié)構(gòu)化設(shè)計 結(jié)構(gòu)化設(shè)計通常可分為概要設(shè)計和詳細設(shè)計,但是主要用于概要設(shè)計階段。概要設(shè)計的任務(wù)是確定軟件系統(tǒng)的結(jié)構(gòu),進行模塊劃分,確定每個模塊的功能、接口以及模塊間的調(diào)用關(guān)系。詳細設(shè)計的任務(wù)是為每個模塊設(shè)計實現(xiàn)的細節(jié)。9.2.1概要設(shè)計 經(jīng)過需求分析階段的工作,系統(tǒng)必須“做什么”已經(jīng)清楚了,概要設(shè)計的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如實現(xiàn)?”這個問題。概要設(shè)計的重要任務(wù):將一個復(fù)雜的系統(tǒng)按功能化分為模塊、確定每個模塊的功能、確定模塊之間的調(diào)用關(guān)系、確定模塊之間的接口(模塊之間傳遞的信息)、評價模塊的結(jié)構(gòu)質(zhì)量。1.軟件結(jié)構(gòu)圖形工具 結(jié)構(gòu)化設(shè)計方法(SD)方法采用結(jié)構(gòu)圖(StructureChart)、層次圖和HIPO圖描述軟件結(jié)構(gòu)。 結(jié)構(gòu)圖的主要成分有模塊、調(diào)用和數(shù)據(jù),結(jié)構(gòu)圖中的模塊用矩形表示,在矩形框內(nèi)可標上模塊的名字。模塊間如有箭頭或直線相連,表明它們之間有調(diào)用關(guān)系。層次圖用來描繪軟件的層次結(jié)構(gòu).層次圖中一個矩形框代表一個模塊,方框間的連線表示模塊間的調(diào)用關(guān)系.HIPO圖實際上就是層次圖加輸入/處理/輸出圖.HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”,是在層次圖里出了最頂層的方框之外,每個方框都加了編號。編號規(guī)則和數(shù)據(jù)流圖的編號規(guī)則一樣。2.概要設(shè)計中的信息流變換流:信息沿著輸入通道進入系統(tǒng),然后通過變換中心(也稱主加工)處理,再沿著輸出通道離開系統(tǒng).具有這一特性的信息流稱為變換流.具有變換流型的數(shù)據(jù)流圖可明顯地分成輸入、變換(主加工)、輸出三大部分。事務(wù)流:信息流沿著輸入通道到達一個事務(wù)中心,事務(wù)中心根據(jù)輸入信息(即事務(wù))的類型在若干個動作序列(稱為活動流)中選擇一個來執(zhí)行,這種信息流稱為事務(wù)流。事務(wù)流有明顯的事務(wù)中心,各活動以事務(wù)中心為起點呈輻射狀流出。9.2.2詳細設(shè)計概要設(shè)計已經(jīng)確定了每個模塊的功能和接口,詳細設(shè)計的任務(wù)就是為每個模塊設(shè)計其實現(xiàn)的細節(jié)。詳細設(shè)計階段的根本目標是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng),得出對目標系統(tǒng)的精確描述。1.詳細設(shè)計階段的內(nèi)容為每個模塊進行詳細的算法設(shè)計。為模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)進行設(shè)計。對數(shù)據(jù)庫進行物理設(shè)計。其他詳細設(shè)計工具主要包括程序流程圖(系統(tǒng)流程圖)、盒圖(N-S圖)、PAD圖和偽碼(PDL)。2.人機界面設(shè)計人機界面的設(shè)計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價。界面的美觀、靈活和風格都很重要,但人機界面設(shè)計中最重要的也是最基本的目標是軟件的易操作性。人機界面設(shè)計主要包括系統(tǒng)響應(yīng)時間、用戶幫助設(shè)計、出錯信息處理和命令交互設(shè)計等幾個方面。9.3Jackson方法上面講的結(jié)構(gòu)化設(shè)計方法是面向數(shù)據(jù)流的,另外還有一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,Jackson方法是最著名的面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,而不是面向數(shù)據(jù)流的設(shè)計方法。Jackson方法的基本步驟是:建立系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),對應(yīng)地建立程序結(jié)構(gòu);列出程序中要用到的各種基本操作,再將這些操作分配到程序結(jié)構(gòu)適當?shù)哪K中。9.4面向?qū)ο蠓治龇椒ǎ?0A)OTM方法的三個模型,分別從三個不同側(cè)面描述了所要開發(fā)的系統(tǒng):功能模型指明了系統(tǒng)應(yīng)該“做什么”;動態(tài)模型明確了什么時候做;對象模型則定義了做事情的實體。對象模型描述了系統(tǒng)中對象的靜態(tài)結(jié)構(gòu)及對象間的聯(lián)系,用對象模型圖來表示。動態(tài)模型描述了與時間和操作次序有關(guān)的系統(tǒng)屬性。動態(tài)模型由多張狀態(tài)圖組成。各個類的狀態(tài)圖通過共享事件組成系統(tǒng)的動態(tài)模型。功能模型描述系統(tǒng)內(nèi)數(shù)據(jù)值的變化,它由數(shù)據(jù)流圖組成。數(shù)據(jù)流圖說明數(shù)據(jù)流是如何從外部輸入、經(jīng)過操作和內(nèi)部存儲而得到輸出的。十.軟件工具軟件工具是指用于輔助軟件開發(fā)、運行、維護、管理、支持等過程中的活動的軟件。通常也稱為CASE(ComputerAidedSoftwareEngineering,計算機輔助軟件工程)工具。按軟件過程的活動分為軟件開發(fā)工具、軟件維護工具和軟件管理工具等。十一.軟件開發(fā)環(huán)境集成型開發(fā)環(huán)境通常可由工具集和環(huán)境集成機制兩部分組成。這種環(huán)境應(yīng)具有開放性和可裁減性。環(huán)境集成機制主要有數(shù)據(jù)集成機制、控制集成機制和界面集成機制。十二.軟件質(zhì)量管理基礎(chǔ)知識12.1軟件質(zhì)量ISO/IEC9126軟件質(zhì)量模型可從軟件功能性、可靠性、可用性、效率、可維護性、可移植性6個方面來衡量。(1).功能性與功能及其指定的性質(zhì)的一組軟件屬性。(2)可靠性 軟件在規(guī)定的一段時間內(nèi)和規(guī)定的條件下保持其性能水平有關(guān)的一組軟件屬性。也可以稱為在規(guī)定的條件下和規(guī)定的時間間隔內(nèi),軟件實現(xiàn)其規(guī)定功能的概率。(3)可用性 與使用的難易程度及規(guī)定或隱含用戶對使用方式所做的評價有關(guān)的軟件屬性。 (4)效率 與在規(guī)定條件的性能水平與所用資源量之間的關(guān)系有關(guān)的一組軟件屬性。(5)可維護性 與軟件維護的難易程序有關(guān)的一組軟件屬性。(6)可移植性 軟件可從某一環(huán)境轉(zhuǎn)移到另一環(huán)境的能力有關(guān)的一組屬性。即軟件從一個計算機系統(tǒng)轉(zhuǎn)換到另一個計算機系統(tǒng)運行的難易程度是指軟件的可移植性。為了提高可移植性,應(yīng)注意提高軟件的設(shè)備獨立性。采用表格驅(qū)動程序有助于提高設(shè)備獨立性。為了提高可移植性,還應(yīng)有完備的文檔資料。使用C語言開發(fā)的系統(tǒng)軟件具有較好的可移植性。2006年下半年:●按照ISO/IEC9126軟件質(zhì)量度量模型定義,一個軟件可靠性的子特性包括(28):(28)A.容錯性和安全性B.容錯性和適應(yīng)性C.容錯性和易恢復(fù)性D.易恢復(fù)性和安全性●某軟件在運行初期運行在WindowsNT環(huán)境中,現(xiàn)因某種原因,該軟件需要在UNIX環(huán)境中運行,而且必須完成同樣的功能。為適應(yīng)這個要求,軟件本身需要進行修改,而所需的工作量取決于該軟件的(27)(27)A.可擴充性B.可靠性C.復(fù)用性D.可移植性2005年5月:●下列敘述中,與提高軟件可移植性相關(guān)的是(18)A.選擇時間效率高的算B.盡可能減少注釋C.選擇空間效率高的算法D.盡量用高級語言編寫系統(tǒng)中對效率要求不高的部分12.2軟件質(zhì)量保證軟件質(zhì)量保證的主要困難表現(xiàn)在以下幾個方面:1)軟件開發(fā)的管理人員往往關(guān)心項目開發(fā)的成本與進度。因為成本和進度是顯而易見的,而軟件質(zhì)量則難以度量。如果軟件開發(fā)的管理人員對交付的軟件含有多少隱患并不必負什么責任,他們必定沒有太高的熱情去控制開發(fā)的質(zhì)量,更不必說保證質(zhì)量并不容易且代價昂貴。開發(fā)人員的習慣一旦形成難以改變,他們的形為也難于控制,而高質(zhì)量的軟件產(chǎn)品,又主要取決于參與開發(fā)的人員。復(fù)雜的軟件項目需要許多技術(shù)人員和管理人員參與,對問題的不同認識和誤解如不能及時消除必然影響軟件質(zhì)量。軟件開發(fā)人員的頻繁流動,特別是骨干開發(fā)人員的流失,也會使軟件質(zhì)量受到一定的影響。軟件質(zhì)量的保證手段:開發(fā)初期制定質(zhì)量保證計劃,并在開發(fā)中堅持實行。開發(fā)前選定或制定開發(fā)標準或開發(fā)規(guī)范,并遵照實施。從開始就選擇分析設(shè)計方法和工具,形成高質(zhì)量的分析模型和設(shè)計模型。嚴格執(zhí)行階段評審,以便及時發(fā)現(xiàn)問題。各個開發(fā)階段的測試。對軟件的每次“變動”都要經(jīng)過申請、評估、批準、實施等步驟。軟件質(zhì)量特性的度量化。軟件生存期的各階段都要完整的文檔。12.3代碼評審技術(shù)常用方法有代碼走查和代碼審查技術(shù)。代碼走查程序員和測試員組成審查小組,通過邏輯運行程序。第一步:小組成員提前閱讀設(shè)計規(guī)格書、程序文本等相關(guān)文檔;第二步:利用測試用例,使程序邏輯運行,記錄程序的蹤跡,發(fā)現(xiàn)、討論、解決問題代碼審查程序員和測試員組成審查小組。第一步:小組成員提前閱讀設(shè)計規(guī)格書、程序文本等相關(guān)文檔;第二步:召開程序?qū)彶闀?,開發(fā)人員讀程序,審查小組討論、發(fā)現(xiàn)、解決問題。兩者的區(qū)別代碼審查是一種正式的評審活動,而代碼走查的討論過程是非正式的。十三.成本-效益分析可用哪些指標進行度量?投資回收率:通常把建立系統(tǒng)若干年后所取得的收益折算成現(xiàn)在的價值和開發(fā)系統(tǒng)所需的費用進行比較得出投資回收率。投資回收期:就是使累計的經(jīng)濟效益等于最初的投資費用所需的時間。純收入:整個軟件生命周期之內(nèi)的累計經(jīng)濟效益(折成現(xiàn)在值)與投資之差。十四.第四代語言(4GL)的主要特征?友好的用戶界面兼有過程性和非過程性兩種特性高效的程序代碼完備的數(shù)據(jù)庫應(yīng)用程序生成器十五.軟件測試軟件測試的費用已經(jīng)超過軟件開發(fā)費用的30%左右?!案弋a(chǎn)”測試是指用少量的測試用例,發(fā)現(xiàn)被測試程序盡可能多的錯誤。15.1軟件測試經(jīng)過的步驟單元測試->集成測試->確認測試->系統(tǒng)測試15.2測試與軟件開發(fā)各階段的關(guān)系單元測試對程序中每一個程序單元進行測試,檢查各個模塊是否都實現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯誤,該階段涉及編碼和詳細設(shè)計文檔。集成測試是為了檢查與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的有關(guān)問題,也就是檢查概要設(shè)計是否合理有效。確認測試主要是檢查已實現(xiàn)的軟件是否滿足需求規(guī)格說明書中已確定了的各種需求。系統(tǒng)測試是把已確認的軟件與其他系統(tǒng)元素(如硬件,其他支持軟件、數(shù)據(jù)、人工等)結(jié)合在一起進行測試,以確定軟件是否可以支付使用。15.3白盒測試白盒測試又稱為結(jié)構(gòu)測試??梢园殉绦蚩闯裳b在一個透明盒子里,測試者(一般為編程者)完全知道程序的結(jié)構(gòu)和處理算法。按照程序內(nèi)部邏輯設(shè)計測試用例,檢測程序中的主要執(zhí)行通路是否能按預(yù)定要求正常工作。白盒測試多用于單元測試階段。邏輯覆蓋是主要的白盒測試技術(shù)。白盒測試時,確定測試數(shù)據(jù)應(yīng)根據(jù)程序的內(nèi)部邏輯和指定的覆蓋方式。采用以下幾種邏輯覆蓋標準:語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋滿足條件組合覆蓋測試用例,也一定滿足判定條件覆蓋。因此,條件組合覆蓋是上述五種覆蓋標準中最強的一種。2006年下半年:給定C語句程序intfoo(intx,inty,intd){if(x!=0){if(y==0)d=d/x;elsed=d/(x*y);}else{if(y==0)d=0;elsed=d/y;}returnd;}當用路徑覆蓋法測試時,至少需要設(shè)計(31)個測試用例。(31)A.3B.4C.5D.82007年下半年:●對于如下的程序流程,當采用語句覆蓋法設(shè)計測試案例時,至少需要設(shè)計(34)個測試案例。(34)A.1 B.2 C.3 D.415.4黑盒測試黑盒測試,又稱為功能測試。把軟件看做是一個不透明的黑盒子,完全不考慮(或不了解)軟件內(nèi)部結(jié)構(gòu)和處理算法,它只檢測軟件功能是否能按照軟件需求說明書的要求正常使用,軟件是否能適當?shù)慕邮茌斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,軟件運行過程中能否保持外部信息(例如文件和數(shù)據(jù)庫)的完整性等。常用的黑盒測試技術(shù)包括等價類劃分,邊值分析、錯誤推測和因果圖等。其中等價類劃分和邊界值分析法方法最常用。如果兩者結(jié)合使用,更有可能發(fā)現(xiàn)軟件中的錯誤。15.4灰盒測試灰盒測試介于白盒測試和黑盒測試之間,它把軟件看做是一個半透明的灰盒子,結(jié)合考慮軟件的內(nèi)部結(jié)構(gòu)和外部功能設(shè)計測試用例15.5回歸測試糾正了程序中的錯誤之后,選擇部分或全部原先已測試過的測試用例,對修改后程序重新測試以驗證對軟件修改后有沒有引出新的錯誤,稱為回歸測試。15.6單元測試單元測試(Unittesting)也稱為模塊測試或結(jié)構(gòu)測試,通??煞旁诰幊屉A段(實現(xiàn)階段),主要采用邏輯覆蓋技術(shù),由程序員對自己編寫的模塊自行測試,檢查模塊是否能實現(xiàn)了詳細設(shè)計說明書中規(guī)定的功能和算法。單元測試主要發(fā)現(xiàn)編程和詳細設(shè)計中產(chǎn)生的錯誤。測試一個模塊時需要為該模塊編寫一個驅(qū)動模塊和若干個樁(stub)模塊。頂層模塊測試時不需要驅(qū)動模塊,底層模塊測試時不需要樁模塊。在進行單元測試時,常用的方法是白盒測試(采用邏輯覆蓋的測試技術(shù)),輔之以黑盒測試。15.7集成測試集成測試(integrationtesting)也稱為組裝測試,在單元測試的基礎(chǔ)之上,把所有的模塊組裝成一個系統(tǒng)進行測試。主要測試設(shè)計階段產(chǎn)生的錯誤,集成測試計劃應(yīng)該在概要設(shè)計階段制定。非漸增式集成測試首先將每個模塊分別進行單元測試,再把所有的模塊組裝成一個完整的系統(tǒng)進行測試。目前在進行集成測試時已普遍采用漸增式集成。漸增式集成測試又可以分為自頂向下集成和自底向上集成。自頂向下集成先測試上層模塊,再測試下層模塊,由于測試下層模塊時上層模塊已經(jīng)測試過,所以不必要另外編寫驅(qū)動模塊。自底向上集成,先測試下層模塊,再測試上層模塊同樣。頂層模塊測試時不需要驅(qū)動模塊,底層模塊測試時不需要樁模塊。軟件的集成測試最好由不屬于該軟件開發(fā)組的軟件設(shè)計人員承擔,以提高集成測試的效果。三明治測試從系統(tǒng)的三個角往中間包圍測試的方法。15.8確認測試在系統(tǒng)驗收測試中,驗證測試是在模擬的環(huán)境中進行強度測試的基礎(chǔ)上進行,主要依據(jù)軟件需求說明書檢測軟件的功能,性能及其他特征是否與用戶的要求一致,而確認測試是在一個實際環(huán)境中使用真實數(shù)據(jù)運行系統(tǒng)。確認測試計劃應(yīng)該在需求分析階段制定。α測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者的指導(dǎo)下進行測試。開發(fā)者負責紀錄發(fā)現(xiàn)的錯誤和使用中遇到的問題,也就是說α測試是在受控的環(huán)境中進行的。β測試是在一個或多個用戶的現(xiàn)場由該軟件的最終用戶實施的,開發(fā)者通常不在現(xiàn)場,用戶負責記錄發(fā)現(xiàn)的錯誤和使用中遇到的問題并把這些問題報告給開發(fā)者。也就是說,β測試是在受控的環(huán)境中進行的。經(jīng)過確認測試之后的軟件通常就可以交付使用了。15.9系統(tǒng)測試系統(tǒng)測試是將已經(jīng)確認的軟件、計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進行信息系統(tǒng)的各種組裝測試和確認測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方。包括以下的測試:恢復(fù)測試:監(jiān)測系統(tǒng)的容錯能力安全性測試:監(jiān)測系統(tǒng)的安全機制、保密措施是否完善等防范能力。強度測試:測試軟件的異常情況的處理能力。性能測試:監(jiān)測系統(tǒng)系統(tǒng)是否滿足系統(tǒng)設(shè)計方案說明書對性能的要求??煽啃詼y試:從平均失效間隔是否超過了規(guī)定的時限,因故障而停機的時間在一年中不應(yīng)超過的時間來進行檢測。安裝測試:監(jiān)測軟件在安裝過程中是否有錯誤、是否容易操作等。注意:系統(tǒng)測試計劃在需求分析階段制定。2006年下半年:●軟件的測試通常分為單元測試、組裝測試、確認測試、系統(tǒng)測試四個階段進行。(32)屬于確認測試階段的活動。(32)A.設(shè)計評審B.代碼審查C.結(jié)構(gòu)測試D.可靠性測試十六.軟件工程標準和軟件文檔GB/T8566-2001,GB/T12504-1990,GB/T12505-1990是我國現(xiàn)階段最重要的三個軟件開發(fā)規(guī)范標準。國家標準局1988年1月批準并發(fā)布的《GB/T8567-1988計算機軟件產(chǎn)品開發(fā)文件編制指南》規(guī)定在一項軟件開發(fā)過程中應(yīng)該產(chǎn)生14中文件可行性研究報告項目開發(fā)計劃軟件需求說明書數(shù)據(jù)要求說明書概要設(shè)計說明書詳細設(shè)計說明書數(shù)據(jù)庫設(shè)計說明書用戶手冊操作手冊模塊開發(fā)卷宗測試計劃測試分析報告開發(fā)進度月報項目開發(fā)總結(jié)報告軟件運行和維護基礎(chǔ)知識管理人員主要使用:項目開發(fā)計劃、可行性研究報告、模塊開發(fā)卷宗、開發(fā)進度月報、項目開發(fā)總結(jié)報告。開發(fā)人員:項目開發(fā)計劃、可行性研究報告、軟件需求說明書、數(shù)據(jù)要求說明書、數(shù)據(jù)庫設(shè)計說明書、概要設(shè)計說明書、詳細設(shè)計說明書、測試計劃、測試分析報告。維護人員:概要設(shè)計說明書、詳細設(shè)計說明書、數(shù)據(jù)庫設(shè)計說明書、模塊開發(fā)卷宗、測試分析報告、維護報告。用戶:用戶手冊、操作手冊。2006年下半年:●(29)詳細描述軟件的功能、性能和用戶界面,以使用戶了解如何使用軟件。(29)A.概要設(shè)計說明書B.詳細設(shè)計說明書C.用戶手冊D.用戶需求說明書十七.軟件維護用于軟件維護的花費約為整個軟件生命周期花費的75%(或60%~80%之間)而且還在逐年上升。17.1軟件維護類型根據(jù)引起軟件維護的原因,軟件維護可分為以下四種類型(1)改正性維護:使用過程中發(fā)現(xiàn)了隱蔽的錯誤后,為了診斷和改正這些隱蔽錯誤而修改軟件的活動(2)適應(yīng)性維護:為了適應(yīng)環(huán)境的變化而修改軟件的活動(3)完善性維護:為了擴充或完善原有軟件的功能或性能而修改軟件的活動。(4)預(yù)防性維護:預(yù)防性維護是指為了提高軟件的可維護性和可靠性,為未來的進一步改進打下基礎(chǔ)而修改軟件的活動。2006年下半年:●各類軟件維護活動中,(30)維護占整個維護工作的比重最大。(30)A.完善性B.改正性C.適應(yīng)性D.預(yù)防性17.2軟件的可維護性通常影響軟件可維護性的因素有可理解性,可測試性和可修改性。(1)可理解性可理解性是指維護人員理解軟件的結(jié)構(gòu),接口,功能和內(nèi)部過程的難易程度。采用良好的編程風格有助于提高軟件的易理解性。(2)可測試性:可測試性是指測試和診斷軟件錯誤的難易程度。(3)可修改性:可修改性是指修改軟件的難易程度。怎樣提高軟件的可維護性?在軟件生命周期的各個階段都必須充分考慮維護問題。結(jié)構(gòu)化設(shè)計的幾條主要原則,如模塊化,信息隱藏,高內(nèi)聚,低耦合等,對于提高軟件的可理解性,可測試性和可修改性也都有重要的作用。書寫詳細正確的文檔,書寫源文件的內(nèi)部注解,使用良好的編程語言,具有良好的程序設(shè)計風格,也有助于提高軟件的可理解性。使用先進的測試工具,保存以前的測試過程和測試用例,則有助于提高軟件的可測試性。十八.軟件的可靠性在給定的時間內(nèi),在給定的環(huán)境條件下系統(tǒng)完成所指定工作的概率。衡量的標準是:平均失效等待時間MTTF和平均失效間隔時間MTBF。軟件工程練習題1.軟件測試在軟件生命周期中橫跨兩個階段,單元測試(模塊測試)通常在__A__階段完成。單元測試主要采用__B__技術(shù),一般由__C__完成。測試一個模塊時需要為該模塊編寫一個驅(qū)動模塊和若干個__D__。漸進式集成測試是將單元測試和集成測試合并到一起,__E__集成測試中不必編寫驅(qū)動模塊。A=1\*GB3①設(shè)計=2\*GB3②編程=3\*GB3③測試=4\*GB3④維護B=1\*GB3①邏輯覆蓋=2\*GB3②因果圖=3\*GB3③等價類劃分=4\*GB3④邊值分析C=1\*GB3①課題負責人=2\*GB3②編程者本人=3\*GB3③專業(yè)測試人員=4\*GB3④用戶D=1\*GB3①被測模塊=2\*GB3②上層模塊=3\*GB3③樁模塊=4\*GB3④等價模塊E=1\*GB3①自頂向下=2\*GB3②自底向上=3\*GB3③雙向的=4\*GB3④反向的2.版本控制包括版本管理、系統(tǒng)發(fā)行、版本標志和發(fā)行管理。其中,__A__是指對系統(tǒng)不同版本進行標志和跟蹤的過程,__B__是指系統(tǒng)發(fā)行策略的制定和執(zhí)行。A~B=1\*GB3①版本管理=2\*GB3②系統(tǒng)發(fā)行=3\*GB3③版本標志=4\*GB3④發(fā)行管理3.軟件質(zhì)量保證的主要困難在以下幾個方面:軟件開發(fā)管理人員更關(guān)心項目開發(fā)的1,而沒有太高的熱情去控制開發(fā)的2;開發(fā)人員的習慣一旦形成,難以改變,他們的行為往往3;不同開發(fā)人員對問題的不同認識4;項目組中骨干開發(fā)人員的5等。1.A.成本和進度B.規(guī)范化C.質(zhì)量 D.性能價格比2.A.費用B.時間C.效率 D.質(zhì)量3.A.易于控制B.難于控制C.無需控制 D.應(yīng)該信任4.A.易于溝通B.難于及時消除C.應(yīng)該保留 D.可頻繁交流5.A.密切合作B.難于獨立C.頻繁流失 D.認證資格4.用來輔助軟件維護過程中的活動的軟件稱為軟件維護工具。其中,用來存儲、更新、恢復(fù)和管理軟件版本的工具為A工具,用來對軟件開發(fā)過程中形成的文檔進行分析的工具稱為B工具,用來維護軟件項目開發(fā)信息的工具稱為C工具,用來輔助軟件人員進行逆向工程活動的工具稱為D工具,用來支持重構(gòu)一個功能和性能更為完善的軟件系統(tǒng)的工具稱為E工具。A~E:1.再工程工具2.軟件配置工具3.版本控制工具4.集成工具5.開發(fā)信息庫工具6.項目管理工具7.軟件評價工具8.逆向工程工具9.靜態(tài)分析工具10.文檔分析工具5.確定算法是解決問題的關(guān)鍵步驟之一。算法的計算工作量大小和實現(xiàn)算法所需的存儲單元多少,分別稱為計算的_A_和_B_。編寫程序時,_C_和_D_是應(yīng)采納的原則之一。_E_是調(diào)試程序的主要工作之一。

供選擇的答案B:①可實現(xiàn)性②時間復(fù)雜度③空間復(fù)雜度④困難度⑤高效性⑥計算有效性C:①程序的結(jié)構(gòu)化②程序越短越好③盡可能節(jié)省存儲單元④盡可能減少注解行D:①使用有實際意義的名字②使用長度短而無實際含義的名字③表達式中盡量少用括號④盡量使用化簡了的邏輯表達式E:①調(diào)度②證明程序正確③人員安排④排錯6.軟件測試的目的是__(16)__,通??煞譃榘缀袦y試和黑盒測試。白盒測試是根據(jù)程序的__(17)__來設(shè)計測試用例,黑盒測試是根據(jù)軟件的規(guī)格說明來設(shè)計測試用例。常用的黑盒測試方法有邊值分析、等價類劃分、錯誤猜測、因果圖等。其中,__(18)__經(jīng)常與其它方法結(jié)合起來使用。軟件測試的步驟主要有單元測試、集成測試和確認測試。如果一個軟件作為產(chǎn)品被許多客戶使用的話,在確認測試時通常要經(jīng)過α測試和β測試的過程。其中,α測試是__(19)__進行的一種測試。在軟件設(shè)計和編碼時,采取__(20)__等措施都有利于提高軟件的可測試性。(16):A.發(fā)現(xiàn)程序中的所有錯誤

B.盡可能多地發(fā)現(xiàn)程序中的錯誤

C.證明程序是正確的

D.證明程序做了應(yīng)做的事(17):A.功能

B.性能

C.內(nèi)部邏輯

D.內(nèi)部數(shù)據(jù)(18):A.邊值分析

B.等價類劃分

C.錯誤猜測

D.因果圖(19):A.在開發(fā)者現(xiàn)場由開發(fā)方的非本項目開發(fā)人員

B.在開發(fā)者現(xiàn)場由用戶

C.在用戶現(xiàn)場由開發(fā)方的非本項目開人員D.在用戶現(xiàn)場由用戶使(20):A.不使用標準文本以外的語句,書寫詳細正確的文檔

B.不使用標準文本以外的語句,采用良好的程序結(jié)構(gòu)C.書寫詳細正確的文檔,信息隱蔽

D.書寫詳細正確的文檔,采用良好的程序結(jié)構(gòu)7.軟件是一種(2)的產(chǎn)品。為了軟件產(chǎn)業(yè)的健康發(fā)展,應(yīng)對軟件產(chǎn)品的(3)進行保護。(2)A、易復(fù)制B、易損壞C、易開發(fā)D、易使用(3)A、技術(shù)B、版權(quán)C、開發(fā)D、使用說明8.白盒測試方法一般適合用于(21)測試。(21)A、單元B、系統(tǒng)C、集成D、確認9.瀑布模型(WaterfallModel)突出的缺點是不適應(yīng)(22)的變動。(22)A、算法B、平臺C、程序語言D、用戶需求10.在數(shù)據(jù)流圖中,表示(23),表示(24)。(23)A、加工B、外部實體C、數(shù)據(jù)流D、存儲(24)A、加工B、外部實體C、數(shù)據(jù)流D、存儲11.結(jié)構(gòu)化分析方法(SA)的一個重要指導(dǎo)思想是(25)。(25)A.自頂向下,逐步抽象B.自底向上,逐步抽象C.自頂向下,逐步分解D.自底向上,逐步分解12.軟件從一個計算機系統(tǒng)轉(zhuǎn)換到另一個計算機系統(tǒng)運行的難易程度是指軟件(26)。在規(guī)定的條件下和規(guī)定的時間間隔內(nèi),軟件實現(xiàn)其規(guī)定功能的概率稱為(27)。(26)A、兼容性B、可移植性C、可轉(zhuǎn)換性D、可接近性(27)A、可使用性B、可接近性C、可靠性D、穩(wěn)定性13.Jackson設(shè)計方法是由英國的M.Jackson提出的,它是一種面向(28)的軟件設(shè)計方法。(28)A.對象B.數(shù)據(jù)流C.數(shù)據(jù)結(jié)構(gòu)D.控制結(jié)構(gòu)14.模塊的控制范圍包括它本身及它所有的從屬模塊,模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受到這個判定影響的所有模塊都屬于這個判定的作用范圍,理想的情況是__(27)__。(27)A.模塊的作用范圍應(yīng)在控制范圍之內(nèi)B.模塊的控制范圍應(yīng)在作用范圍之內(nèi)C.模塊的作用范圍與控制范圍交叉D.模塊的作用范圍與控制范圍分離15.關(guān)于模塊設(shè)計的原則,以下敘述中正確的是(28)(28)A.模塊的內(nèi)聚性高,模塊之間的耦合度高B.模塊的內(nèi)聚性高,模塊之間的耦合度低C.模塊的內(nèi)聚性低,模塊之間的耦合度高D.模塊的內(nèi)聚性低,模塊之間的耦合度低

16.軟件的用戶界面作為人機接口起著越來越重要的作用,用戶界面的___(29)___是用戶界面設(shè)計中最重要的也是最基本的目標。(29)A.靈活性 B.風格多樣性C.美觀性 D.易操作性

17.軟件測試的目的是__(30)__。在進行單元測試時,常用的方法是__(31)__·(30)A.證明軟件系統(tǒng)中存在錯誤B.找出軟件系統(tǒng)中存在的所有錯誤C.盡可能多地發(fā)現(xiàn)軟件系統(tǒng)中的錯誤和缺陷D.證明軟件的正確性(31)A.采用白盒測試,輔之以黑盒測試B.采用黑盒測試,輔之以白盒測試C.只使用白盒測D.只使用黑盒測試

18.原型化方法是一種動態(tài)定義需求的方法,__(32)___不具有原型化方法的特征。(32)A.簡化項目管理 B.盡快建立初步需求C.加強用戶參與和決策 D.提供嚴格定義的文檔19.系統(tǒng)軟件是__(25)__的軟件.

(25)A.向應(yīng)用軟件提供系統(tǒng)調(diào)用等服務(wù)B.與具體硬件邏輯功能無關(guān)C.在應(yīng)用軟件基礎(chǔ)上開發(fā)D.并不具體提供人機界面20.軟件的復(fù)雜性與許多因素有關(guān)。__(32)__不屬于軟件的復(fù)雜性參數(shù)。(32)A.源程序的代碼行數(shù)B.程序的結(jié)構(gòu)C.算法的難易程度D.程序中注釋的多少21.在結(jié)構(gòu)化分析與設(shè)計方法中,為了在需求改變時對軟件的影響較小,應(yīng)該使__(33)__。

(33)A.程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)B.程序結(jié)構(gòu)與問題結(jié)構(gòu)相獨立C.程序結(jié)構(gòu)與用戶界面相對應(yīng)D.程序結(jié)構(gòu)與用戶界面相獨立22.系統(tǒng)的硬件環(huán)境、軟件環(huán)境和數(shù)據(jù)環(huán)境發(fā)生變化時需要對系統(tǒng)進行維護,這種維護屬于__(34)__。(34)A.校正性維護B.適應(yīng)性維護C.完善性維護D.預(yù)防性維護23.軟件開發(fā)環(huán)境是支持軟件產(chǎn)品開發(fā)的軟件系統(tǒng),它由_(49)_和環(huán)境集成機制構(gòu)成,環(huán)境集成機制包括數(shù)據(jù)集成、控制集成和界面集成。(49)A.軟件工具集B.軟件測試工具集C.軟件管理工具集D.軟件設(shè)計工具集

24.源程序清單是在軟件生存周期的_(50)_階段產(chǎn)生的文檔。(50)A.軟件概要設(shè)計B.編碼C.軟件詳細設(shè)計D.測試

25.黑盒測試也稱為功能測試。黑盒測試不能發(fā)現(xiàn)_(51)_。(51)A.終止性錯誤B.輸入是否正確接收C.界面是否有誤D.是否存在冗余代碼

26.通常,在軟件的輸入輸出設(shè)計中,合理的要求是:_(52)_。(52)A.數(shù)據(jù)盡量由用戶來輸入,以便給用戶提供更大的自主性B.輸入過程應(yīng)盡量容易,以減少錯誤的發(fā)生C.不能在輸入過程中檢驗數(shù)據(jù)的正確D.在輸入過程中,為了不干擾用戶,應(yīng)盡量避免提示信息27.一般地,可以將軟件開發(fā)的生命周期劃分為軟件項目計劃、(50)、軟件設(shè)計、編碼、測試和運行/維護6個階段。(50)A、可行性分析B、初始調(diào)查C、需求分析與定義D、問題分析28.軟件的(51)是指軟件從一種計算機系統(tǒng)轉(zhuǎn)換到另一種計算機系統(tǒng)運行的難易程度。在規(guī)定的條件下和規(guī)定的時間間隔內(nèi),軟件實現(xiàn)其規(guī)定功能的概率稱為(52)。(51)A、兼容性B、可移植性C、可轉(zhuǎn)換性D、可擴展性(52)A、可擴展性B、可接近性C、可靠性D、穩(wěn)定性29.以下關(guān)于程序測試的敘述,正確的是(55)。(55)A、程序測試的目的是為了證明程序的正確性B、白盒測試也稱為功能測試C、黑盒測試也稱為結(jié)構(gòu)測試D、程序測試要注意檢驗程序是否有多余的功能30.數(shù)據(jù)流圖包含的成分有__(51)__。

(51)A.關(guān)系、實體和屬性B.數(shù)據(jù)流、加工和數(shù)據(jù)存儲C.數(shù)據(jù)流、數(shù)據(jù)源和數(shù)據(jù)實體D.數(shù)據(jù)流、屬性、數(shù)據(jù)存儲和加工31.如果用戶對系統(tǒng)的目標不是很清楚,需求難以定義,這時最好使用__(53)__進行系統(tǒng)開發(fā)。

(53)A.原型B.瀑布模型C.V-模型D.螺旋模型32.在軟件開發(fā)的各個階段中,對軟件開發(fā)成敗影響最大的是__(54)__。

(54)A.需求分析B.概要設(shè)計C.詳細設(shè)計D.編碼33.系統(tǒng)測試計劃應(yīng)該在軟件開發(fā)的__(55)__階段制定。

(55)A.需求分析B.概要設(shè)計C.詳細設(shè)計D.系統(tǒng)測試34.從下面有關(guān)原型化方法的敘述,選出5條正確的敘述,并按編號依次填寫在A~E欄內(nèi)。=1\*GB3①快速原型方法是一種企圖克服傳統(tǒng)軟件周期模型缺點的開發(fā)方法。=2\*GB3②在用戶的數(shù)據(jù)資源沒有得到很好地組織和管理的時候,應(yīng)該使用原型化方法。=3\*GB3③在用戶沒有明確的肯定其需求時,應(yīng)該使用原型化方法。=4\*GB3④在用戶不希望把自己的時間花在軟件開發(fā)過程的時候,應(yīng)該使用原型化方法。=5\*GB3⑤使用原型化方法時應(yīng)使用第三代編程語言。=6\*GB3⑥原型化方法加強了開發(fā)過程中用戶的參與和決策。=7\*GB2⑺原型化方法大致可分為三類:拋棄式、演化式,遞增式。=8\*GB3⑧原型化方法大致可分為演化式和遞增式=9\*GB3⑨采用原型化方法時,軟件的開發(fā)成本較高。=10\*GB3⑩采用原型化方法時,關(guān)鍵的原因是建立原型的速度,而不是原型運行的效率。35.模塊內(nèi)聚度用于衡量模塊內(nèi)部各成分之間彼此結(jié)合的緊密程度。1、一組語句在程序的多處出現(xiàn),為了節(jié)省內(nèi)存空間把這些語句放在一個模塊中,該模塊的內(nèi)聚度是__A__的。2、將幾個邏輯上相似的成分放在一個模塊中,該模塊的內(nèi)聚度是__B__的。3、模塊中所有成分引用共同的數(shù)據(jù),該模塊的內(nèi)聚度是__C__的。4、模塊內(nèi)的某成分的輸出是另一些成分的輸入,該模塊的內(nèi)聚度是__D__的。5、模塊中所有成分結(jié)合起來完成一項任務(wù),該模塊的內(nèi)聚度是__E__的。它具有簡明的外部界面,由它構(gòu)成的軟件易于理解、測試和維護。

供選擇的答案A~E:①功能性②順序性③通信性④過程性⑤偶然性⑥瞬時性⑦邏輯性1991年試題試題5從供選擇的答案中,選出應(yīng)填入__n__內(nèi)的正確答案,把編號寫在答卷的對應(yīng)欄內(nèi)。軟件設(shè)計中劃分程序模塊通常遵循的原則是要使各模塊間的耦合性盡可能__A__。三種可能的模塊耦合是:__B__。例如,一個模塊直接引用另一模塊中的數(shù)據(jù)。__C__。例如,一個模塊把開關(guān)量作為參數(shù)傳送給另一模塊。__D__。例如,一個模塊把一個數(shù)值量做為參數(shù)傳送給另一模塊。其中__E__的耦合性最強。

供選擇的答案B~E:①公共耦臺②數(shù)據(jù)耦合③邏輯耦合④外部耦合⑤內(nèi)容耦合⑥控制耦合1992年試題試題3Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種面向__A__的設(shè)計方法,主要適用于規(guī)模適

溫馨提示

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

提交評論