網(wǎng)絡(luò)工程師考點精要--第3章 系統(tǒng)開發(fā)和運行基礎(chǔ)知識
【命題要點】•系統(tǒng)分析與設(shè)計方案:需求分析與管理、結(jié)構(gòu)化分析與設(shè)計、面向?qū)ο蠓治雠c設(shè)計、模塊設(shè)計、I/O設(shè)計、人機(jī)界面設(shè)計。•軟件測試評審方法:測試方法(白盒測試、黑盒測試)、測試步驟(單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、回歸測試)、評審方法、測試設(shè)計和管理(注入故障、系統(tǒng)測試)。•項目管理基礎(chǔ)知識:制定項目計劃,質(zhì)量控制計劃、管理和評估,過程管理(PERT圖、甘特圖、工作分解結(jié)構(gòu)、進(jìn)度控制、關(guān)鍵路徑),配置管理,人員計劃和管理,文檔管理 (文檔規(guī)范、變更管理),成本組織和風(fēng)險管理。•系統(tǒng)維護(hù):維護(hù)的類型(完善性維護(hù)、糾錯性維護(hù)、適應(yīng)性維護(hù)、預(yù)防性維護(hù)),維護(hù)過 程管理,硬件維護(hù)、軟件維護(hù)。提示:•通過最近8次考試的分析可知,系統(tǒng)分析與設(shè)計、項目管理是重點考核的內(nèi)容,考題基本都出自這兩個考點。結(jié)構(gòu)化分析與設(shè)計、UML、項目過程管理、質(zhì)量控制等內(nèi)容是重中之重。•自2008年起,較少考查軟件開發(fā)模型,考核重點轉(zhuǎn)移到項目管理上。【考點一】需求分析和設(shè)計方法一、軟件工程概述1.軟件危機(jī)(1)主要表現(xiàn):軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件成本不斷提高;軟件開發(fā)生產(chǎn)效率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。總之,可以將軟件危機(jī)歸結(jié)為成本、質(zhì)量和生產(chǎn)率等問題。(2)產(chǎn)生原因:一方面是由于軟件本身存在著復(fù)雜性;另一方面與軟件開發(fā)所使用的方法和技術(shù)相關(guān)。2、軟件工程(1)為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,人們認(rèn)識到軟件工程是使計算 機(jī)軟件走向科學(xué)的途徑,逐漸形成了軟件工程的概念,并開辟工程學(xué)的新興領(lǐng)域,即軟件工程學(xué)。(2)軟件工程的3個要素:·方法:完成軟件工程項目的技術(shù)手段。·工具:支持軟件的開發(fā)、管理、文檔生成。·過程:支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。3.軟件生命周期軟件生命周期:軟件產(chǎn)品從考慮其概念開始到該軟件產(chǎn)品交付使用,直至最終退役為止的整個過程。(1)計劃階段:確定待開發(fā)系統(tǒng)的總體目標(biāo)和范圍,研究系統(tǒng)的可行性和可能的解決方案,對資源、成本及進(jìn)度進(jìn)行合理的估算。軟件計劃的主要內(nèi)容包括所采用的軟件生命周期模型、開發(fā)員的組織、系統(tǒng)解決方案、管理的目標(biāo)與級別、所用的技術(shù)與工具,以及開發(fā)的進(jìn)度、預(yù)算和資 源分配。(2)分析階段:分析、整理和提煉所收集到的用戶需求,建立完整的分析模型,將其編寫成軟件需求規(guī)格說明書和初步的用戶手冊。通過評審需求規(guī)格說明書,確保對用戶需求達(dá)到共同的理解與認(rèn)識。軟件需求規(guī)格說明書明確地描述了軟件的功能,列出軟件必須滿足的所有約束條件,并定義軟件的輸入和輸出接口。(3)設(shè)計階段:決定軟件怎么做,設(shè)計人員依據(jù)軟件需求規(guī)格說明書,確定軟件的體系結(jié)構(gòu),進(jìn)而確定每個模塊的實現(xiàn)算法、數(shù)據(jù)結(jié)構(gòu)和接口等,編寫設(shè)計說明書,并組織進(jìn)行設(shè)計評審。(4)實現(xiàn)階段:將所設(shè)計的各個模塊編寫成計算機(jī)可接受的程序代碼與相關(guān)的文檔,也就是實現(xiàn)源程序和合適的注釋(5)測試階段:在設(shè)計測試用例的基礎(chǔ)上,測試軟件的各個組成模塊。然后,將各個模塊集成起來,測試整個產(chǎn)品的功能和性能是否滿足軟件需求規(guī)格說明書。(6)運行維護(hù)階段:是軟件過程的一個組成部分,應(yīng)當(dāng)在軟件的設(shè)計和實現(xiàn)階段充分考備軟件的可維護(hù)性。維護(hù)階段需要測試是否正確地實現(xiàn)了所要求的修改,并保證在產(chǎn)品的修改過程中,沒有做其他無關(guān)的改動。4、軟件開發(fā)模型(1)瀑布模型:將軟件生命周期劃分為制訂計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運行維護(hù)等6個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。其優(yōu)點是:可以規(guī)范化過程,有利于評審。缺點在于過于理想,缺乏靈活性,容易產(chǎn)生需求偏差。(2)快速原型模型:籌一步是緣造一個快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原型進(jìn)行評價,進(jìn)一步細(xì)化待開發(fā)軟件的需求。通過逐步調(diào)整原型喪其滿足客戶的要求,開發(fā)人員可以確定客戶的真正需求是什么第二步則在第一步的基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。快速原型方法可以克服瀑布模型的缺點,減少由于軟件需求不明確帶來的開發(fā)風(fēng)險,具有顯著的效果。(3)演化模型:也是一種原型化開發(fā),但與快速原型模型不同的是,快速原型模型在獲取真實需求后,將拋棄原型。而演化模型則不然,它將在快速開發(fā)一個原型的基礎(chǔ)上,逐步演化成最終的軟件。(4)增量模型:軟件被作為一系列的增量構(gòu)件來設(shè)計、實現(xiàn)、集成和測試,每一個構(gòu)件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構(gòu)成。增量模型在各個階段并不交付一個可運行的完整產(chǎn)品,而是交付滿足客戶需求的一個子集的可運行產(chǎn)品。整個產(chǎn)品被分解成若干個構(gòu)件,開發(fā)人員逐個構(gòu)件地交付產(chǎn)品,這樣做的好處是軟件開發(fā)可以較好地適應(yīng)變化,客戶可以不斷地看 到所開發(fā)的軟件,從而降低開發(fā)風(fēng)險。也就是說增量模型有利于快速開發(fā)軟件。(5)螺旋模型:綜合了瀑布模型和演化模型的優(yōu)點,還增加了風(fēng)險分析,特別適合于大型復(fù)雜的系統(tǒng)。采用螺旋模型時,軟件開發(fā)沿著螺線自內(nèi)向外旋轉(zhuǎn),每轉(zhuǎn)一圈都要對風(fēng)險進(jìn)行識別和分析,螺旋線第一圈的開始點可能是一個概念項目。從第二圈開始,一個新產(chǎn)品開發(fā)項目開始了,新產(chǎn)品的演化沿著螺旋線進(jìn)行若干次迭代,一直運轉(zhuǎn)到軟件生命期結(jié)束。(6)噴泉模型:對軟件復(fù)用和生存期中多項開發(fā)活動的集成提供了支持,主要支持面向?qū)ο蟮拈_發(fā)方法。“噴泉”一詞本身體現(xiàn)了迭代和無間隙特性。系統(tǒng)某個部分常常重復(fù)工作多次,相關(guān)功能在每次迭代中隨之加入演進(jìn)的系統(tǒng)。所謂無間隙,是指在開發(fā)活動——分析、設(shè)計和編碼之間不存在明顯的邊界。5、軟件開發(fā)方法(1)結(jié)構(gòu)化軟件開發(fā)方法(SASD):也稱為面向功能的軟件開發(fā)方法或面向數(shù)據(jù)流的軟件開發(fā)方法。首先用結(jié)構(gòu)化分析(SA)方法對軟件進(jìn)行需求分析,然后用結(jié)構(gòu)化設(shè)計(SD)方法進(jìn)行總體設(shè)計,最后是結(jié)構(gòu)化編程(SP)。它給出了兩類典型的軟件結(jié)構(gòu)(變換型和事務(wù)型),使軟件開發(fā)的成功率大大提高。結(jié)構(gòu)化終件開發(fā)方法是采用結(jié)構(gòu)化技術(shù)來完成軟件的開發(fā)的各項任務(wù),它把軟件生命周期劃分成若干個階段,依次地完成每個階段的任務(wù),它與瀑布模型有很好的結(jié)合度,是與其最相填應(yīng)的軟件開發(fā)方法。(2)面向數(shù)據(jù)結(jié)構(gòu)的軟件開發(fā)方法:從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu)再補(bǔ)充其他細(xì)節(jié),從而可得到完整的程序結(jié)構(gòu)圖。它有Jackson方法和Warnier方法兩種。(3)面向?qū)ο蟮能浖_發(fā)方法:隨著OOP(面向?qū)ο缶幊蹋┫騉OD (面向?qū)ο笤O(shè)計)和00A(面向?qū)ο蠓治觯┑陌l(fā)展,最終形成面向?qū)ο蟮能浖_發(fā)方法OMT (Object Modelling Technique)。這是一種自底向上和自頂向下相結(jié)合的方法,而且它以對象建模為基礎(chǔ),從而不僅考慮了輸入、輸出數(shù)據(jù)結(jié)構(gòu),實際上也包含了所有對象的數(shù)據(jù)結(jié)構(gòu)。(4)基于構(gòu)件化的開發(fā)方法:用預(yù)先建立的構(gòu)件和模板,像“搭積木”一樣進(jìn)行建造。二、需求分析(1)任務(wù):①確定軟件系統(tǒng)的功能需求和非功能需求;②分析軟件系統(tǒng)的數(shù)據(jù)要求;③導(dǎo)出系統(tǒng)的邏輯模型;④修正項目開發(fā)計劃;⑤如有必要,可以開發(fā)一個原型。(2)主要工作:①需求獲取——確定對目標(biāo)系統(tǒng)的各方面需求,涉及的主要任務(wù)是建立獲取用戶需求的方法框架,并支持和監(jiān)控需求獲取的過程;②需求分析和綜合——對問題進(jìn)行分析,然后在此基礎(chǔ)上整合出解決方案;③編寫需求規(guī)格說明書——對已確定的需求進(jìn)行文檔化描述,該文檔通常稱“軟件需求規(guī)格說明書”;④需求評審——評審需求分析的正確性、完整性和清晰性。(3)軟件需求規(guī)格說明書:需求分析階段的最后成果,是軟件開發(fā)的重要文檔之一。其作用有三:①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認(rèn)測試和驗收的依據(jù)。軟件需求規(guī)格說明書的內(nèi)容主要包括概述、數(shù)據(jù)描述、功能描述、性能描述、參考文獻(xiàn)、附錄等。 三、結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法(StructuredAnalysis, SA)是面向數(shù)據(jù)流進(jìn)療需求分析的方法釆用自觀向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。SA方法的分析結(jié)果由以下幾部分組成:一套分層的數(shù)據(jù)流圖、一本數(shù)據(jù)詞典、一組小說明。1數(shù)據(jù)流圖數(shù)據(jù)流圖(Data Flow Diagram, DFD)用來描述數(shù)據(jù)流從輸入到輸出的變換流程。.它以圖形 的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,_它只反映系統(tǒng)必須完成的邏輯功能,所以是一種功能模型。DFD的基本元素如圖3-1所示。 (1)數(shù)據(jù)流:由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向。(2)加工:描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流之間的變換,也就是輸入數(shù)據(jù)流經(jīng)過什么處理后變成了輸出數(shù)據(jù)流。(3)數(shù)據(jù)存儲:用來表示暫時存儲的數(shù)據(jù),每個數(shù)據(jù)存儲都有一個名字。(4)外部實體:是指存在于軟件系統(tǒng)之外的人員或組織。2、數(shù)據(jù)字典數(shù)據(jù)流圖僅描述了系統(tǒng)的“分解”,但沒有對圖中各成分進(jìn)行說明。數(shù)據(jù)詞典就是用來定義數(shù)據(jù)流圖中的各個成分的含義的。數(shù)據(jù)字典有4類條目,包括數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲和基本加工。3、加工邏輯的描述用來說明DFD中的數(shù)據(jù)加工的加工細(xì)節(jié),表達(dá)“做什么”,而不是“怎樣做”。描述工具有結(jié)構(gòu)化語言、判定表和判定樹。四、軟件設(shè)計從技術(shù)角度上,軟件設(shè)計分成體系結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計4方面的工作。從管理角度上,軟件設(shè)計分為概要設(shè)計和詳細(xì)設(shè)計兩個階段。1、軟件設(shè)計的基本原理(1)模塊化:將一個待開發(fā)的軟件分解成若干個小的簡單的部分——模塊,每個模塊可獨立地開發(fā)、測試,最后組裝成完整的程序。這是一種復(fù)雜問題“分而治之”的原則,模塊化的目的是使程序的結(jié)構(gòu)清晰,容易閱讀,容易理解,容易測試,容易修改。(2)抽象化:是一種設(shè)計技術(shù),抽出事物本質(zhì)的共同特性而暫不考慮它的細(xì)節(jié)。(3)信息隱蔽:將每個程序的成分隱蔽或封裝在一個單一的設(shè)計模塊中,定義每一個模塊時盡可能少地顯露其內(nèi)部的處理,可以提高軟件的可修改性、可測試性和可移植性。(4)模塊獨立:每個模塊完成一個相對獨立的特定子功能,并且與其他模塊之間的聯(lián)系簡單。衡量度量標(biāo)準(zhǔn)有兩個:模塊間的耦合和模塊的內(nèi)聚度。模塊獨立性強(qiáng)必須做到高內(nèi)聚低耦合。•耦合:模塊之間聯(lián)系的緊密程度,耦合度越高則模塊的獨立性越差。耦合度從低到高的次序依次是:非直接搞合、數(shù)據(jù)耦合、標(biāo)記搞合、控制耦合、外部耦合、公共耦合、內(nèi)容搞合。•內(nèi)聚:指模塊內(nèi)部各元素之間聯(lián)系的緊密程度,內(nèi)聚度越低模塊的獨立性越差,內(nèi)聚度從低到高依次是:偶然內(nèi)聚、邏輯內(nèi)聚、瞬時內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。2、軟件結(jié)構(gòu)設(shè)計的優(yōu)化原則•改進(jìn)軟件結(jié)構(gòu)提高模塊獨立性,提高模塊的內(nèi)聚度,降低模塊間的耦合度;•模塊規(guī)則不應(yīng)過大,最好編寫在一頁紙內(nèi)(不超過60行語句),模塊規(guī)模過小,接口復(fù)雜;•深度、寬度、扇出和扇入應(yīng)適中;•模塊的作用域應(yīng)該在控制域之內(nèi);•力爭降低模塊接口的復(fù)雜程度;•設(shè)計單入口、單出口的模塊;•模塊功能應(yīng)該可以預(yù)測。3、結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法(SD)是一種面向數(shù)據(jù)流的設(shè)計方法,它可以與SA方法鏈接。(1)信息流的類型在需求分析階段,用SA方法產(chǎn)生了數(shù)據(jù)流圖。面向數(shù)據(jù)流的設(shè)計能方便地將DFD轉(zhuǎn)換成程序結(jié)構(gòu)圖。DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流的一連串連續(xù)變換形成了一條信息流。 DFD的信息流大體上可以分為兩種類型,一種是變換流,另一種是事務(wù)流。•變換流:信息沿輸入通路進(jìn)入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式,離開系統(tǒng)。•事務(wù)流:當(dāng)信息沿輸入通路到達(dá)一個處理,這個處理根據(jù)輸入數(shù)據(jù)的類型從若干個動作序列中選擇出一個來執(zhí)行。在一個事務(wù)流中,事務(wù)中心接收數(shù)據(jù),分析每個事務(wù)以確定它的類型,根據(jù)事務(wù)類型選取一條活動通路。(2)設(shè)計過程①精化DFD;②確定DFD類型;③分解上層模塊,設(shè)計中下層模塊結(jié)構(gòu);④根據(jù)優(yōu)化準(zhǔn)則對軟件結(jié)構(gòu)求精;⑤描述模塊功能、接口及全局?jǐn)?shù)據(jù)結(jié)構(gòu);⑥復(fù)查,如果有錯,轉(zhuǎn)向②修改完善,否則進(jìn)入詳細(xì)設(shè)計階段。4、軟件詳細(xì)設(shè)計詳細(xì)設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。(1)結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計的基本要點是: .•釆用自頂向下、逐步求精的程序設(shè)計方法;•使用順序、選擇、重復(fù)三種基本控制結(jié)構(gòu)構(gòu)造程序;•主程序員組的組織形式。(2)處理過程設(shè)計處理過程設(shè)計的關(guān)鍵是用一種合適的表達(dá)方法來描述每個模塊的執(zhí)行過程。這種表示方法應(yīng)該簡明、精確,并因此能直接導(dǎo)出用編程語言表示的程序。程序流程圖:流程圖即程序框圖,是歷史最久、流行最廣的一種圖形表示方法。程序流程 圖包括3種基本成分:加工步驟,用方框表示;邏輯條件,用菱形表示;控制流,用箭頭 表示。圖形表示的優(yōu)點是直觀、形象、容易理解,缺點是表示控制的箭頭過于靈活,以及 只描述執(zhí)行過程而不能描述有關(guān)數(shù)據(jù)。盒圖(NS圖): 在NS圖中,每個處理步驟用一個盒子表示,盒子可以嵌套。盒子只能從上頭 進(jìn)入,從下頭走出,除此之外別無其他出入口,所以盒圖限制了隨意的控制轉(zhuǎn)移,保證了程 序的良好結(jié)構(gòu)。形式語言:用來描述模塊具體算法的非正式而比較靈活的語言。形式語言的優(yōu)點是接近自然 語言,所以易于理解;其次v它可以作為注釋嵌套在程序中成為內(nèi)部文檔,提高程序的自我 描述性;第三,因為是語言形式,易于被計算機(jī)處理,可用行編輯程序或字處理系統(tǒng)對形式 語言進(jìn)行編輯修改。決策樹:決策樹是一種圖形工具,適合于描述加工中具有多個策略、每個策略和若干條件有關(guān)的邏輯功。決策表:決策表是一種圖形工具,呈表形。決策表將比較復(fù)雜的決策問題簡潔地描述出來。(3)面向數(shù)據(jù)結(jié)構(gòu)設(shè)計: Jackson方法面向數(shù)據(jù)結(jié)構(gòu)設(shè)計是以數(shù)據(jù)結(jié)構(gòu)作為設(shè)計的基®K,它根據(jù)輸入輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序的結(jié)構(gòu),適用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),Jackson方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。Jackson圖如圖3-2所示。 (4)用戶界面設(shè)計用戶界面設(shè)計是系統(tǒng)與用戶之間的接口,也是控制和選擇信息輸入輸出的主要途徑。用戶界 面設(shè)計應(yīng)堅持友好、簡便、實用、易于操作的原則。界面設(shè)計包括菜單方式、會話方式、操作提示方式,以及操作權(quán)限管理方式等。五、面向?qū)ο蠓治龊驮O(shè)計1.面向?qū)ο笤O(shè)計基本概念(1)對象:一組屬性以及這組屬性上的專用操作的封裝體,通常由對象名、屬性和操作這3個部分組成。屬性表示該對象的狀態(tài),用戶只能看見對象封裝界面上的信息,對象的內(nèi)部實現(xiàn)對用戶是隱蔽的。封裝目的是使對象的定義和實現(xiàn)分開。(2)類:一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實例(Instance)。(3)繼承:在某個類的層次關(guān)聯(lián)中不同的類共享屬性和操作的一種機(jī)制。一個父類可以有多個子類,這些子類都是父類的特例。父類描述了這些子類的公共屬性的操作,子類中還可以定義它自己的屬性和操作。一個子類只有唯一的一個父類,這種繼承稱為單一繼承。一個子類有多個父類,可以從多個父類中繼承特性,這種繼承稱為多重繼承。(4)消息:對象間通信的手段、一個對象通過向另一對象發(fā)送消息來請求其服務(wù)。消息通常包括接收對象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如有必要)。消息只告訴接收對象需要完成什么操作,但并不能指示接收者怎樣完成操作。.消息完全由接收者解釋,接收者獨立決定采用什么方法來完成所需的操作。(5)多態(tài)性:同一個操作作用不同的對象可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。(6)繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其他語言的主要特點,是否建立了豐富的類庫是衡量一個面向?qū)ο蟪绦蛟O(shè)計語言成熟與否的重要標(biāo)志之一。(7)在面向?qū)ο蟮能浖こ讨校粋€組件(component)包含了一些協(xié)作的類的集合。2、面向?qū)ο蠓治雠c設(shè)計的基本概念面向?qū)ο蠓椒ǖ幕舅枷胧菑默F(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng)。面向?qū)ο蠓治觯∣bject-Oriented Analysis, OOA)的目標(biāo)是建立待開發(fā)軟件系統(tǒng)的模型面向?qū)ο笤O(shè)計(Object-Oriented Design, OOD)的目標(biāo)是定義系統(tǒng)構(gòu)造藍(lán)圖,設(shè)計分析模型和實現(xiàn)相應(yīng)源代碼,在目標(biāo)代碼環(huán)境中這種源代碼可被執(zhí)行。統(tǒng)一建模語言(UML)是面向?qū)ο筌浖臉?biāo)準(zhǔn)化建模語言。UML由3個要素構(gòu)成:UML的基本構(gòu)造塊、支配這些構(gòu)造塊如何放置在一起的規(guī)則和運用于整個語言的一些公共機(jī)制。UML的詞匯表包含3種構(gòu)造塊:事物、關(guān)系和圖。事物是對模型中最具代表性的成分的抽象,關(guān)系把事物結(jié)合在一起,圖聚集了相關(guān)的事物。•事物:包括結(jié)構(gòu)事物、行為事物、分組事物和注釋事物。•關(guān)系:.包括依賴、.關(guān)取、泛化和實現(xiàn)。•圖:包每類圖、對象圖、用例圖、序列圖、協(xié)作圖、狀態(tài)圖、活動圖、構(gòu)件圖和部署圖。.【試題3-1】 2012年5月真題5數(shù)據(jù)流圖(DFD)對系統(tǒng)的功能和功能之間的數(shù)據(jù)流進(jìn)行建模,其中頂層數(shù)據(jù)流圖描述了系統(tǒng)的(5)。A處理過程B.輸入與輸出C.數(shù)據(jù)存儲D.數(shù)據(jù)實體解析:數(shù)據(jù)流圖用來描述數(shù)據(jù)流從輸入到輸出的變換流程。【答案:(5) B】【試題3-2】 2012年5月真題6以下關(guān)于類繼承的說法中,錯誤的是(6)。A. 通過類繼承,在程序中可以復(fù)用基類的代碼B. 在繼承類中可以增加新代碼C. 在繼承類中不能定義與被繼承類(基類)中的方法同名的方法D. 在繼承類中可以覆蓋被繼承類(基類)中的方法解折:繼承類中可以定義與碁類中方法同名的方法。【答案: :(6) C】【試題3-3】 2012年5月真題8軟件開發(fā)的增景模型(8)。A.最適用于需求被清晰定義的情況 B.是一種能夠快速構(gòu)造可運行產(chǎn)品的好方法C.最適合于大規(guī)模團(tuán)隊開發(fā)的項目 D.是一種不適用于商業(yè)產(chǎn)品的創(chuàng)新模型解析:增量模型有利于快速開發(fā)軟件。【答案:(8) B】【試題3-4】 2012年5月真題9假設(shè)某軟件公司與客戶簽訂合同開發(fā)一個軟件系統(tǒng),系統(tǒng)的功能有較清晰的定義,且客戶對交付時間有 嚴(yán)格要求,則該系統(tǒng)的開發(fā)最適宜采用(9)。A.瀑布模型B.原型模型C. V-模型D.螺旋模型解析:瀑布模型將軟件生命周期劃分為制訂計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運行維護(hù)等6個基本活動,并且規(guī)定了它們自上而下.、相互銜接的固定次序,如同瀑布流水,逐級下落。本題對交付時間有嚴(yán)格要求,適合用瀑布模型。【答案:.(9)八】【試題3-5】 2012年11月真題5在軟件設(shè)計階段,劃分模塊的原則是:一個模塊的(5)。A.作用范圍應(yīng)該在其控制范圍之內(nèi) B.控制范圍應(yīng)該在作用范圍之內(nèi)C.作用范圍與控制范圍互不包含 D.作用范圍與控制范圍不受任何限制解析:劃分模塊時,一個模塊的控制范圍應(yīng)在其作用范圍之內(nèi)。【答案:(5) A】【試題3-6】 2011年5月真題6模塊A直接訪問模塊B的內(nèi)部數(shù)據(jù),則模塊A和模塊B的耦合類型為 (6)。A.數(shù)據(jù)耦合B.標(biāo)記耦合C.公共耦合D.內(nèi)容耦合_解析:一般可將耦合度從弱到強(qiáng)分為以下7級:①非直接耦合:指兩個模塊中任一個都不依賴對方獨立工作。這類耦合度最低。②數(shù)據(jù)耦合:指兩個模塊間只是通過參數(shù)表傳遞簡單數(shù)據(jù)。③特征耦合:指兩個模塊都與同一個數(shù)據(jù)結(jié)構(gòu)有關(guān)。④控制耦合:指兩個模塊間傳遞的信息中含有控制信息。⑤外部耦合:指若干模塊都與同一個外部環(huán)境關(guān)聯(lián),例如I/O處理使所有I/O模塊與特定的設(shè)備、格式和 通信協(xié)議相關(guān)聯(lián)。⑥公共耦合:指兩個或多個模塊通過引用一個公共區(qū)的數(shù)據(jù)而發(fā)生相互作用。⑦內(nèi)容耦合:最高耦合度的是內(nèi)容耦合。出現(xiàn)內(nèi)容耦合的情形包括:一個模塊使用另一模塊內(nèi)部的控制 和控制信息;一個模塊直接轉(zhuǎn)移到另一模塊內(nèi)部等。一般說來,盡量使用數(shù)據(jù)耦合,少用控制耦合,限制外部耦合,完全不用內(nèi)容耦合。【答案:(6)D】【試題3-7】 2011年11月真題6利用結(jié)構(gòu)化分析模型進(jìn)行接口設(shè)計時,應(yīng)以(6)為依據(jù)。A.數(shù)據(jù)流圖 B.實體一關(guān)系圖C.數(shù)據(jù)字典 D.狀態(tài)一遷移圖解析:數(shù)據(jù)流圖用來描述數(shù)據(jù)流從輸入到輸出的變換流程。它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,它只反映系統(tǒng)必須完成的邏輯功能,所以是一種功能模型。數(shù)據(jù)流圖僅描述了系統(tǒng)的“分解”,但沒有對圖中各成分進(jìn)行說明。數(shù)據(jù)詞典就是用來定義數(shù)據(jù)流圖中 的各個成分的含義的。數(shù)據(jù)字典有4類條目,包括數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲和基本加工。實體一關(guān)系(E-R)圖在軟件設(shè)計和數(shù)據(jù)庫設(shè)計中經(jīng)常用到,用于描述數(shù)據(jù)對象、對象的屬性和對象之 間的關(guān)系。狀態(tài)一遷移圖通過描述系統(tǒng)的狀態(tài)以及引起變化的事件來描述系統(tǒng)的行為,并指明特定事件的結(jié)構(gòu)和執(zhí) 行的動作。此題中要進(jìn)行接口設(shè)計,顯然數(shù)據(jù)流圖更為合適。【答案:(6) A】【試題3-8】 2011年11月真題5確定軟件的模塊劃分及模塊之間的調(diào)用關(guān)系是(5)階段的任務(wù)。A.需求分析 B.概要設(shè)計C.詳細(xì)設(shè)計 D.編碼解析:軟件的生命周期可以分為4個活動時期:軟件分析、軟件設(shè)計、編碼與測試、運行與維護(hù)。其中軟件設(shè)計又可以分為概要設(shè)計和詳細(xì)設(shè)計兩個階段。概要設(shè)計是設(shè)計軟件的結(jié)構(gòu)、組成的模塊、模塊的層 次結(jié)構(gòu)、模塊的調(diào)用關(guān)系以及每個模塊的功能。而詳細(xì)設(shè)計就是為每個模塊完成的功能進(jìn)行具體描述,將功 能描述轉(zhuǎn)換為精確的、結(jié)構(gòu)化的過程描述。【答案:(5) B】【試題3-9】 2010年5月真題7軟件設(shè)計時需要遵循抽象、模塊化、信息隱蔽和模塊獨立原則。在劃分軟件系統(tǒng)模塊時,應(yīng)盡量做到(7)。A.高內(nèi)聚高耦合 B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合 D.低內(nèi)聚低耦合解析高內(nèi)聚強(qiáng)調(diào)功能實現(xiàn)盡量在模塊內(nèi)部完成;低耦合則是盡量降低模塊之間的聯(lián)系,減少彼此之間的相互影響。這二者的結(jié)合是面向過程編程和系統(tǒng)設(shè)計的重要特點。【答案:(7) B】【試題3-10】2010年5月真題8程序的三種基本控制結(jié)構(gòu)是(8)。A.過程、子程序和分程序 B.順序、選擇和重復(fù)C.遞歸、堆棧和隊列 D.調(diào)用、返回和跳轉(zhuǎn)解析:程序的三種基本控制結(jié)構(gòu)是順序、選擇和重復(fù)。【答案:(8) B】【試題3-11】 2010年5月真題9棧是一種按“后進(jìn)先出”原則進(jìn)行插入和刪除操作的數(shù)據(jù)結(jié)構(gòu),因此(9)必須用棧。A.函數(shù)或過程進(jìn)行遞歸調(diào)用及返回處理 B.將一個元素序列進(jìn)行逆置C.鏈表節(jié)點的申請和釋放 D.可執(zhí)行程序的裝入和卸載解析:棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),對于函數(shù)的遞歸調(diào)用與返回,一定是后被調(diào)用執(zhí)行的先返回。【答案:(9) A】【試題3-12】 2010年11月真題6某項目組擬開發(fā)一個大規(guī)模系統(tǒng),且具備了相關(guān)領(lǐng)域及類似規(guī)模系統(tǒng)的開發(fā)經(jīng)驗。下列過程模型中, (6) 最適合開發(fā)此項目。A.原型模型B.瀑布模型C.V模型D.螺旋模型解析:在瀑布模型中,軟件開發(fā)的各項活動嚴(yán)格按照線性方式進(jìn)行,當(dāng)前活動接受上一項活動的工作結(jié)果,實施完成所需的工作內(nèi)容。當(dāng)前活動的工作結(jié)果需要進(jìn)行驗證,如果驗證通,則該結(jié)果作為下一項 活動的輸入,繼續(xù)進(jìn)行下一項活動,否則返回修改。瀑布模型要求每個階段都要仔細(xì)驗證。本題中項目組具 備了相關(guān)領(lǐng)域及類似規(guī)模系統(tǒng)的開發(fā)經(jīng)驗,掌握類似項目的開發(fā)流程,因此采用瀑布模型最適合。快速原型模型的第一步是建造一個快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原型 進(jìn)行評價,進(jìn)一步細(xì)化待開發(fā)軟件的需求。快速原型通過逐步調(diào)整原型使其滿足客戶的要求,開發(fā)人員可以 確定客戶的真正需求是什么;第二步則在第一步的基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。V模型是在快速應(yīng)用開發(fā)模型基礎(chǔ)上演變而來,由于將整個開發(fā)過程構(gòu)造成一個V字形而得名。V模型強(qiáng) 調(diào)軟件開發(fā)的協(xié)作和速度,將軟件實現(xiàn)和驗證有機(jī)地結(jié)合起來,在保證較高的軟件質(zhì)量情況下縮短開發(fā)周期。螺旋模型將瀑布模型和快速原型模型結(jié)合起來,強(qiáng)調(diào)了其他模型所忽視的風(fēng)險分析,特別適合于大型復(fù) 雜的系統(tǒng)。螺旋模型強(qiáng)調(diào)風(fēng)險分析,但要求許多客戶接受和相信這種分析,并做出相關(guān)反應(yīng)是不容易的,因此,這種模型往往適應(yīng)于內(nèi)部的大規(guī)模軟件開發(fā)。【答案:(6) B】【考點二】項目管理基礎(chǔ)知識一、項目管理和項目計劃的制訂(1)項目管理:核心內(nèi)容就是在成本、質(zhì)量、進(jìn)度間的平衡。它包括POIM四方面:Plan計劃、 Organize組織、Implement實現(xiàn)、Measurement度量。主要活動包括:①啟動——確定目標(biāo)和范圍,考慮解決方案,根據(jù)方案進(jìn)行社會、經(jīng)濟(jì)、技術(shù)可行性分析、成本估算、任務(wù)分解、進(jìn)度安排等;②度量——把握過程的實際情況和產(chǎn)品質(zhì)量;③估算-人力、時間、成本,要建立歷史項目資料庫;④風(fēng)險分析——按發(fā)生可能性和影響性排序,制定解決方案和預(yù)防措施;⑤進(jìn)度安排——建立在工作任務(wù)分解WBS土,對時間、人員、設(shè)備分配,用甘特圖、PERT圖等Project工具;⑥追蹤控制——根據(jù)實際進(jìn)度情況進(jìn)行有效調(diào)整,并處理需求變更引起的項目計劃的變更。(2)項目計劃的制訂:預(yù)測未來、確定任務(wù)、估計可能碰到的問題并提出完成任務(wù)和解決問題的有效方案、方針、措施和手段以及所必需的各種活動和工作成果的過程。項目計劃的主要內(nèi)容包括:①估算所需要的人力(通常以人月為單位)、項目持續(xù)時間(以年份或月份為單位)、成本(以元為單位);②作出進(jìn)度安,分配資源,建立項目組織及任用人員(包括人員的地位、作用、職責(zé)、規(guī)章制度等),根據(jù)規(guī)模和工作量估算分配任務(wù);③進(jìn)行風(fēng)險分析,包括風(fēng)險識別、風(fēng)險估計、風(fēng)險優(yōu)化、風(fēng)險駕馭策略、風(fēng)險解決和風(fēng)險監(jiān)督,這些步驟貫穿在軟件工程過程中;④制訂質(zhì)量管理指標(biāo);⑤編制預(yù)算和成本;⑥準(zhǔn)客環(huán)境和基礎(chǔ)設(shè)施等。二、質(zhì)量計劃、管理和評估1.軟件質(zhì)量度量模型目前有多種軟件質(zhì)量模型。(1)ISCWEC 9126軟件質(zhì)量模型。該模型由3個層次組成:.第一層是質(zhì)量特性,第二層是質(zhì)量子特性,第三層是度量指標(biāo)。該模型的質(zhì)量特性和質(zhì)量子特性如表3-2所示。 表3-2軟件質(zhì)量特性和質(zhì)量子特性質(zhì)量特性描述子特性子特性描述功能性與一組功能及其指定的 性質(zhì)有關(guān)的一組屬性。 這里的功能是指滿足明 確或隱含的需求的那些 功能適應(yīng)性與規(guī)定任務(wù)能否提供一組功能以及這組功能的適合程度有關(guān)的軟件屬性準(zhǔn)確性與能否得到正確或相符的結(jié)果或效果有關(guān)的軟件屬性互用性與其他指定系統(tǒng)進(jìn)行交互的能力有關(guān)的軟件屬性依從性使軟件遵循有關(guān)的標(biāo)準(zhǔn)、約定、法規(guī)及類似規(guī)定的軟件屬性安全性與防止對程序及數(shù)據(jù)的非授權(quán)的故意或意外訪問 的能力有關(guān)的軟件屬性可靠性與在規(guī)定的一段時間和 條件下,軟件維持其性 能水平的能力有關(guān)的一 組屬性成熟性與由軟件故障引起失效的頻度有關(guān)的軟件屬性容錯性與在軟件故障或違反指定接口的情況下,維持規(guī) 定的性能水平的能力有關(guān)的軟件屬性易恢復(fù)性與在失效發(fā)生后,重建其性能水平并恢復(fù)直接受 影響數(shù)據(jù)的能力以及為達(dá)此目的所需的時間和能 力有關(guān)的軟件屬性可用性與一組規(guī)定或潛在的用 戶為使用軟件所需作的 努力和對這樣的使用所 作的評價有關(guān)的一組屬 性易理解性與用戶為認(rèn)識邏輯概念及其應(yīng)用范圍所花的努力有關(guān)的軟件屬性易學(xué)習(xí)性與用戶為學(xué)習(xí)軟件應(yīng)用所花的努力有關(guān)的軟件屬性易操作性與用戶為操作和運行控制所花努力有關(guān)的軟件屬 性效率與在規(guī)定的條件下,軟 件的性能水平與所使用 資源最之間關(guān)系有關(guān)的 一組屬性時間特性與軟件執(zhí)行其功能時響應(yīng)和處理時間以及吞吐量有關(guān)的軟件屬性資源特性與在軟件執(zhí)行其功能時所使用的資源數(shù)量及其使用時間有關(guān)的軟件屬性可維護(hù)性與進(jìn)行指定的修改所需 的努力宥關(guān)的一組屬性易分析性與為診斷缺陷或失效原因及為判定待修改的分 所需努力有關(guān)的軟件屬性易改變性與進(jìn)行修改,排除錯誤或適應(yīng)環(huán)境變化所需努力 有關(guān)的軟件屬性穩(wěn)定性與修改所造成的未預(yù)料結(jié)果的風(fēng)險有關(guān)的軟件屬性易測試性與確認(rèn)已修改軟件所需的努力有關(guān)的軟件屬性可移植性與軟件可從某一環(huán)境轉(zhuǎn) 移到另一環(huán)境的能力有 關(guān)的一組屬性適應(yīng)性與軟件無須采用有別于為該軟件準(zhǔn)備的活動或手段就可能造應(yīng)不同的規(guī)定壞境有關(guān)的軟件屬可安裝性與在指定環(huán)境下安裝軟件所需努力有關(guān)的軟件屬性.一致性使軟件遵循與可移植性有關(guān)的標(biāo)準(zhǔn)或約定的軟件可替:換性與軟件在該軟件環(huán)境中用來替代指定的其他較件 的機(jī)會和努力有關(guān)的軟件屬性:(2) Me Call軟件廣量模型。該模型從軟件產(chǎn)品的運行、修正、轉(zhuǎn)移等3個方面確定了11個質(zhì)量特性。它給出了一個三層模型框架:第一層是質(zhì)量特性,第二層是評價準(zhǔn)則,第三層是度量指標(biāo)。2、軟件質(zhì)量管理 軟件質(zhì)量會理趣過隹U訂質(zhì)量方針、建立質(zhì)量目標(biāo)和標(biāo)準(zhǔn)(Target)并在瑣目生命期內(nèi)持續(xù)使用質(zhì)量計劃(Plan)、質(zhì)量控制(Do)、質(zhì)量保證(Check)和質(zhì)量改進(jìn)(Action)等措施來落實質(zhì)量方針的執(zhí)行,確保質(zhì)量目標(biāo)的實現(xiàn),最大限度地使客戶滿意。 3、軟件質(zhì)量評審 軟件質(zhì)量評審主要包括設(shè)計質(zhì)量評審和程序質(zhì)量評請。•設(shè)計質(zhì)量評審:在需求分析階段產(chǎn)生的軟件需求規(guī)格說明、數(shù)據(jù)要求規(guī)格說明,在軟件概要設(shè)計階段產(chǎn)生的軟件概要設(shè)計說明書等。•程序質(zhì)量評審:著眼于軟件本身的結(jié)構(gòu)、與運行壞境的接口、變更帶東的影響而遵行的評審活動。通常它是從開發(fā)者的角度進(jìn)行評審,直接與開發(fā)技術(shù)有關(guān)。主要包括軟件的結(jié)構(gòu) (功能結(jié)構(gòu):功能的通用性、模塊層次、模塊結(jié)構(gòu)、處理過程鈞結(jié)構(gòu)),與運行環(huán)境的接口 (包括硬件、其他軟件和用戶).以及變更的影響范圍。三、進(jìn)度管理軟件開發(fā)項目的進(jìn)度安排有兩種方式:•系統(tǒng)最終交付日期已經(jīng)確定,軟件開發(fā)部門必須在規(guī)定期限內(nèi)完成。•系統(tǒng)最終交付日期只確定了大致的年限,;最居交付-日期由軟件開發(fā)部門確定。進(jìn)度安排的常用圖形描述方法有甘特圖(Gantt)和計劃評審技術(shù)圖(PERT)。(1)Gantt圖:用水平線段表示任務(wù)的工作階段;線段的起點和終點分別對應(yīng)著任務(wù)的開工時 間和完成時間;線段的長度表示完成任務(wù)所需的時間。優(yōu)點:能清晰地描述每個任務(wù)從何時開始,到何時結(jié)束,以及各個任務(wù)之間的并行性。缺點:不能清晰地反映出各任務(wù)之間的依賴關(guān)系,難以確定整個項目的關(guān)鍵所在,也不能反 映計劃中有潛力的部分。(2)PERT圖:一個有向圖,圖中的有向弧表示任務(wù),它可以標(biāo)上完成該任務(wù)所需的時間;圖中的節(jié)點表示流入節(jié)點的任務(wù)的結(jié)束,并開始^[出節(jié)點的任務(wù),這里把節(jié)點稱為事件。只有當(dāng)流入該節(jié)點的所有任務(wù)都結(jié)束時,節(jié)點所表示的事件才出現(xiàn),流出節(jié)點的任務(wù)才可以開始。事件本身不消耗時間和資源,它僅表示某個時間點。每個事件有一個事件號和出現(xiàn)該事件的最早時刻和最遲時刻。每個任務(wù)還有一個松弛時間,表示在不影響整個工期的前提下,完成該任務(wù)有多少機(jī)動余地。 松弛時間為0的任務(wù)構(gòu)成了完成整個工程的關(guān)鍵路徑。PERT圖不僅給出了每個任務(wù)的開始時間、結(jié)束時間和完成該任務(wù)所需的時間,還給出了任務(wù)之間的關(guān)系,即哪些任務(wù)完成后才能開始另外一些任務(wù),以及如期完成整個工程的關(guān)鍵路徑。松弛時間則反映了完成某些任務(wù)是可以推遲其汗始時間或延長其所霽的完成時闡。但是PERT圖不能反映任務(wù)乏間的并行關(guān)系四、文檔管理文檔是軟件產(chǎn)品的一部分,沒有文檔的軟件就不稱其為軟件。國家標(biāo)準(zhǔn)《計算機(jī)軟件產(chǎn)品開發(fā)文件編制指南GB 8567—1988》中規(guī)定,在一項軟件開發(fā)過程中,一般地說應(yīng)該產(chǎn)生14種文件,如表3-3所示。 表3-3軟件文檔文檔與軟件生命周期各階段關(guān)系與各類人員的使用關(guān)系可行性研究與計劃需求分析軟件設(shè)計編碼/ 單元 測試集成/ 確認(rèn) 測試管理人員開發(fā)人員維護(hù)人員用戶可行性研究報告√√√項目開發(fā)計劃√√√軟件需求說明書√√數(shù)據(jù)要求說明書√√概要設(shè)計說明書√√√詳細(xì)設(shè)計說明書√√√數(shù)據(jù)庫設(shè)計說明書√√√用戶手冊√√√操作手冊√√√模塊開發(fā)卷宗√√√√開發(fā)進(jìn)度月報√√√√√測試計劃√√測試分析報告√√√項目開發(fā)總結(jié)報告√√五、成本組織1、估算策略•自頂向下。對整個項目的總開發(fā)時間和總工作量做出估算,然后把它們按階段、步驟和工作單元進(jìn)行分配。•自底向上。自底向上的方法則正好相反,分別估算各工作單元所需的工作量和開發(fā)時間, 然后相加,就得出總的工作量和總的開發(fā)時間。2、估算方法•專家估算法(Delphi):依靠一個或多個專家,對要求的項目做出#計。•類推估算法:在自頂向下的策略中,將估算項目的總體參數(shù)與類似項目進(jìn)行直接相比得到 結(jié)果。在自底向上的策略中,類推是在兩個具有相似條件的工作單元之間進(jìn)行。•算式估算法:專家估算法和類推估算法的缺點在于,它們依靠帶有一定盲目性和主觀的猜 .測對項目進(jìn)行估算。算式估算法則是企圖避免主觀因素的影響。用于估算的算式方法有兩 種基本類型:由理論導(dǎo)出、由經(jīng)驗得出。3、軟件規(guī)模速算•LOC (代碼行數(shù))估算法。LOC是一種自底向上的估算方法,即從模塊開始進(jìn)行估算其優(yōu)點是容易計算。•FP (功能點)估算法:依據(jù)對軟件信息域特性和軟件復(fù)雜性的評估結(jié)果,估算軟件規(guī)模。 這種方法用功能點為單位計度量軟件規(guī)模。功能點有5個信息域特;•正:輸入數(shù)(Inp)、輸出數(shù)(Out)、查詢數(shù)(Inq)、主文件數(shù)(Maf)和外部接口數(shù)(Inf)。4、工作量估算•工作量可以用人日、人月或人年的數(shù)量來表示。知道單位工作量的成本,就可得到估算成本。•工作量估算模型有:IBM模型(在60個項目的基礎(chǔ)上進(jìn)行統(tǒng)計的靜態(tài)模型)、普特南模型 (是一個動態(tài)多變量模型,通過建立一個資源需求曲線模型導(dǎo)出一系列等式)、COCOMO 型(將項目分為組織型、嵌入型、半獨立型項目,包括有基本靜態(tài)、半獨立、詳細(xì)3種不同模型)。六、人員管理可以按軟件項目對軟件人員分組,如需求分析組、設(shè)計組、編碼組、測試組、維護(hù)組等,為了控制軟件的質(zhì)量還可以有質(zhì)量保證組。程序設(shè)計小組的組織形式可以有多種,如主程序員組、無主程序員組、.層次式程序員組等。軟件配置管理(Software Configure Management,SCM),是一組管理整個軟件生存期各階段中變更的活動,它用于整個軟件工程過程。其目標(biāo)是:標(biāo)識變更、控制變更、確保變更正確實現(xiàn),并報告有關(guān)變更。七、風(fēng)顯管理風(fēng)險分析在軟件項目管理中具有決定性作用,它是貫穿在軟件工程中的一些列險管理步驟,其中包括風(fēng)險識別、風(fēng)險估計、風(fēng)險管理策略、風(fēng)險解決和風(fēng)險監(jiān)督。(1)風(fēng)險識別系統(tǒng)地確定對項目計劃(估算、進(jìn)度、資源分配)的威脅,通過識別已知的或可預(yù)測的風(fēng)險,就可能設(shè)法避開風(fēng)險或駕馭風(fēng)險。從宏觀上來看,可將風(fēng)險分為項目風(fēng)險、技術(shù)風(fēng)險和商業(yè)風(fēng)險。(2)風(fēng)險估計:從以下兩個方面估價每一種風(fēng)險。一是估計一個風(fēng)險發(fā)生的可能性,二是估價與風(fēng)險相關(guān)的問題出現(xiàn)后將會產(chǎn)生的結(jié)果。通常,由項目計劃人員與管理人員、技術(shù)人員一起,進(jìn)行4種風(fēng)險估計活動:•建立一個尺度來表明風(fēng)險發(fā)生的可能性;•描述風(fēng)險的后果;•估計風(fēng)險對項目和產(chǎn)品的影響;•指明風(fēng)險估計的正確性以便消除誤解。 八、軟件工具與軟件開發(fā)環(huán)境1.軟件工具通常可將軟贊工具分為軟件開發(fā)工具、軟件雒護(hù)工具和軟件管理工具。(1)軟件開發(fā)工具包括需求分析工具、設(shè)計工具和編碼與排錯工具。(1)軟件維護(hù)工具包括版本控制工具、文檔分析工具、開發(fā)信息庫工具、逆向工程工具和再工程工具。(1)軟件管理和支持工具包括項目管理工具、配置管理工具和軟件評價工具。(1)軟件開發(fā)工具的評價和選擇可以根據(jù)以下標(biāo)準(zhǔn)來衡量軟件開發(fā)工具的優(yōu)劣:功能、易用性、穩(wěn)健性、硬件要求和性能,以及服務(wù)和支持。2.軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境是支持軟件產(chǎn)品開發(fā)的軟件系統(tǒng)。它由工具集和環(huán)境集成機(jī)制兩部分組成。工具集中還應(yīng)該包含支持軟件生命周期各階段活動以及支持各種開發(fā)方法和開發(fā)模型的工具,能支持軟件開發(fā)的全過程。而環(huán)境集成機(jī)制主要包含數(shù)據(jù)集成機(jī)制、控制集成機(jī)制和界面集成機(jī)制等3方面內(nèi)容。集成開發(fā)環(huán)境應(yīng)具有開放性和可剪裁性。開放性為環(huán)境外的工具集成到環(huán)境中來提供了方便,可剪裁性可根據(jù)不同的應(yīng)用或不同的用戶需求進(jìn)行剪裁,以形成特定的開發(fā)環(huán)境。九、能力成熟度模型簡介能力成熟度模型(CMM)用于衡量軟件企業(yè)的開發(fā)管理水平,它可作為軟件發(fā)包方評估承包方執(zhí)行能力的參考標(biāo)準(zhǔn),也可以被軟件企業(yè)作為軟件過程改進(jìn)工作的參考模型。CMM模型將軟件過程的成熟度分為5個等級:(1)初始級:軟件過程的特點是無秩序的,有時甚至是混亂的。軟件過程定義兒乎處于無章法和步驟可循的狀態(tài),軟件產(chǎn)品所取得的成功往往依賴于極個別人的努力和機(jī)遇。(2)可重復(fù)級:已建立了基本的項目管理過程,可用于對成本、進(jìn)度和功能特性進(jìn)行跟蹤。對類似的應(yīng)用項目,有章可循并能重復(fù)以往所取得的成功。(3)已定義級:用于管理的和工程的軟件過程均已文檔化、標(biāo)準(zhǔn)化,并形成了整個軟件組織的標(biāo)準(zhǔn)軟件過程。全部項目均采用與實際情況相吻合的、適當(dāng)修改后的標(biāo)準(zhǔn)軟件過程來進(jìn)行操作。(4)受管理級:軟件過程和產(chǎn)品質(zhì)量有詳細(xì)的度量標(biāo)準(zhǔn)。軟件過程和產(chǎn)品質(zhì)量得到了定量的認(rèn)識和控制。(5)優(yōu)化級:通過對來自過程、新概念和新技術(shù)等方面的各種有用信息的定量分析,能夠不斷地、持續(xù)地對促進(jìn)過程進(jìn)行改進(jìn)。【試題3-13】 2013年5月真題8~9在進(jìn)行進(jìn)度安排時,PERT圖不能清晰的描述(8),但可以給出哪些任務(wù)壽成后才能開始寫一任務(wù)。某項目X包含任務(wù)A、B、......、J,其pERT如圖3-3所示(A=l表示該任務(wù)A的持續(xù)時間是1天),則項目X的關(guān)鍵路徑是(9)。 (8)A.每個任務(wù)從何時開始 B.每個任務(wù)到何時結(jié)束 C.各任務(wù)之間的并行情況 D.各任務(wù)之間的依賴關(guān)系(9)A. A-D-H-JB. B-E-H-JC. B-F-JD.C-G-I-J解析:本題考查的是PERT圖。每個任務(wù)可以有一個松弛時間,表示在不影響整個工期的前提下,完整該任務(wù)有多少余地。PERT圖不能清晰的描述各任務(wù)之間的并行情況,但可以給出哪些任務(wù)完成后才能開始 另一任務(wù)。關(guān)鍵路徑是所需時間最長的任務(wù)流,貝U本題項目X的關(guān)鍵路徑應(yīng)為B—E—H—J。【答案:(8) C、(9) B]【試題3-14】 2013年11月真題6~7圖3-4是一個軟件項目的活動圖,其中頂點表示項目里程碑,連接頂點的邊表示包含的活動,則里程碑(6)在關(guān)鍵路徑上。若在實際項目進(jìn)展中,活動AD在活動AC開始3天后才開始,而完成活動DG過程中, 由于有臨時事件發(fā)生,實際需要15天才能完成,則完成該項目的最短時間比原計劃多了 (7)天。 (6) A. B B.C C. D D. I(7) A.8 B.3 C. 5 D. 6解析:本題考查的是PERT圖。每個任務(wù)可以有一個松弛時間,表示在不影響整個工期的前提下,完成該任務(wù)有多少余地。PERT圖不能清晰的描述各任務(wù)之間的并行情況,但可以給出哪些任務(wù)完成后才能開始 另一任務(wù)。關(guān)鍵路徑是所需時間最長的任務(wù)流,則本題項目X的關(guān)鍵路徑易知為A?C—G—J—K。因此,(6) 選擇答案B。原先完成該項目最短時間為10+10+15+7=42;在實際項目進(jìn)展中,活動AD在活動AC開始3天 后才開始,而完成活動DG過程中,由于有臨時事件發(fā)生,實際需要15天才能完成則完成該項目的最短時間 為8+15+15+7=45,貝院成該項目的最短時間&原計劃多了3天。【答案:(6) B、(7) B]【試題13-15】 2012年5月真題7圖3-5是一個軟件項目的活動圖,其中頂點表示項目里程碑,連接頂點的邊表示包含的活動,邊上的值表 示完成活動所需要的時間,則(7)在關(guān)鍵路徑上。 A.B B. C C. D D. H解析:關(guān)鍵路徑是時間最長的路徑,為A—C—F—G—I。【答案:(7) B】【試題3-16】 2012年11月真題6~7圖3-6是一個軟件項目的活動圖,其中頂點表示項目里程碑,連接頂點的邊表示包含的活動,則里程碑(6) 在關(guān)鍵路徑上,活動FG的松弛時間為(7)。 (6)A. B B.C C. D D. I(7)A. 19 B.20 C. 21 D.24解析:關(guān)鍵路徑是所需時間最長的任務(wù)流,通過分析可知本題的關(guān)鍵路徑為D—F—H,松弛時間表示在不影響整個工期的前提下,完成該任務(wù)有多少機(jī)動余地。松弛時間為0的任務(wù)構(gòu)成了完成整個工程的關(guān)鍵路 徑。從F到完成的關(guān)鍵時間為20+10=30, FG到完成的時間為3+7=10,相差20,故松弛時間為20。【答案:(6) C; (7) B】【試題3-17】 2011年5月真題9圖3-7是一個軟件項HI的活動圖,其中頂點表示項目里程碑,邊表示包含的活動,邊上的權(quán)重表示活動的持續(xù)時間,則里程碑(9)在關(guān)鍵路徑上。 A. 1 B. 2 C. 3 D. 4解析:本題考查的是PERT圖。每個任務(wù)可以有一個松弛時間,表示在不影響整個工期的前提下,完成該任務(wù)有多少余地。而松弛時間為0的任務(wù)是完成整個工程的關(guān)鍵路徑。本題中關(guān)鍵路徑是:⑨―②—⑤ 一⑦一⑧—⑨。【答案:(9) B】【試題3-18】 2011年5月真題8下列關(guān)于項目估算方法的敘述不TF.確的是(8)。A.專家判斷方法受到專家經(jīng)驗的主觀性影響B(tài).啟發(fā)式方法(如COCOMO模型)的參數(shù)難以確定C.機(jī)器學(xué)習(xí)方法難以描述訓(xùn)練數(shù)據(jù)的特征和確定其相似性D.結(jié)合上述3種方法可以得到精確的估算結(jié)果解析:即使將專家判斷方法、啟發(fā)式方法和機(jī)器學(xué)習(xí)方法結(jié)合起來,也不可能得到精確的估算結(jié)果。 【答案:(8) D】【試題3-19】 2011年5月真題7下列關(guān)于風(fēng)險的敘述不正確的是:(7)。A.可能發(fā)生的事件 B.—定會發(fā)生的事件C.會帶來損失的事件 D.可能對其進(jìn)行干預(yù),以減少損失的事件解析:一定會發(fā)生的事件,就不叫風(fēng)險了。【答案:(7) B】【試題3-20】2011年11月真題8~9若某文件系統(tǒng)的目錄結(jié)構(gòu)如圖3-8所示,假設(shè)用戶要訪問文件fl.java,且當(dāng)前工作目錄為Program,則該 文件的全文件名為(8)其相對路徑為(9)。 (8) A. fl.java B.DVProgramJava-progf 1 .java C.DocumentJava-progfl .javaD.ProgramJava-progfl.java(9) A. Java-prog B. Java-prog C. ProgramJava-prog D. ProgramJava-prog解析:文件控制塊的集合,通常文件目錄也被組織成文件,稱為目錄文件。文件系統(tǒng)一般采用一級目錄結(jié)構(gòu)、二級目錄結(jié)構(gòu)和多級貝錄結(jié)構(gòu)。在多級目錄結(jié)構(gòu)的文件系統(tǒng)中,文件的全路徑名可能較長,也會涉及多次磁盤訪問,為了提高效率,操作系統(tǒng)提供設(shè)置工作目錄的機(jī)制,每個用戶都有自己的工作目錄,任一 目錄節(jié)點都可以被緝寘為工作目錄。一旦某個目錄節(jié)點被設(shè)置成工作目錄,相應(yīng)的目錄文件有關(guān)內(nèi)容就會被 調(diào)入主存,這樣,汾以工作目錄為根的子樹內(nèi)任一文件的查找時間會縮短,從工相目錄出發(fā)的文件路徑名稱 為文件的相對路徑名。所以全文件名即為D:ProgramJava-progfl.java;而相對路徑則為從當(dāng)前工作目錄Program出發(fā)的路徑名,即為Java-progo【答案:(8) C; (9) A】【試題3-21】 2011年11月真題7圖3-9是一個軟件項目的活動圖,其中頂點表示項目里程碑,連接頂卓的邊表示包含的活動,邊上的值表示完成活動所需要的時間,則關(guān)鍵路徑長度為(7)。 A. 20 B. 19 C. 17 D. 16解析:本題考查的是PERT圖。每個任務(wù)可以有一個松弛時間,表示在不影響整個工期的前輯下,完 成該任務(wù)有多少余地。而松弛時間為0的任務(wù)是完成整個工程的關(guān)鍵路徑。分析題圖中每個任務(wù)的工期可知, 關(guān)鍵路徑為A—B—D—I—J—L,可計算出其路徑長度為20。【答案:(7) A】【試題3-22】 2010年5月真題2~3進(jìn)度安排的常用圖形描述方法有GANTT圖和PERT圖。GANTT圖不能清晰地描述(2) ; PERT圖可以給出哪些任務(wù)完成后才能開始另一些任務(wù)。圖3-10所示的PERT圖中,事件6的最晚開始時刻是(3)。 (2) A.每個任務(wù)從何時開始B.每個任務(wù)到何時結(jié)束 C.每個任務(wù)的進(jìn)展情況D.各任務(wù)之間的依賴關(guān)系(3)A. 0 B. 1 C. 10 D. 11解析:甘特圖的優(yōu)點是直觀表明各個任務(wù)的計劃進(jìn)度和當(dāng)前進(jìn)度,能動態(tài)地反映軟件開發(fā)進(jìn)展的情況, 是小型項目中常用的工具。缺點是不能顯式地描繪各個任務(wù)間的依賴關(guān)系,關(guān)鍵任務(wù)也不明確。PERT圖中的關(guān)鍵路徑是1—2—5—7—9,總共15天。在不影響關(guān)鍵路徑,并考慮到5—8這個任務(wù)的前提 下,事件6的最晚開始時間為15-5=10。【答案:(2) D; (3) C】【試題3-23】 2010年11月真題4~5使用PERT圖進(jìn)行進(jìn)度安排,不能清晰地描述(4),但可以給出哪些任務(wù)完成后才能開始另一些任務(wù)。下面PERT圖所示工程從A到K的關(guān)鍵路徑是(5)(圖3-11中省略了任務(wù)的開始和結(jié)束時刻)。 (4) A.每個任務(wù)從何時開始 B.每個任務(wù)到何時結(jié)束 C.各任務(wù)之間的并行情況 D.各任務(wù)之間的依賴關(guān)系(5) A. ABEGHIK B. ABEGHJK C. ACEGHIK D. ACEGHJK解析:PERT圖給出了每個任務(wù)的開始時間、結(jié)束時間和完成該任務(wù)所需要的時間,同時還給出了任務(wù)之間的依賴關(guān)系,即哪些任務(wù)完成后才能執(zhí)行另外一些任務(wù)。PERT的不足是不能反映任務(wù)之間的并行關(guān)系。關(guān)鍵路徑是松弛時間為0的任務(wù)完成過程所經(jīng)歷的路徑。本題的圖中沒有給出松弛時間,因此關(guān)鍵路徑 是耗時最長的路徑,即A—B—E—G—H—J—K。【答案:(4) C; (5) B】【試題3-24】 2010年11月真題7軟件復(fù)雜性度量的參數(shù)不包括 (7)。A.軟件的規(guī)模B.開發(fā)小組的規(guī)模C.軟件的難度D.軟件的結(jié)構(gòu)解析:軟件復(fù)雜性度量的參數(shù)很多,主要有:•規(guī)模,即總共的指令數(shù),或源程序行數(shù)。•難度,通常由程序中出現(xiàn)的操作數(shù)的數(shù)目所決定的量來表示。•結(jié)樹,通常用與程序結(jié)構(gòu)有關(guān)的度量來表示。•智能度,即算法的難易程度。軟件復(fù)雜性主要表現(xiàn)在程序的復(fù)雜性。程序的復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。它直接關(guān)聯(lián)到軟件開 發(fā)費用的多少、開發(fā)周期長短和軟件內(nèi)部潛伏錯誤的多少。【答案:(7) B】【考點三】軟件的測試與調(diào)試一、軟件測試的目的、原則及過程1.軟件測試的目的軟件測試的目的是盡可能多地發(fā)現(xiàn)軟件產(chǎn)品(主要是指程序)中的錯誤和缺陷。成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。2、軟件測試的原則•應(yīng)盡早并不斷地進(jìn)行測試。•測試工作應(yīng)該避免由原開發(fā)軟件的人或小組承擔(dān)。•設(shè)計測試方案的時候,不僅要確定輸入數(shù)據(jù),而且要根據(jù)系統(tǒng)功能確定預(yù)期的輸出結(jié)果。•在設(shè)計用例時,不僅要設(shè)計有效合理的輸入條件,也要包含不合理、失效的輸入條件。•在測試程序時,不僅要檢驗程斤是否做了該做的事,還要檢驗程序是否做了不該做的事。•嚴(yán)格按照測試計劃來進(jìn)行,避免測試的隨意性。•妥善保存測試計劃、測試用例,作為軟件文檔的組成部分,為維護(hù)提供方便。•測試用例都是精心設(shè)計出來的,可以為重新測試或追加測試提供方便。3、測試過程一個規(guī)范的測試過程通常包括:制定測試計劃、編制測試大綱、根據(jù)測試大綱設(shè)計和生成測試用例、實施測試和生成測試報告。二、測試方法測試的關(guān)鍵是測試用例的設(shè)計。軟件測試的種類大致可以分為人工測試和動態(tài)測試。動態(tài)測試方法中又根據(jù)測試用例的設(shè)計方法不同分為白盒測試和黑盒測試。1、白盒測試白盒測試法需要了解程序內(nèi)部的結(jié)構(gòu),測試用例是根據(jù)程序的內(nèi)部邏輯來設(shè)計的。白盒測試法主要用于軟件的單元測試。白盒測試的基本原則是:•保證所測模塊中每一個獨立路徑至少執(zhí)行一次;•保證所測模塊所有判斷的每一個分支.至少執(zhí)行一次;•保證所測模塊每一個循環(huán)都在邊界條件和一般條件至少執(zhí)行一次;•驗證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。白盒測試法常用的技術(shù)是邏輯覆蓋。主要的覆蓋標(biāo)準(zhǔn)有6種,強(qiáng)度由低到高依次是:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋。2、黑盒測試黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進(jìn)行測試和驗證。黑盒測試不關(guān)心程序內(nèi)部的邏輯,只是根據(jù)程序的功能說明來設(shè)計測試用例。黑盒測試法主要用于軟件的確認(rèn)測試。測試方法有:•等價類劃分:把輸入數(shù)據(jù)劃分成若干個有效等價類和若干個無效等價類,然后設(shè)計測試用例覆蓋這些等價類。•邊界值分析:對各種輸入、輸出范圍的邊界情況設(shè)計測試用例的方法。這是因為程序中在處理邊界情況時出錯的概率比較大。•錯誤猜測:根據(jù)經(jīng)驗或直覺推測程序中可能存在的各種錯誤。•因果圖:根據(jù)輸入條件與輸出結(jié)果之間的因果關(guān)系來設(shè)計測試用例。三、軟件測試步驟(1)單元測試:也稱模塊測試,主要發(fā)現(xiàn)編碼和詳細(xì)設(shè)計中產(chǎn)生的錯誤,通常采用白盒測試。放在編碼階段,由程序員自己來完成,檢查它是否實現(xiàn)了詳細(xì)設(shè)計說明書中規(guī)定的模塊功能和算法。其測試計劃是在詳細(xì)設(shè)計階段完成。單元測試的測試計劃是在詳細(xì)設(shè)計階段完成。(2)集成測試:也稱組裝測試,對由各模塊組裝而成的程序進(jìn)行測試,主要檢查模塊間的接口和通信。集成測試主要發(fā)現(xiàn)設(shè)計階段產(chǎn)生的錯誤,通常采用黑盒測試或灰盒測試。集成的方式可分成非漸增式集成和漸增式集成。集成測試的測試計劃是在概要設(shè)計階段完成。(3)確認(rèn)測試:檢查軟件的功能、性能及其他特征是否與用戶的需求一致,它是以需求規(guī)格說明書(即需求規(guī)約)作為依據(jù)的測試。確認(rèn)測試通常采用黑盒測試,其測試計劃是在需求分析階段完成。•Alpha測試:在開發(fā)者的現(xiàn)場由客盧來實施的,被測試的軟件是在常規(guī)設(shè)置的環(huán)境下運行的。•Beta測試:在一個或多個客戶的現(xiàn)場由該軟件的最終用戶實施的,開發(fā)者通常是不在場的。(4)系統(tǒng)測試:把已經(jīng)過確認(rèn)的軟件納入實際運行環(huán)境中,與其他系統(tǒng)成份組合在一起進(jìn)行測試。主要內(nèi)容包括恢復(fù)測試、安全測試、強(qiáng)度測試、性能測試、可靠性測試、安裝測試等。四、軟件調(diào)試調(diào)試是在進(jìn)行了成功的測試之后才開始的工作。其任務(wù)是進(jìn)一步診斷和改正程序中潛在的錯誤。調(diào)試由兩部分組成:確定錯誤的確切性質(zhì)和位置、修改程序(設(shè)計、編碼)。目前常用的調(diào)試方法有以下5種:•試探法•回湖法•對分查找法•歸納法•演繹法【試題3-25】 2010年5月真題4使用白盒測試方法時,確定測試用例應(yīng)根據(jù)(4)和指定的覆蓋標(biāo)準(zhǔn)。A.程序的內(nèi)部邏輯B.程序結(jié)構(gòu)的復(fù)雜性C.使用說明書D.程序的功能解析:白盒法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對所有邏輯路徑進(jìn)行測試。白盒法是窮舉路徑測試。在使用這一方 案時,測試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測試數(shù)據(jù)。【答案:(4) A】【考點四】系統(tǒng)維護(hù)一、系統(tǒng)維護(hù)的內(nèi)容1.硬件維護(hù)硬件維護(hù)應(yīng)由專職的硬件維護(hù)人員來負(fù)責(zé),主要有兩種類型的維護(hù)活動,一種是定期的設(shè)備保養(yǎng)性維護(hù),另一種是突發(fā)性的故障維護(hù)。2.軟件維護(hù)軟件維護(hù)主要是根據(jù)需求變化或硬件環(huán)境的變化對應(yīng)用程序進(jìn)行部分或全部的修改。3.數(shù)據(jù)維護(hù)數(shù)據(jù)維護(hù)主要是由數(shù)據(jù)庫管理員來負(fù)責(zé),主要負(fù)責(zé)數(shù)據(jù)庫的安全性和完整性以及進(jìn)行并發(fā)性控制。二、軟件維護(hù)的內(nèi)容軟件維護(hù)的內(nèi)容包括:正確性維護(hù)、適性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)等。(1)改正性維護(hù)在軟件交付使用后,必然會有一部分隱藏的錯誤被帶到運行階段來。這些隱藏下來的錯誤在某些特定的使用環(huán)境下就會暴露出來。為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯誤的過程,就叫做改正性維護(hù)。(2)適應(yīng)性維護(hù)隨著計算機(jī)的飛速發(fā)展,外部環(huán)境(新的硬、軟件配置)或數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、 數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲介質(zhì))可能發(fā)生變化,為了使軟件適應(yīng)這種變化,而去修改軟件的過程就叫做適應(yīng)性維護(hù)。(3)完善性維護(hù)在軟件的使用過程中,用戶往往會對軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動叫做完善性維護(hù)。(4)預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性和可靠性,為未來的進(jìn)一步改進(jìn)打下基礎(chǔ)而修改軟件的活動。在整個軟件維護(hù)活動中,改正性維護(hù)約占20%,適應(yīng)性維護(hù)約占25%,完善性維護(hù)約占50%以上,其他維護(hù)約占4%。三、軟件可維護(hù)性的質(zhì)量特征軟件可維護(hù)性可以用以下的7個質(zhì)量特性來衡量:可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。