软件工程学习笔记(考试版)
?
軟?件?工?程?筆?記
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第一章?
2?一個軟件產(chǎn)品必須由一個完整的配置組成,軟件配置主要包括:程序,數(shù)據(jù)及相關文檔。程序是能夠完成預定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當?shù)奶幚硇畔⒌臄?shù)據(jù)結構;文檔是開發(fā)使用和維護程序所需要的圖文資料。
2?軟件危機的定義:軟件危機是指在計算機軟件開發(fā)、使用、維護過程中遇到的一系列嚴重問題和難題。它包括兩方面:1.如何開發(fā)軟件以滿足對軟件日益增長的要求 2.如何維護數(shù)量不斷膨脹的已有軟件
2?軟件危機的具體表現(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)率提高的速度往往跟不上計算機應用迅速普及的深入的速度
2?軟件危機出現(xiàn)的原因:1. 來自軟件自身的特點。是邏輯部件缺乏可見性;規(guī)
????????????????????????模龐復雜,修改維護困難
2.?軟件開發(fā)與維護的方法不當。忽視需求分析;認為軟件開發(fā)等于程序編寫;輕視軟件維護
3.?供求矛盾將是一個永恒的主題。面對日益增長的軟件需求,人們顯得力不從心
2?軟件工程的定義:軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理。、技術和方法來開發(fā)和維護軟件,把經(jīng)過時間考驗而證明正確的管理技術和當前能夠的到的最好的技術方法結合起來,以經(jīng)濟的開發(fā)出高質(zhì)量的軟件并有效的維護它,這就是軟件工程。
2?IEEE對軟件工程的定義:軟件工程是1把系統(tǒng)的,規(guī)范的,可度量的途徑應用于軟件開發(fā)、運行和維護過程,也就是把工程應用于軟件;2研究1中所提到的途徑。
2?軟件工程的本質(zhì)特征:1. 軟件工程關注于大型程序的構造
2.?軟件工程的中心課題是控制復雜度
3.?軟件經(jīng)常變化
4.?開發(fā)軟件的效率非常重要
5.?和諧的合作是開發(fā)軟件的關鍵
6.?軟件必須有效的支持他的用戶
7.?在軟件工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品
2?消除軟件危機的途徑:1. 對計算機軟件有一個正確的認識(軟件!=程序)
2.?必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應該是一種組織良好、結構嚴密、各類人員協(xié)同配合、共同完成的工程項目
3.?推廣使用在實踐中總結出來的開發(fā)軟件的成功技術和方法
4.?開發(fā)和使用良好的軟件工具
2?軟件工程的基本原理:1. 用分階段的生命周期計劃嚴格管理
2.?堅持進行階段評審
3.?實行嚴格的產(chǎn)品控制
4.?采用現(xiàn)代程序設計技術
5.?結果應該清楚的審查
6.?開發(fā)小組的人員應該少而精
7.?承認不斷改進軟件工程實踐的必要性
2?軟件工程包括(管理)和(技術)兩方面的內(nèi)容
2?軟件工程方法學定義:通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為軟件工程方法學。
2?軟件工程方法學包含三個因素:方法、工具和過程
2?軟件工程方法學分為傳統(tǒng)方法學(生命周期方法學或結構化范型)和面向?qū)ο蠓椒▽W(面向?qū)ο蠓缎?#xff09;
2?面向?qū)ο蠓缎偷囊c:1. 把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)
???????????????????????一的軟件構件
2.?把所有的對象都劃分成類
3.?按照父類(或稱為基類)與子類(或稱為派生類)的關系把若干個相關類組成一個層次結構的系統(tǒng)(也稱為類等級)
4.?對象彼此間僅能通過發(fā)送消息互相聯(lián)系
2?結構化范型的優(yōu)點:把軟件生命周期劃分為若干個階段,每個階段的任務相對獨立,而且比較簡單,便于不同人員的分工協(xié)作,從而降低了整個軟件開發(fā)過程的困難程度
2?結構化范型的缺點:當軟件規(guī)模龐大時,或者對軟件的需求是模糊的或會因為時間而變化時,開發(fā)出的軟件往往不成功,而且維護起來依然很困難
2?面向?qū)ο蠓缎偷膬?yōu)點:降低了軟件產(chǎn)品的復雜性,提高了軟件的可理解性,簡化了軟件的開發(fā)和維護工作,促進了軟件重用
2?軟件工程與軟件工程方法學有何關系:軟件工程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務的框架,他規(guī)定了完成各項任務的工作步驟。而后者,通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學,也稱范型。 ?軟件工程是軟件工程方法學的三個重要組成部分之一。
2?什么是軟件生命周期模型:軟件生命周期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的結構框架。
2?軟件生命周期模型由:軟件定義(問題定義,可行性研究,需求分析);軟件開發(fā)(總體設計,詳細設計,編碼與單元設計,綜合測試);運行維護
2?軟件定義階段要回答的關鍵問題是“要解決的問題是什么”可行性研究階段要回答的關鍵問題是“對于上一個階段所確定的問題有行得通的解決辦法嗎”需求分析階段的任務仍不是解決問題而是準確的確定“為了解決這個問題,目標系統(tǒng)必須做什么”總體設計階段回答的關鍵問題是“概括的說應該怎樣實現(xiàn)目標系統(tǒng)”詳細設計階段把解法具體化回答“應該怎樣具體的實現(xiàn)這個系統(tǒng)呢”編碼和單元測試的關鍵任務時寫出正確的容易理解、容易維護的程序模塊綜合測試的關鍵任務是通過各種類型的測試(及相應的調(diào)試)使軟件達到預定的要求
2?運行維護的實質(zhì)(對比可行性研究實質(zhì)):一次壓縮和簡化了的定義和開發(fā)過程。維護時期不在進一步劃分階段
2?瀑布模型的優(yōu)點:它提供了一個模板,這個模板使得分析、設計、編碼、測試和支持的方法可以在該模板下有一個共同的指導。雖然有不少缺陷,但比在軟件開發(fā)過程中隨意的狀態(tài)要好的多
2?瀑布模型的缺點:1. 實際的項目大部分情況難以按照該模型給出的順序執(zhí)行
???????????????????,而且這種模型的迭代是間接的,這很容易由微小的變化
???????????????????而造成大的混亂
2.?經(jīng)常情況下客戶難以表達真正的需求,而這種模型卻要求如此,這種模型是不歡迎二義性存在的
3.?客戶要等到開發(fā)的晚期才能看到程序運行的測試版本,而在這是發(fā)現(xiàn)大的錯誤時,可能引起客戶的驚慌,而后果也可能是災難性的
2?瀑布模型的特點:1. 階段間具有順序性與依賴性
2.?推遲實現(xiàn)的觀點
3.?質(zhì)量保證的觀點(1>每個階段都必須完成規(guī)定的文檔2每個階段結束前都應該對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題,改正錯誤)
2?快速原型模型優(yōu)點:使用戶能夠感受到實際的系統(tǒng),使開發(fā)者能夠快速的構造出系統(tǒng)的框架
2?快速原型模型的缺點:產(chǎn)品的先天性不足,因為開發(fā)者常常需要做實現(xiàn)上的折中,可能采用不合適的操作系統(tǒng)或程序設計語言,以使原型能夠盡快工作
2?增量模型的優(yōu)點:1. 人員分配靈活,剛開始不用投入大量的人力資源,當核
????????????????????心產(chǎn)品很受歡迎時,可增加人力實現(xiàn)下一個增量
2.?當配備的人員不能在設定的期限內(nèi)完成產(chǎn)品時,他提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)定劑的作用。
2?增量模型的缺點:自始至終開發(fā)者和客戶糾纏在一起,知道完全版本出來,適用于軟件需求不明確,設計方案有一定風險的軟件項目
2?增量模型最佳分解的方法因軟件產(chǎn)品特點和開發(fā)人員的習慣而異。分解時唯一必須遵守的約束條件是,當把新構件集成到現(xiàn)有軟件中時,所形成的產(chǎn)品必須是可測試的
2?螺旋模型的基本思想:使用原型及其他方法來盡量降低風險
2?螺旋模型的優(yōu)點:對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法,開發(fā)者和客戶能夠較好的對待和理解每一個演化級別上的風險
2?螺旋模型的缺點:1 需要相當?shù)娘L險分析評估的專門技術,且成功依賴于這
???????????????????種技術。
2 很明顯,一個大的沒有被發(fā)現(xiàn)的風險問題將會導致問題的發(fā)生,可能導致演化的方法失去控制
3 這種模型相對比較新,應用不廣泛,其功效需要進一步驗證
????適用于內(nèi)部開發(fā)的大規(guī)模軟件項目
2?需求分析階段應該用正式的文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常稱為“規(guī)格說明書”
2?螺旋模型=瀑布模型+增量模型
2?螺旋模型由風險驅(qū)動
2?為什么說噴泉模型較好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?
因為使用面向?qū)ο蠓椒▽W開發(fā)軟件時,各個階段都使用統(tǒng)一的概念和表示符號,因此,整個開發(fā)過程都是吻合一致的,或者說是無縫連接的,這自然就很容易實現(xiàn)各個開發(fā)步驟的反復多次迭代,達到認識的逐步深化,而噴泉模型則很好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。
2?Rational統(tǒng)一過程的優(yōu)點:提高團隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基于組件的體系結構、可視化軟件建模、驗證軟件質(zhì)量及控制軟件變更等方面,針對所有關鍵的開發(fā)活動為每個開發(fā)成員提供了必要的準則。模板和工具指導,并確保全體成員共享相同的知識基礎。他建立了簡潔和清晰的過程結構,為開發(fā)過程提供較大的通用性。
2?Rational統(tǒng)一過程的缺點:RUP只是一個開發(fā)過程,并沒有涵蓋軟件過程的全部內(nèi)容,例如它缺少關于軟件運行和支持等方面的內(nèi)容,此外,他沒有支持多項目的開發(fā)結構,這在一定程度上降低了在開發(fā)組織內(nèi)大范圍實現(xiàn)重用的可能性。
2?Rational統(tǒng)一過程主要適用于“大型的需求不斷變化的復雜軟件系統(tǒng)項目”
2?敏捷過程適用于“商業(yè)競爭環(huán)境下對小型項目提出的有限資源和有限開發(fā)時間的約束”
2?微軟過程適用于“商業(yè)環(huán)境下具有有限資源和有限開發(fā)時間約束的項目的軟件過程模式”
第二章
v?可行性研究的必要性(原因):開發(fā)一個軟件時,需要判斷原定的系統(tǒng)模型和目標是否實現(xiàn),系統(tǒng)完成后所能帶來的效益是否大到值得開發(fā)投資這個系統(tǒng)的程度,如果做不到這些,那么花費在這個工程上的任何時間、人力、軟硬件資源和經(jīng)費都是無謂的浪費。可行新研究的實質(zhì)是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設計的過程,可行性研究的目的是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。
v?可行性研究的目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。
v?可行性研究的目的(不是)解決問題
v?可行性研究的實質(zhì):進行一次大大壓縮簡化了的系統(tǒng)分析與設計的過程,也就是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設計的過程。
v?可行性研究的內(nèi)容:1. 技術可行性(對要開發(fā)項目的功能、性能和限制條件進行分析,確定在現(xiàn)有的資源條件下,技術風險有多大,項目能否實現(xiàn))
2.?經(jīng)濟可行性(進行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項目是否值得投資開發(fā))
3.?操作可行性(系統(tǒng)的操作方式在這個用戶組織內(nèi)是否行得通)
4.?社會可行性
5.?社會效益
6.?法律
v?可行性研究的任務:對以后的行動方針提出建議。
v?可行性研究時間的長短取決于(工程的規(guī)模)
v?可行性研究的成本是預計的工程總成本的(5%~10%)
v?可行性研究的過程:1. 復查系統(tǒng)規(guī)模與目標(確保分析員正在解決的問題時要求他
????????????????????????解決的問題)
2.?研究正在使用的系統(tǒng)
3.?導出新系統(tǒng)的高層邏輯模型
4.?進一步定義問題(根據(jù)邏輯模型 與用戶一起發(fā)現(xiàn)和改正錯誤)
前四步構成了一個循環(huán)
5.?導出和評價供選擇的解法
6.?推薦行動方針
7.?草擬開發(fā)計劃(給出需求分析階段的進度表)
8.?書寫文檔提交審查
v?邏輯模型包括:數(shù)據(jù)流圖和數(shù)據(jù)字典
v?(擬定開發(fā)計劃)階段擬定需求分析進度表
系統(tǒng)流程圖
v?數(shù)據(jù)流圖(DFD)是一種圖形化技術,他描述信息流和數(shù)據(jù)從輸入移動到輸出的過程中經(jīng)受的變化
v?設計數(shù)據(jù)流圖時只需要考慮系統(tǒng)必須完成的基本邏輯功能
v?數(shù)據(jù)流圖中應該描繪出(所有可能的數(shù)據(jù)流向),而(不應該)描繪出現(xiàn)某個數(shù)據(jù)流的條件
v?數(shù)據(jù)流圖中忽略出錯處理
v?星號(*)表示“與”的關系 ?加號(+)表示“或”的關系 ?圓圈加表示互斥的關系
v?數(shù)據(jù)流圖有四個成分:源點或終點 ?處理 數(shù)據(jù)存儲 ?數(shù)據(jù)流
v?數(shù)據(jù)流圖命名是先為(數(shù)據(jù)流)命名再為(處理)命名 如果對數(shù)據(jù)流命名是遇到了困難 可能是對數(shù)據(jù)流圖分解的不恰當
v?數(shù)據(jù)流圖中的處理應不超過(9)個 ?超過時就不易理解 應分層或畫分圖
v?數(shù)據(jù)流圖的作用:1. 交流信息的工具。分析員把他對現(xiàn)有系統(tǒng)或?qū)δ繕讼到y(tǒng)的設想用數(shù)據(jù)流圖描繪出來,供有關人員審查確認
2.?作為分析和設計的工具
?
v?數(shù)據(jù)字典定義:數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合
v?數(shù)據(jù)字典的作用:作為分析階段的工具,在軟件分析和設計的過程中給人提供關于數(shù)據(jù)的描述的信息
v?邏輯模型包括:數(shù)據(jù)流圖 ?數(shù)據(jù)字典
v?數(shù)據(jù)字典的內(nèi)容:1.數(shù)據(jù)流 2.數(shù)據(jù)流分量 3.數(shù)據(jù)存儲 4.處理(對比數(shù)據(jù)流圖四成分)
v?數(shù)據(jù)字典主要由對數(shù)據(jù)的定義組成,因為對數(shù)據(jù)的處理用其他工具(IPO圖或PDL)描述更方便
v?數(shù)據(jù)字典中對數(shù)據(jù)的定義主要包括:一般信息,定義,使用特點,控制信息,分組信息
v?數(shù)據(jù)字典中數(shù)據(jù)定義的實質(zhì)是:對數(shù)據(jù)進行一次自頂向下的分解
v?數(shù)據(jù)元素組成數(shù)據(jù)的方式有四種:順序 ?重復 ?選擇 ?可選
v?= ?等價于/定義為
v?+ ?和/連接兩個分量
v?[ ?] ?選擇一個 ?通常用‘|’隔開供選擇的分量
v?{ ?} ?重復 重復花括號內(nèi)的分量 ?有上下界 表示重復次數(shù)的上下界
v?( ?) ?可選 即圓括號內(nèi)的分量可有可無
v?成本效益分析的目的是:從經(jīng)濟角度分析開發(fā)一個新系統(tǒng)是否劃算,從而幫助客戶組織的負責人正解的做出是否投資于這項開發(fā)工程的決定
v?成本估計技術:代碼行技術 ?任務分解技術 ?自動估計成本技術
v?數(shù)據(jù)流圖與數(shù)據(jù)字典的關系:數(shù)據(jù)流圖與數(shù)據(jù)字典共同構成系統(tǒng)的邏輯模型,沒有數(shù)據(jù)字典,數(shù)據(jù)流圖就不嚴格,沒有數(shù)據(jù)流圖,數(shù)據(jù)字典也難以發(fā)揮作用
第三章
ü?需求分析的目的/意義/必要性:為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論我們把設計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。
ü?需求分析的任務:確定對系統(tǒng)的綜合要求: 1. 功能需求
2.?性能需求
3.?可靠性和可用性需求
4.?出錯處理需求
5.?接口需求
6.?約束
7.?逆向需求
8.?將來可能提出的要求
分析系統(tǒng)的數(shù)據(jù)要求(分析系統(tǒng)的數(shù)據(jù)結構,圖形工具描
述數(shù)據(jù)結構[層次方框圖和Warnier圖],數(shù)據(jù)結構規(guī)范化)
導出系統(tǒng)的邏輯模型(數(shù)據(jù)流圖,實體聯(lián)系圖,狀態(tài)轉(zhuǎn)換
圖,數(shù)據(jù)字典和主要的處理算法描述)
修正系統(tǒng)開發(fā)計劃
ü?與用戶溝通獲取真實需求的的方式:1. 訪談
2.?面向數(shù)據(jù)流自頂向下求精
3.?簡易的應用規(guī)格說明技術
4.?快速建立軟件原型
ü?需求分許是軟件定義的最后一個階段,他的主要任務時準確回答“系統(tǒng)必須做什么”這個問題,不是確定系統(tǒng)怎樣完成他的工作
ü?需求分析結束之前應出具軟件需求規(guī)格說明書,書面形式準確描述軟件的需求
ü?需求分析方法準則:1. 必須理解并描述問題的信息域,根據(jù)這條準則應該建
???????????????????????立數(shù)據(jù)模型
2.?必須定義軟件應完成的功能,這條準則要求建立功能模型
3.?必須描述作為外部事件結果的軟件行為,這條準則要求建立行為模型
4.?必須對描述信息、功能、行為的模型進行分解,用層次的方式展示細節(jié)
ü?出錯處理的定義:在某些情況下,出錯處理指的是當應用系統(tǒng)發(fā)現(xiàn)它自己犯下一個錯誤時所采取的行動。有時也指系統(tǒng)對環(huán)境錯誤的響應
ü?對應用系統(tǒng)本身的檢測應該僅限于系統(tǒng)的關鍵部分,并且應該盡可能的少
ü?接口需求定義:描述應用程序與它的環(huán)境通信的格式
ü?環(huán)境:即使用該系統(tǒng)的外界因素
ü?約束:設計約束或?qū)崿F(xiàn)約束描述在設計或?qū)崿F(xiàn)應用系統(tǒng)是應遵守的限制條件
ü?情景分析:情景分析就是對用戶將來使用目標系統(tǒng)解決某個具體問題的方法和結果進行進行分析
ü?情景分析的用處(好處,意義):1. 他能在某種程度上演示目標系統(tǒng)的行為,
????????????????????????????????從而便于用戶理解,而且還可能進一步揭示
????????????????????????????????出一些分析員目前還不知道的需求
2.?由于情景分析較易為用戶所理解,使用這種技術能保證用戶在需求分析過程中始終扮演一個積極主動的角色
ü?分析系統(tǒng)的數(shù)據(jù)要求通常采用建立數(shù)據(jù)模型的方式
ü?輔助描述數(shù)據(jù)結構,常用的圖形工具有層次方框圖和Warnier圖
ü?需求分析的目標之一就是把數(shù)據(jù)流和數(shù)據(jù)存儲定義到元素級
ü?IPO圖簡明的描述了算法
ü?通過功能分解可以完成對數(shù)據(jù)流圖的細化
ü?簡易的需求規(guī)格說明技術是一個面向團隊的需求收集法
ü?簡明的需求規(guī)格說明技術的優(yōu)點是:開發(fā)者和用戶不分彼此,齊心協(xié)力,密切合作,計時討論并求精,有能導出規(guī)格說明的具體步驟
ü?快速建立軟件原型是最有效最強大的需求分析技術
ü?快速原型的定義:快速原型就是快速建立起來的旨在演示目標系統(tǒng)主要功能的可運行的程序
ü?快速原型的特點:1. 快速
????????????????????2 容易修改
ü?建立快速原型的目的:盡快向用戶提供一個可在計算機上運行的目標系統(tǒng)的模型,以便使用戶和開發(fā)者在目標系統(tǒng)應該“做什么”這個問題上盡可能快的達成共識
ü?快速的構建和修改原型通常使用下述3種方法和工具:
1. 第四代技術
???????????????????2 可重用的軟件構件
???????????????????3 形式化規(guī)格說明和原型環(huán)境
?????????????????????(形式化說明技術第四章講)
ü?模型的定義:為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖形符號和組織這些符號的規(guī)則組成
ü?需求分析階段應該建立三種模型:根據(jù)需求分析方法準則
1.?數(shù)據(jù)模型(實體聯(lián)系模型)
2.?功能模型(數(shù)據(jù)流圖)
3.?行為模型(狀態(tài)圖即狀態(tài)轉(zhuǎn)換圖)
ü?形式化方法的必要性:1. 為了消除用自然語言書寫的軟件規(guī)格說明書中可能
???????????????????????存在的不一致性、歧義、含糊、不完整及抽象層次混
???????????????????????亂等問題。
???????????????????????2 在需求驗證階段,對于規(guī)模龐大的系統(tǒng),方便人工
審查需求一致性
ü?數(shù)據(jù)對象是:對軟件必須理解的復合信息的抽象,僅有單個值的事物不是數(shù)據(jù)對象
ü?復合信息:具有一系列不同性質(zhì)或?qū)傩缘氖挛?/span>
ü?數(shù)據(jù)對象只封裝了數(shù)據(jù)而沒有對施加于數(shù)據(jù)上的操作的引用。區(qū)別于面向?qū)ο蠓缎褪菍?shù)據(jù)與操作封裝在一起
ü?ER圖中包含了“實體,關系和屬性”3種基本成分。矩形框代表實體,圓弧矩形代表屬性
ü?ER模型的優(yōu)點:1. ER模型比較接近人的習慣思維方式
??????????????????2 ER模型使用簡單的圖形符號表達系統(tǒng)分析員對問題域的
????????????????????理解,不熟悉計算機技術的用戶也能理解它
??????????????????3 ER模型可以作為用戶與分析員之間有效的交流工具
ü?數(shù)據(jù)規(guī)范化的目的:減少數(shù)據(jù)冗余,避免出現(xiàn)插入異常或刪除異常,簡化修改數(shù)據(jù)的過程
ü?范式級別越高隨之而來的一些列問題:1. 存儲同樣的數(shù)據(jù)就需要分解成更多
???????????????????????????????????????的表,因此“存儲自身”的過程也
???????????????????????????????????????就越復雜
?????2 數(shù)據(jù)的存儲結構與基于問題域的結
???????構件間的匹配程度也隨之下降,因
???????此需求變化時數(shù)據(jù)源的穩(wěn)定性較差
?????3 范式級別提高需要訪問的表增多,因此性能將下降
ü?實用角度來看大多數(shù)場合實用第三范式
ü?狀態(tài)轉(zhuǎn)換圖的定義:狀態(tài)轉(zhuǎn)換圖(簡稱狀態(tài)圖)通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來表示系統(tǒng)的行為。此外,狀態(tài)圖還指明了作為特定事件的結果系統(tǒng)將做哪些動作
ü?狀態(tài):狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,一個狀態(tài)代表系統(tǒng)的一種行為模式
ü?事件:在某個特定時刻發(fā)生的事情,他是引起系統(tǒng)做動作或從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)的外界事物的抽象,簡言之就是引起系統(tǒng)做動作或裝換狀態(tài)的控制信息
ü?狀態(tài)圖三部分,上面是狀態(tài)的名稱,中間是狀態(tài)變量的名字和值,下面是活動表
ü?Warnier圖與層次方框圖的區(qū)別:前者可以指出一類信息或一個信息元素是重復出現(xiàn)的,也可以表示特定信息在某一類信息中是有條件的出現(xiàn)的。
ü?IPO圖的好處:方便的描述輸入數(shù)據(jù),對數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關系;軟件設計階段可以進一步補充修正這些圖,作為設計階段的文檔
ü?軟件需求驗證的四方面:1 一致性。所有需求必須是一致的,任何一條需求
??????????????????????????????????不能和其他需求相互矛盾
?????????????????????????2 完整性。需求必須是完整的,需求規(guī)格說明是必須包含用戶需要的每一個功能
?????????????????????????3 現(xiàn)實性。制定的需求必須是在現(xiàn)有的硬件技術和軟件技術基本上可以實現(xiàn)的
?????????????????????????4 有效性。必須證明需求是正確有效的,確實能解決用戶面對的問題
ü?需求驗證的方法:1 一致性。人工技術審查
???????????????????2 現(xiàn)實性。仿真或性能模擬技術
???????????????????3 完整性和有效性。請用戶試用(成本高);使用原型系統(tǒng)
ü?需求分析軟件工具的要求:1. 必須有形式化的語法或表
???????????????????????????2 使用這個軟件工具能夠?qū)С鲈敿毜奈臋n
???????????????????????????3 必須提供分析(測試)規(guī)格說明書的不一致性
????????????????????????????性和冗余性的手段,并且能夠產(chǎn)生一組報告指明
????????????????????????????對完整性分析的結果
???????????????????????????4 能夠改進通信狀況
ü?FSL/PSA系統(tǒng)的主要優(yōu)點:它改進了文檔質(zhì)量,能保證文檔具有完整性、一致性和無二義性,從而可以減少管理和維護的費用。數(shù)據(jù)存放在數(shù)據(jù)庫中。便于增加、刪除和更改,這也是他的一個優(yōu)點。
第五章
2?總體設計的必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。
2?總體設計的過程:(主要由兩個階段組成:系統(tǒng)設計階段,確定系統(tǒng)的具體實現(xiàn)方案;
????????????????????結構設計階段,確定軟件結構)
1.?設想供選擇的方案(從數(shù)據(jù)流圖出發(fā))
2.?選取合理的方案(低成本,中成本,高成本)(對于每一種方案應準備系統(tǒng)流程圖,組成系統(tǒng)的物理元素清單,成本效益分析,實現(xiàn)這個系統(tǒng)的進度計劃)
3.?推薦最佳方案(第一階段至此完成)
4.?功能分解
5.?設計軟件結構
6.?設計數(shù)據(jù)庫
7.?制定測試計劃
8.?書寫文檔(系統(tǒng)說明、用戶手冊、測試計劃、詳細的實現(xiàn)計劃、數(shù)據(jù)庫設計結果)
9.?審查和復查
2?軟件設計過程中應該遵循的基本原理:1. 模塊化。模塊是由邊界元素限定的相鄰程序
??????????????????????????????????????元素(例如,數(shù)據(jù)說明,可執(zhí)行的語句)的序列,而且有一個總體標識符代表它。模塊是構成程序的基本構件。模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求
2.?抽象。抽象出事物的本質(zhì)特征而暫時不考慮他們的細節(jié),一個復雜的動態(tài)系統(tǒng)首先可以用一些高級的抽象概念構造和理解,這些高級的概念又可以用一些低級的概念構造和理解。
3.?逐步求精。為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。事實上可以把逐步求精看作是一項把一個時期內(nèi)必須解決的種種問題按優(yōu)先級排序的技術
4.?信息隱藏和局部化。所謂局部化是指把一些關系密切的軟件元素物理的放的彼此靠近。所謂隱藏不是隱藏關于模塊的一切信息而是模塊的實現(xiàn)細節(jié)
5.?模塊獨立開發(fā)具有獨立功能而且和其他模塊之間沒有過多的交互作用的模塊就可以做到模塊獨立
2?模塊化的優(yōu)點:1. 可以使軟件結構清晰,不僅容易設計也容易閱讀和理解 2. 使軟件容易測試和調(diào)試,因而有助于提高軟件的可靠性 3. 能夠提高軟件的可修改性 4. 有助于軟件開發(fā)工程的組織管理
2?抽象與求精的聯(lián)系與區(qū)別:抽象與求精是一對互補的概念。抽象使得設計者能夠說明過程和數(shù)據(jù),同時卻忽略了底層細節(jié)。事實上可以把抽象看做是一種通過忽略多余的細節(jié)同時強調(diào)有關的細節(jié)而實現(xiàn)逐步求精的方法。求精則幫助設計者在設計過程中揭示出底層細節(jié)。
2?模塊獨立的好處(重要性):第一,有效的模塊化(即具有獨立的模塊)的軟件比較容易開發(fā)出來。這是由于能夠分割功能而且接口可以簡化,當許多人分工合作開發(fā)同一個軟件時,這個優(yōu)點尤其重要。第二,獨立的模塊比較容易測試和維護。這是因為相對說來,修改設計和程序需要的工作量比較小,錯誤傳播范圍小,需要擴充功能時能夠“插入”模塊。
2?耦合和內(nèi)聚的區(qū)別與聯(lián)系:是模塊獨立程度的兩個標準度量。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結合的緊密程度。內(nèi)聚和耦合是緊密相關的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合
2?設計時應該力求做到低耦合和高內(nèi)聚
2?耦合的概念:耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度。
2?數(shù)據(jù)耦合:兩個模塊彼此間通過參數(shù)交換信息而且交換的信息僅僅是數(shù)據(jù)
2?控制耦合:兩個模塊間傳遞的信息中有控制信息出現(xiàn)時,這種耦合稱為控制耦合
2?控制耦合一般可以通過適當分解用數(shù)據(jù)耦合代替它
2?特征耦合:當把整個數(shù)據(jù)結構作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分數(shù)據(jù)元素時,就出現(xiàn)了特征耦合
2?公共環(huán)境耦合:當兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用時,他們之間的耦合稱為公共環(huán)境耦合
2?內(nèi)容耦合:一個模塊可以直接調(diào)用另一模塊中的數(shù)據(jù),或者允許一個模塊直接轉(zhuǎn)移到另一個模塊中去。
2?耦合的使用原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合
2?內(nèi)聚的概念:內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。
2?偶然內(nèi)聚:一個模塊完成一組任務,這些任務間彼此即使有關系,關系也是很松散的,就叫做偶然內(nèi)聚。(低內(nèi)聚) ?出現(xiàn)錯誤的概率最高
2?如果一個模塊完成的任務在邏輯上屬于相同或相似的一類,則稱為邏輯內(nèi)聚(低內(nèi)聚)。 修改較困難
2?時間內(nèi)聚:一個模塊包含的任務必須在同一段時間內(nèi)執(zhí)行(低內(nèi)聚)
2?過程內(nèi)聚:一個模塊內(nèi)的處理元素是相關的,而且必須以特定次序執(zhí)行,則稱為過程內(nèi)聚(中內(nèi)聚)
2?通信內(nèi)聚:模塊中所有元素都使用同一個輸入數(shù)據(jù)和產(chǎn)生同一個輸出數(shù)據(jù),則稱為通信內(nèi)聚(中內(nèi)聚)
2?順序內(nèi)聚:一個模塊內(nèi)的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行,則稱為順序內(nèi)聚。(高內(nèi)聚)
2?功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個整體,完成一個單一功能,則稱為功能內(nèi)聚(最高程度的內(nèi)聚)
2?軟件設計的啟發(fā)式規(guī)則:1. 改進軟件結構提高模塊獨立性
2.?模塊規(guī)模應該適中
3.?深度、寬度、扇出和扇入都應適應
4.?模塊的作用域應該在控制域之內(nèi)
5.?力爭降低模塊接口的復雜程度
6.?設計單入口單出口的模塊
7.?模塊功能應該可以預測
2?一個設計的好的點醒系統(tǒng)的平均扇出應該是3~4 ?上限應該是5~9
2?啟發(fā)式規(guī)則只是經(jīng)驗之談,既不是總體設計的目標也不是應該遵循的普遍原理
2?在結構圖中,箭頭表示傳遞的信息,尾部是空心圓表示傳遞的是數(shù)據(jù),實心圓表示傳遞的是控制信息
2?面向數(shù)據(jù)流的設計方法的目標是給出設計軟件結構的一個系統(tǒng)化的途徑
2?面向數(shù)據(jù)流的設計方法:把信息流映射成軟件結構,信息流的類型決定了映射的方法
2?變換流:信息沿輸入通路進入系統(tǒng),同時由外部形勢變換成內(nèi)部形勢,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理之后再沿輸出通路變換成外部形勢離開軟件系統(tǒng)
2?事務流完成的任務:1. 接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務)
2.?分析每個事務以確定它的類型
3.?根據(jù)事務類型選取一條活動通路
2?變換分析的步驟:(把具有變換流特點的數(shù)據(jù)流圖按預先確定的模式映射成軟件結構)
1. 復查基本數(shù)據(jù)模型
2.?復查并精化數(shù)據(jù)流圖
3.?確定數(shù)據(jù)流圖具有變換特性還是事務特性
4.?確定輸入流和輸出流的邊界,從而孤立出變換中心
5.?完成第一級分解
6.?完成第二級分解
7.?使用設計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結構進一步精化
?
2?變換分析與事務分析的選擇:如果數(shù)據(jù)流不具有顯著的事務特點,最好使用變換分析;反之,如果具有明顯的事務中心,則應該采用事務分析技術。但是,機械地遵循變換分析或事務分析的映射規(guī)則,很可能會得到一些不必要的控制模塊,如果它們確實用處不大,那么可以而且應該把它們合并。反之,如果一個控制模塊功能過分復雜,則應該分解為兩個或多個控制模塊,或者增加中間層次的控制模塊。
第六章
v?詳細設計階段的任務:定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序。
v?衡量程序的質(zhì)量不僅要看他的邏輯是否正確,性能是否滿足要求,更主要的是看他是否容易閱讀和理解(結構程序設計技術)
v?只用三種基本的控制結構就可以實現(xiàn)任何單入口單出口的程序(順序)(選擇)(循環(huán))
v?結構程序設計的定義:結構程序設計是盡可能少用GO TO語句的程序設計方法。最好僅在檢測出錯誤時才使用GO TO語句,而且應該總是使用前向GO TO語句。
v?經(jīng)典的結構程序設計:順序、選擇、循環(huán)
擴展的結構程序設計:并且允許do-case、do-until
修正的結構程序設計:并且允許leave、break
v?人機界面設計遇到的問題:1. 系統(tǒng)響應時間
2.?用戶幫助設施
3.?出錯信息處理
4.?命令交互
v?響應時間:從用戶完成某個控制動作到軟件給出某個預期的響應之間的這段時間
v?響應時間的兩個基本屬性:長度和易變性
v?過程設計工具可以分為(圖像)(表格)(語言)
v?程序流程圖的主要缺點:1. 程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員
??????????????????????過早地考慮程序的控制流程,而不去考慮程序的全局結構。
2.?程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結構程序設計的精神,隨意轉(zhuǎn)移控制。
3.?程序流程圖不易表示數(shù)據(jù)結構。
v?盒圖的特點:1. 功能域(即一個特定控制結構的作用域)明確,可以從盒圖上一眼就看出
??????????????????來
2.?不可能任意轉(zhuǎn)移控制
3.?很容易確定局部和全程數(shù)據(jù)的作用域
4.?很容易表現(xiàn)嵌套關系,也可以表示模塊的層次結構
v?PAD圖的優(yōu)點:1. 使用表示結構化控制結構的PAD符號所設計出來的程序必然是結構
???????????????????化程序。
2.?PAD圖所描繪的程序結構十分清晰。圖中最左面的豎線是程序的主線,即第一層結構。隨著程序?qū)哟蔚脑黾?#xff0c;PAD圖逐漸向右延伸,每增加一個層次,圖形向右擴展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。
3.?用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結構的圖形,程序從圖中最左豎線上端的結點開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結點。
4.?容易將PAD圖轉(zhuǎn)換成高級語言源程序,這種轉(zhuǎn)換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。
v?判定表的優(yōu)點:清晰的表示復雜的條件組合與應做的動作之間的對應關系
v?判定表的缺點:不適合作為一種通用的設計工具,沒有一種簡單的方法使它能同時清晰的表示順序和重復等處理特性
v?以上為圖或表的形式來描述過程設計,語言描述過程設計的是“過程設計語言”
v?過程設計語言(PDL)的特點:1. 關鍵字的固定語法,它提供了結構化控制結構、數(shù)據(jù)
???????????????????????????????說明和模塊化的特點。
2.?自然語言的自由語法,它描述處理特點。
3.?數(shù)據(jù)說明的手段。應該既包括簡單的數(shù)據(jù)結構(例如純量和數(shù)組),又包括復雜的數(shù)據(jù)結構(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結構)。
4.?模塊定義和調(diào)用的技術,應該提供各種接口描述模式。
v?過程設計語言的優(yōu)點:1. 可以作為注釋直接插在源程序中間。這樣做能促使維護人員
在修改程序代碼的同時也相應地修改PDL注釋,因此有助于保持
文檔和程序的一致性,提高了文檔的質(zhì)量。
2.?可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完
????????????????????????成PDL的書寫和編輯工作。
3.?已經(jīng)有自動處理程序存在,而且可以自動由PDL生成程序代
????????????????????????碼。
v?PDL的缺點是不如圖形工具形象直觀,描述復雜的條件組合與動作間的對應關系時,不如判定表清晰簡單。
v?面向數(shù)據(jù)結構設計方法的最終目標是得出對程序處理過程的描述
v?Jackson圖(面向數(shù)據(jù)結構的設計方法)(選擇)(順序)(循環(huán))
v?Jackson程序設計方法的步驟:1. 分析并確定輸入數(shù)據(jù)與輸出數(shù)據(jù)的邏輯結構,并用Jackson圖描繪這些數(shù)據(jù)結構2. 找出輸入數(shù)據(jù)結構與輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元3. 從描繪數(shù)據(jù)結構的Jackson圖導出描繪程序結構的Jackson圖4. 列出所有操作和條件,并且把他們分配到程序結構圖的適當位置5. 用偽碼表示程序
v?程序復雜程度定量度量的必要性:把程序的復雜程度乘以適當常數(shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結果可以用來比較兩個不同的設計或兩個不同算法的優(yōu)劣;程序的定量的復雜程度可以作為模塊規(guī)模的精確限度
v?McCabe計算環(huán)形復雜度:V(g) = E-N+2 ???E是邊數(shù) N是點數(shù)
v?*** ??環(huán)形復雜度的上限是10
v?Halstead預測程序長度 H = n1*log2(n1)+n2*log2(n2)
????????????預測程序中包含錯誤個數(shù) ?E = N*log2(n1+n2)/3000
?????其中n1表示不同運算符的個數(shù) n2表示不同操作數(shù)的個數(shù)
?????????N1表示運算符出現(xiàn)的總次數(shù) ?N2表示操作數(shù)出現(xiàn)的總次數(shù) ?N=N1+N2
第七章
n?實現(xiàn)包括編碼和測試
n?程序的質(zhì)量主要取決于(軟件設計的質(zhì)量)
n?測試的必要性:如果在軟件投入生產(chǎn)性運行之前沒有發(fā)現(xiàn)并糾正軟件中的大部分差錯,則這些差錯遲早會在生產(chǎn)過程中暴露出來,那是,不僅改正這些錯誤的代價更高,而且往往會造成很惡劣的后果
n?測試的目的:盡可能多的發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用
n?判斷題:測試階段的任務是發(fā)現(xiàn)錯誤?x ?并改正錯誤
n?選擇程序設計語言的主要實用標準:1. 系統(tǒng)用戶的要求
2.?可以是使用的編譯程序
3.?可以得到的軟件工具
4.?工程規(guī)模
5.?程序員的知識
6.?軟件可移植性要求
7.?軟件的應用領域
n?源代碼編寫規(guī)則:1. 程序內(nèi)部的文檔。程序內(nèi)部應包含必要的標識符、適當?shù)淖⑨尅?/span>
????????????????????和程序的視覺組織等
2.?良好的數(shù)據(jù)說明風格。數(shù)據(jù)說明的次序應該標準化
3.?簡單而直接的語句構造
4.?輸入輸出具有規(guī)則
5.?具有較高的效率。效率主要是指處理機時間和存儲器容量兩個方面
n?軟件應該像對他要求的那樣有效,而不應該如同人類可以做到的那樣有效
n?效率是靠好設計來提高的,不要犧牲程序的清晰性和可讀性來提高效率
n?軟件測試的準則:1. 所有測試都應該能追溯到用戶需求
2.?應該遠在測試開始之前就制定出測試計劃
3.?把Pareto原理應用到軟件測試中
4.?應該從小規(guī)模測試開始,并逐步進行大規(guī)模測試
5.?窮舉測試是不可能的
6.?為了達到最佳的測試效果,應該由獨立的第三方從事測試工作
7.?程序修改后要回歸測試
8.?應長期保留測試用例,直至系統(tǒng)廢棄
n?測試分為靜態(tài)測試和動態(tài)測試,區(qū)別在于是否實際運行軟件,靜態(tài)分為人為和計算機輔助,動態(tài)分為黑盒白盒
n?黑盒測試的又稱功能測試
n?白盒測試又稱結構測試
n?測試的步驟:1. 模塊測試。把每個模塊當做一個單獨的實體來測試
2.?子系統(tǒng)測試。把經(jīng)過單元測試的模塊當做一個子系統(tǒng)來測試,主要測試模塊間的協(xié)調(diào)和通信,因此這個階段著重測試接口
3.?系統(tǒng)測試。發(fā)現(xiàn)軟件設計中的錯誤或需求說明中的錯誤
4.?驗收測試。需要用戶參與,往往發(fā)現(xiàn)的是需求說明書中的錯誤
5.?平行運行。同時運行新舊系統(tǒng)
n?模塊測試是對每個單獨的模塊,分別采用黑盒和白盒測試技術,測試他的功能是否正確,檢查模塊控制結構中的特定路徑并發(fā)現(xiàn)最大數(shù)量的錯誤
n?模塊測試的特點是主要應用白盒測試技術,并且多個模塊可以并發(fā)的進行
n?驗收測試又稱確認測試,目的是:驗證系統(tǒng)確實能滿足用戶的需要
n?平行運行的目的:1. 可以在準生產(chǎn)環(huán)境下運行新系統(tǒng)而又不冒風險
2.?用戶能有一段熟悉新系統(tǒng)的時間
3.?可以驗證用戶指南和使用手冊之類的文檔
4.?能夠以準生產(chǎn)模式對新系統(tǒng)進行全負荷測試,可以用測試結果驗證性能指標
n?單元測試的重點:1. 模塊測試2. 局部數(shù)據(jù)結構 3. 重要的執(zhí)行通路 4. 出錯處理通路 5. 邊界條件
n?集成測試是測試和組裝軟件的系統(tǒng)化技術,其主要目標是發(fā)現(xiàn)與接口有關的問題。其特點是可能發(fā)生接口問題
n?集成測試的方法:1. 非漸增式測試方法:先分別測試每個模塊,再將所有的模塊結合
????????????????????在一起
2.?漸增式測試方法:一次增加進來一個待測試的模塊(自底向上,自頂向下)
n?自頂向下集成的優(yōu)點:不需要測試驅(qū)動程序,能夠在測試階段的早期實現(xiàn)并驗證程序的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯誤
n?自頂向下集成的缺點:需要存根程序,可能遇到與此相聯(lián)系的測試困難,底層關鍵模塊中的錯誤發(fā)現(xiàn)較晚,而且用這種方法在早期不能充分展開人力
n?回歸測試:重新執(zhí)行已經(jīng)做過的測試的某個子集,以保證增加進的新的模塊沒有帶來非預期的副作用
n?回歸測試的內(nèi)容:1.檢驗軟件功能的代表性測試用例 2. 專門針對可能受影響的軟件功能的附加測試 3. 針對被修改過的軟件成分的測試
n?確認與驗證的區(qū)別:驗證指的是保證軟件正確的實現(xiàn)了某個特定要求的一系列活動;確認指的是為了保證軟件確實滿足了用戶需求而進行的一系列活動
n?軟件有效性的定義:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的
n?確認測試的內(nèi)容:1.復查軟件配置 2. 檢驗使用手冊的完整性與正確性 3. 檢測軟件是否與需求一致 4. 保證軟件能滿足所有功能要求 5. 文檔資料是準確完整的 6. 軟件能滿足其他預定的要求(安全性、可移植性、兼容性。可維護性)
n?確認測試基本使用黑盒測試法
n?軟件配置復查的目的:保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護所必須的細節(jié)而且已經(jīng)編好目錄
n?白盒測試技術:邏輯覆蓋技術與控制結構測試技術(基本路徑測試、條件測試和循環(huán)測試)
n?邏輯覆蓋技術:1. 語句覆蓋。每個語句應該執(zhí)行一次
??????????????????2 判定覆蓋。不僅每個語句至少執(zhí)行一次,而且每個判定的每種可能結
???????????????????果也應該至少執(zhí)行一次
??????????????????3 條件覆蓋。不僅每個語句至少執(zhí)行一次,判定表達中每個條件都取到各種可能得結果
??????????????????4 判定/條件覆蓋。同時滿足兩種覆蓋
??????????????????5 條件組合覆蓋。每個判定表達式中條件的各種可能組合都至少出現(xiàn)一次
??????????????????6 點覆蓋 7 邊覆蓋 8 路徑覆蓋
n?基本路徑測試的步驟:1.根據(jù)過程結構畫出相應的流圖
????2.計算流圖的環(huán)形復雜度
3.確定線性獨立路徑的基本集合
4.設計可強制執(zhí)行基本集合中的每條路徑的測試用例
n?條件測試錯誤的類型:1.布爾算符錯 2.布爾變量錯 3.布爾括弧錯 4.關系算符錯 5.算數(shù)表達式錯
n?條件測試策略的優(yōu)點:1.容易度量條件的測試覆蓋率 2.程序內(nèi)條件的測試覆蓋率可指導附加測試的設計
n?條件測試的目的:不僅是檢驗程序條件中的錯誤,而且是檢驗程序中的其他錯誤
n?循環(huán)測試的三種辦法:1. 簡單循環(huán) 2. 嵌套循環(huán) ?3. 串接循環(huán)
n?黑盒測試法:把程序看成一個黑盒子,完全不考慮程序的內(nèi)部結構和處理過程。黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如,數(shù)據(jù)庫或文件)的完整性。
n?黑盒測試主要用于測試的后期 白盒測試主要用于早期
n?黑盒測試力圖發(fā)現(xiàn)下述類型的錯誤:
①功能不正確或遺漏了功能;
②界面錯誤;
③數(shù)據(jù)結構錯誤或外部數(shù)據(jù)庫訪問錯誤;
④性能錯誤;
⑤初始化和終止錯誤。
n?黑盒測試法技術:1.等價劃分 2. 邊界值分析 3.錯誤推測
n?等價類劃分:等價類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。
n?等價類劃分先要劃分等價類,接下來一次測試有效等價類與無效等價類
n?錯誤推測法的基本想法是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試方案。
n?調(diào)試:調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程
n?調(diào)試途徑:1. 蠻干法 2. 回溯法 3. 原因排除法
n?軟件可靠性:軟件可靠性是指程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功的運行的概率
n?軟件可用性:程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功的運行的概率
n?可靠性與可用性的區(qū)別:可靠性是指一段時間間隔內(nèi)程序沒有失效,可用性意味著這段時間內(nèi)程序正確運行
n?MYTTF = 平均無故障時間 ?Et 測試之前程序中錯誤總量 ?Ir程序長度 Ec x時間內(nèi)改正的錯誤
n?MTTF = 1/K*(Et/Ir-Ec/Ir) ?**是減號
第八章
ü?軟件維護的基本任務(作用)是保證軟件在一個相當長的時期能夠正常運行
ü?軟件維護:在軟件已經(jīng)交付使用之后為了改正錯誤或者滿足新的需要而修改軟件的過程
ü?軟件維護的本質(zhì):修改和壓縮了的軟件定義和開發(fā)過程,而且事實上遠在提出一項維護要求之前,與軟件維護有關的工作就已經(jīng)開始了
ü?軟件維護的分類:1. 改正性維護。診斷和改正錯誤
2.?適應性維護。為了和變化了的環(huán)境適當?shù)呐浜隙M行的修改軟件
????????????????????的活動
3.?完善性維護。增加新功能或修改已有功能
4.?預防性維護。給未來的改進奠定良好的基礎
ü?軟件維護的特點:1. 結構化維護與非結構化維護差別巨大
2.?維護的代價高昂
3.?維護的問題很多
ü?維護過程的問題:1. 理解別人寫的程序通常非常困難
2.?需要維護的軟件往往沒有合格的文檔,或者文檔資料顯著不足
3.?當要求對軟件進行維護時,不能指望由開發(fā)人員給人們自習說明軟件
4.?絕大多數(shù)軟件在設計時沒有考慮將來的修改
5.?軟件維護不是一項吸引人的工作
ü?軟件維護的過程:1. 維護組織
2.?維護報告
3.?維護的事務流
4.?保存維護記錄
5.?評價維護活動
ü?決定軟件可維護性的因素:1. 可理解性
2.?可測試性
3.?可修改性
4.?可移植性
5.?可重用性
ü?提高可維護行的方法:建立明確的軟件質(zhì)量目標和優(yōu)先級
使用提高軟件質(zhì)量的技術和工具
進行明確的質(zhì)量保證審查
選擇可維護的程序設計語言
改進程序的文檔
ü?軟件文檔分為系統(tǒng)文檔與用戶文檔
ü?軟件文檔的要求:1. 必須描述如何使用這個系統(tǒng)
2.?必須描述怎樣安裝和管理這個系統(tǒng)
3.?必須描述系統(tǒng)需求和設計
4.?必須描述系統(tǒng)的實現(xiàn)與測試,以便使系統(tǒng)成為可維護的
ü?用戶文檔五方面內(nèi)容:1. 功能描述 2. 安裝文檔 3. 使用手冊 4. 參考手冊 5. 操作員指南
ü?開發(fā)與維護的關系:
?許多軟件的維護十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開發(fā)過程不注意采用好的方法,忽視程序設計風格等。
ü?軟件維護與軟件工程的關系:軟件維護時軟件工程的最后一個階段,軟件工程的主要目的就是提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統(tǒng)的成本。軟件維護決定了未來軟件工程的可靠性與可維護性。
ü?在軟件開發(fā)過程中應該采取哪些措施來提高軟件的可維護性
???在每個階段結束前的技術復審和管理復查中,應該著重對可維護性進行復審,應該對將來要改進的部分和可能要改的部分加以注意指明,應該討論軟件的可移植性問題,考慮可能影響軟件維護的系統(tǒng)界面。在設計和編碼過程中應該盡量使用可重用的軟件構件,每個測試步驟都可以暗示在軟件正式交付使用之前,程序中可能需要做預防性維護的部分。在完成每項維護工作之后,都應該對軟件維護本身仔細認真的復審。
ü?需求分析的目的/意義/必要性:為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論我們把設計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。
ü?需求分析的任務:確定對系統(tǒng)的綜合要求: 1. 功能需求
2.?性能需求
3.?可靠性和可用性需求
4.?出錯處理需求
5.?接口需求
6.?約束
7.?逆向需求
8.?將來可能提出的要求
分析系統(tǒng)的數(shù)據(jù)要求(分析系統(tǒng)的數(shù)據(jù)結構,圖形工具描
述數(shù)據(jù)結構[層次方框圖和Warnier圖],數(shù)據(jù)結構規(guī)范化)
導出系統(tǒng)的邏輯模型(數(shù)據(jù)流圖,實體聯(lián)系圖,狀態(tài)轉(zhuǎn)換
圖,數(shù)據(jù)字典和主要的處理算法描述)
修正系統(tǒng)開發(fā)計劃
ü?與用戶溝通獲取真實需求的的方式:1. 訪談
2.?面向數(shù)據(jù)流自頂向下求精
3.?簡易的應用規(guī)格說明技術
4.?快速建立軟件原型
ü?需求分許是軟件定義的最后一個階段,他的主要任務時準確回答“系統(tǒng)必須做什么”這個問題,不是確定系統(tǒng)怎樣完成他的工作
ü?需求分析結束之前應出具軟件需求規(guī)格說明書,書面形式準確描述軟件的需求
轉(zhuǎn)載于:https://www.cnblogs.com/Flower-Z/p/9026583.html
總結
以上是生活随笔為你收集整理的软件工程学习笔记(考试版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C艹 指针和const的关系和注意事项(
- 下一篇: Iptables详解+实例