第一篇:軟件工程期末復習總結
軟件工程期末復習總結
第一章 軟件工程學概述
1.軟件危機:是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題。包括如何開發(fā)軟件,如何維護數(shù)量不斷膨脹的已有軟件。
2.軟件生命周期的定義及劃分
3.軟件從定義、開發(fā)、使用和維護,直到最終廢棄的過程稱為生命周期
4.按照軟件生命周期全過程應完成的任務性質(zhì),在概念上可以把軟件生命周期劃分成問題定義、可行性研究、需求分析(定義時期)、總體設計、詳細設計(系統(tǒng)設計)、編碼和單元測試、綜合測試以及運行維護(系統(tǒng)實現(xiàn))共8個階段
5.最基本的測試是集成測試和驗收測試
6.軟件配置主要包括:程序+數(shù)據(jù)+文檔
7.軟件工程的定義軟件工程是把系統(tǒng)的、規(guī)范的、可度量的途徑應用于軟件開發(fā)、運行和維護過程,也就是把工程應用于軟件;并研究其中提到的途徑。
8.軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理
2.堅持進行階段評審
3.實行嚴格的產(chǎn)品控制
4.采用現(xiàn)代程序設計技術
5.結果應能清楚地審查
6.開發(fā)小組的人員應該小而精
7.承認不斷改進軟件工程實踐的必要性
9.軟件工程方法學包含3要素:方法、工具和過程。
分成傳統(tǒng)方法學和面向?qū)ο蠓椒▽W,其中傳統(tǒng)方法學采用結構化技術(結構化分析、結構化設計和結構化實現(xiàn))來完成軟件開發(fā)的各項任務。
10.軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務的框架,它規(guī)定各項任務的工作步驟(who,when,what,how)
11.軟件過程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型
12.瀑布模型優(yōu)點
1.階段間具有順序性和依賴性
2.推遲實現(xiàn)的觀點
3.質(zhì)量保證的觀點
13.軟件工程由方法、(工具)和過程三部分組成,稱軟件工程的三要素。
14.從工程管理的角度軟件設計可分為概要設計和(詳細)設計兩大步驟。
15.基于計算機系統(tǒng)的軟件要素中的軟件由程序、數(shù)據(jù)和(文檔)組成。
16.軟件設計也可看作將需求規(guī)格說明逐步轉(zhuǎn)換為軟件源代碼的過程。()
17.軟件生存周期(名詞解釋)軟件從定義、開發(fā)、使用和維護,直到最終廢棄的過程稱為生命周期
18.軟件危機(名詞解釋)是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題 原型法模型一般適應哪些場合?
它適合于那些不能預先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項目組成員(包括分析員、設計員、程序員和用戶)不能很好交流或通信有困難的情況。
瀑布模型一般適應哪些場合?
瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應用有一定的局限性。
第二章 可行性研究
1.可行性研究的目的,就是用最小的代價盡可能短的時間內(nèi)確定問題是否能夠解決
2.至少包含下述3個方面:
1.技術可行性
2.經(jīng)濟可行性
3.操作可行性
3.數(shù)據(jù)流圖的用途
1.交流信息的工具
2.作為分析與設計的工具
4.數(shù)據(jù)字典的內(nèi)容由4類元素組成1.數(shù)據(jù)流
2.數(shù)據(jù)流分量(即數(shù)據(jù)元素)
3.數(shù)據(jù)存儲
4.處理
5..系統(tǒng)流程圖是物理系統(tǒng)模型
數(shù)據(jù)流圖和數(shù)據(jù)字典是系統(tǒng)邏輯模型
5.成本/效益分析的方法:1.貨幣的時間價值,2投資回收期3純收入4投資回收率
6.數(shù)據(jù)字典:是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合.第三章 需求分析
1.需求分析是軟件定義時期的最后一個階段,它的基本任務是準備地回答“系統(tǒng)必須做什么”這個問題
2.需求分析的任務
1.確定對系統(tǒng)的綜合要求
2.分析系統(tǒng)的數(shù)據(jù)要求
3.導出系統(tǒng)的邏輯模型
4.修正系統(tǒng)開發(fā)計劃
3.需求分析的結果是軟件需求規(guī)格說明書
4.需求分析的方法
1.訪談
2.面向數(shù)據(jù)流自頂向下求精
3.簡易的應用規(guī)格說明技術
4.快速建立軟件原型,5…實踐表明,快速建立軟件原型是最準確、最有效和最強大的需求分析技術
6需求分析建模的工具
1.E-R圖
2.層次方框圖,描繪數(shù)據(jù)的層次結構
3.Warnier圖
4.IPO圖
7.驗證軟件需求應該從下面4個方面驗證
1.一致性
2.完整性
3.現(xiàn)實性
4.有效性
第五章 總體設計
1.總體設計的基本目的就是回答“概括地說,系統(tǒng)該如何實現(xiàn)?”
2.總體設計也稱概要設計或初步設計
3.總體設計的重要任務
1.劃分系統(tǒng)元素和邊界
2.設計軟件的結構,即系統(tǒng)的模塊組成和模塊間的關系。
4.總體設計通常由兩個階段組成:
系統(tǒng)設計階段,確定系統(tǒng)的具體實現(xiàn)方案
結構設計階段,確定軟件結構
5.模塊是構成程序的基本構件。
6.模塊化就是把程序分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶需求
7.模塊化的根據(jù)就是分解復雜的問題容易解決
8.軟件設計原理
1.模塊化
2.抽象
3.逐步求精
4.信息隱藏和局部化
5.模塊獨立
9.模塊設計的原則是高內(nèi)聚,低耦合耦合是衡量不同模塊彼此間互相依賴的緊密程度
內(nèi)聚是衡量一個模塊內(nèi)部各個元素彼此結合的緊密程度
10.耦合的類型及設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合內(nèi)聚:使用功能內(nèi)聚和順序內(nèi)聚
11.設計的啟發(fā)式規(guī)則
1.提高獨立性
2.模塊適中
3.深度、寬度、扇入和扇出適當
4.模塊作用域應該在控制域之內(nèi)
5.降低模塊接口的復雜度
6.設計單入口單出口的模塊
7.模塊功能可以預測
12.據(jù)流的設計方法的兩種不同類型的設計:變換分析和事務分析
優(yōu)化方法的格言:先使它能工作,然后再使它快起來
第六章 詳細設計
設計階段的根本目錄是確定應該怎樣具體地實質(zhì)所要求的系統(tǒng)。
詳細設計不是編碼,而是設計出程序的“藍圖”
結構程序設計最早由Dijkstra提出
只要3種基本的控制結構就能實現(xiàn)任何單入口單出口的程序,這3種基本的控制結構是“順序”、“選擇”和“循環(huán)”
1.程序設計的經(jīng)典定義:如果一個程序的代碼塊僅僅透過順序、選擇和循環(huán)這3中基本控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的結構程序設計是盡可能少用GOTO語句的程序設計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應該總是使用前向GOTO語句
人機界面的設計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價
設計人機界面總會遇到下述四個問題:
1.系統(tǒng)響應時間
2.用戶幫助設備
3.出錯信息處理
4.命令交互
人機界面設計指南:
1.置用戶于控制之下
2.減少用戶的記憶負擔
3.保持界面一致
判定表可用作軟件測試
Jackson圖包含3類邏輯數(shù)據(jù)結構,順序結構,選擇結構,重復結構
第七章 實現(xiàn)
通常把編碼和測試統(tǒng)稱為實現(xiàn)
編碼就是把軟件設計結構翻譯成某種程序設計語言書寫的程序
測試的目的就是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤
軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上
調(diào)試是測試階段最困難的工作
G.Myers測試的目標或定義:
1.測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程
2.好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案
3.成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試
軟件測試準則
1.所有測試都應該能追溯到用戶需求
2.應該遠在測試開始之前就制定出測試計劃
3.把Pareto原理應用到軟件測試中
4.應該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試【(8020)測試發(fā)現(xiàn)的錯誤80%很可能是由程序中20%的模塊造成的】
5.窮舉測試是不可能的6.第三方測試(A編寫,B測試)
V字型模型
測試分為白盒測試(結構測試)和黑盒測試(功能測試)
具體的測試方法{【(測試用例)()】【(覆蓋條件)()】}
測試步驟:1.模塊測試.2子系統(tǒng)測試 3.系統(tǒng)測試 4.驗收測試 5.平行運行
軟件可靠性:是程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運行的概率
軟件可用性:是程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功地運行的概率
第八章 維護
軟件工程的主要目的是提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統(tǒng)的總成本
所謂維護就是在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四類維護
1.改正性維護糾正使用過程中暴露出來的錯誤
2.適應性維護適應外部環(huán)境變化
3.完善性維護改進原有軟件
4.預防性維護改進將來的可維護性和可靠性
軟件維護的特點
1.結構化維護與非結構化維護差別巨大
2.維護的代價高昂
3.維護的問題很多
決定軟件可維護性的因素
1.可理解性
2.可測試性
3.可修改性
4.可移植性
5.可重用性
文檔是影響軟件可維護性的決定因素
軟件系統(tǒng)的文檔可以分為用戶文檔和系統(tǒng)文檔兩類
1.用戶文檔主要描述系統(tǒng)功能和使用方法
2.系統(tǒng)文檔指從問題定義,需求說明驗收測試計劃這樣一系列實現(xiàn)有關的文檔
Miller:“把今天的方法學應用到昨天的系統(tǒng)上,以支持明天的需求?!?/p>
第二篇:軟件工程-期末總結
軟件工程期末總結
課程:姓名:學號:班級:xxxxx xxxxx xxxxxx xxxxxx
目錄
1.軟件工程學概述.........................................................1 1.1軟件危機..........................................................1 1.2軟件工程..........................................................1 1.3軟件生命周期......................................................2 1.4軟件過程..........................................................2 2.可行性研究:............................................................2 2.1可行性研究的任務..................................................2 2.2可行性研究的過程..................................................3 2.3數(shù)據(jù)流圖..........................................................3 3.需求分析...............................................................3 4.形式化說明技術.........................................................4 5.模塊設計...............................................................4 1.耦合:............................................................4 2.內(nèi)聚..............................................................4 6.詳細設計...............................................................5 6.1結構程序設計......................................................5 6.2人機界面設計......................................................5 7.軟件測試...............................................................5 7.1軟件測試的目標....................................................5 7.2軟件側試準則......................................................6 7.3測試方法..........................................................6 8.軟件可靠性.............................................................7 8.1軟件質(zhì)量..........................................................7
1.軟件工程學概述
1.1軟件危機
1.1.1 軟件危機的介紹:是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。具體地說,軟件危機主要有以下一些典型表現(xiàn):1.對軟件開發(fā)成本和進度的估計常常很不準確。2.用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。3.軟件產(chǎn)品的質(zhì)量往往靠不住。4.軟件常常是不可維護的。5.軟件通常沒有適當?shù)奈臋n資料。6.軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。7.軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。1.1.2產(chǎn)生軟件危機的原因:在軟件開發(fā)和維護的過程中存在這么多嚴重問題,一方面與軟件本身的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。1.1.3消除軟件危機的途徑:
1、認識到軟件是程序、數(shù)據(jù)及相關文檔的完整集合。2.認識到軟件是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目;
3、推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,探索更好更有效的技術和方法;
4、開發(fā)和使用更好的軟件工具。總之,為了解決軟件危機,既要有技術措施(方法和工具),又要有必要的組織管理措施。軟件工程正是從管理和技術兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。
1.2軟件工程
1.2.1軟件工程的介紹:軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。定義:采用工程的概念、原理和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。1.2.2軟件工程的基本原理:
1、用分階段的生命周期計劃嚴格管理
2、堅持進行階段評審
3、實行嚴格的產(chǎn)品控制
4、采用現(xiàn)代程序設計技術
5、結果應能清楚地審查
6、開發(fā)小組的人員應該少而精
7、承認不斷改進軟件工程實踐的必要性 1.2.3 軟件工程方法學:通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學,也稱為范型。軟件工程方法學包含3個要素方法、工具和過程。目前使用得最廣泛的軟件工程方法學,分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W
1.3軟件生命周期
軟件生命周期由軟件定義、軟件開發(fā)和運行維護3個時期組成,每個時期又進一步劃分成若干個階段。軟件定義的3個階段:問題定義、可行性研究、需求分析;軟件開發(fā)的四個階段:總、詳(系統(tǒng)設計)、編、綜(系統(tǒng)實現(xiàn))軟件生命周期每個階段:1.問題定義2.可行性研究3.需求分析4.總體設計5.詳細設計6.編碼和單元測試7.綜合測試8.軟件維護
1.4軟件過程
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。
1.4瀑布模型瀑布模型
一直是唯一被廣泛采用的生命周期模型,有下述的幾個特點:1.階段間具有順序性和依賴性(1)必須等前一階段的工作完成之后,才能開始后一階段的工作(2)前一階段的輸出文檔就是后一段的輸入文檔,因此,前一階段的輸出文檔必須正確。2.推遲實現(xiàn)的觀點;3.質(zhì)量保證的觀點(1)每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務,(2)每個階段結束前都要對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題改正錯誤。
優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定每個階段必須提交的文檔;要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細驗證。缺點:瀑布模型是由文檔驅(qū)動的
2.可行性研究: 可行性研究的目的,就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。
2.1可行性研究的任務
可行性研究的目的不是解決問題,而是確定問題是否值得去解決??尚行匝芯繉嵸|(zhì)上是要進行一次大大壓縮簡化了的系統(tǒng)分析和設計的過程,也就是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設計的過程。在澄清了問題定義之后,分析員應該導出系統(tǒng)的邏輯模型。然后從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實現(xiàn)方案)。對每種解法都應該仔細研究它的可行性,一般說來,至少應該從下述3個方面研究每種解法的可行性。
1)技術可行性 使用現(xiàn)有的技術能實現(xiàn)這個系統(tǒng)嗎?
2)經(jīng)濟可行性 這個系統(tǒng)的經(jīng)濟效益能超過它的開發(fā)成本嗎? 3)操作可行性 系統(tǒng)的操作方式在這個用戶組織內(nèi)行得通嗎?
必要時還應該從法律、社會效益等更廣泛的方面研究每種解法的可行性??尚行匝芯啃枰臅r間長短取決于工程的規(guī)模。一般來說,可行性研究的成本只是預期的工程總成本的5%-10%。
2.2可行性研究的過程
步驟:1.復查系統(tǒng)規(guī)模和目標2.研究目前正在使用的系統(tǒng)3.導出新系統(tǒng)的高層邏輯模型4.進一步定義問題5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發(fā)計劃8.書寫文檔提交審查
2.3數(shù)據(jù)流圖
數(shù)據(jù)流圖(DFD)是一種圖形化技術,它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。在數(shù)據(jù)流圖中沒有任何具體的物理部件,它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程。數(shù)據(jù)流圖有四種基本符號:
正方形(或立方體)表示數(shù)據(jù)的源點或終點; 圓角矩形(或圓形)代表變換數(shù)據(jù)的處理; 開口矩形(或兩條平行橫線)代表數(shù)據(jù)存儲; 箭頭表示數(shù)據(jù)流,即特地數(shù)據(jù)的流動方向。
在數(shù)據(jù)流圖中應該描繪所有可能的數(shù)據(jù)流向,而不應該描繪出現(xiàn)某個數(shù)據(jù)流的條件。數(shù)據(jù)存儲和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同。數(shù)據(jù)存儲是處于靜止狀態(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。數(shù)據(jù)流圖的基本要點是描繪“做什么”,而不是“怎么做”。數(shù)據(jù)流圖的4種成分:源點或終點,處理,數(shù)據(jù)存儲,數(shù)據(jù)流數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具,另一個主要用途是作為分析和設計的工具。
3.需求分析
3.1.1確定對系統(tǒng)的綜合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出錯處理需求5.接口需求6.約束7.逆向需求8.將來可能提出的需求
4.形式化說明技術
PSL/PSA系統(tǒng)的主要優(yōu)點是它改進了文檔質(zhì)量,能保證文檔具有完整性、一致性和無二義性,從而可以減少管理和維護的費用。數(shù)據(jù)存放在數(shù)據(jù)庫中,便于增加、刪除和更改,這也是它的一個優(yōu)點。
5.模塊設計
模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結果。開發(fā)具有獨立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨立。
1.耦合:
耦合是對一個軟件結構內(nèi)不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復雜程度因此,模塊間的耦合程度強烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。公共環(huán)境耦合的復雜程度隨耦合的模塊個數(shù)而變化,當耦合的模塊個數(shù)增加時復雜程度顯著增加。如果只有兩個模塊有公共環(huán)境,那么這種耦合有下面兩種可能。1.一個模塊往公共環(huán)境送數(shù)據(jù),另一個模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的于一種形式,是比較松散的耦合。2.兩個模塊都既往公共環(huán)境送數(shù)據(jù)又從里面取數(shù)據(jù),這種耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。如果兩個模塊共享的數(shù)據(jù)很多,都通過參數(shù)傳遞可能很不方便,這時可以利用公共環(huán)境耦合。最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內(nèi)容耦合。一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)。一個模塊不通過正常入口而轉(zhuǎn)到另二個模塊的內(nèi)部。兩個模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中)。一個模塊有多個入口(這意味著一個模塊有幾種功能)。應該堅決避免使用內(nèi)容耦合。事實上許多高級程序設計語言已經(jīng)設計成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合??傊?,耦合是影響軟件復雜程度的一個重要因素。應該采取下述設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。
2.內(nèi)聚
內(nèi)聚標志著一個模塊內(nèi)各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。簡單地說,理想內(nèi)聚的模塊只做一件事情。內(nèi)聚和耦合是密切相關的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都一是進行模塊化設計的有力工具,但是實踐表明內(nèi)聚更重要,應該把更多注意力集中到提高模塊的內(nèi)聚程度上。低內(nèi)聚:偶然內(nèi)聚、時間內(nèi)聚、邏輯內(nèi)聚;中內(nèi)聚主要有兩類:過程內(nèi)聚和通信內(nèi)聚;高內(nèi)聚也有兩類:順序內(nèi)聚和功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。
6.詳細設計
詳細設計階段的根本目標是確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序。詳細設計階段的任務還不是具體地編寫程序,而是要設計出程序的“藍圖”,以后程序員將根據(jù)這個藍圖寫出實際的程序代碼。因此,詳細設計的結果基本上決定了最終的程序代碼的質(zhì)量。考慮程序代碼的質(zhì)量時必須注意,程序的“讀者”有兩個,那就是計算機和人。在軟件的生命周期中,設計測試方案、診斷程序錯誤、修改和改進程序等都必須首先讀懂程序。實際上對于長期使用的軟件系統(tǒng)而言,人讀程序的時間可能比寫程序的時間還要長得多。因此,衡量程序的質(zhì)量不僅要看它的邏輯是否正確.性能是否滿足要求,更主要的是要看它是否容易閱讀和理解。詳細設計的目標不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設計出的處理過程應該盡可能簡明易懂。結構程序設計技術是實現(xiàn)上述目標的關鍵技術,因此是詳細設計的邏輯基礎。
6.1結構程序設計
如果一個程序的代碼塊僅僅通過順序,選擇和循環(huán)這3種基本控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱為程序的結構化。
6.2人機界面設計
人機界面設計是接口設計的一個重要的組成部分。在設計人機界面過程會遇到下面4個問題:系統(tǒng)響應時間,用戶幫助設施,出錯信息處理和命令交互。用戶界面設計過程是一個迭代的過程,首先創(chuàng)建設計模型,再用原型實現(xiàn)這個設計模型,并由用戶試用和評估,然后根據(jù)用戶意見進行修改。為了支持上述迭代過程,各種用于界面設計和原型開發(fā)的軟件工具產(chǎn)生。它們?yōu)楹喕翱?,菜單,設備交互,出錯信息,命令及交互環(huán)境的許多其它元素的瘡癤提供各種歷程或?qū)ο?。用戶界面評估周期如下,完成初步設計之后就創(chuàng)建第一級原型,用戶使用并評估該原型,直接向設計者表述對界面的評價,設計中根據(jù)用戶意見修改設計并實現(xiàn)下一級原型。
7.軟件測試
7.1軟件測試的目標
1.測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。2.好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。3.成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。從上述規(guī)則可以看出,測試的正確定義是“為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成功的
測試是沒有發(fā)現(xiàn)錯誤.的測試”等是完全相反的。正確認識測試的目標是十分重要的,測試目標決定了測試方案的設計。如果為了表明程序是正壑耍進行測試,就會設計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現(xiàn)程序中的錯誤,就會力求設計出最能暴露錯誤的測試方案。由于測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當?shù)摹R虼?,在綜合測試階段通常由其他人員組成測試小組來完成測試工作。此外,應該認識到測試決不能證明程序是正確的。即使經(jīng)過了最嚴格的測試之后,仍然可能還有沒被發(fā)現(xiàn)的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中沒有錯誤。關于這個結論下面還要討論。
7.2軟件側試準則
怎樣才能達到軟件測試的目標呢?為了能設計出有效的測試方案,軟件工程師必須深人理解并正確運用指導軟件測試的基本準則。下面講述主要的測試準則。1.所有測試都應該能追溯到用戶需求。2.應該遠在測試開始之前就制定出測試計劃。3.把Paret原理應用到軟件測試中。Pareto原理說明,測試發(fā)現(xiàn)的錯誤中的80%很可是由程序中20%的模塊造成的。當然,問題是怎樣找出這些可疑的模塊并徹底地測試它們。4.應該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試。通常,首先重點測試單個程序模塊,然后把測試重點轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個系統(tǒng)中尋找錯誤。5.窮舉測試是不可的。所謂窮舉測試就是把程序所有可能的執(zhí)行路徑都檢查一遍的測試。即使是一個中等規(guī)模的程序,其執(zhí)行旋的排列數(shù)也十分龐大,由于受時間、人力以及其他資源的限制,在測試過程中不可能執(zhí)行每個可能的路徑。囚此,測試只能證明程序中有錯誤,不能證明程序中沒有錯誤。但是,精心地設計測試方案,有可能充分覆蓋程序邏輯并使程序達到所要求的可靠性。6.為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。所謂“最佳效果”是指有最大可能性發(fā)現(xiàn)錯誤的測試。由于前面已經(jīng)講過的原因,開發(fā)軟件的軟件工程師并不是完成全部測試工作的最佳人選(通常他們主要承擔模塊測試工作)。
7.3測試方法
測試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用瑯口果知道產(chǎn)品的內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正乒進行。前一種方法稱為黑盒測試,后一種方法稱為白盒測試。對于軟件測試而言,黑盒測試法把程序看作一個黑盒子,完全不考慮程序的內(nèi)部結均和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序否能適當?shù)亟邮蛰斎藬?shù)據(jù)并產(chǎn)生正確的輸出信息,程序運行過程中能否保持外部信息(例如,數(shù)據(jù)庫或文件)的完整性。黑盒測試又稱為功能測試。白盒測試法與黑盒測試法相反,它的前提是可以把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理算法。這種方法按測程序中的主要執(zhí)行通路是否都能按預定要求正確工作。照程序內(nèi)部的邏輯測試程序,白盒測試又稱為結構測試。
8.軟件可靠性
可靠性定義:軟件可靠性是程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功的運行的概率可用性定義:軟件可用性是程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功的運行的概率基本假定 1.在測試之前每1000條指令中大約有5~20個錯誤 2.失效率正比于剩余的錯誤數(shù),平均無故障時間MTTF與剩余錯誤數(shù)成反比3.為了簡化討論假設發(fā)現(xiàn)的每一個錯誤都立即正確地改正了。
8.1軟件質(zhì)量
概括地說,軟件質(zhì)量就是“軟件與明確地和隱含地定義的需求相一致的程度”。更具體地說,軟件質(zhì)量是軟件與明確地敘述的功能和性能需求、文檔中明確描述的開發(fā)標準以及任何專業(yè)開發(fā)的軟件產(chǎn)品都應該具有的隱含特征相一致的程度。上述定義強調(diào)了下述的6個要點: 1.正確性(它按我的需要工作嗎?)系統(tǒng)滿足規(guī)格說明用戶目標的程度,即,在預定環(huán)境下能正確的完成預期功能的程度。
2.健壯性(對息外環(huán)境它能適當?shù)仨憫獑幔?在硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等意外環(huán)境下,系統(tǒng)能做出適當?shù)捻憫潭取?/p>
3.效率〔完成預定功能時它需要的計算機資源多嗎?)為了完成預定的功能,系統(tǒng)需要的計算資源的多少。
4.完整性(安全性)(它是安全的嗎?)對未經(jīng)授權的人使用軟件或數(shù)據(jù)的企圖,系統(tǒng)能夠控制(禁止)的程度。
5.可用性(我能使用它嗎?)系統(tǒng)在完成預定應該完成的功能時令人滿意的程度。6.風險(能按預定計劃完成它嗎?)按預定的成本和進度把系統(tǒng)開發(fā)出來,并且為用戶所滿意的概率。
第三篇:軟件工程復習總結
第1章
1什么是軟件危機,產(chǎn)生軟件危機的原因,消除軟件危機的途徑。
落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象。
軟件維護費用的急劇上升,直接威脅計算機應用的擴大;軟件生產(chǎn)技術進步緩慢,是加劇軟件危機的重要原因。
既要有技術措施,又要有必要的組織管理措施。2什么是軟件,軟件的精確定義。
軟件是程序以及開發(fā)、使用和維護程序所需的所有文檔.。3軟件工程的精確定義,軟件工程的7個特征,7基本原理。
軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。1,軟件工程關注于大型程序的構造; 2,軟件工程的中心課題是控制復雜性; 3,軟件經(jīng)?;?;
4,開發(fā)軟件的效率非常重要; 5,和諧地合作是開發(fā)軟件的關鍵; 6,軟件必須有效地支持它的用戶;
7,在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品?;驹恚?/p>
1,用分階段的生命周期計劃嚴格管理; 2,堅持進行階段評審; 3,實行嚴格的產(chǎn)品控制; 4,采用現(xiàn)代程序設計的技術; 5,結果應能清楚地審查;
6,開發(fā)小組的人員應該少而精;
7,承認不斷改進軟件工程實踐的必要性。
4軟件工程方法學的精確定義,它的三要素。二種方法學,面向結構,面向?qū)ο?/p>
3個要素:方法 工具和過程 兩種方法學:1傳統(tǒng)方法學2面向?qū)ο蠓椒▽W 5什么是軟件生命周期,它有哪幾個階段(8個階段),各個階段分別做什么,這些階段的重要性。
一個軟件從定義到開發(fā)、使用和維護,直到最終被棄用,要經(jīng)歷一個漫長的時期,通常把軟件經(jīng)歷的這個漫長的時期稱為生存周期。階段:1問題定義2可行性研究3需求分析4總體設計5詳細設計6編碼和單元測試7綜合測試8軟件維護
6軟件過程的精確定義,它與軟件工程的關系,它的各種模型,各種模型的優(yōu)缺點,適用范 圍。
軟件過程為一個為建造高質(zhì)量軟件所需完成的任務的框架,它規(guī)定了完成各項任務的工作步驟。瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型 第2章
1什么是可行性研究,它的目的,它的任務,可行性研究是在項目建議書被批準后,對項目在技術上和經(jīng)濟上是否可行所進行的科學分析和論證。目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。任務:對以后的行動方針提出建議。
2從哪幾個方面進行可行性研究,每個方面研究什么,它的目的,它的任務。
1技術可行性2經(jīng)濟可行性3操作可行性 3可行性研究的過程,8個階段。
1.復查系統(tǒng)規(guī)模和目標2.研究目前正在使用的系統(tǒng)3.導出新系統(tǒng)的高層邏輯模型4.進一步定義模型5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發(fā)計劃8.書寫文檔提交審查 4系統(tǒng)流程圖,表達什么,它的符號,符號含義 概括地描繪物理系統(tǒng)的傳統(tǒng)工具。
5數(shù)據(jù)流程圖,描繪什么,它的符號,符號含義,畫法,數(shù)據(jù)流程圖的用途(重點)描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。
6數(shù)據(jù)字典的精確定義,作用,內(nèi)容(4類定義組成)定義數(shù)據(jù)的方法,用途,實現(xiàn)。
數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合。對數(shù)據(jù)流圖中包含的所有元素的定義的集合。
內(nèi)容1.數(shù)據(jù)流2數(shù)據(jù)流分量3數(shù)據(jù)存儲4處理 7成本效益分析,使用的方法 第3章
1需求分析,它的任務,它的重要性,它的結果,要遵守的4條準則。
開發(fā)人員準確地理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應的需求規(guī)格說明的過程。
基本任務: ⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求。
重要性:需求分析可以使得開發(fā)和測試更能夠了解客戶的需求,把一些技術難點和可能遇到的難點問題提出來,盡早解決,并且達到一致,便于以后的開發(fā)和測試
需求分析結果是產(chǎn)生:需求規(guī)格說明書
⑵分析與綜合,導出軟件的邏輯模型
⑶編寫文檔:包括編寫“需求規(guī)格說明書”,“初步用戶使用手冊”,“確認測試計劃”,“修改完善軟件開發(fā)計劃” 任務的7項要求,與用戶溝通的方法
獲取需求的方法,用到的圖形工具:E_R圖,圖描述什么,使用符號 狀態(tài)轉(zhuǎn)換圖,其他圖形,IPO圖等 驗證需求,4個方面 第5章
1總體設計的目的,任務
總體設計的基本目的就是回答“概括地說,系統(tǒng)應該如何實現(xiàn)?”這個問題。任務是設計軟件的結構,也就是明確系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。必要性:可以站在全局的高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。2設計過程,二個階段9個步驟
兩個階段:1系統(tǒng)設計階段,確定系統(tǒng)的具體實現(xiàn)方案2結構設計階段,確定軟件結構。設計過程的9個步驟:1設想供選擇的方案2選取合理的方案3推薦最佳方案4功能分解5設計軟件結構6設計數(shù)據(jù)庫7制定測試計劃8書寫文檔9審查和復審。3設計原理,模塊化,與模塊化有關的獨立,度量標準:耦合,內(nèi)驟
設計原理:1模塊化2抽象3逐步求精。模塊獨立程度的兩個定性標準度量:1內(nèi)聚2耦合。
4啟發(fā)式7條規(guī)則,啟發(fā)規(guī)則:1改進軟件結構提高模塊獨立性2模塊規(guī)模應該適中3深度、寬度、扇出、扇入都應適中4模塊的作用域應該在控制域之內(nèi)5力爭降低模塊接口的復雜程度6設計單入口單出口的模塊7模塊功能應該可以預測。5各種圖形工具,HIPO,結構圖,數(shù)據(jù)流圖
描繪軟件結構的圖形工具:1層次圖2 HIPO圖3結構圖;面向數(shù)據(jù)流的設計方法把信息流映射程軟件結構,信息流的類型決定了映射的方法信息流有下述兩種類型:1變換流2事務流。第6章
1詳細設計的目的,任務
詳細設計的根本目標 :是確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言寫的程序。
任務:是要設計出程序的“藍圖”,以后程序員將根據(jù)這個藍圖寫出實際的程序代碼。必要性:衡量程序的質(zhì)量不僅看它的邏輯是否正確,性能是否滿足要求,更重要的是要看它能夠簡單易懂,詳細設計的目的不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設計出的處理過程應該盡可能簡明易懂。
2結構化:定義,指導思想,哪幾種結構,使用的工具,建立什么模型使用什么工具
結構化的定義:結構化程序設計是盡可能少用GOTO語句的程序設計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應該總是使用前向goto語句。結構有三種:順序,選擇,和循環(huán)。
指導思想:采用自頂向下,逐步求精的程序設計方法,使用三種基本控制結構構造程序,任何程序都可由順序,選擇,重復三種基本控制結構構造。結構:順序結構,選擇結構,循環(huán)結構 工具:圖形,表格,和語言
3人機界面設計,要解決的問題,設計過程,設計指南
人機界面設計是接口設計的一個重要組成部分,遇到的四個問題:系統(tǒng)響應時間,用戶幫助設施,出錯信息處理和命令交互。
設計過程,用戶界面設計是一個迭代的過程,通常先創(chuàng)建設計模型,再用原型實現(xiàn)這個設計模型,并由用戶試用和評價,然后根據(jù)用戶意見進行修改。設計指南:一般交互指南,信息顯示指南和數(shù)據(jù)輸入指南
4過程設計的各種工具,程序流程圖,盒圖,PAD圖,判定表,判定樹,過程設計語言
過程設計的工具有三類:圖形,表格,語言。具體有如下幾種
程序流程圖,盒圖,pad圖,判定表,判定樹,過程設計語言(PDL)
5面向數(shù)據(jù)結構的設計方法,jackson方法,使用的圖形工具
設計方法:根據(jù)數(shù)據(jù)結構設計程序處理過程的方法。
數(shù)據(jù)的3種使用方法:順序,選擇,重復。Jackson方法
Jackson結構程序設計方法基本上由下述5個步驟組成,(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結構,并用jackson圖描述這些數(shù)據(jù)結構(2)找出輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元。
(3)用下述3條規(guī)則從描繪數(shù)據(jù)結構的jackson圖導出描繪程序結構的jackson圖。
1、為每對有對應關系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結構圖中的層次在程序結構圖的相應層次畫一個處理框。
2根據(jù)輸入數(shù)據(jù)結構中剩余的每個數(shù)據(jù)單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框??傊?,描繪程序結構的jackson圖應該綜合輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構的層次關系而導出來。在導出程序結構圖的過程中,由于改進的jackson圖規(guī)定在構成順序結構的元素中不能有重復出現(xiàn)或選擇出現(xiàn)的元素,因此可能需要增加中間層次的處理框圖。(4)、列出所有操作和條件,并且把它們分配到程序結構圖的適當位置。(5)用偽碼表示程序。使用的圖形工具:jackson圖
6復雜度的度量,McCabe方法,流圖,(2014年重點)
復雜度度量:把程序的復雜程度乘以適當?shù)某?shù)即可估算出軟件中的錯誤的數(shù)量以及軟件開發(fā)需要的工作量
Mccabe方法:根據(jù)程序控制流的復雜程度定量度量程序的復雜程度 第7章
1實現(xiàn)的重點是測試
2軟件測試的基礎:目標,準則,方法,測試5步驟
軟件測試的基礎:在測試階段測試的人員努力設計出一系列的方案,目的卻是為了“破壞”已經(jīng)建造好的軟件系統(tǒng)—竭力證明程序中有錯誤,不能按照預定要求正確工作。發(fā)現(xiàn)問題是為了解決問題,測試階段的根本目標是盡可能多地發(fā)現(xiàn)并排除軟件中潛在的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。軟測的目標:①測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。②好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。③成功的測試是發(fā)現(xiàn)至今為止尚未發(fā)現(xiàn)的錯誤的測試。
軟測的準則:①所有的測試都應該能追溯到用戶的需求。②應該遠在測試開始之前就制定出測試計劃。③把Pareto原理應用到軟測中。④應該從“小規(guī)模”測試開始,并逐步進行“大規(guī)?!睖y試。⑤窮舉測試是不可能的。⑥為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。
測試方法:白盒測試(結構測試)、黑盒測試(功能測試)。
測試步驟:①模塊測試②子系統(tǒng)測試③系統(tǒng)測試④驗收測試⑤平行測試。3單元測試,測試的重點,測試方案
單元測試:在軟件開發(fā)過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試;集中檢測軟件設計的最小單元---模塊。
單元測試方法有:人工測試和計算機測試;單元測試主要使用白盒測試技術,而且對多個模塊的測試可以并行的進行。
單元測試的重點:①模塊接口②局部數(shù)據(jù)結構③重要的執(zhí)行通路④出錯處理通路⑤邊界條件
4集成測試:集成的策略,自頂向下,自底向上
集成測試:測試和組裝軟件的系統(tǒng)化技術。
集成測試的策略:自頂向下和自底向上。
自頂向下集成方法是一個日益為人們廣泛采用的測試和組成軟件的途徑。從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結合起來。自底向上集成:從“原子”模塊開始組成和測試。
5確認測試,范圍,Alpha測試Beta測試
確認測試:又稱驗收測試,它目標是驗證軟件的有效性。
Alpha測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者對用戶的“指導”下進行測試,其是在受控的環(huán)境中進行的。
Beta測試由軟件的最終用戶們在一個或多個客戶場所進行。與Alpha測試不同,開發(fā)者通常不在Beta測試的現(xiàn)場,因此Beta測試是軟件開發(fā)者不能控制的環(huán)境中的“真實”應用。6白盒測試,黑盒測試(重點)
白盒測試:通過測試來檢測產(chǎn)品內(nèi)部動作是否按照設計規(guī)格說明書的規(guī)定正常進行。黑盒測試:通過測試來檢測每個功能是否都能正常使用。
7軟件的可靠性,計算公式
軟件的可靠性:程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功的運行的概率。設計白盒測試方案的技術主要有邏輯技術和控制結構測試;設計黑盒測試方案的技術主要有等價劃分、分界值分析和錯誤推測。
第8章
1軟件維護的定義,4項活動,4類維護
軟件維護的定義:在軟件已經(jīng)交付使用后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四項維護:第一項維護活動:在任何大型程序的使用期間,用戶必然會發(fā)現(xiàn)程序錯誤,并且把他們遇到的問題報告給維護人員,讓維護人員診斷和改正的過程。第二項維護活動:為了和變化了的環(huán)境適當?shù)嘏浜隙M行的修改軟件的活動,是既必要又經(jīng)常的維護活動。第三項維護活動:在使用軟件的過程中用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進意見。第四項維護活動:為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎而修改軟件。
四類維護:改正性維護、適應性維護、完善性維護、預防性維護 2軟件維護的特點,問題,軟件維護的特點:結構化維護與非結構化維護差別巨大、維護的代價高昂、維護的問題很多
軟件維護的問題:
1)理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。2)需要維護的軟件往往沒有合格的文檔,或者文檔資料顯著不足。
3)當要求對軟件進行維護時,不能指望有開發(fā)人員給人們仔細說明軟件。由于維護階段持續(xù)的時間很長,因此,當需要解釋軟件時,往往原來寫程序的人已經(jīng)不在附近了。4)絕大多數(shù)軟件在設計時沒有考慮將來的修改。5)軟件維護不是吸引人的工作。3軟件維護的過程
軟件維護的過程:維護組織、維護報告、維護的事件流、保存維護記錄、評價維護活動 4軟件的可維護性
軟件可維護性定義:維護人員理解、改正、改動或改進這個軟件的難易程度。決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性 5預防性維護與軟件再工程。
預防性維護由Miller提出來把今天的方法學應用到昨天的系統(tǒng)上以支持明天的明天的需求
6軟件再工程
6類活動:1.庫存目錄分析2.文檔重構3.逆向工程4.代碼重構5.數(shù)據(jù)重構6.正向工程 第9章
1面向?qū)ο蠓椒▽W的定義,要點,優(yōu)點
定義:面向?qū)ο蠓椒ㄊ且环N把面向?qū)ο蟮乃枷霊糜谲浖_發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO(Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。
要點:1認為客觀世界是由各種對象構成的,任何事物都是對象,復雜的對象可以由簡單的對象以某種方式組合而成。2,把所有的對象都劃分成各種對象類,每個對象類都定義了一組數(shù)據(jù)和一組方法。3,按照子類與父類的關系,把若干個對象組成一個層次結構的的系統(tǒng)。4,對象之間僅能通過傳遞消息互相聯(lián)系。
優(yōu)點:1.與人類習慣的思維方法一致2.穩(wěn)定性好3.可重用性好4.較易開發(fā)大型軟件產(chǎn)品5.可維護性好
2對象的定義,要點,優(yōu)點
定義:1.對象是具有相同狀態(tài)的一組操作的集合2.對象是對屬性值和操作的封裝。3.對象::=
3面向?qū)ο蟮母拍睿x,特點
面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機編程技術[1]發(fā)展到一定階段后的產(chǎn)物。
特點:1對象唯一性2分類性3繼承性4多態(tài)性 優(yōu)點:1易維護2質(zhì)量高3效率高4易擴展 4類的定義,實例、消息、方法、屬性,繼承等概念
類的定義:類就是具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。實例:實例就是由某個特定類所描述的一個具體的對象。
消息:小時就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。方法:方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務。
屬性:屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實體說具有的性質(zhì)的抽象。封裝:在面向?qū)ο蟮某绦蛑?,把?shù)據(jù)和實現(xiàn)操作的代碼集中放在對象內(nèi)部。
繼承:在面向?qū)ο蟮能浖夹g中,繼承是子類自動地共享基類中的數(shù)據(jù)和方法的機制。多態(tài):多態(tài)性是指子類對象可以像父類對象那樣使用,同樣地消息既可以發(fā)給父類對象也可以發(fā)給子類對象。重載:函數(shù)重載是指在同一作用域類的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字,運送符號重載是指同一個運算符可以施加在不同類型操作數(shù)上面。5面向?qū)ο蠼?,對象模型(重點),功能模型(重點)動態(tài)模型,模型怎么畫,各種符號 6面向?qū)ο蠓椒▽W使用的語言
面向?qū)ο笳Z言是一類以對象作為基本程序結構單位的程序設計語言,指用于描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。第10章
3個子模型和5個層次 怎樣確定類與對象
類是對象的抽象,對象是類的具體實例。確定關聯(lián),各種關聯(lián)怎樣確定
建立動態(tài)模型,編寫腳本,畫事件跟蹤圖
第四篇:軟件工程復習知識點總結
1.軟件危機的概念,內(nèi)容,原因及消除的途徑; 2.軟件工程的定義,基本原理;
3.軟件工程方法學的基本概念、內(nèi)容;
4.軟件生命周期的具體內(nèi)容,每一個階段的任務是什么?結合具體的工程例子來理解做軟件項目主要分那幾個階段。
5.理解幾個典型軟件過程的內(nèi)容及其優(yōu)點與缺點:瀑布模型、增量模型、快速原型模型、螺旋模型、噴泉模型等; 6.了解可行性研究中的任務和過程;
7.掌握系統(tǒng)流程圖的概念和方法,會從具體的案例中抽象出系統(tǒng)流程圖; 8.掌握數(shù)據(jù)流圖的概念和方法,會從具體的案例中畫出0層數(shù)據(jù)流圖和功能級數(shù)據(jù)流圖;
9.掌握數(shù)據(jù)字典的內(nèi)容、方法、用戶和實現(xiàn); 10.了解成本/效益分析方法;
11.了解需求分析過程中任務是什么.12.理解面向數(shù)據(jù)流自頂向下逐步求精的方法和意義;
13.理解分析及建模的意義,需求分析中應該建立哪三種模型?有哪些工具來幫助建立這些模型?
14.掌握實體關系(E-R)圖的概念,內(nèi)容和實現(xiàn)方法,能結合具體實例建立實體關系圖;
15.掌握狀態(tài)圖的概念,內(nèi)容,實現(xiàn)方法和作用;
16.掌握層次方框圖、warnier圖、IPO圖的概念,內(nèi)容和作用; 17.有窮狀態(tài)機的概念和內(nèi)容;
18.總體設計是做什么?總體設計的過程是怎樣的?總體結構設計的目的是什么?
19.掌握幾個設計原理,理解他們的內(nèi)容和意義;
20.掌握耦合和內(nèi)聚的概念和內(nèi)容,理解這些原理對設計有哪些指導意義; 21.耦合包含了哪些類型?每個類型的具體內(nèi)容是什么?要求能通過程序代碼識別出耦合類型。
22.啟發(fā)性規(guī)則的內(nèi)容及部分概念。23.層次圖、HIPO圖和結構圖的內(nèi)容;
24.掌握面向數(shù)據(jù)流的設計方法,了解其中涉及到的概念(變換流,事務流),結合例子理解變換分析的具體過程。25.詳細設計是做什么? 26.什么是結構程序設計?
27.人機界面設計問題包含哪些?
28.掌握設計過程中用到的工具:程序流程圖的概念,內(nèi)容和方法;盒圖的概念、內(nèi)容和方法;會結合實例使用這些工具;掌握PAD 圖的概念和內(nèi)容;掌握判定表的概念和內(nèi)容。要結合實例來掌握它們。
29.了解結合Jackson圖來掌握面向數(shù)據(jù)結構的設計方法;會用Jackson程序設計方法對具體的實例進行設計。
30.掌握幾種測試:單元測試、集成測試、確認測試、白盒測試技術和黑盒測試技術;掌握它們的概念,內(nèi)容和方法;
31.對每一種測試方法,理解其具體細節(jié):比如理解什么是漸增式測試和非漸增式測試,什么是Alpha測試和Beta測試.....; 32.結合G.J.Myers的觀點理解軟件測試的目的;(教材p150)33.掌握白盒測試的技術細節(jié)(比如:掌握邏輯覆蓋中的8個覆蓋點;掌握基本路徑測試,會根據(jù)過程設計結果畫出相應的流圖;會計算流圖的環(huán)形復雜度;會計算出線性獨立路徑的基本集合);掌握黑盒測試的技術細節(jié); 34.理解軟件維護的定義、特點和維護過程; 自測練習題:
一、選擇題
1.瀑布模型的存在問題是()
A.用戶容易參與開發(fā)
B.缺乏靈活性
C.用戶與開發(fā)者易溝通
D.適用可變需求
2.可行性分析是在系統(tǒng)開發(fā)的早期所做的一項重要的論證工作,它是決定該系統(tǒng)是否開發(fā)的決策依據(jù),因必須給出()的回答。
A.確定
B.行或不行
C.正確
D.無二義
3. 系統(tǒng)流程圖是用來
()
A 描繪程序結構的 B 描繪系統(tǒng)的邏輯模型
C 表示信息層次結構的圖形工具 D 描繪物理系統(tǒng)的 4.下列屬于維護階段的文檔是()
A.軟件規(guī)格說明
B.用戶操作手冊
C.軟件問題報告
D.軟件測試分析報告 5.軟件按照設計的要求,在規(guī)定時間和條件下達到不出故障,持續(xù)運行的要求的質(zhì)量特性稱為()
A.可用性
B.可靠性
C.正確性
D.完整性
6、快速原型模型的主要特點之一是()A.開發(fā)完畢才見到產(chǎn)品
B.及早提供全部完整的軟件產(chǎn)品 C.開發(fā)完畢后才見到工作軟件 D.及早提供工作軟件
7、軟件需求分析的主要任務是準確地定義出要開發(fā)的軟件系統(tǒng)是()A.如何做
B.怎么做 C.做什么
D.對誰做
8.若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現(xiàn)從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設計這組測試用例的方法是()
A.條件覆蓋法
B.等價分類法
C.邊界值分析法
D.錯誤推測法
9.研究開發(fā)所需要的成本和資源是屬于可行性研究中的研究的一方面。()A.技術可行性
B.經(jīng)濟可行性 C.社會可行性
D.法律可行性 10.模塊的內(nèi)聚性最高的是()A.邏輯內(nèi)聚
B.時間內(nèi)聚 C.偶然內(nèi)3 聚
D.功能內(nèi)聚
12.()是把對象的屬性和操作結合在一起,構成一個獨立的對象,其內(nèi)部信息對外界是隱蔽的,外界只能通過有限的接口與對象發(fā)生聯(lián)系。A 多態(tài)性 B 繼承 C 封裝 D 消息
二、填空題
1.將數(shù)據(jù)流圖映射為程序結構時, 所用映射方法涉及信息流的類型。其信息流分為 和 兩種類型。
2.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的_ _____兩部分組成。3.軟件由程序、、組成。
4.在學校中,一個學生可以選修多門課程,一門課程可以由多個學生選修,那么學生和課程之間是
關系。
5.軟件工程釆用層次化的方法,每個層次都包括、方法、三要素。6.一個模塊擁有的直屬下級模塊的個數(shù)稱為,一個模塊的直接上級模塊的個數(shù)稱為。
三、名詞解釋題 1.內(nèi)聚性 2.軟件危機 3.完善性維護 4.數(shù)據(jù)字典 5.程序流圖 6.驅(qū)動程序 7.數(shù)據(jù)耦合 8.類圖
9.Alpha測試與Beta測試 10.軟件產(chǎn)品
四、簡答題
1.黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷哪幾類錯誤? 2.瀑布模型、增量模型的優(yōu)缺點
3.程序流程圖或者盒圖的5種基本結構的畫法 4.簡述過程設計語言(PDL)的特點。
5.根據(jù)特定的項目,你會考慮哪些因素來選擇合適的程序設計語言。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.某培訓中心要研制一個計算機管理系統(tǒng)。它的業(yè)務是: 將學員發(fā)來的信件收集分類后,按幾種不同的情況處理。
如果是報名的,則將報名數(shù)據(jù)送給負責報名事務的職員,他們將查閱課程文件,檢查該課程是否額滿,然后在學生文件、課程文件上登記,并開出報告單交財務部門,財務人員開出發(fā)票給學生。
如果是想注銷原來已選修的課程,則由注銷人員在課程文件、學生文件和帳目文件上做相應的修改,并給學生注銷單。
3)如果是付款的,則由財務人員在帳目文件上登記,也給學生一張收費收據(jù)。要求:
(1).對以上問題畫出功能級數(shù)據(jù)流程圖。(2).畫出該培訓管理的軟件結構圖。
2.某旅館的電話服務如下:
可以撥分機號和外線號碼。分機號是從7201至7299。外線號碼先撥9,然后是市話號碼或長話號碼。長話號碼是以區(qū)號和市話號碼組成。區(qū)號是從100到300中任意的數(shù)字串。市話號碼是以局號和分局號組成。局號可以是455,466,888,552中任意一個號碼。分局號是任意長度為4的數(shù)字串。
要求:寫出在數(shù)據(jù)字典中,電話號碼的數(shù)據(jù)條目的定義即組成。
3.軟件測試的過程包括哪些?黑盒測試與白盒測試的具體內(nèi)容是什么?它們分別針對哪幾類錯誤?
一.集成測試中自頂向下集成和自底向上集成的優(yōu)缺點?
1、自頂向下集成 優(yōu)點:較早地驗證了主要控制和判斷點;按深度優(yōu)先可以首先實現(xiàn)和驗證一個完整的軟件功能;功能較早證實,帶來信心;只需一個驅(qū)動,減少驅(qū)動器開發(fā)的費用;支持故障隔離。
缺點:柱的開發(fā)量大;底層驗證被推遲;底層組件測試不充分。適應于產(chǎn)品控制結構比較清晰和穩(wěn)定;高層接口變化較??;底層接口未定義或經(jīng)常可能被修改;產(chǎn)口控制組件具有較大的技術風險,需要盡早被驗證;希望盡早能看到產(chǎn)品的系統(tǒng)功能行為。
2、自底向上集成
優(yōu)點:對底層組件行為較早驗證;工作最初可以并行集成,比自頂向下效率高;減少了樁的工作量;支持故障隔離。
缺點:驅(qū)動的開發(fā)工作量大;對高層的驗證被推遲,設計上的錯誤不能被及時發(fā)現(xiàn)。
適應于底層接口比較穩(wěn)定;高層接口變化比較頻繁;底層組件較早被完成。
二.簡述螺旋模型的基本開發(fā)過程。正確答案
(1)需求定義。利用需求分析技術理解應用領域,獲取初步的用戶需求,制定項目開發(fā)計劃。
(2)風險分析。根據(jù)初始需求或改進意見評審可選用的方案,給出消除或減少風險的途徑。
(3)工程實現(xiàn)。利用快速原型構造方法針對已知的用戶需求生成快速原型。(4)評審。將原型提交用戶使用并征詢用戶改進意見。
上述過程將不斷迭代,直至給出用戶滿意的目標軟件產(chǎn)品。
三.一般而言,衡量某種程序語言是否適合于特定的項目,應考慮哪些因素?(1)應用領域;(2)算法和計算復雜性;(3)軟件運行環(huán)境;(4)用戶需求中關于性能方面的需要;(5)數(shù)據(jù)結構的復雜性;(6)軟件開發(fā)人員的知識水平;(7)可用的編譯器與交叉編譯器。
四.名詞解釋:
軟件危機是指落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象
軟件質(zhì)量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發(fā)標準、以及所有專業(yè)開發(fā)的軟件都應具有的和隱含特征相一致的程度。
恢復測試是指采取各種人工干預方式強制性地使軟件出錯,使其不能正常工作,6 進而檢驗系統(tǒng)的恢復能力。
類圖(Class diagram)是顯示了模型的靜態(tài)結構,特別是模型中存在的類、類的內(nèi)部結構以及它們與其他類的關系等
數(shù)據(jù)耦合指兩個模塊之間有調(diào)用關系,傳遞的是簡單的數(shù)據(jù)值,相當于高級語言的值傳遞
第五篇:軟件工程復習點總結
軟件工程
第一章
1.軟件過程模型有:線性順序模型(瀑布模型),原型實現(xiàn)模型,螺旋模型,快速應用開發(fā)模型RAD,并發(fā)模型,基于構件的開發(fā)模型,形式化方法模型,第四代技術。2.軟件危機變現(xiàn):《1》軟件代價高
《2》開發(fā)進度難以控制
《3》工作量估計困難 《4》質(zhì)量差
《5》修改、維護困難
3.維護類型:改正性維護,適應性維護,完善性維護,預防性維護。
4.軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序在,數(shù)據(jù)及其相關文檔的集合。
5.軟件工程是一門旨在生產(chǎn)無故障的,及時交付的,在預算之內(nèi)的和滿足用戶需求的軟件學科。
6.軟件生命周期包括了軟件定義,軟件開發(fā)和運行維護3個時期組成。
7.軟件生命周期模型有問題定義,可行性研究,需求分析,總體詳細設計,總體編碼和單元測試,綜合測試軟件維護組。
8.CMM是用于評價一個組織軟件過程成熟度和識別增加這些過程的成熟度所需要的關鍵實踐的一個模型,是建立軟件組織所使用的進程成熟度的模型以及定義和測量過程成熟度的有效方法,在實際中被軟件開發(fā)組織用于軟件過程改進和評估。9.軟件過程開發(fā)模型: 1)線性模型(瀑布模型):特點:自上而下,相互銜接如同瀑布流水,逐級下落,體現(xiàn)不可逆轉(zhuǎn)性。
優(yōu)點:強調(diào)開發(fā)的階段性、強調(diào)早期計劃和需求調(diào)查以及強調(diào)產(chǎn)品測試。
(1)為項目提供了按階段劃分的檢查點
(2)當前一階段完成后,你自需要去關注后序階段。(3)開在迭代模型中應用瀑布模型。
缺點:(1)在項目各階段之間極少有反饋。
(2)只用在項目生命周期的后期才能看到結果。
(3)通過過多的強制完成時期和里程碑來跟蹤各個階段。
適用性:用戶的需求非常清楚全面。2)快速原型模型:(1)可以得到比較良好的需求定義,容易適應需求的變化。
(2)有利于開發(fā)與培訓的同步
(3)開發(fā)費用低,開發(fā)周期短且對用戶更友好
缺點:(1)客戶與開發(fā)者對原型模型理解不同
(2)準確的原型設計比較困難(3)不利于開發(fā)人員開發(fā)
3)增量型優(yōu)點:(1)人員分配靈活
(2)如果核心產(chǎn)品很受歡迎,則可增加人力實現(xiàn)下一個增量(3)可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用
缺點:(1)并行開發(fā)構件有可能遇到不能集成的風險,軟件必須具備開放式的體系結構。
(2)容易退化為邊做邊改模型。從而使軟件過程的控制失去整體性。
4)螺旋模型:(1)設計上的靈活性,可以在項目的各個階段進行變更。
(2)以小的分段來構建大型系統(tǒng),使成本計算變得簡單容易。
(3)隨著項目推進,客戶始終掌握項目的最新消息,從而他或她能夠和管理層有效交互。
缺點:(1)采用螺旋模型需要具有相當豐富的風險評估經(jīng)驗和專門知識,在風險較大的項目開發(fā)中,如果未能夠及時標識風險,勢必造成重大損失。
(3)過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。
10.可行性分析法包括:(1)經(jīng)濟可行性(2)技術可行性(3)運行可行性(4)法律可行性
(5)開發(fā)方案的選擇 11.需求工程分為:
(1)系統(tǒng)可行性研究:它指的現(xiàn)有的軟件、硬件技術能否實現(xiàn)用戶對新系統(tǒng)的需求。,從業(yè)務角度來決定系統(tǒng)開發(fā)是否劃算以及在預算范圍內(nèi)能否開發(fā)出來。
(2)需求導出和分析:這是一個通過對現(xiàn)有系統(tǒng)分析與潛在用戶和購買者討論。進行任務分析等導出系統(tǒng)需求的過程,也可能需要一個或多個不同的系統(tǒng)模型和原型
(3)需求描述。需求描述就是把分析活動中收集信息以文檔的形式確定下來。(4)需求有效性驗證。這個活動檢查需求實現(xiàn)、一致和完備。
(5)需求管理。需求管理是一種系統(tǒng)化方法,可用于獲取、組織和記錄系統(tǒng)需求并使客戶和項目團隊在系統(tǒng)變更需求上達成并保持一致。12.軟件需求5個方面:(1)問題識別(2)評估與綜合(3)建模
(4)規(guī)約(5)評審 13.需求獲取方法:(1)建立聯(lián)合分析小組
(2)客戶訪談(3)問題分析與確認(4)快速原型法
14.需求分析原則:(1)必須能夠表達和理解問題的數(shù)據(jù)域和功能域
(2)按按自頂向下,逐層分解。
(3)要給出系統(tǒng)的邏輯視圖和物理視圖。15.軟件設計分為總體設計和詳細設計。16.總體設計任務:
(1)系統(tǒng)分析員審查軟件計劃、軟件需求分析、提供的文檔、提出最佳推薦方案,用系統(tǒng)流程圖,組成物理元素清單,成本效益分析,系統(tǒng)的進度計劃,供專家審定后進入設計。(2)去頂模塊結構,劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊之間的聯(lián)系,確定數(shù)據(jù)結構、文件結構、數(shù)據(jù)庫模式,確定測試方法與策略。(3)編寫概要設計說明書,用戶手冊、測試計劃、選用相關的軟件工具來描述軟件結構,結構圖是經(jīng)常使用的軟件的軟件描述工具。選擇分解功能與劃分模塊的設計原則,例如模塊劃分獨立性原則,信息隱藏原則等。
17.信息隱蔽是指每個模塊內(nèi)部信息對于其他不需要此信息的模塊來說是不可訪問的,即外部模塊對模塊內(nèi)部的實現(xiàn)過程的不可見性。
18.模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,以滿足用戶的需求。
19.模塊獨立性概括了把軟件劃分為模塊時要遵守的準則,也是判斷模塊夠著是否合理的標準。
20.衡量模塊獨立的兩個標準是耦合性和內(nèi)聚性。21.耦合性:也稱塊間聯(lián)系,指軟件系統(tǒng)結構中各模塊間相互聯(lián)系和緊密程度的一種度量。模塊之間聯(lián)系月緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性,調(diào)用的方式以及傳遞的信息。
22.內(nèi)聚性:又稱為塊間聯(lián)系。指模塊的躬耕強度的度量即一個模塊內(nèi)部各個元素,彼此結合的緊密程度的度量。若一個模塊內(nèi)各個元素聯(lián)系的越緊密,則它的內(nèi)聚性越高。23.模塊獨立原則也稱為模塊設計的原則:高內(nèi)聚、低耦合。
24.耦合性包括:非直接耦合,數(shù)據(jù)耦合,標記耦合,控制耦合,外部耦合,公共耦合,內(nèi)容耦合
25.內(nèi)聚性包括:巧合內(nèi)聚,邏輯內(nèi)聚,時間性內(nèi)聚,過程內(nèi)聚,通信內(nèi)聚,信息內(nèi)聚,功能內(nèi)聚。
26.數(shù)據(jù)流程圖的定義和作用:數(shù)據(jù)流程圖有兩個特征:抽象性和概括性。抽象性指的是數(shù)據(jù)流程圖把具體的組織機構、工作場所、物質(zhì)流都去掉,只剩下信息和數(shù)據(jù)存儲,流動,使用以及加工情況。
概括性則是指數(shù)據(jù)流圖把系統(tǒng)對各種業(yè)務的處理過程聯(lián)系起來考慮,形成一個總體。27.數(shù)據(jù)流程圖的組成:外部實體、數(shù)據(jù)流、處理、數(shù)據(jù)存儲。
28.面向?qū)ο蟮幕靖拍睿簩ο笫怯擅枋鲈搶ο髮傩缘臄?shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起構成的統(tǒng)一體。
29.對象:它是分裝了數(shù)據(jù)結構及可以施加在這些數(shù)據(jù)結構上的操作的封裝體。30.類:用于表示某些對象的共同特征(屬性和操作),對象是類的實例。31.實例:就是由某個特定類所描述的一個具體對象。32.消息:消息傳遞時對象與外界相互關系的唯一途徑。
33.方法:方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務。
34.屬性:屬性就是類中定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。35.封裝:封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實現(xiàn)細節(jié)。36.繼承:是現(xiàn)實世界中遺傳關系的直接模擬。
37.多態(tài)性:指允許不同類的對象對同一信息做出響應
38.重載:函數(shù)重載是指在同一個作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字
運算重載是指同一個運算符可以施加不同類型的操作數(shù)上面 39.UML是面向?qū)ο蟮姆椒?/p>
40.靜態(tài)結構圖包括類圖和對象圖 41.UML由九種圖構成:
用例圖
類圖
對象圖
活動圖
狀態(tài)圖
序列圖(順序圖)
協(xié)作圖
構件圖(組件圖)
部署圖(配置圖)
42.UML視圖大體分為三大類:
結構分類
動態(tài)行為
模型管理
43.類圖有3種屬性
“+”public(公共)
“#”protected(保護)
“-”private(私有)
操作一樣
44.類之間的關系有用關聯(lián):泛化
聚合依賴
組合
45.用例圖有3種關系:communicates(通信)
extends(延伸)
uses(使用)46.程序設計語言3種結構:順序
判斷
循環(huán)
47.良好的編碼風格:
縮進良好,沒有過多嵌套
變量名,空間名,類名都取直接有意義的字眼
有一些必要注釋
符合思維習慣使用運算符
模塊化 48.軟件測試定義:為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程 49.測試方法
黑盒測試(功能測試)
白盒測試(結構測試)
50.黑盒測試如果已經(jīng)知道了產(chǎn)品應該具有的功能,可以通過測試來檢驗是否每個功能都正常使用 白盒測試:如果知道產(chǎn)品內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明的規(guī)定正常進行
51.軟件測試:
單元測試
集成測試
確認測試
系統(tǒng)測試
52.單元測試也稱為模塊測試或結構測試,通??煞旁诰幊绦蚨?,主要采用邏輯覆蓋技術,目的是檢查模塊是否能實現(xiàn)了詳細設計說明書種規(guī)定的功能和算法 53.單元測試主要發(fā)現(xiàn)編程和詳細設計中產(chǎn)生的錯誤 54.測試一個模塊是需要為該模塊編寫一個驅(qū)動模塊和若干樁模塊。頂層測試無需驅(qū)動模塊,底層測試無需樁模塊
55.集成測試也稱為組裝測試,在單元測試的基礎上把所有模塊組裝成一個系統(tǒng)進行測試。主要測試設計階段產(chǎn)生的錯誤
56.非漸增式集成測試(先測試后組裝)和漸增式集成測試(測試一個組裝一個)57.確認測試目標是檢驗軟件的有效性,在需求分析階段制定
58.白盒測試技術:語句覆蓋
判定覆蓋
條件覆蓋
判定條件覆蓋
條件組合覆蓋
路徑覆蓋
59.黑盒測試技術:等價類劃分,邊值分析,錯誤推測和因果圖等 60.按照測試過程是否在實際應用過程中來分,有靜態(tài)分析與動態(tài)測試
測試方法有分析法(靜態(tài)分析和白盒測試)與非分析法(黑盒法)
61.軟件維護分為以下4類:改正性維護;適應性維護;完善性維護;預防性維護
62.決定軟件可維護性的因素: 可理解性
可測試性
可修改性
可移植性
可重用性 63.基本路徑測試:環(huán)路復雜性的3種計算方法: <1>將環(huán)路復雜度定義為流圖種區(qū)域的數(shù)量
<2>設E為流圖的邊數(shù),N為圖中的節(jié)點數(shù),則定義環(huán)路復雜度
V(G)=E-N+2 <3>設p為流圖G中的制定節(jié)點數(shù),則有V(G)=p+1 64.關鍵路徑測試