軟件工程復(fù)習(xí)資料武漢大學(xué).doc
《軟件工程復(fù)習(xí)資料武漢大學(xué).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件工程復(fù)習(xí)資料武漢大學(xué).doc(16頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
《軟件工程》期末復(fù)習(xí) 第一章 軟件工程概述 一、 一、重點(diǎn)掌握的內(nèi)容: 軟件和軟件工程的基本概念 二、 二、 一般掌握內(nèi)容: 軟件生存周期及軟件開發(fā)的各種模型。 三、 三、主要知識(shí)點(diǎn): 軟件:軟件定義由以下三部分組成: (1) (1) 在運(yùn)行中能提供所希望的功能和性能的指令集(即程序); (2) (2) 使程序能夠正確運(yùn)行的數(shù)據(jù)結(jié)構(gòu); (3) (3) 描述程序研制過程、方法所用的文擋。 軟件是一種產(chǎn)品,同時(shí)又是開發(fā)和運(yùn)行產(chǎn)品的載體。作為一種產(chǎn)品,它表達(dá)了由計(jì)算機(jī)硬件體現(xiàn)的計(jì)算潛能。作為開發(fā)運(yùn)行產(chǎn)品的載體,軟件是計(jì)算機(jī)工作的基礎(chǔ)、信息通信的基礎(chǔ),也是創(chuàng)建和控制其他程序的基礎(chǔ)。 軟件的特點(diǎn): ①軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體,因而它具有抽象性。② 軟件是通過人們的智力活動(dòng),把知識(shí)與技術(shù)轉(zhuǎn)化成信息的一種產(chǎn)品,是在研制、開發(fā)中被創(chuàng)造出來的。③在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損、老化問題。④軟件的開發(fā)和運(yùn)行經(jīng)常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。⑤軟件的開發(fā)至今尚未完全擺脫手工的開發(fā)方式。⑥軟件的開發(fā)費(fèi)用越來越高,成本相當(dāng)昂貴。 軟件的分類:軟件依據(jù)不同的標(biāo)準(zhǔn),可劃分為不同的分類。 軟件工程:是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來。軟件工程準(zhǔn)則可以概括為六條基本原理:(1)用分階段的生存周期計(jì)劃嚴(yán)格管理;(2)堅(jiān)持進(jìn)行階段評(píng)審;(3)實(shí)行嚴(yán)格的產(chǎn)品控制;(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù);(5)應(yīng)能清楚地審查結(jié)果;(6)合理安排軟件開發(fā)小組的人員。 軟件危機(jī):指的是軟件開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。 軟件工程的基本內(nèi)容:軟件工程學(xué)的內(nèi)容可包括理論、結(jié)構(gòu)、方法、工具、環(huán)境、管理、規(guī)范等。 軟件生存期也可以分為三個(gè)大的階段:計(jì)劃階段。開發(fā)階段和維護(hù)階段。 軟件開發(fā)模型:軟件開發(fā)模型是跨越整個(gè)軟件生存周期的系統(tǒng)開發(fā)、運(yùn)作、維護(hù)所實(shí)施的全部工作和任務(wù)的結(jié)構(gòu)框架。瀑布模型即生存周期模型,由B.M.Boehm提出,是軟件工程的基礎(chǔ)模型。其核心思想是按工序?qū)栴}化簡,將功能的實(shí)現(xiàn)與設(shè)計(jì)分開,便于分工協(xié)作。采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法,將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開。此外,還有螺旋模型、第四代技術(shù)模型、原型模型、構(gòu)件組裝模型、混合模型等軟件開發(fā)模型。 第二章 可行性研究 系統(tǒng)流程圖:系統(tǒng)流程圖是描繪物理系統(tǒng)的傳統(tǒng)工具。它的基本思想是用圖形符號(hào)以黑盒子形式描繪系統(tǒng)里面的每個(gè)部件(程序,文件,數(shù)據(jù)庫,表格,人工過程等等)。系統(tǒng)流程圖表達(dá)的是部件的信息流程,而不表示對(duì)信息進(jìn)行加工處理的控制過程。 系統(tǒng)流程圖的功能:1.制作系統(tǒng)流程圖的過程是系統(tǒng)分析員全面了解系統(tǒng)業(yè)務(wù)處理概況的過程,它是系統(tǒng)分析員作進(jìn)一步分析的依據(jù)。2.系統(tǒng)流程圖是系統(tǒng)分析員、管理人員、業(yè)務(wù)操作人員相互交流的工具。3.系統(tǒng)分析員可直接利用系統(tǒng)流程圖畫出可以實(shí)現(xiàn)計(jì)算機(jī)處理的部分。4.可利用系統(tǒng)流程圖來分析業(yè)務(wù)流程的合理性。 可行性研究的任務(wù):是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。一般說來,應(yīng)從經(jīng)濟(jì)可行性、技術(shù)可行性、運(yùn)行可行性、法律可行性和開發(fā)方案等方面研究可行性。 可行性研究的步驟:可行性研究的步驟分為九個(gè)步驟。 成本效益分析:成本/效益分析的目的是要從經(jīng)濟(jì)角度分析開發(fā)一個(gè)特定的新系統(tǒng)是否可行,從而幫助使用部門負(fù)責(zé)人正確地做出是否投資于這項(xiàng)開發(fā)工程的決定。幾種度量效益的方法:1.貨幣的時(shí)間價(jià)值;2.投資回收期;3.純收入。 第三章 需求分析 需求分析的方法:需求分析方法由對(duì)軟件的數(shù)據(jù)域和功能域的系統(tǒng)分析過程及其表示方法組成,它定義了表示系統(tǒng)邏輯視圖和物理視圖的方式,大多數(shù)的需求分析方法是由數(shù)據(jù)驅(qū)動(dòng)的,也就是說,這些方法提供了一種表示數(shù)據(jù)域的機(jī)制,分析員根據(jù)這種表示,確定軟件功能及其他特性,最終建立一個(gè)待開發(fā)軟件的抽象模型,即目標(biāo)系統(tǒng)的邏輯模型。 面向數(shù)據(jù)流的需求分析方法:結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法。結(jié)構(gòu)化分析方法使用數(shù)據(jù)流圖DFD與數(shù)據(jù)字典DD來描述,面向數(shù)據(jù)流問題的需求分析適合于數(shù)據(jù)處理類型軟件的需求描述。其核心思想是分解化簡問題,將物理與邏輯表示分開,對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)與邏輯的抽象。具體來說,結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件為止。重點(diǎn)掌握結(jié)合實(shí)例畫數(shù)據(jù)流圖和定義數(shù)據(jù)字典。 需求分析的任務(wù):它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么?”這個(gè)問題。需求分析所要做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的限制和軟件同其它系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其它有效性需求。需求分析的任務(wù)不是確定系統(tǒng)如何完成它的工作,而是確定系統(tǒng)必須完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。 一般說來,需求分析階段的任務(wù)包括下述幾方面: ①確定對(duì)系統(tǒng)的綜合需求 對(duì)系統(tǒng)的綜合需求主要有:系統(tǒng)功能需求、系統(tǒng)性能需求、運(yùn)行需求、將來可能提出的需求。 ②分析系統(tǒng)的數(shù)據(jù)需求 ③導(dǎo)出系統(tǒng)的邏輯模型 就是在理解當(dāng)前系統(tǒng)“怎樣做”的基礎(chǔ)上,抽取其“做什么”的本質(zhì),明確目標(biāo)系統(tǒng)要“做什么”,可以導(dǎo)出系統(tǒng)的詳細(xì)的邏輯模型。具體做法是:首先確定目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)的邏輯差別;然后將變化部分看作是新的處理步驟,對(duì)功能圖(一般為數(shù)據(jù)流圖)及對(duì)象圖進(jìn)行調(diào)整;最后由外及里對(duì)變化的部分進(jìn)行分析,推斷其結(jié)構(gòu),獲得目標(biāo)系統(tǒng)的邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型。 ④修正系統(tǒng)開發(fā)計(jì)劃 在經(jīng)過需求分析階段的工作,分析員對(duì)目標(biāo)系統(tǒng)有了更深入更具體的認(rèn)識(shí),因此可以對(duì)系統(tǒng)的成本和進(jìn)度做出更準(zhǔn)確的估計(jì),在此基礎(chǔ)上應(yīng)該對(duì)開發(fā)計(jì)劃進(jìn)行修正。 ⑤開發(fā)原型系統(tǒng) 使用原型系統(tǒng)的主要目的是,使用戶通過實(shí)踐獲得關(guān)于未來的系統(tǒng)將怎樣為他們工作的更直接更具體的概念,從而可以更準(zhǔn)確地提出和確定他們的要求。 需求分析的步驟:1.調(diào)查研究;2.分析與綜合;3.書寫文檔;4.需求分析評(píng)審 需求分析的原則:其基本原則可概括為: (1)必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域;(2)按自頂向下、逐層分解問題;(3)要給出系統(tǒng)的邏輯視圖和物理視圖。 第四章 概要設(shè)計(jì) 概要設(shè)計(jì)任務(wù): ①系統(tǒng)分析員審查軟件計(jì)劃、軟件需求分析提供的文檔,提出最佳推薦方案,用系統(tǒng)流程圖,組成系統(tǒng)物理元素清單,成本效益分析,系統(tǒng)的進(jìn)度計(jì)劃,供專家審定,審定后進(jìn)入設(shè)計(jì)。 ②確定模塊結(jié)構(gòu),劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊間的聯(lián)系,確定數(shù)據(jù)結(jié)構(gòu)、文件結(jié)構(gòu)、數(shù)據(jù)庫模式,確定測(cè)試方法與策略。 ③ 編寫概要設(shè)計(jì)說明書,用戶手冊(cè),測(cè)試計(jì)劃,選用相關(guān)的軟件工具來描述軟件結(jié)構(gòu),結(jié)構(gòu)圖是經(jīng)常使用的軟件描述工具。選擇分解功能與劃分模塊的設(shè)計(jì)原則,例如模塊劃分獨(dú)立性原則,信息隱蔽原則等。 概要設(shè)計(jì)過程:概要設(shè)計(jì)要先進(jìn)行系統(tǒng)設(shè)計(jì),復(fù)審系統(tǒng)計(jì)劃與需求分析,確定系統(tǒng)具體的實(shí)施方案;然后進(jìn)行結(jié)構(gòu)設(shè)計(jì),確定軟件結(jié)構(gòu)。 軟件設(shè)計(jì)的概念與原則: ①將軟件劃分成若干獨(dú)立成分的依據(jù)。 ②如何表示不同的成分內(nèi)的功能細(xì)節(jié)和數(shù)據(jù)結(jié)構(gòu)。 ③如何統(tǒng)一衡量軟件設(shè)計(jì)的技術(shù)質(zhì)量。 其中有幾個(gè)概念:1.模塊化:就是把程序劃分成若干個(gè)模塊,每個(gè)模塊具有一個(gè)子功能,把這些模塊集總起來組成一個(gè)整體,可以完成指定的功能,實(shí)現(xiàn)問題的要求。2. 抽象:就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。3. 信息隱蔽:模塊中所包括的信息不允許其它不需要這些信息的模塊調(diào)用。4. 信息局部化:是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。5. 模塊獨(dú)立性:是軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體子功能,而和軟件系統(tǒng)中其他的模塊接口是簡單的。模塊獨(dú)立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。6. 耦合:是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,調(diào)用模塊的方式,以及通過接口的信息。7. 內(nèi)聚:標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展。 概要設(shè)計(jì)的方法:面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。面向數(shù)據(jù)流的設(shè)計(jì)要解決的任務(wù),就是上述需求分析的基礎(chǔ)上,將DFD圖映射為軟件系統(tǒng)的結(jié)構(gòu)。換句話說,這類設(shè)計(jì)方法允許把用DFD圖表示的系統(tǒng)邏輯模型方便地轉(zhuǎn)換成對(duì)于軟件結(jié)構(gòu)的初始設(shè)計(jì)描述。理解基本概念:信息流(包括變換流和事務(wù)流)、抽象與逐步求精;模塊化與信息隱藏;軟件總體結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)與軟件過程。 面向數(shù)據(jù)結(jié)構(gòu)的分析設(shè)計(jì)方法: ①Jackson系統(tǒng)開發(fā)方法(JSD): Jackson系統(tǒng)開發(fā)方法(JSD,Jackson System Development)是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析設(shè)計(jì)方法,它是以信息驅(qū)動(dòng)的,是將信息轉(zhuǎn)換成軟件的程序結(jié)構(gòu)。 ② Warnier方法 :Warnier程序設(shè)計(jì)方法是由法國人J.D.Warnier提出的另一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,又稱為邏輯構(gòu)造程序的方法,簡稱LCP(Logical Construction of Programs)方法。Warnier方法的原理和Jackson方法類似,也是從數(shù)據(jù)結(jié)構(gòu)出發(fā)設(shè)計(jì)程序,但是這種方法的邏輯更嚴(yán)格。 第五章 詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)的任務(wù):詳細(xì)設(shè)計(jì)就是要在概要設(shè)計(jì)的結(jié)果的基礎(chǔ)上,考慮“怎樣實(shí)現(xiàn)”這個(gè)軟件系統(tǒng),直到對(duì)系統(tǒng)中的每個(gè)模塊給出足夠詳細(xì)的過程性描述。主要任務(wù)如下:①為每個(gè)模塊確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,寫出模塊的詳細(xì)過程性描述;②確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu);③確定模塊接口的細(xì)節(jié),包括對(duì)系統(tǒng)外部的接口和用戶界面,對(duì)系統(tǒng)內(nèi)部其它模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié)。④要為每一個(gè)模塊設(shè)計(jì)出一組測(cè)試用例,以便在編碼階段對(duì)模塊代碼(即程序)進(jìn)行預(yù)定的測(cè)試,模塊的測(cè)試用例是軟件測(cè)試計(jì)劃的重要組成部分,通常應(yīng)包括輸入數(shù)據(jù),期望輸出等內(nèi)容。 詳細(xì)設(shè)計(jì)的方法:程序流程圖、N-S圖、PAD圖、HIPO圖 程序流程圖:程序流程圖又稱之為程序框圖,它是軟件開發(fā)者最熟悉的一種算法表達(dá)工具。它獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀和清晰地描述過程的控制流程,易于學(xué)習(xí)掌握。在流程圖中只能使用下述的五種基本控制結(jié)構(gòu)。①順序型;②選擇型;③ while型循環(huán);④ until型循環(huán);⑤ 多情況型選擇。 N-S圖:Nassi和Shneiderman提出了一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,稱為盒圖,又稱為N-S圖。在N-S圖中,為了表示五種基本控制結(jié)構(gòu),規(guī)定了五種圖形構(gòu)件。①順序型;② 選擇型;③ WHILE重復(fù)型;④ UNTIL重復(fù)型; ⑤ 多分支選擇型。 PAD圖:它是用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具。PAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖示,并允許遞歸使用。 HIPO圖:HIPO圖是由一組IPO圖加一張HC圖組成。它是美國IBM公司在軟件設(shè)計(jì)中使用的主要表達(dá)工具。 HC圖是層次圖(Hierarchy chart)的英文縮寫,用于表示軟件的分層結(jié)構(gòu)。HC圖中的每一個(gè)模塊,均可用一張IPO圖來描述。IPO 圖由輸入、處理和輸出三個(gè)框組成,需要時(shí)還可以增加一個(gè)數(shù)據(jù)文件框,這種圖形的優(yōu)點(diǎn),是能夠直觀地顯示輸入—處理—輸出三者之間的聯(lián)系。 詳細(xì)設(shè)計(jì)的原則:原則是過程描述是否易于理解、復(fù)審和維護(hù),進(jìn)而過程描述能夠自然地轉(zhuǎn)換成代碼,并保證詳細(xì)設(shè)計(jì)與代碼完全一致。 詳細(xì)設(shè)計(jì)規(guī)格與評(píng)審:詳細(xì)設(shè)計(jì)說明書的框架及評(píng)審。 第六章 面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法 面向?qū)ο蟮幕靖拍? 面向?qū)ο蟛粌H是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實(shí)世界的關(guān)系,以什么觀點(diǎn)來研究問題并進(jìn)行求解,以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。而面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。面向?qū)ο蠓椒ǖ幕舅枷胧?,從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。面向?qū)ο蟮膸讉€(gè)重要概念:對(duì)象、消息、方法性、繼承性、封裝性等。 面向?qū)ο蠓椒ǖ幕咎卣? ①從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對(duì)象作為對(duì)這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。 ②事物的靜態(tài)特征(即可以用一些數(shù)據(jù)來表達(dá)的特征)用對(duì)象的屬性表示,事物的動(dòng)態(tài)特征(即事物的行為)用對(duì)象的服務(wù)(或操作)表示。 ③對(duì)象的屬性與服務(wù)結(jié)合為一體,成為一個(gè)獨(dú)立的實(shí)體,對(duì)外屏蔽其內(nèi)部細(xì)節(jié)(稱作封裝)。 ④對(duì)事物進(jìn)行分類。把具有相同屬性和相同服務(wù)的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是它的類的一個(gè)實(shí)例。 ⑤通過在不同程度上運(yùn)用抽象的原則(較多或較少地忽略事物之間的差異),可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與服務(wù),面向?qū)ο蠓椒ㄖС謱?duì)這種繼承關(guān)系的描述與實(shí)現(xiàn),從而簡化系統(tǒng)的構(gòu)造過程及其文檔。 ⑥復(fù)雜的對(duì)象可以用簡單的對(duì)象作為其構(gòu)成部分,稱作聚合。 ⑦對(duì)象之間通過消息進(jìn)行通信,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系。 ⑧通過關(guān)聯(lián)表達(dá)對(duì)象之間的靜態(tài)關(guān)系。 面向?qū)ο蠓治龇椒ǎ耗壳俺霈F(xiàn)有OOA與OOD方法。 面向?qū)ο笤O(shè)計(jì)方法:OOA與OOD的職責(zé)劃分是:OOA針對(duì)問題域運(yùn)用OO方法,建立一個(gè)反映問題域的OOA模型,不考慮與系統(tǒng)的具體實(shí)現(xiàn)有關(guān)的因素(例如采用什么編程語言、圖形用戶界面、數(shù)據(jù)庫等等),從而使OOA模型獨(dú)立于具體的實(shí)現(xiàn)。OOD則是針對(duì)系統(tǒng)的一個(gè)具體的實(shí)現(xiàn)運(yùn)用OO方法。其中包括兩方面的工作,一是把OOA模型直接搬到OOD(不經(jīng)過轉(zhuǎn)換,僅作某些必要的修改和調(diào)整),作為OOD的一個(gè)部分;二是針對(duì)具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等因素補(bǔ)充一些與實(shí)現(xiàn)有關(guān)的部分。這些部分與OOA采用相同的表示法和模型結(jié)構(gòu)。 第七章 編碼 程序設(shè)計(jì)語言的特點(diǎn): 程序設(shè)計(jì)語言是人與計(jì)算機(jī)交流的媒介。軟件工程師應(yīng)該了解程序設(shè)計(jì)語言各方面的特點(diǎn),以及這些特點(diǎn)對(duì)軟件質(zhì)量的影響,以便在需要為一個(gè)特定的開發(fā)項(xiàng)目選擇語言時(shí),能作出合理的技術(shù)抉擇。其特點(diǎn)表現(xiàn)為九個(gè)方面:①名字說明;②類型說明;③初始化;④程序?qū)ο蟮木植啃裕虎莩绦蚰K;⑥循環(huán)控制結(jié)構(gòu);⑦分支控制結(jié)構(gòu);⑧ 異常處理;⑨獨(dú)立編譯。 編程風(fēng)格:編碼風(fēng)格又稱程序設(shè)計(jì)風(fēng)格或編程風(fēng)格,實(shí)際上指編程的原則。表現(xiàn)為四個(gè)方面:源程序文檔化,數(shù)據(jù)說明的方法,語句結(jié)構(gòu)和輸入/輸出方法。 源程序文檔化:源程序文檔化又可從四個(gè)方面來闡述,①符號(hào)名的命名;②程序的注釋;③標(biāo)準(zhǔn)的書寫格式; 數(shù)據(jù)說明:數(shù)據(jù)說明的次序應(yīng)當(dāng)規(guī)范化。使數(shù)據(jù)屬性容易查找,也有利于測(cè)試,排錯(cuò)和維護(hù)。 語句結(jié)構(gòu):語句構(gòu)造力求簡單、直接,不能為了片面追求效率而使語句復(fù)雜化。可從以下幾方面注意:1.使用標(biāo)準(zhǔn)的控制結(jié)構(gòu);2.盡可能使用庫函數(shù);3.程序編寫首先應(yīng)當(dāng)考慮清晰性;4.注意使用GOTO語句; 輸入/輸出方法:輸入/輸出的方式和格式應(yīng)當(dāng)盡量作到對(duì)用戶友善(User Friendly),盡可能方便用戶的使用。 程序效率:程序效率是指程序的執(zhí)行速度及程序占用的存儲(chǔ)空間。影響程序效率的因素是多方面的。 編程安全:提高軟件質(zhì)量和可靠性的技術(shù)大致可分為兩類,一類是避開錯(cuò)誤技術(shù),即在開發(fā)的過程中不讓差錯(cuò)潛入軟件的技術(shù);另一類是容錯(cuò)技術(shù),即對(duì)某些無法避開的差錯(cuò),使其影響減至最小的技術(shù);避開錯(cuò)誤技術(shù)是進(jìn)行質(zhì)量管理,實(shí)現(xiàn)產(chǎn)品應(yīng)有質(zhì)量所必不可少的技術(shù),也就是軟件工程中所討論的先進(jìn)的軟件分析和開發(fā)技術(shù)和管理技術(shù)。但是,無論使用多么高明的避開錯(cuò)誤技術(shù),也無法做到完美無缺和絕無錯(cuò)誤,這就需要采用容錯(cuò)技術(shù)。實(shí)現(xiàn)容錯(cuò)的主要手段是冗余和防錯(cuò)程序設(shè)計(jì)。 面向?qū)ο蟪绦蛟O(shè)計(jì)步驟:面向?qū)ο蟮脑O(shè)計(jì)方法一般適用于軟件設(shè)計(jì)和實(shí)現(xiàn)階段。其基本步驟是:①建立軟件系統(tǒng)的動(dòng)態(tài)模型;②建立軟件系統(tǒng)的靜態(tài)模型;③實(shí)現(xiàn)。 第八章 軟件質(zhì)量與質(zhì)量保證 軟件質(zhì)量:軟件質(zhì)量是各種特性的復(fù)雜組合。軟件質(zhì)量反映了以下三方面的問題: (1)軟件需求是度量軟件質(zhì)量的基礎(chǔ)。不符合需求的軟件就不具備質(zhì)量。 (2)在各種標(biāo)準(zhǔn)中定義了一些開發(fā)準(zhǔn)則,用來指導(dǎo)軟件人員用工程化的方法來開發(fā)軟件。如果不遵守這些開發(fā)準(zhǔn)則,軟件質(zhì)量就得不到保證。 (3)往往會(huì)有一些隱含的需求沒有明確地提出來。例如,軟件應(yīng)具備良好的可維護(hù)性。如果軟件只滿足那些精確定義了的需求而沒有滿足這些隱含的需求,軟件質(zhì)量也不能保證。 軟件質(zhì)量保證策略:為了在軟件開發(fā)過程中保證軟件的質(zhì)量,主要采取下述措施: ①審查;②復(fù)查和管理復(fù)審;③測(cè)試。 結(jié)構(gòu)化的軟件測(cè)試:軟件測(cè)試在程序員對(duì)每一個(gè)模塊的編碼之后先做程序測(cè)試,再做單元測(cè)試,然后再進(jìn)行集成(綜合或組裝)測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收(確認(rèn))測(cè)試,平行測(cè)試,人工測(cè)試,其中單元測(cè)試的一部分己在編碼階段就開始了。 測(cè)試:就是用已知的輸入在已知環(huán)境中動(dòng)態(tài)地執(zhí)行系統(tǒng)(或系統(tǒng)的“部件”)。如果測(cè)試結(jié)果和預(yù)期結(jié)果不一致,則很可能是發(fā)現(xiàn)了系統(tǒng)中的錯(cuò)誤。 軟件測(cè)試:軟件測(cè)試是對(duì)軟件計(jì)劃、軟件設(shè)計(jì)、軟件編碼進(jìn)行查錯(cuò)和糾錯(cuò)的活動(dòng)(包括代碼執(zhí)行活動(dòng)與人工活動(dòng))。 程序測(cè)試:是對(duì)編碼階段的語法錯(cuò)、語義錯(cuò)、運(yùn)行錯(cuò)進(jìn)行查找的代碼執(zhí)行活動(dòng)。找出編碼中錯(cuò)誤的代碼執(zhí)行活動(dòng)稱程序測(cè)試。糾正編碼中的錯(cuò)誤的執(zhí)行活動(dòng)稱程序調(diào)試。程序測(cè)試的目的是查找編碼錯(cuò)與糾正編碼錯(cuò),保證算法的正確實(shí)現(xiàn)。 測(cè)試的原則: (1)測(cè)試前要認(rèn)定被測(cè)試軟件有錯(cuò),不要認(rèn)為軟件沒有錯(cuò)。 (2)要預(yù)先確定被測(cè)試軟件的測(cè)試結(jié)果。 (3)要盡量避免測(cè)試自己編寫的程序。 (4)測(cè)試要兼顧合理輸入與不合理輸入數(shù)據(jù)。 (5)測(cè)試要以軟件需求規(guī)格說明書為標(biāo)準(zhǔn)。 (6)要明確找到的新錯(cuò)與已找到的舊錯(cuò)成正比。 (7)測(cè)試是相對(duì)的,不能窮盡所有的測(cè)試,要據(jù)人力物力安排測(cè)試,并選擇好測(cè)試用例與測(cè)試方法。 (8)測(cè)試用例留作測(cè)試報(bào)告與以后的反復(fù)測(cè)試用,重新驗(yàn)證糾錯(cuò)的程序是否有錯(cuò)。 測(cè)試方法:按照測(cè)試過程是否在實(shí)際應(yīng)用環(huán)境中來分,有靜態(tài)分析與動(dòng)態(tài)測(cè)試。測(cè)試方法有分析方法(包括靜態(tài)分析法與白盒法)與非分析方法(稱黑盒法)。 靜態(tài)分析技術(shù):不執(zhí)行被測(cè)軟件,可對(duì)需求分析說明書、軟件設(shè)計(jì)說明書、源程序做結(jié)構(gòu)檢查、流程分析、符號(hào)執(zhí)行來找出軟件錯(cuò)誤。 動(dòng)態(tài)測(cè)試技術(shù):當(dāng)把程序作為一個(gè)函數(shù),輸入的全體稱為函數(shù)的定義域,輸出的全體稱為函數(shù)的值域,函數(shù)則描述了輸入的定義域與輸出值域的關(guān)系。這樣動(dòng)態(tài)測(cè)試的算法可歸納為: ①選取定義域中的有效值,或定義域外無效值。 ②對(duì)已選取值決定預(yù)期的結(jié)果。 ③用選取值執(zhí)行程序。 ④觀察程序行為,記錄執(zhí)行結(jié)果。 ⑤將④的結(jié)果與②的結(jié)果相比較,不吻合則程序有錯(cuò)。 動(dòng)態(tài)測(cè)試既可以采用白盒法對(duì)模塊進(jìn)行邏輯結(jié)構(gòu)的測(cè)試,又可以用黑盒法做功能結(jié)枸的測(cè)試、接口的測(cè)試,都是以執(zhí)行程序并分析執(zhí)行結(jié)果來查錯(cuò)的。 白盒法:是通過分析程序內(nèi)部的邏輯與執(zhí)行路線來設(shè)計(jì)測(cè)試用例,進(jìn)行測(cè)試的方法,白盒法也稱邏輯驅(qū)動(dòng)方法。白盒法的具體設(shè)計(jì)程序測(cè)試用例的方法有:語句覆蓋、分支(判定)覆蓋、條件覆蓋、路徑覆蓋(或條件組合覆蓋),主要目的是提高測(cè)試的覆蓋率。 黑盒法:是功能驅(qū)動(dòng)方法,僅根據(jù)I/O數(shù)據(jù)條件來設(shè)計(jì)測(cè)試用例,而不管程序的內(nèi)部結(jié)構(gòu)與路徑如何。黑盒法的具體設(shè)計(jì)程序測(cè)試用例的方法有:等價(jià)類劃分法,邊界值分析法,錯(cuò)誤推測(cè)法,主要目的是設(shè)法以最少測(cè)試數(shù)據(jù)子集來盡可能多的測(cè)試軟件程序的錯(cuò)誤。 設(shè)計(jì)測(cè)試方案: 測(cè)試方案包括預(yù)定要測(cè)試的功能,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果,其中最困難的問題是設(shè)計(jì)測(cè)試用的輸入數(shù)據(jù)(即測(cè)試用例)。通常的做法是,用黑盒法設(shè)計(jì)基本的測(cè)試方案,再用白盒法補(bǔ)充一些方案。 軟件測(cè)試的步驟: 單元測(cè)試:單元測(cè)試也稱模塊測(cè)試、邏輯測(cè)試、結(jié)構(gòu)測(cè)試,測(cè)試的方法一般采用白盒法,以路徑覆蓋為最佳測(cè)試準(zhǔn)則。 集成測(cè)試:單元測(cè)試之后便進(jìn)入組裝測(cè)試。盡管模擬了驅(qū)動(dòng)模塊和存根模塊進(jìn)行單元測(cè)試,由于測(cè)試不能窮盡,單元測(cè)試又會(huì)引入新錯(cuò)誤,單元測(cè)試后肯定會(huì)有隱藏錯(cuò)誤,組裝不可能一次成功,必須經(jīng)測(cè)試后才能成功。集成測(cè)試分為增式組裝測(cè)試和非增式組裝測(cè)試,所謂非增式組裝,按照結(jié)構(gòu)圖一次性將各單元模塊組裝起來。所謂增式組裝是指按照結(jié)構(gòu)圖自頂向下或自底向上逐漸安裝。 確認(rèn)測(cè)試:確認(rèn)測(cè)試也稱合格測(cè)試或稱驗(yàn)收測(cè)試。組裝后己成為完整的軟件包,消除了接口的錯(cuò)誤。確認(rèn)測(cè)試主要由使用用戶參加測(cè)試,檢驗(yàn)軟件規(guī)格說明的技術(shù)標(biāo)準(zhǔn)的符合程度,是保證軟件質(zhì)量的最后關(guān)鍵環(huán)節(jié)。 系統(tǒng)測(cè)試:一般的系統(tǒng)除了確認(rèn)測(cè)試外還要做如下幾個(gè)方面的系統(tǒng)測(cè)試 ①恢復(fù)測(cè)試 通過系統(tǒng)的修復(fù)能力,檢測(cè)重新初始化,數(shù)據(jù)恢復(fù),重新啟動(dòng),檢驗(yàn)點(diǎn)設(shè)置機(jī)構(gòu)是否正確,以及人工干預(yù)的平均恢復(fù)時(shí)間是否在允許范圍內(nèi)。 ②安全測(cè)試 設(shè)計(jì)測(cè)試用例,突破軟件安全保護(hù)的機(jī)構(gòu)安全保密措施,檢驗(yàn)系統(tǒng)是否安全保密的漏洞。 ③強(qiáng)度測(cè)試 設(shè)計(jì)測(cè)試用例,檢驗(yàn)系統(tǒng)的能力最高能達(dá)到什么實(shí)際的限度,讓系統(tǒng)處于資源的異常數(shù)量、異常頻率、異常批量的條件下運(yùn)行測(cè)試系統(tǒng)的承受能力。一般取比平常限度高5一10倍的限度做測(cè)試用例。 ④性能測(cè)試 設(shè)計(jì)測(cè)試用例測(cè)試并記錄軟件運(yùn)行性能,與性能要求比較,看是否達(dá)到性能要求規(guī)格。這項(xiàng)測(cè)試常常與強(qiáng)度測(cè)試相結(jié)合進(jìn)行。 軟件維護(hù):軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品所進(jìn)行的修改就是維護(hù)。 維護(hù)的問題:軟件維護(hù)存在的絕大多數(shù)問題,都是由于軟件定義和軟件開發(fā)的方法有問題。在軟件生命周期的頭兩個(gè)時(shí)期沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,幾乎必然會(huì)導(dǎo)致在最后階段出現(xiàn)問題。 軟件維護(hù)步驟及組織:為了正確、有效地修改,需要經(jīng)歷以下三個(gè)步驟:1.分析和理解程序;2.修改程序;3.重新驗(yàn)證程序;4.維護(hù)組織。 第九章 項(xiàng)目計(jì)劃與管理 軟件項(xiàng)目特點(diǎn): 軟件產(chǎn)品與其他任何產(chǎn)品不同,它是無形的,完全沒有物理屬性。其特點(diǎn)表現(xiàn)為:①智力密集,可見性差;②單件生產(chǎn):在特定機(jī)型上,利用特定硬件配置,由特定的系統(tǒng)軟件或支撐軟件的支持,形成了特定的開發(fā)環(huán)境;③勞動(dòng)密集,自動(dòng)化程度低:④使用方法繁瑣,維護(hù)困難;⑤軟件工作滲透了人的因素。 軟件管理的功能:軟件管理的主要功能包括:①制定計(jì)劃:規(guī)定待完成的任務(wù)、要求、資源、人力和進(jìn)度等;②建立組織項(xiàng)目:為實(shí)施計(jì)劃,保證任務(wù)的完成,需要建立分工明確的責(zé)任機(jī)構(gòu);③配備人員:任用各種層次的技術(shù)人員和管理人員;④指導(dǎo):鼓勵(lì)和動(dòng)員軟件人員完成所分配的情況。 軟件配置管理的過程:軟件配置管理SCM除了負(fù)擔(dān)控制變化之外,它還要擔(dān)負(fù)標(biāo)識(shí)單個(gè)的SCI和軟件各種版本、審查軟件配置以保證開發(fā)得以正常進(jìn)行,以及報(bào)告所有加在配置上的變化等任務(wù)。 關(guān)于SCM需要考慮這樣一些問題: (1) (1)采用什么方式標(biāo)識(shí)和管理許多已存在的程序的各種版本?使得變化能夠有效地實(shí)現(xiàn)。 (2) (2)在軟件交付用戶之前和之后,如何控制變化? (3) (3)誰有權(quán)批準(zhǔn)和對(duì)變化安排優(yōu)先級(jí)? (4) (4)如何保證變化得以正確地實(shí)施? (5) (5)利用什么辦法估計(jì)變化可能引起的其它問題? 名詞解釋 1. 軟件:完成特定功能的程序+數(shù)據(jù)結(jié)構(gòu)+文檔 2. 軟件危機(jī):指計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題 3. 軟件工程:指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué) 4. 軟件生命周期:一個(gè)軟件從定義、開發(fā)、使用和維護(hù)直至最終被廢棄,要經(jīng)歷的漫長時(shí) 期 5. 模塊獨(dú)立:每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且和其他模塊關(guān)系簡單 6. 耦合:是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊間互聯(lián)程度的度量 7. 內(nèi)聚:標(biāo)志著一個(gè)模塊內(nèi)各個(gè)元素彼此之間互聯(lián)程度的度量 8. 編碼:就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序 9. 編碼風(fēng)格:指不影響程序正確性和效率的前提下,有效編排和合理組織程序的基本原則 10. 白盒法:按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中重要執(zhí)行通路是否都按預(yù)定要求 正確工作(結(jié)構(gòu)測(cè)試) 11. 黑盒法:是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能是否按規(guī)格說明書的規(guī)定正常 使用,程序是否能適當(dāng)?shù)慕邮蛰斎胄畔⒉a(chǎn)生正確的輸出信息,程序運(yùn)行過程中能否保 持外部信息的完整性(功能測(cè)試) 12. 軟件的可靠性:是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書規(guī)定成功地運(yùn)行概率 13. 軟件可用性:是程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書規(guī)定成功地運(yùn)行概率 14. 軟件維護(hù):是軟件已經(jīng)交付使用后,為了改正錯(cuò)誤或滿足新的需要而修改的軟件的過 程 15. 對(duì)象:由描述該對(duì)象屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成 的統(tǒng)一體 16. 類:是對(duì)具有相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述 17. 實(shí)例:由某個(gè)特定的類所描述的一個(gè)具體對(duì)象 18. 消息:要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明 19. 方法:就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù) 20. 屬性:就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)抽象 21. 繼承:廣義的說是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們 狹義的說是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制 22. 面向?qū)ο蠓治觯撼槿『驼碛脩粜枨蟛⒔栴}域精確模型過程 23. 軟件設(shè)計(jì):從抽象概括到具體實(shí)踐過程 24. 抽象:抽出事物的本質(zhì)特征而暫時(shí)不考慮它們細(xì)節(jié)包含了對(duì)象(object)、類(class)、繼承(inheritance)、消息(message)等核心概念 UML: 統(tǒng)一建模語言(unifed modeling language),是一種基于面向?qū)ο蟮目梢暬UZ 言,它提供豐富的以圖形符號(hào)表示的模型元素,這些標(biāo)準(zhǔn)的圖形符號(hào)隱含了UML 的語法, 而由這些圖形符號(hào)組成的各種模型則給出了UML 的語義。 SRS :軟件需求規(guī)格說明書(software requirement specification),是軟件開發(fā)人員在分 析階段需要完成的用于描述需求的文檔。 黑盒測(cè)試:根據(jù)被測(cè)試程序功能來進(jìn)行測(cè)試,是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能 是否按規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)慕邮蛰斎胄畔⒉a(chǎn)生正確的輸出信 息,程序運(yùn)行過程中能否保持外部信息的完整性,又叫做功能測(cè)試 白盒測(cè)試:以程序的結(jié)構(gòu)為依據(jù),按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中重要執(zhí)行通路 是否都按預(yù)定要求正確工作,又叫做結(jié)構(gòu)測(cè)試 SE2 ::軟件工程環(huán)境(software engineering environment) 內(nèi)聚:是從功能的角度對(duì)模塊內(nèi)部聚合能力的量度 耦合:是對(duì)軟件內(nèi)部塊間聯(lián)系的度量 模塊:是一個(gè)擁有明確定義的輸入、輸出和特性的程序?qū)嶓w 模塊化:把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能 模塊化設(shè)計(jì):按照規(guī)定的原則把大型軟件劃分為一個(gè)個(gè)較小的、相對(duì)獨(dú)立但相互關(guān)聯(lián)的模塊 IDE:集成開發(fā)環(huán)境 Ant:是一種基于Java 的build 工具。 JIRA:是目前比較流行的基于Java 架構(gòu)的過程管理系統(tǒng), CVS:是一個(gè)C/S 系統(tǒng),多個(gè)開發(fā)人員通過一個(gè)中心版本控制系統(tǒng)來記錄文件版本,從而 達(dá)到保證文件同步的目的。CVS 版本控制系統(tǒng)是一種GNU 軟件包,主要用于在多人開發(fā)環(huán) 境下的源碼的維護(hù)。 SVN:是一款版本管理工具,是cvs 的接班人。目前,絕大多數(shù)開源軟件都使用svn 作為 代碼版本管理軟件。 MVC:模型-視圖-控制架構(gòu)(Model-View-Control) 傳統(tǒng)軟件過程 瀑布模型 將整個(gè)軟件過程嚴(yán)格地劃分階段,是一種基于軟件生存周期的線性開發(fā)模型,前一階段 的工作完成之后,后一階段才能開始,每一階段必須完成規(guī)定的文檔,并對(duì)完成的文檔進(jìn)行 復(fù)審,以便盡早發(fā)現(xiàn)問題,消除隱患。 特點(diǎn):階段的順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn) 優(yōu)點(diǎn)提供了按階段劃分的檢查點(diǎn)可以在迭代模型中應(yīng)用瀑布模型 缺點(diǎn)不適合需求模糊的系統(tǒng)開發(fā)初始階段很難徹底弄清軟件需求 按照瀑布模型的階段劃分,可將軟件測(cè)試分為單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試。 快速原型模型 先建立一個(gè)能反應(yīng)用戶主要需求的原型,原型只包括未來系統(tǒng)的主要功能及系統(tǒng)的重要 接口。以便判斷哪些功能是符合需要的,哪些還需要改進(jìn)。 原型系統(tǒng)往往采用能縮短開發(fā)周期的語言或工具。應(yīng)將原型廢棄不用,僅把建立原型的 過程當(dāng)作幫助定義軟件需求的一種手段。 特點(diǎn)“逼真”的原型可以使用戶迅速作出反饋循環(huán)回溯和迭代非線性模型使用快速開發(fā)工具 種類漸進(jìn)型:對(duì)原型補(bǔ)充和修改獲得最終系統(tǒng)拋棄型:原型廢棄不用 應(yīng)防止的偏向舍不得拋棄,從而影響軟件質(zhì)量 優(yōu)點(diǎn)克服瀑布模型的缺點(diǎn),減少由于軟件需求不明確帶來的風(fēng)險(xiǎn) 缺點(diǎn)用戶不舍得廢棄原型開發(fā)者不愿推倒重來,或限制了開發(fā)人員的創(chuàng)新 軟件演化模型 增量模型 融合了瀑布模型的順序特征和快速原型法的迭代特征。采用隨時(shí)間進(jìn)展而交錯(cuò)的線性序 列,每一個(gè)線性序列產(chǎn)生軟件一個(gè)可發(fā)布的“增量”,開發(fā)的各次迭代中,每次完成其中的一 個(gè)增量。第一個(gè)增量通常是軟件的核心部分。 增量小而可用的軟件第一個(gè)增量通常是軟件的核心 特點(diǎn)在前面增量的基礎(chǔ)上開發(fā)后面的增量每個(gè)增量的開發(fā)可用瀑布或快速原型模型每個(gè)增量開發(fā)的順序性和總體的迭代性相結(jié)合 螺旋模型 將瀑布模型和快速原型模型結(jié)合起來,并強(qiáng)調(diào)了其他模型所忽視的風(fēng)險(xiǎn)分析,適合大型 復(fù)雜系統(tǒng)。 每輪螺旋包含了一下4 種活動(dòng): 1、計(jì)劃:確定目標(biāo),選擇方案,選定完成目標(biāo)的策略 2、風(fēng)險(xiǎn)分析:從風(fēng)險(xiǎn)角度分析該策略 3、開發(fā):啟動(dòng)一個(gè)開發(fā)活動(dòng) 4、用戶評(píng)審:評(píng)價(jià)前一步的結(jié)果,計(jì)劃下一輪的工作 特點(diǎn)瀑布模型(順序性、邊開發(fā)邊復(fù)審)+ 快速原型(迭代性)風(fēng)險(xiǎn)分析 發(fā)現(xiàn)、控制風(fēng)險(xiǎn) 第一章 1.軟件危機(jī)的概念: 軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。 概括地說,軟件危機(jī)包含兩方面問題:如何開發(fā)軟件,以滿足對(duì)軟件日益增長的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。 1. 軟件危機(jī)產(chǎn)生的原因? 原因一:軟件本身的特點(diǎn) 軟件是邏輯產(chǎn)品; 軟件規(guī)模龐大 原因二:軟件專業(yè)人員本身的素質(zhì)所決定的:軟件專業(yè)人員對(duì)軟件開發(fā)和維護(hù)存在糊涂的觀念,在實(shí)踐過程中采用了錯(cuò)誤的方法和技術(shù) 忽視用戶需求分析或分析不足; 對(duì)軟件生存周期這一過程認(rèn)識(shí)不明確; 對(duì)完整的軟件配置認(rèn)識(shí)不準(zhǔn)確; 忽略了軟件維護(hù)的重要性; 2. 消除軟件危機(jī)的途徑 (1)對(duì)計(jì)算機(jī)軟件應(yīng)當(dāng)有一個(gè)正確的認(rèn)識(shí); (2)應(yīng)當(dāng)有組織、有計(jì)劃、通過嚴(yán)格的管理手段進(jìn)行軟件的開發(fā); (3)及時(shí)總結(jié)軟件開發(fā)的成功技術(shù)和方法并加以推廣; (4)開發(fā)和使用更好的軟件工具; 總之,為了解決軟件危機(jī),既要有技術(shù)措施,又要有必要的組織管理措施。 3. 什么是軟件工程? 軟件工程是研究軟件生產(chǎn)的一門學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以達(dá)到經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效的維護(hù)它的目的。 5軟件生命周期分為哪幾個(gè)階段,各階段的任務(wù)是什么? 軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分為若干個(gè)階段。 軟件定義時(shí)期的任務(wù)是:確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;到處實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并制定工程進(jìn)度表。這一時(shí)期可劃分為三個(gè)階段:問題定義、可行性研究、需求分析。 軟件開發(fā)時(shí)期的任務(wù)是:具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件。這一時(shí)期由四階段組成:總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試。 軟件維護(hù)時(shí)期的任務(wù)是:當(dāng)軟件在使用過程中發(fā)現(xiàn)錯(cuò)誤時(shí)加以改正;當(dāng)環(huán)境改變時(shí)修改軟件以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時(shí)及時(shí)改進(jìn)軟件以滿足用戶的新需要。 問題定義階段要回答的關(guān)鍵問題是“要解決的問題是什么?”通過對(duì)客戶的訪問調(diào)查,系統(tǒng)分析員扼要的寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報(bào)告,經(jīng)過討論和必要的修改之后,這份報(bào)告還應(yīng)該得到客戶的確認(rèn)。 可行性研究本階段的任務(wù)是根據(jù)用戶提出的工程項(xiàng)目的性質(zhì)、目標(biāo)和規(guī)模,進(jìn)一步了解用戶的要求及現(xiàn)有的環(huán)境及條件,從技術(shù)、經(jīng)濟(jì)和社會(huì)等多方面研究并論證該項(xiàng)目的可行性。即該項(xiàng)目是否值得去解決,是否存在可行的解決辦法。 此時(shí),系統(tǒng)分析人員應(yīng)在用戶的配合下對(duì)用戶的要求和現(xiàn)有的環(huán)境進(jìn)行深入調(diào)查并寫出調(diào)研報(bào)告。進(jìn)而進(jìn)行可行性論證??尚行哉撟C包括經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性、法律可行性等。在此基礎(chǔ)上還要制定初步的項(xiàng)目計(jì)劃,包括需要的軟硬件資源、定義任務(wù)、風(fēng)險(xiǎn)分析、成本/效益分析以及進(jìn)度安排等。 可行性研究的結(jié)果將是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行該項(xiàng)目決定的重要依據(jù) 需求分析的任務(wù)是確定待開發(fā)的軟件系統(tǒng)“做什么”。 軟件系統(tǒng)需求一般由用戶提出。系統(tǒng)分析員和開發(fā)人員在需求分析階段必須與用戶反復(fù)討論、協(xié)商,充分交流信息,并用某種方法和工具構(gòu)建軟件系統(tǒng)的邏輯模型。 總體設(shè)計(jì)階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?” 這一階段對(duì)需求規(guī)格說明中提供的軟件系統(tǒng)邏輯模型進(jìn)行進(jìn)一步的分解,從而建立軟件系統(tǒng)的總體結(jié)構(gòu)和各子系統(tǒng)之間、各模塊之間的關(guān)系,定義各子系統(tǒng)接口界面和各功能模塊的接口,設(shè)計(jì)全局?jǐn)?shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu),規(guī)定設(shè)計(jì)約束,制定組裝測(cè)試計(jì)劃,進(jìn)而給出每個(gè)功能模塊的功能描述、全局?jǐn)?shù)據(jù)定義和外部文件定義等。 總體設(shè)計(jì)階段的主要成果有概要設(shè)計(jì)說明書、 數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)說明書、組裝測(cè)試計(jì)劃等文檔 詳細(xì)設(shè)計(jì)是將概要設(shè)計(jì)產(chǎn)生的功能模塊進(jìn)一步細(xì)化,形成可編程的程序模塊,然后設(shè)計(jì)程序模塊的內(nèi)部細(xì)節(jié),包括算法、數(shù)據(jù)結(jié)構(gòu)以及各程序模塊間的接口信息,并設(shè)計(jì)模塊的單元測(cè)試計(jì)劃。 可以采用結(jié)構(gòu)化的設(shè)計(jì)方法,采用結(jié)構(gòu)化的程序流程圖、N-S圖、過程設(shè)計(jì)語言(PDL,Procedure Design Language)等工具進(jìn)行描述,也可以采用面向?qū)ο蟮脑O(shè)計(jì)方法等等。 詳細(xì)設(shè)計(jì)階段的主要成果是“詳細(xì)設(shè)計(jì)規(guī)格說明”(或稱“模塊開發(fā)卷宗”)和單元測(cè)試計(jì)劃等詳細(xì)設(shè)計(jì)文檔。 編碼和單元測(cè)試 編碼的主要任務(wù)是根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說明,用某種選定的程序設(shè)計(jì)語言把詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為機(jī)器可運(yùn)行的源程序模塊,這是一個(gè)編程和調(diào)試程序的過程。 編碼階段應(yīng)注意遵循編程標(biāo)準(zhǔn)、養(yǎng)成良好的編程風(fēng)格,以便編寫出正確的便于理解、調(diào)試和維護(hù)的程序模塊。 單元測(cè)試:每編寫出一個(gè)程序模塊的源程序,調(diào)試通過后,即對(duì)該模塊進(jìn)行測(cè)試,這稱為單元測(cè)試。 這一階段結(jié)束時(shí)應(yīng)提供按一定規(guī)則存在盤上的通過單元測(cè)試的各功能模塊的集合、詳細(xì)的單元測(cè)試報(bào)告等文檔。 綜合測(cè)試 這個(gè)階段的關(guān)鍵任務(wù)是通過各種類型的測(cè)試和調(diào)試使軟件達(dá)到預(yù)定的要求。 最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。 集成測(cè)試是根據(jù)概要設(shè)計(jì)提供的軟件結(jié)構(gòu)、各功能模塊的說明和集成測(cè)試計(jì)劃,把經(jīng)過單元測(cè)試檢驗(yàn)的模塊按照某種選定的策略逐步進(jìn)行裝配和測(cè)試。 驗(yàn)收測(cè)試是按照驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則對(duì)軟件系統(tǒng)進(jìn)行測(cè)試,看其是否達(dá)到了需求規(guī)格說明中定義的全部功能和性能等方面的需求。 這一階段應(yīng)將測(cè)試計(jì)劃、詳細(xì)測(cè)試方案和實(shí)際測(cè)試結(jié)果保存為相應(yīng)的文檔,作為軟件配置的一個(gè)組成部分。 軟件維護(hù) 軟件維護(hù)的任務(wù)是通過各種維護(hù)活動(dòng)使軟件系統(tǒng)持久地滿足用戶的需求。 每項(xiàng)維護(hù)活動(dòng)實(shí)質(zhì)上都是一次壓縮和簡化了的軟件定義和軟件開發(fā)過程。都要經(jīng)歷提出維護(hù)要求、分析維護(hù)要求、提出維護(hù)方案、審批維護(hù)方案、確定維護(hù)計(jì)劃、修改軟件設(shè)計(jì)、修改程序、測(cè)試程序、評(píng)審、驗(yàn)收等步驟。 通常有四類維護(hù)活動(dòng):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。 每一項(xiàng)維護(hù)活動(dòng)都應(yīng)該準(zhǔn)確記錄下來,作為正式的文檔資料加以保管。 4. 瀑布模型的優(yōu)缺點(diǎn): 瀑布模型的優(yōu)點(diǎn) 可以強(qiáng)迫開發(fā)人員采用規(guī)范的方法; 嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔; 要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。 瀑布模型的缺點(diǎn) 在軟件開發(fā)的初期階段就要求做出正確、全面、完整的需求分析對(duì)許多應(yīng)用軟件來說是極其困難的。 在需求分析階段,當(dāng)需求確定后,無法及時(shí)驗(yàn)證需求是否正確、完整。 作為整體開發(fā)的瀑布模型,由于不支持產(chǎn)品的演化,缺乏靈活性,對(duì)開發(fā)過程中很難發(fā)現(xiàn)的錯(cuò)誤,只有在最終產(chǎn)品運(yùn)行時(shí)才能暴露出來,從而使軟件產(chǎn)品難以維護(hù)。 瀑布模型適用的場(chǎng)合 瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應(yīng)用有一定的局限性。 8.快速原型模型適用的場(chǎng)合 原型模型比瀑布模型更符合人們認(rèn)識(shí)事物的過程和規(guī)律,是一種較實(shí)用的開發(fā)框架。 它適合于那些不能預(yù)先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項(xiàng)目組成員(包括分析員、設(shè)計(jì)員、程序員和用戶)不能很好交流或通信有困難的情況。 9.增量模型的優(yōu)點(diǎn) 能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。 逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。 增量模型的缺點(diǎn) 在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)的便于按照這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,這就意味著需要更精心的設(shè)計(jì)。 10.螺旋模型的優(yōu)點(diǎn) 對(duì)可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo)。 減少了過多測(cè)試或測(cè)試不足所帶來的風(fēng)險(xiǎn)。 在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別。 螺旋模型的缺點(diǎn) 如果每次迭代的效率不高,致使迭代次數(shù)過多,將會(huì)增加成本并推遲提交時(shí)間。 使用該模型需要有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí),要求開發(fā)隊(duì)伍水平較高。 螺旋模型適用的場(chǎng)合 支持需求不明確、特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法,是一種具有廣闊前景的模型。 11.1、噴泉模型的優(yōu)點(diǎn) 噴泉模型不像瀑布模型那樣,需要分析活動(dòng)結(jié)束后才開始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后才開始編碼活動(dòng)。該模型的各個(gè)階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點(diǎn)是可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。 2、噴泉模型的缺點(diǎn) 由于噴泉模型在各個(gè)開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對(duì)可能隨時(shí)加入各種信息、需求與資料的情況。 第二章 1. 可行性研究的任務(wù) 可行性研究的目的:用最小的代價(jià),在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。 可行性研究的實(shí)質(zhì):進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)的過程。 可行性研究,首先需要進(jìn)一步分析和澄清問題定義;在澄清了問題定義之后,系統(tǒng)分析員應(yīng)該導(dǎo)出系統(tǒng)的邏輯模型;然后從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實(shí)現(xiàn)方案);之后再對(duì)每種解法仔細(xì)研究它的可行性。 一般說來,需要著重從以下五方面研究每種解法的可行性: 技術(shù)可行性:使用現(xiàn)有的技術(shù)能否實(shí)現(xiàn)這個(gè)系統(tǒng)。 經(jīng)濟(jì)可行性:這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能否超過它的開發(fā)成本。 運(yùn)行可行性:為系統(tǒng)規(guī)定的運(yùn)行方式是否可行。 操作可行性:系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)是否行得通。 法律可行性:系統(tǒng)的開發(fā)是否會(huì)侵犯他人、集體或國家的利益,是否違反了國家的法律,并由此而承擔(dān)法律責(zé)任。 可行性研究最根本的任務(wù)是對(duì)以后的行動(dòng)方針提出建議。 如果問題沒有可行的解,系統(tǒng)分析員應(yīng)該建議停止這項(xiàng)開發(fā)工程,以避免時(shí)間、資源、人力和金錢的浪費(fèi)。 如果問題值得解,系統(tǒng)分析員應(yīng)該推薦一個(gè)較好的解決方案,并且為工程制定一個(gè)初步的計(jì)劃。 可行性研究需要的時(shí)間長短取決于工程的規(guī)模。一般說來,可行性研究的成本是預(yù)期的工程總成本的5%~10%。 第五章 1. 總體設(shè)計(jì)的任務(wù)是什么? 總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì),總體設(shè)計(jì)的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問題。 這個(gè)階段的兩個(gè)重要任務(wù): 劃分出組成系統(tǒng)的物理元素; 設(shè)計(jì)軟件的結(jié)構(gòu),也就是確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。 第七章 1. 測(cè)試步驟: 2.軟件可靠性:是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率。 軟件可用性: 是程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。 可靠性和可用性之間的主要差別是:可靠性意味著在0到t這段時(shí)間間隔內(nèi)系統(tǒng)沒有失效,而可用性只意味著在時(shí)刻t,系統(tǒng)是正常運(yùn)行的。 一般說來,對(duì)于任何其故障是可以修復(fù)的系統(tǒng),都應(yīng)該同時(shí)使用可靠性和可用性衡量它的優(yōu)劣程度。 第八章 軟件維護(hù):指在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程。 軟件維護(hù)通常包括4類活動(dòng):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)。 注意,4類維護(hù)活動(dòng)都必須應(yīng)用于整個(gè)軟件配置,維護(hù)軟件文檔和維護(hù)軟件的可執(zhí)行代碼同樣重要。 改正性維護(hù):為了糾正在使用過程中暴露出來的程序錯(cuò)誤而進(jìn)行的維護(hù)活動(dòng)。改正性維護(hù)的工作量大約占軟件維護(hù)總工作量的17%-21%。 適應(yīng)性維護(hù):為了適應(yīng)外部環(huán)境的變化而進(jìn)行的維護(hù)活動(dòng)。適應(yīng)性維護(hù)的工作量大約占軟件維護(hù)總工作量的18%-25%。 完善性維護(hù):為了根據(jù)用戶需要改進(jìn)原有軟件而進(jìn)行的維護(hù)活動(dòng)。完善性維護(hù)的工作量大約占軟件維護(hù)總工作量的50%-66%。 預(yù)防性維護(hù):為了改進(jìn)軟件將來的可維護(hù)性和可靠性而進(jìn)行的維護(hù)活動(dòng)。預(yù)防性維護(hù)的工作量大約占軟件維護(hù)總工作量的4%。- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 軟件工程 復(fù)習(xí)資料 武漢大學(xué)
鏈接地址:http://www.szxfmmzy.com/p-12759232.html