第一篇:軟件工程復習點總結
軟件工程
第一章
1.軟件過程模型有:線性順序模型(瀑布模型),原型實現模型,螺旋模型,快速應用開發模型RAD,并發模型,基于構件的開發模型,形式化方法模型,第四代技術。2.軟件危機變現:《1》軟件代價高
《2》開發進度難以控制
《3》工作量估計困難 《4》質量差
《5》修改、維護困難
3.維護類型:改正性維護,適應性維護,完善性維護,預防性維護。
4.軟件是計算機系統中與硬件相互依存的另一部分,它是包括程序在,數據及其相關文檔的集合。
5.軟件工程是一門旨在生產無故障的,及時交付的,在預算之內的和滿足用戶需求的軟件學科。
6.軟件生命周期包括了軟件定義,軟件開發和運行維護3個時期組成。
7.軟件生命周期模型有問題定義,可行性研究,需求分析,總體詳細設計,總體編碼和單元測試,綜合測試軟件維護組。
8.CMM是用于評價一個組織軟件過程成熟度和識別增加這些過程的成熟度所需要的關鍵實踐的一個模型,是建立軟件組織所使用的進程成熟度的模型以及定義和測量過程成熟度的有效方法,在實際中被軟件開發組織用于軟件過程改進和評估。9.軟件過程開發模型: 1)線性模型(瀑布模型):特點:自上而下,相互銜接如同瀑布流水,逐級下落,體現不可逆轉性。
優點:強調開發的階段性、強調早期計劃和需求調查以及強調產品測試。
(1)為項目提供了按階段劃分的檢查點
(2)當前一階段完成后,你自需要去關注后序階段。(3)開在迭代模型中應用瀑布模型。
缺點:(1)在項目各階段之間極少有反饋。
(2)只用在項目生命周期的后期才能看到結果。
(3)通過過多的強制完成時期和里程碑來跟蹤各個階段。
適用性:用戶的需求非常清楚全面。2)快速原型模型:(1)可以得到比較良好的需求定義,容易適應需求的變化。
(2)有利于開發與培訓的同步
(3)開發費用低,開發周期短且對用戶更友好
缺點:(1)客戶與開發者對原型模型理解不同
(2)準確的原型設計比較困難(3)不利于開發人員開發
3)增量型優點:(1)人員分配靈活
(2)如果核心產品很受歡迎,則可增加人力實現下一個增量(3)可先發布部分功能給客戶,對客戶起到鎮靜劑的作用
缺點:(1)并行開發構件有可能遇到不能集成的風險,軟件必須具備開放式的體系結構。
(2)容易退化為邊做邊改模型。從而使軟件過程的控制失去整體性。
4)螺旋模型:(1)設計上的靈活性,可以在項目的各個階段進行變更。
(2)以小的分段來構建大型系統,使成本計算變得簡單容易。
(3)隨著項目推進,客戶始終掌握項目的最新消息,從而他或她能夠和管理層有效交互。
缺點:(1)采用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發中,如果未能夠及時標識風險,勢必造成重大損失。
(3)過多的迭代次數會增加開發成本,延遲提交時間。
10.可行性分析法包括:(1)經濟可行性(2)技術可行性(3)運行可行性(4)法律可行性
(5)開發方案的選擇 11.需求工程分為:
(1)系統可行性研究:它指的現有的軟件、硬件技術能否實現用戶對新系統的需求。,從業務角度來決定系統開發是否劃算以及在預算范圍內能否開發出來。
(2)需求導出和分析:這是一個通過對現有系統分析與潛在用戶和購買者討論。進行任務分析等導出系統需求的過程,也可能需要一個或多個不同的系統模型和原型
(3)需求描述。需求描述就是把分析活動中收集信息以文檔的形式確定下來。(4)需求有效性驗證。這個活動檢查需求實現、一致和完備。
(5)需求管理。需求管理是一種系統化方法,可用于獲取、組織和記錄系統需求并使客戶和項目團隊在系統變更需求上達成并保持一致。12.軟件需求5個方面:(1)問題識別(2)評估與綜合(3)建模
(4)規約(5)評審 13.需求獲取方法:(1)建立聯合分析小組
(2)客戶訪談(3)問題分析與確認(4)快速原型法
14.需求分析原則:(1)必須能夠表達和理解問題的數據域和功能域
(2)按按自頂向下,逐層分解。
(3)要給出系統的邏輯視圖和物理視圖。15.軟件設計分為總體設計和詳細設計。16.總體設計任務:
(1)系統分析員審查軟件計劃、軟件需求分析、提供的文檔、提出最佳推薦方案,用系統流程圖,組成物理元素清單,成本效益分析,系統的進度計劃,供專家審定后進入設計。(2)去頂模塊結構,劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊之間的聯系,確定數據結構、文件結構、數據庫模式,確定測試方法與策略。(3)編寫概要設計說明書,用戶手冊、測試計劃、選用相關的軟件工具來描述軟件結構,結構圖是經常使用的軟件的軟件描述工具。選擇分解功能與劃分模塊的設計原則,例如模塊劃分獨立性原則,信息隱藏原則等。
17.信息隱蔽是指每個模塊內部信息對于其他不需要此信息的模塊來說是不可訪問的,即外部模塊對模塊內部的實現過程的不可見性。
18.模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,以滿足用戶的需求。
19.模塊獨立性概括了把軟件劃分為模塊時要遵守的準則,也是判斷模塊夠著是否合理的標準。
20.衡量模塊獨立的兩個標準是耦合性和內聚性。21.耦合性:也稱塊間聯系,指軟件系統結構中各模塊間相互聯系和緊密程度的一種度量。模塊之間聯系月緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性,調用的方式以及傳遞的信息。
22.內聚性:又稱為塊間聯系。指模塊的躬耕強度的度量即一個模塊內部各個元素,彼此結合的緊密程度的度量。若一個模塊內各個元素聯系的越緊密,則它的內聚性越高。23.模塊獨立原則也稱為模塊設計的原則:高內聚、低耦合。
24.耦合性包括:非直接耦合,數據耦合,標記耦合,控制耦合,外部耦合,公共耦合,內容耦合
25.內聚性包括:巧合內聚,邏輯內聚,時間性內聚,過程內聚,通信內聚,信息內聚,功能內聚。
26.數據流程圖的定義和作用:數據流程圖有兩個特征:抽象性和概括性。抽象性指的是數據流程圖把具體的組織機構、工作場所、物質流都去掉,只剩下信息和數據存儲,流動,使用以及加工情況。
概括性則是指數據流圖把系統對各種業務的處理過程聯系起來考慮,形成一個總體。27.數據流程圖的組成:外部實體、數據流、處理、數據存儲。
28.面向對象的基本概念:對象是由描述該對象屬性的數據以及可以對這些數據施加的所有操作封裝在一起構成的統一體。
29.對象:它是分裝了數據結構及可以施加在這些數據結構上的操作的封裝體。30.類:用于表示某些對象的共同特征(屬性和操作),對象是類的實例。31.實例:就是由某個特定類所描述的一個具體對象。32.消息:消息傳遞時對象與外界相互關系的唯一途徑。
33.方法:方法就是對象所能執行的操作,也就是類中所定義的服務。
34.屬性:屬性就是類中定義的數據,它是對客觀世界實體所具有的性質的抽象。35.封裝:封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實現細節。36.繼承:是現實世界中遺傳關系的直接模擬。
37.多態性:指允許不同類的對象對同一信息做出響應
38.重載:函數重載是指在同一個作用域內的若干個參數特征不同的函數可以使用相同的函數名字
運算重載是指同一個運算符可以施加不同類型的操作數上面 39.UML是面向對象的方法
40.靜態結構圖包括類圖和對象圖 41.UML由九種圖構成:
用例圖
類圖
對象圖
活動圖
狀態圖
序列圖(順序圖)
協作圖
構件圖(組件圖)
部署圖(配置圖)
42.UML視圖大體分為三大類:
結構分類
動態行為
模型管理
43.類圖有3種屬性
“+”public(公共)
“#”protected(保護)
“-”private(私有)
操作一樣
44.類之間的關系有用關聯:泛化
聚合依賴
組合
45.用例圖有3種關系:communicates(通信)
extends(延伸)
uses(使用)46.程序設計語言3種結構:順序
判斷
循環
47.良好的編碼風格:
縮進良好,沒有過多嵌套
變量名,空間名,類名都取直接有意義的字眼
有一些必要注釋
符合思維習慣使用運算符
模塊化 48.軟件測試定義:為了發現程序中的錯誤而執行程序的過程 49.測試方法
黑盒測試(功能測試)
白盒測試(結構測試)
50.黑盒測試如果已經知道了產品應該具有的功能,可以通過測試來檢驗是否每個功能都正常使用 白盒測試:如果知道產品內部工作過程,可以通過測試來檢驗產品內部動作是否按照規格說明的規定正常進行
51.軟件測試:
單元測試
集成測試
確認測試
系統測試
52.單元測試也稱為模塊測試或結構測試,通常可放在編程序段,主要采用邏輯覆蓋技術,目的是檢查模塊是否能實現了詳細設計說明書種規定的功能和算法 53.單元測試主要發現編程和詳細設計中產生的錯誤 54.測試一個模塊是需要為該模塊編寫一個驅動模塊和若干樁模塊。頂層測試無需驅動模塊,底層測試無需樁模塊
55.集成測試也稱為組裝測試,在單元測試的基礎上把所有模塊組裝成一個系統進行測試。主要測試設計階段產生的錯誤
56.非漸增式集成測試(先測試后組裝)和漸增式集成測試(測試一個組裝一個)57.確認測試目標是檢驗軟件的有效性,在需求分析階段制定
58.白盒測試技術:語句覆蓋
判定覆蓋
條件覆蓋
判定條件覆蓋
條件組合覆蓋
路徑覆蓋
59.黑盒測試技術:等價類劃分,邊值分析,錯誤推測和因果圖等 60.按照測試過程是否在實際應用過程中來分,有靜態分析與動態測試
測試方法有分析法(靜態分析和白盒測試)與非分析法(黑盒法)
61.軟件維護分為以下4類:改正性維護;適應性維護;完善性維護;預防性維護
62.決定軟件可維護性的因素: 可理解性
可測試性
可修改性
可移植性
可重用性 63.基本路徑測試:環路復雜性的3種計算方法: <1>將環路復雜度定義為流圖種區域的數量
<2>設E為流圖的邊數,N為圖中的節點數,則定義環路復雜度
V(G)=E-N+2 <3>設p為流圖G中的制定節點數,則有V(G)=p+1 64.關鍵路徑測試
第二篇:軟件工程復習總結
第1章
1什么是軟件危機,產生軟件危機的原因,消除軟件危機的途徑。
落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發與維護過程中出現一系列嚴重問題的現象。
軟件維護費用的急劇上升,直接威脅計算機應用的擴大;軟件生產技術進步緩慢,是加劇軟件危機的重要原因。
既要有技術措施,又要有必要的組織管理措施。2什么是軟件,軟件的精確定義。
軟件是程序以及開發、使用和維護程序所需的所有文檔.。3軟件工程的精確定義,軟件工程的7個特征,7基本原理。
軟件工程是指導計算機軟件開發和維護的一門工程學科。1,軟件工程關注于大型程序的構造; 2,軟件工程的中心課題是控制復雜性; 3,軟件經常化;
4,開發軟件的效率非常重要; 5,和諧地合作是開發軟件的關鍵; 6,軟件必須有效地支持它的用戶;
7,在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創造產品。基本原理:
1,用分階段的生命周期計劃嚴格管理; 2,堅持進行階段評審; 3,實行嚴格的產品控制; 4,采用現代程序設計的技術; 5,結果應能清楚地審查;
6,開發小組的人員應該少而精;
7,承認不斷改進軟件工程實踐的必要性。
4軟件工程方法學的精確定義,它的三要素。二種方法學,面向結構,面向對象
3個要素:方法 工具和過程 兩種方法學:1傳統方法學2面向對象方法學 5什么是軟件生命周期,它有哪幾個階段(8個階段),各個階段分別做什么,這些階段的重要性。
一個軟件從定義到開發、使用和維護,直到最終被棄用,要經歷一個漫長的時期,通常把軟件經歷的這個漫長的時期稱為生存周期。階段:1問題定義2可行性研究3需求分析4總體設計5詳細設計6編碼和單元測試7綜合測試8軟件維護
6軟件過程的精確定義,它與軟件工程的關系,它的各種模型,各種模型的優缺點,適用范 圍。
軟件過程為一個為建造高質量軟件所需完成的任務的框架,它規定了完成各項任務的工作步驟。瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型 第2章
1什么是可行性研究,它的目的,它的任務,可行性研究是在項目建議書被批準后,對項目在技術上和經濟上是否可行所進行的科學分析和論證。目的:用最小的代價在盡可能短的時間內確定問題是否能夠解決。任務:對以后的行動方針提出建議。
2從哪幾個方面進行可行性研究,每個方面研究什么,它的目的,它的任務。
1技術可行性2經濟可行性3操作可行性 3可行性研究的過程,8個階段。
1.復查系統規模和目標2.研究目前正在使用的系統3.導出新系統的高層邏輯模型4.進一步定義模型5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發計劃8.書寫文檔提交審查 4系統流程圖,表達什么,它的符號,符號含義 概括地描繪物理系統的傳統工具。
5數據流程圖,描繪什么,它的符號,符號含義,畫法,數據流程圖的用途(重點)描繪信息流和數據從輸入移動到輸出的過程中所經受的變換。
6數據字典的精確定義,作用,內容(4類定義組成)定義數據的方法,用途,實現。
數據字典是關于數據的信息的集合。對數據流圖中包含的所有元素的定義的集合。
內容1.數據流2數據流分量3數據存儲4處理 7成本效益分析,使用的方法 第3章
1需求分析,它的任務,它的重要性,它的結果,要遵守的4條準則。
開發人員準確地理解用戶的要求,進行細致的調查分析,將用戶非形式的需求陳述轉化為完整的需求定義,再由需求定義轉換到相應的需求規格說明的過程。
基本任務: ⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環境需求,用戶界面需求。
重要性:需求分析可以使得開發和測試更能夠了解客戶的需求,把一些技術難點和可能遇到的難點問題提出來,盡早解決,并且達到一致,便于以后的開發和測試
需求分析結果是產生:需求規格說明書
⑵分析與綜合,導出軟件的邏輯模型
⑶編寫文檔:包括編寫“需求規格說明書”,“初步用戶使用手冊”,“確認測試計劃”,“修改完善軟件開發計劃” 任務的7項要求,與用戶溝通的方法
獲取需求的方法,用到的圖形工具:E_R圖,圖描述什么,使用符號 狀態轉換圖,其他圖形,IPO圖等 驗證需求,4個方面 第5章
1總體設計的目的,任務
總體設計的基本目的就是回答“概括地說,系統應該如何實現?”這個問題。任務是設計軟件的結構,也就是明確系統中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。必要性:可以站在全局的高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統實現方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發出較高質量的軟件系統。2設計過程,二個階段9個步驟
兩個階段:1系統設計階段,確定系統的具體實現方案2結構設計階段,確定軟件結構。設計過程的9個步驟:1設想供選擇的方案2選取合理的方案3推薦最佳方案4功能分解5設計軟件結構6設計數據庫7制定測試計劃8書寫文檔9審查和復審。3設計原理,模塊化,與模塊化有關的獨立,度量標準:耦合,內驟
設計原理:1模塊化2抽象3逐步求精。模塊獨立程度的兩個定性標準度量:1內聚2耦合。
4啟發式7條規則,啟發規則:1改進軟件結構提高模塊獨立性2模塊規模應該適中3深度、寬度、扇出、扇入都應適中4模塊的作用域應該在控制域之內5力爭降低模塊接口的復雜程度6設計單入口單出口的模塊7模塊功能應該可以預測。5各種圖形工具,HIPO,結構圖,數據流圖
描繪軟件結構的圖形工具:1層次圖2 HIPO圖3結構圖;面向數據流的設計方法把信息流映射程軟件結構,信息流的類型決定了映射的方法信息流有下述兩種類型:1變換流2事務流。第6章
1詳細設計的目的,任務
詳細設計的根本目標 :是確定應該怎樣具體地實現所要求的系統,經過這個階段的設計工作,應該得出對目標系統的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言寫的程序。
任務:是要設計出程序的“藍圖”,以后程序員將根據這個藍圖寫出實際的程序代碼。必要性:衡量程序的質量不僅看它的邏輯是否正確,性能是否滿足要求,更重要的是要看它能夠簡單易懂,詳細設計的目的不僅僅是邏輯上正確地實現每個模塊的功能,更重要的是設計出的處理過程應該盡可能簡明易懂。
2結構化:定義,指導思想,哪幾種結構,使用的工具,建立什么模型使用什么工具
結構化的定義:結構化程序設計是盡可能少用GOTO語句的程序設計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應該總是使用前向goto語句。結構有三種:順序,選擇,和循環。
指導思想:采用自頂向下,逐步求精的程序設計方法,使用三種基本控制結構構造程序,任何程序都可由順序,選擇,重復三種基本控制結構構造。結構:順序結構,選擇結構,循環結構 工具:圖形,表格,和語言
3人機界面設計,要解決的問題,設計過程,設計指南
人機界面設計是接口設計的一個重要組成部分,遇到的四個問題:系統響應時間,用戶幫助設施,出錯信息處理和命令交互。
設計過程,用戶界面設計是一個迭代的過程,通常先創建設計模型,再用原型實現這個設計模型,并由用戶試用和評價,然后根據用戶意見進行修改。設計指南:一般交互指南,信息顯示指南和數據輸入指南
4過程設計的各種工具,程序流程圖,盒圖,PAD圖,判定表,判定樹,過程設計語言
過程設計的工具有三類:圖形,表格,語言。具體有如下幾種
程序流程圖,盒圖,pad圖,判定表,判定樹,過程設計語言(PDL)
5面向數據結構的設計方法,jackson方法,使用的圖形工具
設計方法:根據數據結構設計程序處理過程的方法。
數據的3種使用方法:順序,選擇,重復。Jackson方法
Jackson結構程序設計方法基本上由下述5個步驟組成,(1)分析并確定輸入數據和輸出數據的邏輯結構,并用jackson圖描述這些數據結構(2)找出輸入數據結構和輸出數據結構中有對應關系的數據單元。
(3)用下述3條規則從描繪數據結構的jackson圖導出描繪程序結構的jackson圖。
1、為每對有對應關系的數據單元,按照它們在數據結構圖中的層次在程序結構圖的相應層次畫一個處理框。
2根據輸入數據結構中剩余的每個數據單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框。總之,描繪程序結構的jackson圖應該綜合輸入數據結構和輸出數據結構的層次關系而導出來。在導出程序結構圖的過程中,由于改進的jackson圖規定在構成順序結構的元素中不能有重復出現或選擇出現的元素,因此可能需要增加中間層次的處理框圖。(4)、列出所有操作和條件,并且把它們分配到程序結構圖的適當位置。(5)用偽碼表示程序。使用的圖形工具:jackson圖
6復雜度的度量,McCabe方法,流圖,(2014年重點)
復雜度度量:把程序的復雜程度乘以適當的常數即可估算出軟件中的錯誤的數量以及軟件開發需要的工作量
Mccabe方法:根據程序控制流的復雜程度定量度量程序的復雜程度 第7章
1實現的重點是測試
2軟件測試的基礎:目標,準則,方法,測試5步驟
軟件測試的基礎:在測試階段測試的人員努力設計出一系列的方案,目的卻是為了“破壞”已經建造好的軟件系統—竭力證明程序中有錯誤,不能按照預定要求正確工作。發現問題是為了解決問題,測試階段的根本目標是盡可能多地發現并排除軟件中潛在的錯誤,最終把一個高質量的軟件系統交給用戶使用。軟測的目標:①測試是為了發現程序中的錯誤而執行程序的過程。②好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案。③成功的測試是發現至今為止尚未發現的錯誤的測試。
軟測的準則:①所有的測試都應該能追溯到用戶的需求。②應該遠在測試開始之前就制定出測試計劃。③把Pareto原理應用到軟測中。④應該從“小規模”測試開始,并逐步進行“大規模”測試。⑤窮舉測試是不可能的。⑥為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。
測試方法:白盒測試(結構測試)、黑盒測試(功能測試)。
測試步驟:①模塊測試②子系統測試③系統測試④驗收測試⑤平行測試。3單元測試,測試的重點,測試方案
單元測試:在軟件開發過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試;集中檢測軟件設計的最小單元---模塊。
單元測試方法有:人工測試和計算機測試;單元測試主要使用白盒測試技術,而且對多個模塊的測試可以并行的進行。
單元測試的重點:①模塊接口②局部數據結構③重要的執行通路④出錯處理通路⑤邊界條件
4集成測試:集成的策略,自頂向下,自底向上
集成測試:測試和組裝軟件的系統化技術。
集成測試的策略:自頂向下和自底向上。
自頂向下集成方法是一個日益為人們廣泛采用的測試和組成軟件的途徑。從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結合起來。自底向上集成:從“原子”模塊開始組成和測試。
5確認測試,范圍,Alpha測試Beta測試
確認測試:又稱驗收測試,它目標是驗證軟件的有效性。
Alpha測試由用戶在開發者的場所進行,并且在開發者對用戶的“指導”下進行測試,其是在受控的環境中進行的。
Beta測試由軟件的最終用戶們在一個或多個客戶場所進行。與Alpha測試不同,開發者通常不在Beta測試的現場,因此Beta測試是軟件開發者不能控制的環境中的“真實”應用。6白盒測試,黑盒測試(重點)
白盒測試:通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行。黑盒測試:通過測試來檢測每個功能是否都能正常使用。
7軟件的可靠性,計算公式
軟件的可靠性:程序在給定的時間間隔內,按照規格說明書的規定成功的運行的概率。設計白盒測試方案的技術主要有邏輯技術和控制結構測試;設計黑盒測試方案的技術主要有等價劃分、分界值分析和錯誤推測。
第8章
1軟件維護的定義,4項活動,4類維護
軟件維護的定義:在軟件已經交付使用后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四項維護:第一項維護活動:在任何大型程序的使用期間,用戶必然會發現程序錯誤,并且把他們遇到的問題報告給維護人員,讓維護人員診斷和改正的過程。第二項維護活動:為了和變化了的環境適當地配合而進行的修改軟件的活動,是既必要又經常的維護活動。第三項維護活動:在使用軟件的過程中用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進意見。第四項維護活動:為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎而修改軟件。
四類維護:改正性維護、適應性維護、完善性維護、預防性維護 2軟件維護的特點,問題,軟件維護的特點:結構化維護與非結構化維護差別巨大、維護的代價高昂、維護的問題很多
軟件維護的問題:
1)理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。2)需要維護的軟件往往沒有合格的文檔,或者文檔資料顯著不足。
3)當要求對軟件進行維護時,不能指望有開發人員給人們仔細說明軟件。由于維護階段持續的時間很長,因此,當需要解釋軟件時,往往原來寫程序的人已經不在附近了。4)絕大多數軟件在設計時沒有考慮將來的修改。5)軟件維護不是吸引人的工作。3軟件維護的過程
軟件維護的過程:維護組織、維護報告、維護的事件流、保存維護記錄、評價維護活動 4軟件的可維護性
軟件可維護性定義:維護人員理解、改正、改動或改進這個軟件的難易程度。決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性 5預防性維護與軟件再工程。
預防性維護由Miller提出來把今天的方法學應用到昨天的系統上以支持明天的明天的需求
6軟件再工程
6類活動:1.庫存目錄分析2.文檔重構3.逆向工程4.代碼重構5.數據重構6.正向工程 第9章
1面向對象方法學的定義,要點,優點
定義:面向對象方法是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法,簡稱OO(Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。
要點:1認為客觀世界是由各種對象構成的,任何事物都是對象,復雜的對象可以由簡單的對象以某種方式組合而成。2,把所有的對象都劃分成各種對象類,每個對象類都定義了一組數據和一組方法。3,按照子類與父類的關系,把若干個對象組成一個層次結構的的系統。4,對象之間僅能通過傳遞消息互相聯系。
優點:1.與人類習慣的思維方法一致2.穩定性好3.可重用性好4.較易開發大型軟件產品5.可維護性好
2對象的定義,要點,優點
定義:1.對象是具有相同狀態的一組操作的集合2.對象是對屬性值和操作的封裝。3.對象::=
3面向對象的概念,定義,特點
面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術[1]發展到一定階段后的產物。
特點:1對象唯一性2分類性3繼承性4多態性 優點:1易維護2質量高3效率高4易擴展 4類的定義,實例、消息、方法、屬性,繼承等概念
類的定義:類就是具有相同數據和相同操作的一組相似對象的定義。實例:實例就是由某個特定類所描述的一個具體的對象。
消息:小時就是要求某個對象執行在定義它的那個類中所定義的某個操作的規格說明。方法:方法就是對象所能執行的操作,也就是類中所定義的服務。
屬性:屬性就是類中所定義的數據,它是對客觀世界實體說具有的性質的抽象。封裝:在面向對象的程序中,把數據和實現操作的代碼集中放在對象內部。
繼承:在面向對象的軟件技術中,繼承是子類自動地共享基類中的數據和方法的機制。多態:多態性是指子類對象可以像父類對象那樣使用,同樣地消息既可以發給父類對象也可以發給子類對象。重載:函數重載是指在同一作用域類的若干個參數特征不同的函數可以使用相同的函數名字,運送符號重載是指同一個運算符可以施加在不同類型操作數上面。5面向對象建模,對象模型(重點),功能模型(重點)動態模型,模型怎么畫,各種符號 6面向對象方法學使用的語言
面向對象語言是一類以對象作為基本程序結構單位的程序設計語言,指用于描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。第10章
3個子模型和5個層次 怎樣確定類與對象
類是對象的抽象,對象是類的具體實例。確定關聯,各種關聯怎樣確定
建立動態模型,編寫腳本,畫事件跟蹤圖
第三篇:軟件工程期末復習總結
軟件工程期末復習總結
第一章 軟件工程學概述
1.軟件危機:是指在計算機軟件開發、使用與維護過程中遇到的一系列嚴重問題和難題。包括如何開發軟件,如何維護數量不斷膨脹的已有軟件。
2.軟件生命周期的定義及劃分
3.軟件從定義、開發、使用和維護,直到最終廢棄的過程稱為生命周期
4.按照軟件生命周期全過程應完成的任務性質,在概念上可以把軟件生命周期劃分成問題定義、可行性研究、需求分析(定義時期)、總體設計、詳細設計(系統設計)、編碼和單元測試、綜合測試以及運行維護(系統實現)共8個階段
5.最基本的測試是集成測試和驗收測試
6.軟件配置主要包括:程序+數據+文檔
7.軟件工程的定義軟件工程是把系統的、規范的、可度量的途徑應用于軟件開發、運行和維護過程,也就是把工程應用于軟件;并研究其中提到的途徑。
8.軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理
2.堅持進行階段評審
3.實行嚴格的產品控制
4.采用現代程序設計技術
5.結果應能清楚地審查
6.開發小組的人員應該小而精
7.承認不斷改進軟件工程實踐的必要性
9.軟件工程方法學包含3要素:方法、工具和過程。
分成傳統方法學和面向對象方法學,其中傳統方法學采用結構化技術(結構化分析、結構化設計和結構化實現)來完成軟件開發的各項任務。
10.軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定各項任務的工作步驟(who,when,what,how)
11.軟件過程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型
12.瀑布模型優點
1.階段間具有順序性和依賴性
2.推遲實現的觀點
3.質量保證的觀點
13.軟件工程由方法、(工具)和過程三部分組成,稱軟件工程的三要素。
14.從工程管理的角度軟件設計可分為概要設計和(詳細)設計兩大步驟。
15.基于計算機系統的軟件要素中的軟件由程序、數據和(文檔)組成。
16.軟件設計也可看作將需求規格說明逐步轉換為軟件源代碼的過程。()
17.軟件生存周期(名詞解釋)軟件從定義、開發、使用和維護,直到最終廢棄的過程稱為生命周期
18.軟件危機(名詞解釋)是指在計算機軟件開發、使用與維護過程中遇到的一系列嚴重問題和難題 原型法模型一般適應哪些場合?
它適合于那些不能預先確切定義需求的軟件系統的開發,更適合于那些項目組成員(包括分析員、設計員、程序員和用戶)不能很好交流或通信有困難的情況。
瀑布模型一般適應哪些場合?
瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統的開發。例如操作系統、編譯系統、數據庫管理系統等系統軟件的開發。應用有一定的局限性。
第二章 可行性研究
1.可行性研究的目的,就是用最小的代價盡可能短的時間內確定問題是否能夠解決
2.至少包含下述3個方面:
1.技術可行性
2.經濟可行性
3.操作可行性
3.數據流圖的用途
1.交流信息的工具
2.作為分析與設計的工具
4.數據字典的內容由4類元素組成1.數據流
2.數據流分量(即數據元素)
3.數據存儲
4.處理
5..系統流程圖是物理系統模型
數據流圖和數據字典是系統邏輯模型
5.成本/效益分析的方法:1.貨幣的時間價值,2投資回收期3純收入4投資回收率
6.數據字典:是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合.第三章 需求分析
1.需求分析是軟件定義時期的最后一個階段,它的基本任務是準備地回答“系統必須做什么”這個問題
2.需求分析的任務
1.確定對系統的綜合要求
2.分析系統的數據要求
3.導出系統的邏輯模型
4.修正系統開發計劃
3.需求分析的結果是軟件需求規格說明書
4.需求分析的方法
1.訪談
2.面向數據流自頂向下求精
3.簡易的應用規格說明技術
4.快速建立軟件原型,5…實踐表明,快速建立軟件原型是最準確、最有效和最強大的需求分析技術
6需求分析建模的工具
1.E-R圖
2.層次方框圖,描繪數據的層次結構
3.Warnier圖
4.IPO圖
7.驗證軟件需求應該從下面4個方面驗證
1.一致性
2.完整性
3.現實性
4.有效性
第五章 總體設計
1.總體設計的基本目的就是回答“概括地說,系統該如何實現?”
2.總體設計也稱概要設計或初步設計
3.總體設計的重要任務
1.劃分系統元素和邊界
2.設計軟件的結構,即系統的模塊組成和模塊間的關系。
4.總體設計通常由兩個階段組成:
系統設計階段,確定系統的具體實現方案
結構設計階段,確定軟件結構
5.模塊是構成程序的基本構件。
6.模塊化就是把程序分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶需求
7.模塊化的根據就是分解復雜的問題容易解決
8.軟件設計原理
1.模塊化
2.抽象
3.逐步求精
4.信息隱藏和局部化
5.模塊獨立
9.模塊設計的原則是高內聚,低耦合耦合是衡量不同模塊彼此間互相依賴的緊密程度
內聚是衡量一個模塊內部各個元素彼此結合的緊密程度
10.耦合的類型及設計原則:盡量使用數據耦合,少用控制耦合和特征耦合,限制公共環境耦合的范圍,完全不用內容耦合內聚:使用功能內聚和順序內聚
11.設計的啟發式規則
1.提高獨立性
2.模塊適中
3.深度、寬度、扇入和扇出適當
4.模塊作用域應該在控制域之內
5.降低模塊接口的復雜度
6.設計單入口單出口的模塊
7.模塊功能可以預測
12.據流的設計方法的兩種不同類型的設計:變換分析和事務分析
優化方法的格言:先使它能工作,然后再使它快起來
第六章 詳細設計
設計階段的根本目錄是確定應該怎樣具體地實質所要求的系統。
詳細設計不是編碼,而是設計出程序的“藍圖”
結構程序設計最早由Dijkstra提出
只要3種基本的控制結構就能實現任何單入口單出口的程序,這3種基本的控制結構是“順序”、“選擇”和“循環”
1.程序設計的經典定義:如果一個程序的代碼塊僅僅透過順序、選擇和循環這3中基本控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的結構程序設計是盡可能少用GOTO語句的程序設計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應該總是使用前向GOTO語句
人機界面的設計質量,直接影響用戶對軟件產品的評價
設計人機界面總會遇到下述四個問題:
1.系統響應時間
2.用戶幫助設備
3.出錯信息處理
4.命令交互
人機界面設計指南:
1.置用戶于控制之下
2.減少用戶的記憶負擔
3.保持界面一致
判定表可用作軟件測試
Jackson圖包含3類邏輯數據結構,順序結構,選擇結構,重復結構
第七章 實現
通常把編碼和測試統稱為實現
編碼就是把軟件設計結構翻譯成某種程序設計語言書寫的程序
測試的目的就是在軟件投入生產性運行之前,盡可能多地發現軟件中的錯誤
軟件測試的工作量往往占軟件開發總工作量的40%以上
調試是測試階段最困難的工作
G.Myers測試的目標或定義:
1.測試是為了發現程序中的錯誤而執行程序的過程
2.好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案
3.成功的測試是發現了至今為止尚未發現的錯誤的測試
軟件測試準則
1.所有測試都應該能追溯到用戶需求
2.應該遠在測試開始之前就制定出測試計劃
3.把Pareto原理應用到軟件測試中
4.應該從“小規模”測試開始,并逐步進行“大規模”測試【(8020)測試發現的錯誤80%很可能是由程序中20%的模塊造成的】
5.窮舉測試是不可能的6.第三方測試(A編寫,B測試)
V字型模型
測試分為白盒測試(結構測試)和黑盒測試(功能測試)
具體的測試方法{【(測試用例)()】【(覆蓋條件)()】}
測試步驟:1.模塊測試.2子系統測試 3.系統測試 4.驗收測試 5.平行運行
軟件可靠性:是程序在給定的時間間隔內,按照規格說明書的規定成功地運行的概率
軟件可用性:是程序在給定的時間點,按照規格說明書的規定,成功地運行的概率
第八章 維護
軟件工程的主要目的是提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統的總成本
所謂維護就是在軟件已經交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四類維護
1.改正性維護糾正使用過程中暴露出來的錯誤
2.適應性維護適應外部環境變化
3.完善性維護改進原有軟件
4.預防性維護改進將來的可維護性和可靠性
軟件維護的特點
1.結構化維護與非結構化維護差別巨大
2.維護的代價高昂
3.維護的問題很多
決定軟件可維護性的因素
1.可理解性
2.可測試性
3.可修改性
4.可移植性
5.可重用性
文檔是影響軟件可維護性的決定因素
軟件系統的文檔可以分為用戶文檔和系統文檔兩類
1.用戶文檔主要描述系統功能和使用方法
2.系統文檔指從問題定義,需求說明驗收測試計劃這樣一系列實現有關的文檔
Miller:“把今天的方法學應用到昨天的系統上,以支持明天的需求。”
第四篇:軟件工程復習總結
第一章 軟件工程概述
1.軟件危機是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題.2.軟件危機的典型表現:
①對軟件開發成本和進度的估計常常很不準確.②用戶對“已完成的”軟件系統不滿意的現象經常發生.③軟件產品的質量往往靠不住.④軟件常常是不可維護的.⑤軟件通常沒有適當的文檔資料.⑥軟件成本在計算機系統總成本中占得比例逐年上升.⑦軟件開發生產率提高的速度遠跟不上計算機應用迅速普及深入的趨勢.3.產生軟件危機的原因:
①與軟件本身的特點有關,軟件缺乏“可見性”.②與軟件開發維護的方法不正確有關.4.消除軟件危機的途徑:
①首先應該對計算機軟件有一個正確的認識.②必須充分認識到軟件開發不是某種個體勞動的神秘技巧,而是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程項目.③應該推廣使用在實踐中總結出來的開發軟件的成功的技術和方法,并且研究探索更好更有效的技術和方法.④應該開發和使用更好的軟件工具.5.軟件工程的基本原理:
①用分階段的生命周期計劃嚴格管理.②堅持進行階段評審.③實行嚴格的產品控制.④采用現代化程序設計技術.⑤結果應能清楚的審查.⑥開發小組的人員應該少而精.⑦承認不斷改進軟件工程實踐的必要性.6.軟件生命周期:
①問題定義 → ②可行性研究 → ③需求分析 → ④總體設計 → ⑤詳細設計 → ⑥編碼和單元測試 → ⑦綜合測試 → ⑧軟件維護
7.瀑布模型: ?特點:①階段間具有順序性和依賴性.②推遲實現的觀點③質量保證的觀點
?優點:可強迫開發人員采用規范的方法;嚴格地規定了每個階段必須提交的文檔;要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證.?缺點:由文檔驅動.產品交付給用戶之前,用戶只能通過文檔來了解產品.8.快速原型模型: 是快速建立起來的可以在計算機上運行的程序,它能完成的功能往往是最終產品的一個子集.優點: 軟件產品的開發基本上是線性順序進行的.9.增量模型: 把軟件產品作為一系列的增量構件來設計、編碼、集成和測試.優點: 能在較短時間內向用戶提交可完成部分工作的產品;逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊.第二章 可行性研究
1.可行性研究的目的:用最小的代價在盡可能短的時間內確定問題是否能夠解決.2.從以下幾方面研究每種解法的可行性:
①技術可行性②經濟可行性③操作可行性④社會可行性
3.可行性研究的過程:
①復查系統規模和目標.②研究目前正在使用的系統.③導出新系統的高層邏輯模型.④進一步定義問題.⑤導出和評價供選擇的解法.⑥推薦行動方針.⑦草擬開發計劃.⑧書寫文檔提交審查.4.系統流程圖是概括地描繪物理系統的傳統工具.數據流圖是一種圖形化技術,它描繪信息流和數據從輸入移動到輸出的過程中所經受的變換.5.數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義集合.數據字典的內容由4類元素的定義組成:數據流、數據元素、數據存儲、處理.6.成本估計:
①代碼行技術:每行代碼平均成本×行數=軟件的成本
②任務分解技術:把軟件開發工程分解為若干個相對獨立的任務,再分別估計每個任務的成本,最后累加起來.③自動估計成本技術:用自動估計成本的軟件工具.7.系統的經濟效益=因使用新系統而增加的收入+使用新系統可以節省的運行費用
系統是否值得投資贏考慮:①貨幣的時間價值 ②投資回收期 ③純收入 ④投資回收率
第三章 需求分析
1.需求分析的任務:
?確定對系統的綜合要求:①功能需求②性能需求③可靠性和可用性需求④出錯處理需求⑤接口需求⑥約束⑦逆向需求⑧將來可能提出的要求
?分析系統的數據要求
?導出系統的邏輯模型
?修正系統開發計劃
2.實體聯系圖(ER圖)實體用方框□,關系用菱形◇,屬性用橢圓○
狀態轉換圖
層次方框圖
Warnier圖
IPO圖(輸入-處理-輸出)
第五章 總體設計
1.總體設計過程:
①設想提供選擇的方案②選取合理的方案③推薦最佳方案④功能分解⑤設計軟件結構⑥設計數據庫⑦制定測試計劃⑧書寫文檔⑨審查和復審
2.模塊獨立: 重要性:①有效的模塊化軟件比較容易開發出來 ②便于測試和維護 模塊的獨立程度由兩個標準度量: 內聚、耦合耦合:是對一個軟件結構內不同模塊之間互連程度的度量,耦合強弱取決于模塊間接口的復雜程度.耦合度由低到高:數據耦合<控制耦合<特征耦合<公共環境耦合<內容耦合內聚:標志著一個模塊內各個元素彼此結合的緊密程度.高內聚往往意味著低耦合.內聚度由低到高:偶然內聚<邏輯內聚<時間內聚<過程內聚<通信內聚<順序內聚<功能內聚
3.啟發式規則:
①改進軟件結構提高模塊獨立性.②模塊規模應該適中.③深度、寬度、扇出和扇入都應適當.④模塊的作用域應該在控制域之內.⑤力爭降低模塊接口的復雜程度.⑥設計單入口單出口的模塊.⑦模塊功能應該可以預測.4.面向數據流的設計方法:變換分析,事務分析
第六章 詳細設計
1.人機界面設計問題: 系統響應時間、用戶幫助設施、出錯信息處理、命令交互
2.人機界面設計指南:
?一般交互指南:
①保持一致性.②提供有意義的反饋.③在執行有較大破壞性的動作之前要求用戶確認.④允許取消絕大多數操作.⑤減少在兩次操作之間必須記憶的信息量.⑥提高對話、移動和思考的效率.⑦允許犯錯誤.⑧按功能對動作分類,并據此設計屏幕布局.⑨提供對用戶工作內容敏感的幫助設施.⑩用簡單動詞或動詞短語作為命令名.?信息顯示指南:
①只顯示與當前工作內容有關的信息.②不要用數據淹沒用戶,應該用便于用戶迅速吸取信息的方式來表示數據.③使用一致的標記、標準的縮寫和可預知的顏色.④允許用戶保持可視化的語境.⑤產生有意義的出錯信息.⑥使用大小寫、縮進和文本分組以幫助理解.⑦使用窗口分隔不同類型的信息.⑧使用“模擬”顯示方式表示信息,以使信息更容易被用戶提取.⑨高效率的使用顯示屏.?數據輸入指南:
①盡量減少用戶的輸入動作.②保持信息顯示和數據輸入之間的一致性.③允許用戶自定義輸入.④交互應該是靈活的,并且可調整成用戶最喜歡的輸入方式.⑤使在當前動作語境中不適用的命令不起作用.⑥讓用戶控制交互流.⑦對所有輸入動作都提供幫助.⑧消除輸入的冗余.3.過程設計的工具: 即描述程序處理過程的工具.①程序流程圖②盒圖③PAD圖(問題分析圖)④判定表⑤判定樹⑥過程設計語言(PDL,也稱為偽碼)
4.面向數據結構的設計方法:Jackson方法和Warnier方法
Jackson圖:只有順序結構,選擇結構,重復結構這三種邏輯數據結構.優點: 便于表示層次結構;形象直觀可讀性好;既能表示數據結構也能表示程序結構缺點: 選擇條件或循環結束條件不能上圖;也不易把圖翻譯成程序;框間連線為斜線,不易打印.(改進的Jackson圖框間連線為直線)
第七章 實現
1.通常把編碼和測試統稱為實現.2.編碼:?選擇程序語言的標準:①系統用戶的要求②可以使用的編譯程序③可以得到的軟件工具④工程規模⑤程序員的知識⑥軟件可移植性要求⑦軟件的應用領域
?編碼風格應遵循的規則:①程序內部的文檔②數據說明③語句構造④輸入輸出⑤效率
3.測試:?目標:①發現程序中的錯誤②發現錯誤的測試方案③發現錯誤的測試 ?準則:①所以測試都應該能追溯到用戶需求.②應該遠在測試開始之前就制定出測試計劃.③把Pareto原理應用到測試軟件中.④應該從“小規模”測試開始,并逐步進行“大規模”測試.⑤窮舉測試是不可能的.⑥應該由獨立的第三方從事測試工作.?方法:白盒,黑盒
?步驟:①模塊測試②子系統測試③系統測試④驗收測試⑤平行運行
4.白盒測試技術:把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理方法.按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否都能按預定要求正確工作.5.黑盒測試技術:把程序看作一個黑盒子,完全不考慮程序的內部結構和處理過程.在程序接口進行的測試,它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當地接收輸入數據并產生正確的信息,能否保持外部信息完整性.等價劃分是一種黑盒測試技術,這種技術把程序的輸入域劃分成若干個數據類,據此導出測試用例.6.調試途徑:①蠻干法②回溯法③原因排除法
第八章 維護
1.維護的問題:
①理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加.②需要維護的軟件往往沒有合格的文檔,或文檔資料不足.③當要求對軟件進行維護時,不能指望由開發人員給人們仔細說明軟件.④絕大多數軟件在設計時沒有考慮將來的修改.⑤軟件維護不是一項吸引人的工作.2.軟件維護過程: ①維護組織②維護報告③維護的事件流
④保存維護記錄⑤評價維護活動
3.決定軟件可維護性的因素: ①可理解性②可測試性③可修改性
④可移植性⑤可重用性
第十三章 軟件項目管理
1.估算軟件規模:代碼行技術,功能點技術
2.Gantt圖:是歷史悠久、應用廣泛的制定進度計劃的工具.缺點:①不能顯式地描繪各項作業彼此間的依賴關系.②進度計劃的關鍵部分不明確,難于判定哪些部分應當是主攻和主控的對象.③計劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費.3.人員組織方式:①民主制程序員組 ②主程序員組 ③現代程序員組
4.軟件質量保證措施:基于非執行的測試,基于執行的測試和程序正確性證明.5.軟件配置:①軟件配置項:計算機程序,描述計算機程序的文檔,數據.②基線
6.軟件配置管理過程:①標識軟件配置中的對象 ②版本控制 ③變化控制
④配置審計 ⑤狀態報告
7.能力成熟度的五個等級從低到高依次是:初始級<可重復級<已定義級<已管理級<優化級
第五篇:軟件工程復習知識點總結
1.軟件危機的概念,內容,原因及消除的途徑; 2.軟件工程的定義,基本原理;
3.軟件工程方法學的基本概念、內容;
4.軟件生命周期的具體內容,每一個階段的任務是什么?結合具體的工程例子來理解做軟件項目主要分那幾個階段。
5.理解幾個典型軟件過程的內容及其優點與缺點:瀑布模型、增量模型、快速原型模型、螺旋模型、噴泉模型等; 6.了解可行性研究中的任務和過程;
7.掌握系統流程圖的概念和方法,會從具體的案例中抽象出系統流程圖; 8.掌握數據流圖的概念和方法,會從具體的案例中畫出0層數據流圖和功能級數據流圖;
9.掌握數據字典的內容、方法、用戶和實現; 10.了解成本/效益分析方法;
11.了解需求分析過程中任務是什么.12.理解面向數據流自頂向下逐步求精的方法和意義;
13.理解分析及建模的意義,需求分析中應該建立哪三種模型?有哪些工具來幫助建立這些模型?
14.掌握實體關系(E-R)圖的概念,內容和實現方法,能結合具體實例建立實體關系圖;
15.掌握狀態圖的概念,內容,實現方法和作用;
16.掌握層次方框圖、warnier圖、IPO圖的概念,內容和作用; 17.有窮狀態機的概念和內容;
18.總體設計是做什么?總體設計的過程是怎樣的?總體結構設計的目的是什么?
19.掌握幾個設計原理,理解他們的內容和意義;
20.掌握耦合和內聚的概念和內容,理解這些原理對設計有哪些指導意義; 21.耦合包含了哪些類型?每個類型的具體內容是什么?要求能通過程序代碼識別出耦合類型。
22.啟發性規則的內容及部分概念。23.層次圖、HIPO圖和結構圖的內容;
24.掌握面向數據流的設計方法,了解其中涉及到的概念(變換流,事務流),結合例子理解變換分析的具體過程。25.詳細設計是做什么? 26.什么是結構程序設計?
27.人機界面設計問題包含哪些?
28.掌握設計過程中用到的工具:程序流程圖的概念,內容和方法;盒圖的概念、內容和方法;會結合實例使用這些工具;掌握PAD 圖的概念和內容;掌握判定表的概念和內容。要結合實例來掌握它們。
29.了解結合Jackson圖來掌握面向數據結構的設計方法;會用Jackson程序設計方法對具體的實例進行設計。
30.掌握幾種測試:單元測試、集成測試、確認測試、白盒測試技術和黑盒測試技術;掌握它們的概念,內容和方法;
31.對每一種測試方法,理解其具體細節:比如理解什么是漸增式測試和非漸增式測試,什么是Alpha測試和Beta測試.....; 32.結合G.J.Myers的觀點理解軟件測試的目的;(教材p150)33.掌握白盒測試的技術細節(比如:掌握邏輯覆蓋中的8個覆蓋點;掌握基本路徑測試,會根據過程設計結果畫出相應的流圖;會計算流圖的環形復雜度;會計算出線性獨立路徑的基本集合);掌握黑盒測試的技術細節; 34.理解軟件維護的定義、特點和維護過程; 自測練習題:
一、選擇題
1.瀑布模型的存在問題是()
A.用戶容易參與開發
B.缺乏靈活性
C.用戶與開發者易溝通
D.適用可變需求
2.可行性分析是在系統開發的早期所做的一項重要的論證工作,它是決定該系統是否開發的決策依據,因必須給出()的回答。
A.確定
B.行或不行
C.正確
D.無二義
3. 系統流程圖是用來
()
A 描繪程序結構的 B 描繪系統的邏輯模型
C 表示信息層次結構的圖形工具 D 描繪物理系統的 4.下列屬于維護階段的文檔是()
A.軟件規格說明
B.用戶操作手冊
C.軟件問題報告
D.軟件測試分析報告 5.軟件按照設計的要求,在規定時間和條件下達到不出故障,持續運行的要求的質量特性稱為()
A.可用性
B.可靠性
C.正確性
D.完整性
6、快速原型模型的主要特點之一是()A.開發完畢才見到產品
B.及早提供全部完整的軟件產品 C.開發完畢后才見到工作軟件 D.及早提供工作軟件
7、軟件需求分析的主要任務是準確地定義出要開發的軟件系統是()A.如何做
B.怎么做 C.做什么
D.對誰做
8.若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設計這組測試用例的方法是()
A.條件覆蓋法
B.等價分類法
C.邊界值分析法
D.錯誤推測法
9.研究開發所需要的成本和資源是屬于可行性研究中的研究的一方面。()A.技術可行性
B.經濟可行性 C.社會可行性
D.法律可行性 10.模塊的內聚性最高的是()A.邏輯內聚
B.時間內聚 C.偶然內3 聚
D.功能內聚
12.()是把對象的屬性和操作結合在一起,構成一個獨立的對象,其內部信息對外界是隱蔽的,外界只能通過有限的接口與對象發生聯系。A 多態性 B 繼承 C 封裝 D 消息
二、填空題
1.將數據流圖映射為程序結構時, 所用映射方法涉及信息流的類型。其信息流分為 和 兩種類型。
2.為了便于對照檢查,測試用例應由輸入數據和預期的_ _____兩部分組成。3.軟件由程序、、組成。
4.在學校中,一個學生可以選修多門課程,一門課程可以由多個學生選修,那么學生和課程之間是
關系。
5.軟件工程釆用層次化的方法,每個層次都包括、方法、三要素。6.一個模塊擁有的直屬下級模塊的個數稱為,一個模塊的直接上級模塊的個數稱為。
三、名詞解釋題 1.內聚性 2.軟件危機 3.完善性維護 4.數據字典 5.程序流圖 6.驅動程序 7.數據耦合 8.類圖
9.Alpha測試與Beta測試 10.軟件產品
四、簡答題
1.黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷哪幾類錯誤? 2.瀑布模型、增量模型的優缺點
3.程序流程圖或者盒圖的5種基本結構的畫法 4.簡述過程設計語言(PDL)的特點。
5.根據特定的項目,你會考慮哪些因素來選擇合適的程序設計語言。6.(教材P141)畫出下列偽碼程序的程序流程圖和盒圖 START IF p THEN WHILE q DO f END DO ELSE BLOCK 4 g n END BLOCK END IF STOP 7.(教材P141)研究下面的PDL語言(過程設計語言,也稱偽碼程序): LOOP: Set I to(START + FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)
五、綜合題(三題分別5,7,8分,共20分)
1.某培訓中心要研制一個計算機管理系統。它的業務是: 將學員發來的信件收集分類后,按幾種不同的情況處理。
如果是報名的,則將報名數據送給負責報名事務的職員,他們將查閱課程文件,檢查該課程是否額滿,然后在學生文件、課程文件上登記,并開出報告單交財務部門,財務人員開出發票給學生。
如果是想注銷原來已選修的課程,則由注銷人員在課程文件、學生文件和帳目文件上做相應的修改,并給學生注銷單。
3)如果是付款的,則由財務人員在帳目文件上登記,也給學生一張收費收據。要求:
(1).對以上問題畫出功能級數據流程圖。(2).畫出該培訓管理的軟件結構圖。
2.某旅館的電話服務如下:
可以撥分機號和外線號碼。分機號是從7201至7299。外線號碼先撥9,然后是市話號碼或長話號碼。長話號碼是以區號和市話號碼組成。區號是從100到300中任意的數字串。市話號碼是以局號和分局號組成。局號可以是455,466,888,552中任意一個號碼。分局號是任意長度為4的數字串。
要求:寫出在數據字典中,電話號碼的數據條目的定義即組成。
3.軟件測試的過程包括哪些?黑盒測試與白盒測試的具體內容是什么?它們分別針對哪幾類錯誤?
一.集成測試中自頂向下集成和自底向上集成的優缺點?
1、自頂向下集成 優點:較早地驗證了主要控制和判斷點;按深度優先可以首先實現和驗證一個完整的軟件功能;功能較早證實,帶來信心;只需一個驅動,減少驅動器開發的費用;支持故障隔離。
缺點:柱的開發量大;底層驗證被推遲;底層組件測試不充分。適應于產品控制結構比較清晰和穩定;高層接口變化較小;底層接口未定義或經常可能被修改;產口控制組件具有較大的技術風險,需要盡早被驗證;希望盡早能看到產品的系統功能行為。
2、自底向上集成
優點:對底層組件行為較早驗證;工作最初可以并行集成,比自頂向下效率高;減少了樁的工作量;支持故障隔離。
缺點:驅動的開發工作量大;對高層的驗證被推遲,設計上的錯誤不能被及時發現。
適應于底層接口比較穩定;高層接口變化比較頻繁;底層組件較早被完成。
二.簡述螺旋模型的基本開發過程。正確答案
(1)需求定義。利用需求分析技術理解應用領域,獲取初步的用戶需求,制定項目開發計劃。
(2)風險分析。根據初始需求或改進意見評審可選用的方案,給出消除或減少風險的途徑。
(3)工程實現。利用快速原型構造方法針對已知的用戶需求生成快速原型。(4)評審。將原型提交用戶使用并征詢用戶改進意見。
上述過程將不斷迭代,直至給出用戶滿意的目標軟件產品。
三.一般而言,衡量某種程序語言是否適合于特定的項目,應考慮哪些因素?(1)應用領域;(2)算法和計算復雜性;(3)軟件運行環境;(4)用戶需求中關于性能方面的需要;(5)數據結構的復雜性;(6)軟件開發人員的知識水平;(7)可用的編譯器與交叉編譯器。
四.名詞解釋:
軟件危機是指落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發與維護過程中出現一系列嚴重問題的現象
軟件質量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發標準、以及所有專業開發的軟件都應具有的和隱含特征相一致的程度。
恢復測試是指采取各種人工干預方式強制性地使軟件出錯,使其不能正常工作,6 進而檢驗系統的恢復能力。
類圖(Class diagram)是顯示了模型的靜態結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等
數據耦合指兩個模塊之間有調用關系,傳遞的是簡單的數據值,相當于高級語言的值傳遞