软件工程导论知识点总结
教材
《軟件工程導(dǎo)論(第6版)》張海藩 牟永敏 編著;清華大學(xué)出版社
課程目標(biāo)
第一講
軟件的定義
軟件不是程序,而是程序、數(shù)據(jù)以及開發(fā)、使用和維護(hù)程序需要的所有文檔的完整集合。
- 程序:是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列。
- 數(shù)據(jù):是使程序能夠適當(dāng)處理信息的數(shù)據(jù)結(jié)構(gòu)。
- 文檔:是開發(fā)、使用和維護(hù)程序所需要的圖文資料。
=軟件的特點(diǎn)
- 邏輯產(chǎn)品,具有抽象性;其生產(chǎn)主要是開發(fā)研制;不存在磨損、消耗和老化等問題;是腦力勞動,開發(fā)效率低;成本昂貴,要進(jìn)行質(zhì)量控制;對硬件和環(huán)境的依賴性,提出可以執(zhí)行性問題;是復(fù)雜的。
軟件分類
不同的分類基準(zhǔn):具體介紹基于功能的不同分類。
- 系統(tǒng)軟件:居于計(jì)算機(jī)系統(tǒng)中最靠近硬件的一層,例如編譯程序和操作系統(tǒng)。
- 支撐軟件:支撐軟件的開發(fā)、維護(hù)與運(yùn)行的軟件。
- 應(yīng)用軟件:特定應(yīng)用領(lǐng)域?qū)S玫能浖?/li>
=軟件開發(fā)的幾個(gè)時(shí)期
- 程序設(shè)計(jì)完全憑程序員的經(jīng)驗(yàn)和技藝以個(gè)人或小組方式進(jìn)行。
- 多人分工合作開始出現(xiàn),需要對項(xiàng)目進(jìn)行管理開發(fā)。
- 軟件的規(guī)模與復(fù)雜性也不斷的增加。
- 軟件質(zhì)量差,可靠性難以保證;成本難以控制;可維護(hù)性差。
軟件危機(jī)
- 如何開發(fā)軟件,以滿足社會對軟件日益增長的需求。
- 如何更有效地維護(hù)數(shù)量不斷膨脹的已有軟件。
- 對軟件開發(fā)成本和進(jìn)度的估計(jì)不準(zhǔn)確;用戶不滿意;質(zhì)量不可靠;不可維護(hù);缺文檔資料;成本漸增;開發(fā)生產(chǎn)速度跟不上計(jì)算機(jī)應(yīng)用普及深入趨勢。
- 軟件本身問題有關(guān):管理和控制軟件開發(fā)過程相當(dāng)困難;測試階段沒能檢測出全部錯(cuò)誤;規(guī)模龐大,程序復(fù)雜性隨規(guī)模增加指數(shù)上升;對用戶要求認(rèn)識不夠,匆忙編寫;實(shí)踐中部分采用了錯(cuò)誤的方法技術(shù);忽視軟件需求分析的重要性。
- 軟件開發(fā)與維護(hù)的方法不正確有關(guān):忽視軟件配置其余成分;定義時(shí)期未正確全面理解用戶需求;階段越晚進(jìn)行修改付出代價(jià)越大。
- 首先正確認(rèn)識軟件;各類人員協(xié)同配合完成;使用成功案例的技術(shù)和方法;開發(fā)使用更好的軟件工具。
軟件工程
通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合成為方法學(xué)(范型)。
- 傳統(tǒng)方法學(xué)(結(jié)構(gòu)化范型)
- 基本概念:采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù)。
- 特點(diǎn):按順序完成每個(gè)階段的任務(wù);開始和結(jié)束都有嚴(yán)格標(biāo)準(zhǔn)。
- 面向?qū)ο蠓椒▽W(xué)
- 基本概念:與上面相反,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密的結(jié)合起來的方法。
- 基本原則:盡量模擬人類習(xí)慣的思維方式;描述問題的問題空間(問題域)與實(shí)現(xiàn)解法的解空間(求解域)在結(jié)構(gòu)上盡可能一致。
- 優(yōu)點(diǎn):降低了軟件產(chǎn)品的復(fù)雜性;簡化了軟件的開發(fā)和維護(hù)工作;提高了面向?qū)ο筌浖目芍赜眯浴?/li>
- 傳統(tǒng)方法學(xué)與面向?qū)ο蠓椒▽W(xué)對比
- 傳統(tǒng)方法學(xué)以功能劃分為導(dǎo)向面向過程,面向?qū)ο笠詫ο笞鳛檎麄€(gè)問題分析的中心展開工作。
- 都把軟件開發(fā)劃分為:分析、設(shè)計(jì)、編碼和測試等幾個(gè)階段,但各個(gè)階段的具體工作不同。
軟件生命周期
- 問題定義:要解決的問題是什么;對用戶訪問調(diào)查,寫書面報(bào)告,討論修改得到客戶確認(rèn)。
- 可行性研究:問題有解決的辦法么;是否繼續(xù)這項(xiàng)工程。
- 需求分析:確定目標(biāo)系統(tǒng)必須具備那些功能;得出經(jīng)過用戶確認(rèn)的系統(tǒng)邏輯模型;用正式文檔準(zhǔn)確記錄對目標(biāo)系統(tǒng)的需求(規(guī)格說明書)。
- 總體設(shè)計(jì):應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng);對比得出最佳方案;設(shè)計(jì)程序的體系結(jié)構(gòu),即確定程序由哪些模塊組成以及模塊間的關(guān)系。
- 詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì)):解法具體化;可以寫出實(shí)際程序代碼的詳細(xì)規(guī)格說明書;詳細(xì)設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。
- 編碼和單元測試:寫出容易理解維護(hù)的程序模塊;對模塊仔細(xì)的單元測試。
- 綜合測試:各類測試(集成和驗(yàn)收測試)使軟件達(dá)到預(yù)定要求;正式文檔記錄測試計(jì)劃、方案和結(jié)果。
- (前兩個(gè)系統(tǒng)設(shè)計(jì),后兩個(gè)系統(tǒng)實(shí)現(xiàn))
-
關(guān)鍵任務(wù):各種維護(hù)活動使系統(tǒng)持久滿足用戶需求。
-
改正性維護(hù),也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯(cuò)誤。
-
適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變化。
-
完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使它更完善。
-
預(yù)防性維護(hù),即修改軟件,為將來的維護(hù)活動預(yù)先做準(zhǔn)備。
軟件過程
-
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。通常使用生命周期模型概括地描述軟件過程。
-
(重點(diǎn))瀑布模型 Waterfall Model(傳統(tǒng)的和帶反饋環(huán)的)
- 概念及特點(diǎn)
- 階段間具有順序性和依賴性:必須等前一階段工作完成后,才能開始后一階段的工作;前一階段的輸出文檔就是后一階段的輸入文檔。
- 推遲實(shí)現(xiàn)的觀點(diǎn):編碼之前設(shè)置了系統(tǒng)分析與系統(tǒng)設(shè)計(jì)的各個(gè)階段。
- 質(zhì)量保證的觀點(diǎn):每個(gè)階段都必須完成規(guī)定的文檔;并進(jìn)行評審。
- 適合于需求明確變化較小的軟件項(xiàng)目。
- 優(yōu)缺點(diǎn)
- 強(qiáng)迫開發(fā)人員采用規(guī)范的文檔;嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔;每個(gè)階段產(chǎn)品都經(jīng)過質(zhì)量驗(yàn)證。
- 前期的需求理解和設(shè)計(jì)缺陷錯(cuò)誤后期才能被發(fā)現(xiàn),提高了成本,易失敗;開發(fā)人員與用戶缺乏有效溝通。
- 概念及特點(diǎn)
-
(重點(diǎn))快速原型模型 Prototype Model
- 概念及特點(diǎn)
- 快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,完成的功能少于最終產(chǎn)品的。
- 不帶反饋環(huán),軟件開發(fā)基本是線性順序進(jìn)行的。(原因有二:原型系統(tǒng)已經(jīng)通過與用戶交互而得到驗(yàn)證,不會進(jìn)行較大的返工;建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西,發(fā)生錯(cuò)誤的可能性小。)
- 適合于一些需求可變、模糊不定的軟件系統(tǒng)開發(fā)。
- 優(yōu)缺點(diǎn)
- 軟件開發(fā)是線性順序進(jìn)行的;通常能滿足用戶真實(shí)需求。
- 追求速度而忽視了軟件的總體質(zhì)量和長期的可維護(hù)性;開發(fā)過程不便于管理。
- 概念及特點(diǎn)
-
(重點(diǎn))增量模型 Incremental Model(漸增模型)
- 概念及特點(diǎn)
- 把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測試。
- 第一個(gè)增量構(gòu)件往往實(shí)現(xiàn)軟件的基本需求。
- 適合于軟件要求不明確,設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。
- 優(yōu)缺點(diǎn)
- 客戶可以不斷看到軟件產(chǎn)品,有足夠時(shí)間學(xué)習(xí)適應(yīng)新產(chǎn)品;多個(gè)構(gòu)件并行開發(fā),縮短開發(fā)時(shí)間;軟件結(jié)構(gòu)可拓展性好,便于日后升級
- 軟件體系結(jié)構(gòu)要做到開放;多個(gè)構(gòu)件并行開發(fā),具有無法集成的風(fēng)險(xiǎn)。
- 概念及特點(diǎn)
-
(重點(diǎn))螺旋模型 Spiral Model
- 概念及特點(diǎn)
- 使用原型及其他方法來盡量降低風(fēng)險(xiǎn)(每個(gè)階段都增加了風(fēng)險(xiǎn)分析過程的快速原型模型,即瀑布與快速的結(jié)合)
- 適用于內(nèi)部開發(fā)的復(fù)雜大型軟件項(xiàng)目;需要開發(fā)人員具有豐富的風(fēng)險(xiǎn)評估和知識經(jīng)驗(yàn)。
- 優(yōu)缺點(diǎn)
- 有利于已有軟件的重用;專注于軟件質(zhì)量;減少測試帶來的風(fēng)險(xiǎn);軟件開發(fā)與維護(hù)沒有本質(zhì)區(qū)別。
- 開發(fā)人員知識經(jīng)驗(yàn)不夠,會帶來不可估計(jì)的風(fēng)險(xiǎn)。
- 概念及特點(diǎn)
-
=噴泉模型
- “噴泉”這個(gè)詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性;后期維護(hù)時(shí)間越來越短。
-
統(tǒng)一開發(fā)過程RUP Rational Unified Process
- 一個(gè)面向?qū)ο筌浖こ痰耐ㄓ脴I(yè)務(wù)流程。
-
敏捷開發(fā)過程 Agile Model
- 敏捷是相對于傳統(tǒng)注重文檔的“文檔”軟件過程而言的;高效工作和快速響應(yīng)變化的能力。
第二講
可行性分析的基本任務(wù)
- 可行性研究的目的不是解決問題,而是確定問題是否值得去解決
- 可行性分析典型步驟
系統(tǒng)流程圖
-
基本概念:系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具。表達(dá)的是數(shù)據(jù)在系統(tǒng)各個(gè)部件之間流動的情況,而不是對數(shù)據(jù)進(jìn)行加工處理的控制過程
-
基本符號
- 案例
(重點(diǎn))數(shù)據(jù)流圖
-
基本概念:數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),她描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。
-
基本符號
-
繪制過程:成分分析>>頂層數(shù)據(jù)流圖>>基本系統(tǒng)模型細(xì)化>>功能級數(shù)據(jù)流圖進(jìn)一步細(xì)化。
-
案例
數(shù)據(jù)字典
-
基本概念:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。
-
數(shù)據(jù)定義方式:由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有以下三種基本類型:
- 順序:即以確定次序連接兩個(gè)或多個(gè)分量。
- 選擇:即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。
- 重復(fù):即把指定的分量重復(fù)零次或多次。
成本/效益分析
-
軟件開發(fā)成本主要表現(xiàn)為人力消耗。代表性的3中成本估算技術(shù):
- 代碼行技術(shù):=把開發(fā)每個(gè)軟件功能的成本和源代碼行數(shù)聯(lián)系起來,根據(jù)經(jīng)驗(yàn)和歷史數(shù)據(jù)估計(jì),每行代碼的平均成本主要取決于軟件的復(fù)雜程度和工資水平。
- 任務(wù)分解技術(shù):=把軟件開發(fā)工程分解為若干個(gè)項(xiàng)對獨(dú)立的任務(wù),再估計(jì)每個(gè)單獨(dú)開發(fā)任務(wù)的成本,最后累加起來得出軟件開發(fā)工程的總成本。
- 自動估計(jì)成本技術(shù)
-
成本/效益分析方法主要從四個(gè)方面考慮(計(jì)算案例參考課本p51)
-
(計(jì)算過程案例)貨幣的時(shí)間價(jià)值:F=P(1+i)的n次方 P=F/(1+i)的n次方(P:現(xiàn)在的錢;i:年利率;F:n年后的錢)
-
(計(jì)算過程案例)投資回收期:使累計(jì)的經(jīng)濟(jì)效益等于最初的投資費(fèi)用所需要的時(shí)間。
-
純收入
-
投資回收率
第三講
需求分析基本任務(wù)
-
基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么”這個(gè)問題。
-
基本準(zhǔn)則:建立數(shù)據(jù)模型;建立功能模型;建立行為模型;對信息、功能和行為的模型進(jìn)行分解。
-
五項(xiàng)典型基本任務(wù)
- 確定對系統(tǒng)的綜合要求:功能需求;性能需求;可靠性和可用性需求;出錯(cuò)處理需求;接口需求;約束;逆向需求;將來可能提出的要求。
- 分析系統(tǒng)的數(shù)據(jù)要求
- 導(dǎo)出系統(tǒng)的邏輯模型
- 編寫軟件需求規(guī)格說明書:明確定義目標(biāo)系統(tǒng)的需求、系統(tǒng)構(gòu)成及有關(guān)的接口。
- 需求分析評審
典型需求分析步驟
-
需求獲取
- 訪談:正式和非正式;情景分析技術(shù)。
- 面向數(shù)據(jù)流自頂向下求精:結(jié)構(gòu)化分析方法;從數(shù)據(jù)流圖的輸出端著手分析。
- 簡易的應(yīng)用規(guī)格說明:解決用戶被動問題;各自提出產(chǎn)品需求,最后得出一致意見。
- 快速建立軟件原型
-
分析建模
- 實(shí)體聯(lián)系圖
- 數(shù)據(jù)流圖
- 狀態(tài)轉(zhuǎn)換圖
- UML各種圖形
-
需求描述
- 軟件需求規(guī)格說明是需求分析階段得出的最主要的文檔
-
需求驗(yàn)證
- 一致性:所有需求必須是一致的,任何一條需求不能和其他需求互相矛盾。
- 完整性:需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個(gè)功能或性能。
- 現(xiàn)實(shí)性:指定的需求應(yīng)該是用現(xiàn)有的硬件技術(shù)和軟件技術(shù)基本上可以實(shí)現(xiàn)的。
- 有效性:必須證明需求是正確有效的,確實(shí)能解決用戶面對的問題的。
需求分析常用方法
-
功能分解方法:一個(gè)系統(tǒng)由若干功能模塊組成,每個(gè)功能分為子功能及接口,再繼續(xù)分解。
-
結(jié)構(gòu)化分析方法:一種面向數(shù)據(jù)流的需求分析方法。
-
信息建模方法:模型就是要抓住事物的最重要方面而簡化或忽略其他方面;建??梢詭椭_發(fā)者縮小問題的范圍,每次著重研究一個(gè)方面;信息建模方法常用的基本工具是E-R圖。
-
面向?qū)ο蟮姆治龇椒?/p>
(重點(diǎn))實(shí)體聯(lián)系圖
- 基本概念
- 數(shù)據(jù)對象:是對軟件必須理解的復(fù)合信息的抽象;可由一組屬性來定義的實(shí)體。
- 屬性:定義了數(shù)據(jù)對象的性質(zhì);必須把一個(gè)或多個(gè)屬性定義為“標(biāo)識符”。
- 聯(lián)系:一對一;一對多;多對多。
? 基本符號
? 案例
(重點(diǎn))狀態(tài)轉(zhuǎn)換圖
-
基本概念
- 狀態(tài)轉(zhuǎn)換圖通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來表示系統(tǒng)的行為。
- 狀態(tài):系統(tǒng)行為模式;規(guī)定了系統(tǒng)對事件的響應(yīng)方式。
- 事件:在某個(gè)特定時(shí)刻發(fā)生的事情;是引起系統(tǒng)做動作或轉(zhuǎn)換狀態(tài)的控制信息。
- 狀態(tài)轉(zhuǎn)換圖通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來表示系統(tǒng)的行為。
-
基本符號
? 案例
其他圖形工具
-
層次方框圖:用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。
-
Warnier圖
-
IPO圖
結(jié)構(gòu)化分析方法
-
概念:一種考慮數(shù)據(jù)和處理的需求分析方法被稱作結(jié)構(gòu)化分析方法,它基于“分解”和“抽象”的基本思想,逐步建立目標(biāo)系統(tǒng)的邏輯模型,進(jìn)而描繪出滿足用戶要求的軟件系統(tǒng)。
-
結(jié)構(gòu)化分析方法是一種面向數(shù)據(jù)流的需求分析方法。
-
結(jié)構(gòu)化分析的實(shí)質(zhì)上是一種創(chuàng)建模型的活動,以數(shù)據(jù)字典為核心創(chuàng)建三種不同模型:
- 數(shù)據(jù)流圖:功能建模
- 實(shí)體-關(guān)系圖:數(shù)據(jù)建模
- 轉(zhuǎn)臺轉(zhuǎn)換圖:行為建模
第四講
總體設(shè)計(jì)過程
- 典型步驟
- 設(shè)想供選擇的方案
- 選取合理的方案
- 推薦最佳方案
- 功能分解
- 設(shè)計(jì)軟件結(jié)構(gòu)
- 設(shè)計(jì)數(shù)據(jù)庫
- 制定測試計(jì)劃
- 書寫文檔
- 審查和復(fù)審
設(shè)計(jì)原理
-
模塊化
- 概念:模塊是構(gòu)成程序的基本構(gòu)件;模塊化就是把程序劃分成獨(dú)立命名且可以獨(dú)立訪問的模塊;總成本曲線;復(fù)雜問題分解成許多容易解決的小問題。
-
抽象
- 概念:抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮他們的細(xì)節(jié)。
-
逐步求精
- 概念:通過逐步細(xì)化處理過程的層次而設(shè)計(jì)的;抽象與求精是一對互補(bǔ)的概念。
-
信息隱藏和局部化
- 概念:一個(gè)模塊內(nèi)包含的信息對于不需要這些信息的模塊來說,是不能訪問的;局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此近。
-
模塊獨(dú)立
- 概念:這樣的軟件容易開發(fā)出來;容易測試和維護(hù)。
- 耦合與內(nèi)聚
耦合與內(nèi)聚
- 耦合(模塊之間互聯(lián)程度的度量)
- 數(shù)據(jù)耦合:通過參數(shù)交換信息,而且交換的信息權(quán)僅僅是數(shù)據(jù);低耦合。
- 控制耦合:傳遞的信息中有控制信息(控制信息又時(shí)以數(shù)據(jù)形式出現(xiàn));中等耦合。
- 特征耦合:當(dāng)把整個(gè)數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素時(shí),就出現(xiàn)了特征耦合。
- 公共環(huán)境耦合:當(dāng)兩個(gè)或多個(gè)模塊通過一個(gè)公共數(shù)據(jù)環(huán)境互相作用時(shí),他們之間的耦合稱為公共環(huán)境耦合。
- 內(nèi)容耦合:進(jìn)入另一個(gè)模塊內(nèi)部;模塊代碼重疊;多個(gè)入口模塊;屬于最高程度的耦合。
- 內(nèi)聚(標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度)
- 偶然內(nèi)聚:一組關(guān)系松散的任務(wù);各元素之間沒有實(shí)質(zhì)性聯(lián)系;可理解性差;不可重用。
- 邏輯內(nèi)聚:完成的任務(wù)在邏輯上屬于相同的一類;接口難以理解;局部功能的修改有時(shí)也會影響全局。
- 時(shí)間內(nèi)聚:同一段時(shí)間內(nèi)執(zhí)行;模塊內(nèi)操作之間的關(guān)系很弱。
- 通信內(nèi)聚:模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚。
- 順序內(nèi)聚:如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,則稱為順序內(nèi)聚。
- 功能內(nèi)聚:如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,則稱為功能模塊;最高程度的內(nèi)聚。
- 高內(nèi)聚低耦合
總體設(shè)計(jì)的啟發(fā)式規(guī)則
描繪軟件結(jié)構(gòu)的圖形工具
- 軟件結(jié)構(gòu)圖:是軟件系統(tǒng)的模塊層次結(jié)構(gòu),用來表達(dá)軟件的組成模塊機(jī)器調(diào)用關(guān)系。
- 層次圖:用來描繪軟件的層次結(jié)構(gòu),很適合在自頂向下設(shè)計(jì)的軟件過程中使用
- HIPO圖:每個(gè)方框都加上了編號(除了頂層的)
結(jié)構(gòu)化設(shè)計(jì)方法
-
基本概念:結(jié)構(gòu)化設(shè)計(jì)方法是一種把在數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)圖的一種基于數(shù)據(jù)流的設(shè)計(jì)方法,信息流的類型決定了映射的方法
-
信息流兩種類型:
- 變換流:數(shù)據(jù)流圖基本呈線性形狀的結(jié)構(gòu),由輸入、變換、輸出三部分組成,變換是系統(tǒng)的變換中心。
- 事務(wù)流:根據(jù)輸入數(shù)據(jù)的類型,選出一個(gè)來執(zhí)行。
-
結(jié)構(gòu)化設(shè)計(jì)方法的典型步驟
- 復(fù)審數(shù)據(jù)流圖
- 確定數(shù)據(jù)流圖類型
- 分解上層模塊,設(shè)計(jì)中下層模塊結(jié)構(gòu)
- 根據(jù)軟件結(jié)構(gòu)設(shè)計(jì)準(zhǔn)則對軟件結(jié)構(gòu)求精并改進(jìn)
- 導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)
- 復(fù)審
第五講
結(jié)構(gòu)程序設(shè)計(jì)
- 基本概念:如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和出口,則稱這個(gè)程序是結(jié)構(gòu)化的。上述經(jīng)典定義過于狹隘,結(jié)構(gòu)程序設(shè)計(jì)本質(zhì)上并不是無GO TO 語句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。
人機(jī)界面設(shè)計(jì)
-
設(shè)計(jì)問題
- 系統(tǒng)響應(yīng)時(shí)間:長度和易變性
- 用戶幫助設(shè)施:集成和附加
- 出錯(cuò)信息處理
- 命令交互
-
設(shè)計(jì)過程
- 用戶界面設(shè)計(jì)是一個(gè)迭代的過程,通常先創(chuàng)建設(shè)計(jì)模型,再用原型實(shí)現(xiàn)這個(gè)設(shè)計(jì)模型,并由用戶適用和評估。
-
設(shè)計(jì)指南
- 一般交互指南:涉及信息顯示、數(shù)據(jù)輸入和系統(tǒng)整體控制。
- 信息顯示指南:文字、圖形和聲音。
- 數(shù)據(jù)輸出指南:用戶的大部分時(shí)間用在選擇命令、輸入?yún)?shù)和向系統(tǒng)提供輸入。
過程設(shè)計(jì)工具
- 程序流程圖
?
- 盒圖 (左邊為盒圖)
?
- PAD圖
?
- 判定表
| 國內(nèi)乘客 | T | T | T | T | F | F | F | F | |
| 頭等艙 | T | F | T | F | T | F | T | F | |
| 殘疾乘客 | F | F | T | T | F | F | T | T | |
| 行李重量W≤30kg | T | F | F | F | F | F | F | F | F |
| 免費(fèi) | X | ||||||||
| (W-30)X2 | X | ||||||||
| (W-30)X3 | X | ||||||||
| (W-30)X4 | X | X | |||||||
| (W-30)X6 | X | X | |||||||
| (W-30)X8 | X | ||||||||
| (W-30)X12 | X |
? 判定樹
?
- PDL(過程設(shè)計(jì)語言|偽碼)
面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法
- Jackson方法簡介
- 分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu)。
- 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。
- 從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖。
- 列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把他們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。
- 用偽碼表示程序。
程序復(fù)雜程度的定量度量
- 好處:
- 估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量。
- 比較兩個(gè)不同設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣。
- 可以作為模板規(guī)模的精確限度。
- McCabe方法(流圖)
- 根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。
- V(G)=E-N+2,E是邊數(shù),N是結(jié)點(diǎn)數(shù)。
- V(G)=P+1,P是流圖中判定結(jié)點(diǎn)的數(shù)目。
第六講
面向?qū)ο蠓椒ㄋ膫€(gè)要點(diǎn)
-
面向?qū)ο蟮能浖到y(tǒng)是由對象組成的
-
所有對象都劃分成各種對象類
-
按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)
-
對象彼此之間僅能通過傳遞消息互相聯(lián)系
面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)
-
與人類習(xí)慣的思維方法一致
-
穩(wěn)定性好:根據(jù)問題領(lǐng)域的模型建立起來的,不是基于對系統(tǒng)應(yīng)完成的功能的分解。
-
可重用性好
-
較易開發(fā)大型軟件產(chǎn)品
-
可維護(hù)性好
(重點(diǎn))面向?qū)ο蠡靖拍?/h3>
-
對象:對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個(gè)封裝體有可以唯一地標(biāo)識它的名字,而且向外界提供一組服務(wù)(即公有的操作)。對象中的數(shù)據(jù)表示對象的狀態(tài),一個(gè)對象的狀態(tài)只能由該對象的操作來改變。
- 特點(diǎn):以數(shù)據(jù)為中心;對象是主動的;實(shí)現(xiàn)了數(shù)據(jù)封裝;本質(zhì)上具有并行性;模塊獨(dú)立性好。
-
類:在面向?qū)ο蟮能浖夹g(shù)中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個(gè)或多個(gè)對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。
-
實(shí)例:某個(gè)特定的類所描述的一個(gè)具體的對象
-
消息:是面向?qū)ο笙到y(tǒng)中對象之間交互的途徑,是向另一個(gè)對象發(fā)出的服務(wù)請求,請求對象參與某一處理或回答某一要求的信息,是對象之間建立的一種通信機(jī)制。
-
方法:就是對象所能執(zhí)行的操作。
-
屬性:就是類中所定義的數(shù)據(jù),是實(shí)體所具有的性質(zhì)的抽象。
-
封裝:是指把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部。
- 有一個(gè)清晰的邊界;有確定的接口;受保護(hù)的內(nèi)部實(shí)現(xiàn)。
-
繼承:是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。
- 繼承具有傳遞性;單繼承和多重繼承;解法具體化;方法重寫。
-
多態(tài)性:是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。增加了面向?qū)ο筌浖到y(tǒng)的靈活性。
-
重載(兩種):函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。
統(tǒng)一建模語言UML
-
相關(guān)概念
- 模型就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。
- 建模的目的主要是為了減少復(fù)雜性。
- 面向?qū)ο蠓椒ㄗ罨镜脑瓌t,是按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。
- 面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立對象模型(最重要基本核心)、動態(tài)模型和功能模型。
-
概念
- 一種標(biāo)準(zhǔn)的圖形化建模語言,是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。
- 捕獲系統(tǒng)靜態(tài)結(jié)構(gòu)和動態(tài)行為的信息。
- 不是一種程序設(shè)計(jì)語言,但可以和各種編程語言相聯(lián)系。
-
發(fā)展歷史
- Grady Booch,Ivar Jacobson,James Rumbaugh在1994和1995年期間發(fā)明。
- 1996年被OMG認(rèn)為標(biāo)準(zhǔn)。
- 2005年作為ISO標(biāo)準(zhǔn)
-
特點(diǎn)
- 統(tǒng)一標(biāo)準(zhǔn)
- 面向?qū)ο?/li>
- 可視化,表達(dá)能力強(qiáng)大
- 獨(dú)立于過程
- 容易掌握使用
- 與編程語言的關(guān)系
-
應(yīng)用范圍
- 最廣泛的應(yīng)用是對軟件系統(tǒng)進(jìn)行建模,也可以用于許多非軟件系統(tǒng)領(lǐng)域。
- 需求分析階段>>用例模型;分析和設(shè)計(jì)階段>>靜態(tài)模型;開發(fā)階段>>轉(zhuǎn)換編程語言;測試階段>>作為測試依據(jù)。
-
UML“4+1”視圖
對象:對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個(gè)封裝體有可以唯一地標(biāo)識它的名字,而且向外界提供一組服務(wù)(即公有的操作)。對象中的數(shù)據(jù)表示對象的狀態(tài),一個(gè)對象的狀態(tài)只能由該對象的操作來改變。
- 特點(diǎn):以數(shù)據(jù)為中心;對象是主動的;實(shí)現(xiàn)了數(shù)據(jù)封裝;本質(zhì)上具有并行性;模塊獨(dú)立性好。
類:在面向?qū)ο蟮能浖夹g(shù)中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個(gè)或多個(gè)對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。
實(shí)例:某個(gè)特定的類所描述的一個(gè)具體的對象
消息:是面向?qū)ο笙到y(tǒng)中對象之間交互的途徑,是向另一個(gè)對象發(fā)出的服務(wù)請求,請求對象參與某一處理或回答某一要求的信息,是對象之間建立的一種通信機(jī)制。
方法:就是對象所能執(zhí)行的操作。
屬性:就是類中所定義的數(shù)據(jù),是實(shí)體所具有的性質(zhì)的抽象。
封裝:是指把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部。
- 有一個(gè)清晰的邊界;有確定的接口;受保護(hù)的內(nèi)部實(shí)現(xiàn)。
繼承:是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。
- 繼承具有傳遞性;單繼承和多重繼承;解法具體化;方法重寫。
多態(tài)性:是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。增加了面向?qū)ο筌浖到y(tǒng)的靈活性。
重載(兩種):函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。
相關(guān)概念
- 模型就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。
- 建模的目的主要是為了減少復(fù)雜性。
- 面向?qū)ο蠓椒ㄗ罨镜脑瓌t,是按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。
- 面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立對象模型(最重要基本核心)、動態(tài)模型和功能模型。
概念
- 一種標(biāo)準(zhǔn)的圖形化建模語言,是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。
- 捕獲系統(tǒng)靜態(tài)結(jié)構(gòu)和動態(tài)行為的信息。
- 不是一種程序設(shè)計(jì)語言,但可以和各種編程語言相聯(lián)系。
發(fā)展歷史
- Grady Booch,Ivar Jacobson,James Rumbaugh在1994和1995年期間發(fā)明。
- 1996年被OMG認(rèn)為標(biāo)準(zhǔn)。
- 2005年作為ISO標(biāo)準(zhǔn)
特點(diǎn)
- 統(tǒng)一標(biāo)準(zhǔn)
- 面向?qū)ο?/li>
- 可視化,表達(dá)能力強(qiáng)大
- 獨(dú)立于過程
- 容易掌握使用
- 與編程語言的關(guān)系
應(yīng)用范圍
- 最廣泛的應(yīng)用是對軟件系統(tǒng)進(jìn)行建模,也可以用于許多非軟件系統(tǒng)領(lǐng)域。
- 需求分析階段>>用例模型;分析和設(shè)計(jì)階段>>靜態(tài)模型;開發(fā)階段>>轉(zhuǎn)換編程語言;測試階段>>作為測試依據(jù)。
UML“4+1”視圖
- 用例圖
- 是從用戶的角度描述系統(tǒng)的功能,由用例、參與者以及它們的關(guān)系連線組成。用例之間的關(guān)系有泛化,包含和拓展。
- 類圖
- 使用類描述系統(tǒng)的結(jié)構(gòu),展示了系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。
- 關(guān)聯(lián):一條直線表示關(guān)聯(lián)關(guān)系,直線兩端上的數(shù)字表示重?cái)?shù)。
- 聚集和組合表示整體-部分的關(guān)聯(lián)
- 依賴
- 泛化:描述類的一般-特殊關(guān)系。
- 實(shí)現(xiàn):將一個(gè)模型連接到另一個(gè)模型,通常情況下,后者是行為的規(guī)約(如接口)。
- 泛化與實(shí)現(xiàn)的區(qū)別:泛化是針對同層級元素之間的連接,而實(shí)現(xiàn)是針對不同語義層上的元素的連接。
- 對象圖
- 顯示了某一時(shí)刻的一組對象及它們之間的關(guān)系。
- 順序圖
- 描述了一組對象的交互方式,它表示完成某項(xiàng)行為的對象和這些對象之間傳遞消息的時(shí)間順序。
- 由對象、生命線、控制焦點(diǎn)和消息組成。
- 狀態(tài)圖
- 狀態(tài)圖側(cè)重于描述某個(gè)對象的動態(tài)行為,是對象的生命周期模型。
- 活動圖
- 用于表達(dá)系統(tǒng)動態(tài)特性的圖。描述一系列具體動態(tài)過程的執(zhí)行邏輯,展現(xiàn)活動和活動之間轉(zhuǎn)移的控制流。
- 主要組成元素包括:動作、活動、動作流、分支與合并、分叉與匯合、泳道和對象流等。
- 構(gòu)件圖
- 根據(jù)系統(tǒng)的代碼構(gòu)件顯示系統(tǒng)代碼的物理結(jié)構(gòu)。
- 部署圖
- 用于顯示系統(tǒng)中硬件和軟件的物理結(jié)構(gòu),可以顯示實(shí)際中的計(jì)算機(jī)和設(shè)備,以及它們之間的互聯(lián)關(guān)系。
第七講
面向?qū)ο蠓治?/h3>
-
面向?qū)ο蠓治?#xff0c;就是抽取和整理用戶需求并建立問題域精確模型的過程。
-
3個(gè)模型與5個(gè)層次
- 對象模型:靜態(tài)結(jié)構(gòu)(最基本重要核心)
- 動態(tài)模型:交互次序
- 功能模型:數(shù)據(jù)變換
面向?qū)ο蠓治?#xff0c;就是抽取和整理用戶需求并建立問題域精確模型的過程。
3個(gè)模型與5個(gè)層次
- 對象模型:靜態(tài)結(jié)構(gòu)(最基本重要核心)
- 動態(tài)模型:交互次序
- 功能模型:數(shù)據(jù)變換
-
面向?qū)ο蠡靖拍?主題
- 主題是指導(dǎo)讀者理解大型、復(fù)雜模型的一種機(jī)制。劃分為不同主題。
-
面向?qū)ο蠓治鲋饕顒?/p>
- 需求獲取
- 建立對象模型
- 確定類與對象
- 確定關(guān)聯(lián)
- 劃分若干主題
- 確定屬性
- 識別繼承關(guān)系
- 定義服務(wù)
- 建立功能(用例)模型
- 確定系統(tǒng)范圍和邊界
- 確定參與者
- 確定用例:包含和擴(kuò)展
- 確定用例之間的關(guān)系
- 建立動態(tài)模型(動態(tài)模型著重表示應(yīng)用系統(tǒng)的控制邏輯)
- 編寫腳本
- 設(shè)計(jì)用戶界面
- 畫UML順序圖、活動圖、事件跟蹤圖
- 畫狀態(tài)圖
- 建立物理模型
面向?qū)ο笤O(shè)計(jì)(OOD)
-
設(shè)計(jì)原理:把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過程。是一個(gè)逐漸擴(kuò)充模型的過程。
-
設(shè)計(jì)準(zhǔn)則:模塊化;抽象;信息隱藏;弱耦合;強(qiáng)內(nèi)聚;可重用
-
啟發(fā)規(guī)則
- 設(shè)計(jì)結(jié)果應(yīng)該清晰易懂
- 一般-特殊結(jié)構(gòu)的深度應(yīng)該適當(dāng)
- 設(shè)計(jì)簡單的類
- 使用簡單的協(xié)議
- 使用簡單的服務(wù)
- 把設(shè)計(jì)變動減至最小
-
=軟件重用(同一事物不作修改或稍加修改就多次重復(fù)使用)
- 級別:代碼重用;設(shè)計(jì)結(jié)果重用;分析結(jié)果重用
- 類構(gòu)件重用方式:實(shí)例重用;繼承重用;多態(tài)重用
- 效益:質(zhì)量理想下無誤;生產(chǎn)率高;成本低
-
設(shè)計(jì)過程
- 建立軟件體系結(jié)構(gòu)環(huán)境圖
- 軟件體系結(jié)構(gòu)設(shè)計(jì)
- 對各個(gè)子系統(tǒng)進(jìn)行設(shè)計(jì)
- 對象設(shè)計(jì)及優(yōu)化
-
對象設(shè)計(jì)
- 以問題域的對象設(shè)計(jì)為核心,其結(jié)果是一個(gè)詳細(xì)的對象模型。
- 主要任務(wù)
- 設(shè)計(jì)類中的服務(wù)
- 設(shè)計(jì)類的關(guān)聯(lián)
- 對象設(shè)計(jì)優(yōu)化
第八講
編碼
- 編程語言的選擇
- 機(jī)器語言
- 匯編語言
- 高級語言
- 編程風(fēng)格
- 版權(quán)和版本聲明
- 程序版式
- 注釋
- 命名規(guī)則
- 數(shù)據(jù)說明
- 語句構(gòu)造
- 輸入輸出
- 效率(計(jì)算機(jī)資源利用率)
測試
- 測試步驟
- 模塊測試(單元測試):編碼和詳細(xì)設(shè)計(jì)錯(cuò)誤
- 子系統(tǒng)測試(集成測試):測試接口
- 系統(tǒng)測驗(yàn)(集成測試):軟件設(shè)計(jì)錯(cuò)誤或需求說明錯(cuò)誤
- 驗(yàn)收測試(確認(rèn)測試):用戶積極參與;需求說明錯(cuò)誤
- 平行運(yùn)行:同時(shí)運(yùn)行新開發(fā)處來的系統(tǒng)和將被 它取代的舊系統(tǒng)。
-
單元測試
- 軟件設(shè)計(jì)最小單元——模塊
- 人工測試和計(jì)算機(jī)測試
- 主要使用白盒測試技術(shù)
-
測試重點(diǎn)
- 模塊接口
- 局部數(shù)據(jù)結(jié)構(gòu)
- 重要的執(zhí)行通路
- 出錯(cuò)處理通路
- 邊界條件
-
驅(qū)動模塊:“主程序"
-
存根模塊:”虛擬子程序“
-
非漸增式測試:改正錯(cuò)誤非常困難
-
漸增式測試
- 自頂向下集成
- 分類:深度優(yōu)先和寬度優(yōu)先
- 優(yōu)缺點(diǎn):不需要測試驅(qū)動程序,早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤;需要存根程序,低層模塊錯(cuò)誤發(fā)現(xiàn)較晚,早期不能充分展開人力。
- 自底向上集成
- 優(yōu)缺點(diǎn):剛好相反
- 自頂向下集成
-
回歸測試
- 是指重新執(zhí)行已經(jīng)做過的測試的某個(gè)子集,以保證上述這些變化沒有帶來非預(yù)期的副作用。
- 概念及范圍
- 驗(yàn)證軟件的有效性,確實(shí)滿足用戶需求。參考軟件需求規(guī)格說明書。
- 通常采用黑盒測試
- 功能要求、安全性、可移植性、兼容性和可維護(hù)性等。
- Alpha測試
- 由用戶再開發(fā)者的場所進(jìn)行;受控的環(huán)境
- Beta測試
- 由軟件的最終用戶們在一個(gè)或多個(gè)客戶場所進(jìn)行
- 測試技術(shù)
- 白盒測試、黑盒測試和調(diào)試
-
概念
- 關(guān)注內(nèi)部細(xì)節(jié)和邏輯結(jié)構(gòu)
- 測試數(shù)據(jù)和預(yù)期的輸出結(jié)果稱為測試用例
- 使用合適的測試數(shù)據(jù)技術(shù)和高效的測試數(shù)據(jù)
-
代碼檢查法:檢查代碼和設(shè)計(jì)的一致性
-
程序插樁技術(shù):插入一些打印語句,打印有關(guān)信息了解程序執(zhí)行時(shí)的一些動態(tài)特性。
-
邏輯覆蓋
- 語句覆蓋:選擇足夠多的測試數(shù)據(jù),使被測程序中每個(gè)語句至少執(zhí)行一次。
- 判定覆蓋(分支覆蓋):不僅每個(gè)語句必須至少執(zhí)行一次,而且每個(gè)判定的每個(gè)分支都應(yīng)該至少執(zhí)行一次。
- 條件覆蓋:不僅每個(gè)語句至少執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。
- 判定條件覆蓋:有時(shí)不比條件覆蓋強(qiáng);大多數(shù)計(jì)算機(jī)不能用一條指令對多個(gè)條件作出判定。
- 條件組合覆蓋:每個(gè)判定表達(dá)式中條件的各個(gè)可能組合都至少出現(xiàn)一次。
- 邊覆蓋和路徑覆蓋
-
概念
- 著重測試軟件功能
- 白盒在早期,黑盒在后期;與白盒測試互補(bǔ)。
-
等價(jià)類劃分法:把程序的輸入域劃分成若干個(gè)數(shù)據(jù)域,據(jù)此導(dǎo)出測試用例。(有效等價(jià)類和無效等價(jià)類)
-
邊界值分析法:是上一種方法的補(bǔ)充。
-
錯(cuò)誤推測法:很大程度上靠直覺和經(jīng)驗(yàn)進(jìn)行。
- 調(diào)試是在測試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程
第九講
軟件維護(hù)
- 軟件維護(hù)定義:所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程??梢酝ㄟ^描述軟件交付使用后可能進(jìn)行的4項(xiàng)活動,具體地定義軟件維護(hù)
-
軟件維護(hù)特點(diǎn)
- 機(jī)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)的差別巨大
- 維護(hù)代價(jià)高昂
- 維護(hù)的問題很多
-
軟件維護(hù)過程
- 概念:維護(hù)過程本質(zhì)上是修改了和壓縮了的軟件定義和開發(fā)過程
- 維護(hù)組織
- 維護(hù)報(bào)告
- 維護(hù)事件流
- 保護(hù)維護(hù)記錄
- 評價(jià)維護(hù)活動
-
軟件的可維護(hù)性
- 維護(hù)人員理解、改正、改動、或進(jìn)這個(gè)軟件的難易程度。
- 決定因素:可理解性;可測試性;可修改性;可移植性;可重用性。
-
軟件維護(hù)的副作用
- 修改代碼的副作用;修改數(shù)據(jù)的副作用;修改文檔的副作用
軟件工程管理
-
軟件估算
-
軟件開發(fā)進(jìn)度計(jì)劃
- Gantt圖
- PERT圖
-
軟件開發(fā)人員組織
- 民主制程序員組
- 主程序員組
- 現(xiàn)代程序員組
總結(jié)
以上是生活随笔為你收集整理的软件工程导论知识点总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为数据中心产品汇总介绍
- 下一篇: 机器学习笔记(四)BP神经网络模型