软件工程
軟件工程整理
基于張海藩老師出版的《軟件工程導(dǎo)論(第六版)》,簡(jiǎn)單整理軟件工程各章知識(shí)。
第一章 軟件工程學(xué)概述
1.1軟件危機(jī)
1.1.1軟件危機(jī)的介紹
軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。
軟件危機(jī)包括下述兩個(gè)方面:
軟件危機(jī)主要有一下一些典型表現(xiàn):
1.1.2產(chǎn)生軟件危機(jī)的原因
在軟件開發(fā)和維護(hù)的過程中存在這么多嚴(yán)重問題,一方面與軟件本身的特點(diǎn)有關(guān),另一方面也和軟件開發(fā)與維護(hù)的方法不正確有關(guān)。
1.1.3消除軟件危機(jī)的途徑
為了解決軟件危機(jī),既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。
1.2軟件工程
1.2.1軟件工程的介紹
1993年IEEE進(jìn)一步給出了一個(gè)更全面更具體的意義:“軟件工程是:①把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也及時(shí)把軟件工程應(yīng)用于軟件;②研究①中提到的途徑。”
軟件工程具有以下的本質(zhì)特征:
1.2.2軟件工程的基本原理
七條基本原理:
1.2.3軟件工程方法學(xué)
軟件工程包括技術(shù)和管理兩個(gè)方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學(xué)科。
軟件工程方法學(xué)包含三要素:方法、工具和過程。
目前最廣泛 的軟件工程方法學(xué),分別是傳統(tǒng)法學(xué)和面向?qū)ο蠓椒▽W(xué)。
1.3軟件生命周期
軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成。(三時(shí)期)
每個(gè)時(shí)期又進(jìn)一步劃分成若干階段(八階段):
1.4軟件過程
生命周期模型規(guī)定了把規(guī)定生命周期劃分成哪些階段及各個(gè)階段的執(zhí)行順序,因此,也成過程模型。
1.4.1瀑布模型
傳統(tǒng)方法學(xué)
特點(diǎn):
階段間具有順序性和依賴性(一定線性)
①必須等前一段的工作完成后,才能開始后一階段的工作。②前一階段的輸出文檔就是后一階段的輸入文檔。
推遲實(shí)現(xiàn)的觀點(diǎn)(貢獻(xiàn):首次提出)
質(zhì)量保證的觀點(diǎn)
①每個(gè)階段都必須完成規(guī)定的文檔。②每個(gè)階段結(jié)束前都要對(duì)所完成的文檔進(jìn)行評(píng)審。
總結(jié):文檔驅(qū)動(dòng)。
優(yōu)點(diǎn):瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動(dòng)的模型
缺點(diǎn):
1.4.2快速原型模型
循環(huán)
特點(diǎn):
1.4.3增量模型
特點(diǎn):
1.4.4螺旋模型
特點(diǎn):
優(yōu)點(diǎn):
風(fēng)險(xiǎn)驅(qū)動(dòng)即時(shí)優(yōu)點(diǎn)的主要來(lái)源,也可能是弱點(diǎn)。
1.4.5噴泉模型
面向?qū)ο箝_發(fā)學(xué)
“噴泉”這個(gè)詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無(wú)縫的特性。
1.4.6Rational統(tǒng)一過程
面向?qū)ο箝_發(fā)學(xué)
1.4.7敏捷過程與極限編程
敏捷過程
敏捷宣言:
①個(gè)體和交互勝過過程和工具
②可以工作的軟件勝過面面俱到的文檔
③客戶合作勝過合同談判
④響應(yīng)變化勝過遵循計(jì)劃
極限編程
1.4.8微軟過程
1.5小結(jié)
第二章 可行性研究
2.1可行性研究
目的:是否值得去解決;是否能夠解決。
實(shí)質(zhì):進(jìn)行一次達(dá)達(dá)壓縮化簡(jiǎn)了的系統(tǒng)分析和設(shè)計(jì)的過程,也就是在較高層次上以抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程。
方面:
2.2可行性研究過程
步驟:
2.3系統(tǒng)流程圖
物理數(shù)據(jù)圖
描繪了組成系統(tǒng)的主要物理元素以及信息在這些元素間流動(dòng)和處理的情況。(而不是對(duì)數(shù)據(jù)分析進(jìn)行加工處理的控制過程)
2.4數(shù)據(jù)流圖
基本邏輯功能
功能模型的基礎(chǔ)
繪制方法:由內(nèi)向外,自頂向下,分層繪制,逐步求精。
2.5數(shù)據(jù)字典
名稱,別名,描述,定義,位置
2.6成本/效益分析
2.6.1成本估計(jì)
2.6.2成本/效益分析的方法
2.7小結(jié)
第三章 需求分析
常用方法有面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法,面向數(shù)據(jù)結(jié)構(gòu)的分析方法,面向?qū)ο蟮姆治龇椒ā?/p>
3.1需求分析的任務(wù)
功能需求,性能需求,可靠性和可用性需求,出錯(cuò)處理需求,接口需求,約束,逆向需求,將來(lái)可能提出的需求
3.2與用戶溝通獲取需求的方法
3.2.1訪談
不理想
正式和非正式
3.2.2面向數(shù)據(jù)流自頂向下求精
不理想
結(jié)構(gòu)化分析方法
3.2.3簡(jiǎn)易的應(yīng)用規(guī)格說明技術(shù)
主流
3.2.4快速建立軟件原型
最準(zhǔn)確、最有效、最強(qiáng)大
“快速”、“容易修改”
3.3分析建模與規(guī)格說明
3.4實(shí)體-聯(lián)系圖
描述數(shù)據(jù)對(duì)象之間的關(guān)系
數(shù)據(jù)模型的基礎(chǔ)
3.4.1數(shù)據(jù)對(duì)象
有一組屬性來(lái)定義
3.4.2屬性
定義了數(shù)據(jù)對(duì)象的性質(zhì)
3.4.3聯(lián)系
數(shù)據(jù)對(duì)象之間相互連接的方式
3.4.4實(shí)體-聯(lián)系圖的符號(hào)
實(shí)體:矩形
關(guān)系:菱形
屬性:橢圓
3.5數(shù)據(jù)規(guī)范化
范式
3.6狀態(tài)轉(zhuǎn)換圖
外部事件結(jié)果的系統(tǒng)行為
行為建模的基礎(chǔ)
3.7其他圖形工具
3.7.1層次方框圖
屬性描繪數(shù)據(jù)的層次結(jié)構(gòu)
3.7.2Warnier圖
樹形 > 層次方框圖
最著名的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法:Jackson + Warnier
3.7.3IPO圖
輸入、處理、輸出圖
簡(jiǎn)略描述簡(jiǎn)單算法
3.8驗(yàn)證軟件需求
15%的錯(cuò)誤來(lái)源
3.8.1從哪些方面驗(yàn)證軟件需求的正確性
一致性、完整性、現(xiàn)實(shí)性、有效性
3.8.2驗(yàn)證軟件需求的方法
3.8.3用于需求分析的軟件工具
PSL/PSA
第四章 形式化說明技術(shù)
4.1概述
4.1.1非形式化方法的缺點(diǎn)
矛盾、二義性、不完整性及抽象層次混亂
4.1.2形式化方法的優(yōu)點(diǎn)
4.1.3應(yīng)用形式化方法的準(zhǔn)則
辯證地看待
4.2有窮狀態(tài)機(jī)
準(zhǔn)確描述一個(gè)系統(tǒng),表達(dá)規(guī)格說明的一種形式化方法
4.3Petri網(wǎng)
確定系統(tǒng)中隱含的定時(shí)問題,也可用于設(shè)計(jì)中
4.4Z語(yǔ)言
第五章 總體設(shè)計(jì)
劃分物理元素、設(shè)計(jì)軟件結(jié)構(gòu)
5.1設(shè)計(jì)過程
系統(tǒng)設(shè)計(jì)階段,確定具體實(shí)現(xiàn)方案、結(jié)構(gòu)設(shè)計(jì)階段、確定軟件結(jié)構(gòu)
5.2設(shè)計(jì)原理
5.2.1模塊化
程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能,這些模塊集成起來(lái)成一個(gè)整體,可完成制定功能滿足客戶需求。
模塊:邊界元素限定相鄰程序元素的序列,且有一總體標(biāo)識(shí)符代表它。
5.2.2抽象
抽出失誤的本質(zhì)特征而暫時(shí)不考慮細(xì)節(jié) / 分層次考慮與處理系統(tǒng) / 一種忽略多余細(xì)節(jié)同時(shí)強(qiáng)調(diào)有關(guān)的細(xì)節(jié)
5.2.3逐步求精
為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮 / 是設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭開底層細(xì)節(jié)
5.2.4信息隱藏和局部化
模塊內(nèi)的信息對(duì)不需要的模塊是不可見的
將關(guān)系相近的物理放得近
“隱藏”意味著有效的模塊化可以通過定義一組獨(dú)立的模塊而實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換信息。
5.2.5模塊獨(dú)立
模塊獨(dú)立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果
耦合
盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。
內(nèi)聚
功能內(nèi)聚、順序內(nèi)聚、通信內(nèi)聚、過程內(nèi)聚、時(shí)間內(nèi)聚、邏輯內(nèi)聚、偶然內(nèi)聚
5.3啟發(fā)規(guī)則
5.4描繪軟件結(jié)構(gòu)的圖形工具
5.4.1層次圖和HIPO圖
HIPO = 層次圖 + IPO
5.4.2結(jié)構(gòu)圖
SC圖
5.5面向數(shù)據(jù)流的設(shè)計(jì)方法
變換流和事務(wù)流
第六章 詳細(xì)設(shè)計(jì)
6.1結(jié)構(gòu)程序設(shè)計(jì)
3種基本控制結(jié)構(gòu):順序、循環(huán)、選擇
6.2人機(jī)界面設(shè)計(jì)
可使用性※、靈活性、可靠性
6.2.1設(shè)計(jì)問題
系統(tǒng)響應(yīng)時(shí)間、用戶幫助設(shè)施、出錯(cuò)信息處理、命令交互
6.2.2設(shè)計(jì)過程
迭代的過程
四個(gè)預(yù)示:
6.2.3人機(jī)界面設(shè)計(jì)指南
一般交互指南、信息顯示指南、數(shù)據(jù)輸入指南
6.3過程設(shè)計(jì)的工具
圖示、表格、語(yǔ)言
6.3.1程序流程圖
歷史長(zhǎng)、最混亂
三個(gè)缺點(diǎn):
6.3.2盒圖
結(jié)構(gòu)程序設(shè)計(jì)精神
四個(gè)特點(diǎn):
6.3.3PAD圖
問題分析圖、二維樹形、易譯成代碼
六個(gè)優(yōu)點(diǎn):
6.3.4判定表
用于清楚地表示復(fù)雜的條件組合和應(yīng)做的動(dòng)作之間的關(guān)系
6.3.5判定樹
形式簡(jiǎn)單,但重復(fù)多,分支的次序影響判定樹的復(fù)雜度。
6.3.6過程設(shè)計(jì)語(yǔ)言
不如圖形清晰
= 自然語(yǔ)言 + 結(jié)構(gòu)化語(yǔ)言
四個(gè)特點(diǎn):
優(yōu)點(diǎn):
缺點(diǎn):不如圖形工具形象直觀,不如判定表清晰簡(jiǎn)單。
6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法
Jackson和Warnier最著名面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。
6.5程序復(fù)雜程度的定量度量
6.5.1McCabe方法
根據(jù)程序控制流圖的復(fù)雜度定量度量程序的復(fù)雜度。
環(huán)形復(fù)雜度V(G)= 圖形數(shù) = E - N + 2 = P + 1
V(G) ≤ 10最好
6.5.2Halstead方法
根據(jù)程序中的運(yùn)算符(包括關(guān)鍵字)和操作數(shù)的總數(shù)度量程序的復(fù)雜度。
第七章 實(shí)現(xiàn)
開發(fā)是自頂向下、逐步細(xì)化,測(cè)試是自頂向上、逐步集成。
軟件測(cè)試不等于程序測(cè)試,軟件測(cè)試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間。
7.1編碼
7.1.1選擇程序設(shè)計(jì)語(yǔ)言
實(shí)用標(biāo)準(zhǔn):
7.1.2編碼風(fēng)格
7.2軟件測(cè)試基礎(chǔ)
7.2.1軟件測(cè)試的目標(biāo)
G.Myers測(cè)試定義:
7.2.2軟件測(cè)試準(zhǔn)則
測(cè)試準(zhǔn)則:
7.2.3測(cè)試方法
黑盒測(cè)試,即功能測(cè)試
白盒測(cè)試,即結(jié)構(gòu)測(cè)試
7.2.4測(cè)試步驟
模塊測(cè)試、子系統(tǒng)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、平行運(yùn)行
7.2.5測(cè)試階段的信息流
7.3單元測(cè)試
集中檢測(cè)軟件設(shè)計(jì)的最小單元——模塊
應(yīng)用人工測(cè)試和計(jì)算機(jī)測(cè)試完成單元測(cè)試
7.3.1測(cè)試重點(diǎn)
7.3.2代碼審查
人工測(cè)試和計(jì)算機(jī)測(cè)試是相互補(bǔ)充,相輔相成的,缺少其中任何一種方法都會(huì)使查找錯(cuò)誤的效率降低。
7.3.3計(jì)算機(jī)測(cè)試
需要驅(qū)動(dòng)模塊、存根模塊,通常不把它們作為產(chǎn)品的一部分交給用戶。
模塊的內(nèi)聚程度高可以簡(jiǎn)化單元測(cè)試過程
7.4集成測(cè)試
集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù),主要目標(biāo)是發(fā)現(xiàn)與**接口**有關(guān)的問題。
分為漸增測(cè)試方法與非漸增測(cè)試方法
7.4.1自頂向下集成
深度優(yōu)先或寬度優(yōu)先
在測(cè)試的早起對(duì)主要的控制或關(guān)鍵的抉擇進(jìn)行檢驗(yàn)
優(yōu)點(diǎn):不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤
缺點(diǎn):需要存根程序,可能遇到與此相聯(lián)系的測(cè)試?yán)щy,低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚,而且用這種方法在早期不能充分展開人力
7.4.2自底向上集成
優(yōu)缺點(diǎn)與自頂向下集成剛好相反
7.4.3不同集成測(cè)試策略的比較
混合法,即對(duì)軟件結(jié)構(gòu)中較上層使用的自頂向下方法與對(duì)軟件結(jié)構(gòu)中較下層使用的自底向上方法相結(jié)合,可能是**最好的**折衷方法。
7.4.4回歸測(cè)試
重新執(zhí)行已經(jīng)做過的測(cè)試的某個(gè)子集,以保證上述這些變化沒有帶來(lái)非預(yù)期的副作用。
7.5確認(rèn)測(cè)試
※確認(rèn)測(cè)試計(jì)劃在需求分析階段制定,其他測(cè)試都在總體設(shè)計(jì)階段制定。
7.51確認(rèn)測(cè)試的范圍
通常使用黑盒測(cè)試法
要保證軟件能滿足所有功能要求,能達(dá)到每個(gè)性能要求,文檔資料是準(zhǔn)確而完整的,此外,還應(yīng)該保證軟件能滿足其他預(yù)定的要求(例如安全性、可移植性、兼容性和可維護(hù)性)
7.5.2軟件配置復(fù)查
確認(rèn)測(cè)試的一個(gè)重要內(nèi)容是復(fù)查軟件配置。
復(fù)查的目的是保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護(hù)所必須的細(xì)節(jié),而且已經(jīng)編好目錄。
7.5.3Alpha和Beta測(cè)試
Alpha測(cè)試:在開發(fā)場(chǎng)所進(jìn)行測(cè)試,并有開發(fā)人員指導(dǎo)。
Beta測(cè)試:在使用環(huán)境下進(jìn)行測(cè)試,盡量使用真實(shí)數(shù)據(jù)。
7.6白盒測(cè)試技術(shù)
設(shè)計(jì)測(cè)試方案的基本目的是,確定一組最可能發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測(cè)試數(shù)據(jù)。
7.6.1邏輯覆蓋
7.6.2控制結(jié)構(gòu)測(cè)試
7.7黑盒測(cè)試
黑盒測(cè)試力圖發(fā)現(xiàn)下述類型的錯(cuò)誤:
7.7.1等價(jià)劃分
7.7.2邊界值劃分
7.7.3錯(cuò)誤推測(cè)
7.8調(diào)試
調(diào)試就是把癥狀和原因聯(lián)系起來(lái)的尚未被人深入認(rèn)識(shí)的智力過程。
7.8.1調(diào)試過程
調(diào)試不是測(cè)試,但是他總是發(fā)生在測(cè)試之后。
7.8.2調(diào)試途徑
7.9軟件可靠性
7.9.1基本概念
可靠性:在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功運(yùn)行的概率。
可用性:在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定成功運(yùn)行的概率。
7.9.2估算平均無(wú)故障時(shí)間的方法
MTTF
第八章 維護(hù)
開發(fā)成本的四倍,組織中60%的人手
軟件工程的主要目的就是要提高軟件的可維護(hù)性,減少軟件維護(hù)所需要的工作量,降低軟件系統(tǒng)的總成本。
8.1軟件維護(hù)的定義
軟件已經(jīng)交付使用后,為了改正錯(cuò)誤或滿足新需求而修改軟件的過程。
8.2軟件維護(hù)的特點(diǎn)
8.2.1結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差別巨大
區(qū)別:有無(wú)完整軟件配置
結(jié)構(gòu)化維護(hù):評(píng)價(jià)文檔 → 估量、設(shè)計(jì) → 修改設(shè)計(jì) → 修改代碼 → 回歸測(cè)試 → 交付
8.2.2維護(hù)的代價(jià)高昂
費(fèi)用高、用戶不滿、新的錯(cuò)誤、開發(fā)混亂、產(chǎn)率下降
8.2.3維護(hù)的問題很多
缺少軟件配置、不易理解且與代碼不一致、編寫者已不在、設(shè)計(jì)時(shí)沒考慮維護(hù)、軟件維護(hù)不是一件吸引人的事
8.3軟件維護(hù)過程
維護(hù)組織、維護(hù)報(bào)告、維護(hù)的事件流、保存維護(hù)記錄、評(píng)價(jià)維護(hù)活動(dòng)
8.4軟件的可維護(hù)性
維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度
8.4.1決定軟件可維護(hù)性的因素
可理解性、可測(cè)試性、可修改性、可移植性、可重用性
8.4.2文檔
文檔是影響軟件可維護(hù)性的決定因素
文檔分為:用戶文檔,主要描述系統(tǒng)功能和使用方法。
系統(tǒng)文檔,描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等。
用戶文檔至少包括:功能描述、安裝文檔、使用手冊(cè)、參考手冊(cè)、操作員指南
8.4.3可維護(hù)性復(fù)審
8.5預(yù)防性維護(hù)
實(shí)質(zhì)是軟件再工程
8.6軟件再工程過程
該模型所定義的六類活動(dòng):庫(kù)存目錄分析、文檔重構(gòu)、逆向工程、代碼重構(gòu)、數(shù)據(jù)重構(gòu)、正向工程
第九章 面向?qū)ο蠓椒▽W(xué)
面向?qū)ο?= 對(duì)象 + 類 + 繼承 + 通信
9.1面向?qū)ο蠓椒▽W(xué)概述
盡可能模擬人類習(xí)慣的思維方式
9.1.1面向?qū)ο蠓椒▽W(xué)的要點(diǎn)
四個(gè)要點(diǎn):
9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)
9.2面向?qū)ο蟮母拍?/h3>
9.2.1對(duì)象
對(duì)象是對(duì)問題域中某個(gè)實(shí)體的抽象
對(duì)象是由描述該對(duì)象屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體
9.2.2其他概念
類
就是對(duì)具有相同數(shù)據(jù)和相同操作的一組對(duì)象的定義
對(duì)相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述
實(shí)例
一個(gè)具體的對(duì)象
就是類的實(shí)際例子
消息
要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明
方法
對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)
屬性
類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象
封裝
把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來(lái)放在對(duì)象內(nèi)部
三個(gè)條件:清晰邊界、確定的接口、受保護(hù)的內(nèi)部實(shí)現(xiàn)
繼承
子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制
多態(tài)性
是指子類對(duì)象可以像父類對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象
是指在父類中定義的屬性或服務(wù)被子類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為
在類等級(jí)不同層次可共享一個(gè)方法名,不同層次每個(gè)類按各自需要實(shí)現(xiàn)這個(gè)方法
重載
有兩種重載:函數(shù)重載,同一作用域內(nèi)的若干參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字
? 運(yùn)算符重載,同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面
9.3面向?qū)ο蠼?/h3>
三種基本模型:對(duì)象模型(類圖)、動(dòng)態(tài)模型(狀態(tài)圖)、功能模型(用例圖)
9.4對(duì)象模型
最重要的、實(shí)質(zhì)性的框架
靜態(tài)的、結(jié)構(gòu)化的數(shù)據(jù)性質(zhì)
9.4.1類圖的基本符號(hào)
類與類之間的靜態(tài)關(guān)系、一種靜態(tài)模型
9.4.2表示關(guān)系的符號(hào)
關(guān)聯(lián)、聚合、泛化、依賴和細(xì)化
9.5動(dòng)態(tài)模型
基于事件共享而關(guān)聯(lián)起來(lái)的狀態(tài)圖
9.6功能模型
9.6.1用例圖
包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系
9.6.2用例建模
尋找行為者和用例是關(guān)鍵
9.7三種模型之間的關(guān)系
第十章 面向?qū)ο蠓治?/h2>
面向?qū)ο蠓治?#xff1a;不可能是順序線性的、需求陳述不是一成不變的
10.1面向?qū)ο蠓治龅幕具^程
抽取和整理用戶需求并建立精準(zhǔn)問題域精確模型的過程
10.1.1概述
尋找類與對(duì)象、確認(rèn)結(jié)構(gòu)、確認(rèn)主題、確認(rèn)屬性、建立動(dòng)態(tài)模型、建立功能模型、確認(rèn)服務(wù)
10.1.2三個(gè)子模型與五個(gè)層次
子模型:對(duì)象模型、動(dòng)態(tài)模型、功能模型
五個(gè)層次:主題層、類與對(duì)象層、結(jié)構(gòu)層、屬性層、服務(wù)層
10.2需求陳述
10.2.1書寫要點(diǎn)
需求陳述的內(nèi)容包括問題范圍、功能需求、應(yīng)用環(huán)境及假設(shè)條件等
10.2.2例子
10.3建立對(duì)象模型
OOA的首要工作
對(duì)象模型對(duì)細(xì)節(jié)依賴少,容易確定;需求變化時(shí),更穩(wěn)定。
10.3.1確定類與對(duì)象
對(duì)象是對(duì)問題域中有意義的事物的抽象,它們既可能是物理實(shí)體,也可能是抽象概念。
10.3.2確定關(guān)聯(lián)
兩個(gè)或多個(gè)對(duì)象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)
10.3.3劃分主題
為了降低復(fù)雜程度,人們習(xí)慣于把系統(tǒng)再進(jìn)一步劃分成幾個(gè)不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干個(gè)范疇。
10.3.4確定屬性
屬性是對(duì)象的性質(zhì),屬性使人們能對(duì)類與對(duì)象和結(jié)構(gòu)有更深入更具體的認(rèn)識(shí)。
分析階段不需要屬性來(lái)表示對(duì)象之間的關(guān)系,使用關(guān)聯(lián)能表示任何對(duì)象之間的關(guān)系,且清晰、醒目。
10.3.5識(shí)別繼承關(guān)系
可以使用兩種方法建立繼承關(guān)系:自底向上、自頂向下
10.3.6反復(fù)修改
軟件開發(fā)過程就是一次多次反復(fù)修改、逐步完善的過程。
10.4建立動(dòng)態(tài)模型
在開發(fā)交互式系統(tǒng)時(shí),建立正確的動(dòng)態(tài)模型是至關(guān)重要的。
10.4.1編寫腳本
腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。
編寫腳本的目的,是保證不遺漏重要的交互步驟,它有助于確保整個(gè)交互過程的正確性和清晰性。
10.4.2設(shè)想用戶界面
大多交互行為都可以分為應(yīng)用邏輯和用戶界面兩部分
應(yīng)用邏輯是內(nèi)在的、本質(zhì)的內(nèi)容,用戶界面是外在的表現(xiàn)形式。
10.4.3畫事件跟蹤圖
腳本中容易找出正常事件,但不要遺漏了異常事件和出錯(cuò)條件。
10.4.4畫狀態(tài)圖
10.4.5審查動(dòng)態(tài)模型
10.5建立功能模型
功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能。
10.5.1畫出基本系統(tǒng)模型圖
10.5.2畫出功能級(jí)數(shù)據(jù)流圖
10.5.3描述處理框功能
10.6定義服務(wù)
第十一章 面向?qū)ο笤O(shè)計(jì)
把需求分析階段得到的需求轉(zhuǎn)變成符合質(zhì)量和成本要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過程
11.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則
除了第五章講述的幾條基本原理,還應(yīng)增加模塊化、抽象、信息隱蔽、弱耦合、強(qiáng)內(nèi)聚、可重用。
11.2啟發(fā)規(guī)則
11.3軟件重用
11.3.1概述
11.3.2類構(gòu)件
11.3.3軟件重用的效益
質(zhì)量、生產(chǎn)率、成本
11.4系統(tǒng)分解
11.5設(shè)計(jì)問題域子系統(tǒng)
11.6設(shè)計(jì)人機(jī)交互子系統(tǒng)
分類用戶、描述用戶、設(shè)計(jì)命令層次、設(shè)計(jì)人機(jī)交互類
11.7設(shè)計(jì)任務(wù)管理子系統(tǒng)
分析并發(fā)性、設(shè)計(jì)任務(wù)管理子系統(tǒng)
11.8設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)
11.8.1選擇數(shù)據(jù)存儲(chǔ)管理模式
文件管理系統(tǒng)、關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)
11.8.2設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)
11.8.3例子
11.9設(shè)計(jì)類中的服務(wù)
11.9.1確定類中應(yīng)有的服務(wù)
11.9.2設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法
設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法、選擇數(shù)據(jù)結(jié)構(gòu)、算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系、定義內(nèi)部類和內(nèi)部操作
11.10設(shè)計(jì)關(guān)聯(lián)
關(guān)聯(lián)的遍歷、實(shí)現(xiàn)單向關(guān)聯(lián)、實(shí)現(xiàn)雙向關(guān)聯(lián)、關(guān)聯(lián)對(duì)象的實(shí)現(xiàn)
11.11設(shè)計(jì)優(yōu)化
11.11.1確定優(yōu)先級(jí)
11.11.2提高效率的幾項(xiàng)技術(shù)
11.11.3調(diào)整繼承關(guān)系
第十二章 面向?qū)ο髮?shí)現(xiàn)
面向?qū)ο髮?shí)現(xiàn)主要包括兩項(xiàng)工作:①把面向?qū)ο笤O(shè)計(jì)結(jié)果翻譯成用某種程序語(yǔ)言書寫的面向?qū)ο蟪绦颌跍y(cè)試并調(diào)試面向?qū)ο蟮某绦?/p>
12.1程序設(shè)計(jì)語(yǔ)言
12.1.1面向?qū)ο笳Z(yǔ)言的優(yōu)點(diǎn)
一致的表示方法;可重用性;可維護(hù)性
12.1.2面向?qū)ο笳Z(yǔ)言的技術(shù)特點(diǎn)
12.1.3選擇面向?qū)ο笳Z(yǔ)言
12.2程序設(shè)計(jì)風(fēng)格
12.2.1提高可重用性
12.2.2提高可擴(kuò)充性
12.2.3提高健壯性
12.3測(cè)試策略
測(cè)試軟件的經(jīng)典策略是,從“小型測(cè)試”開始,逐步過渡到“大型測(cè)試”。
12.3.1面向?qū)ο蟮膯卧獪y(cè)試
不能再鼓勵(lì)地測(cè)試單個(gè)操作,而應(yīng)該吧操作作為類的一部分來(lái)測(cè)試
12.3.2面向?qū)ο蟮募蓽y(cè)試
相較于結(jié)構(gòu)化測(cè)試,難度增加
兩種不同的策略:①基于線程的測(cè)試 ②基于使用的測(cè)試
12.3.3面向?qū)ο蟮拇_認(rèn)測(cè)試
可以用傳統(tǒng)的黑盒測(cè)試方法也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但主要還是根據(jù)動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本來(lái)設(shè)計(jì)確認(rèn)測(cè)試用例。
12.4設(shè)計(jì)測(cè)試用例
12.4.1測(cè)試類的方法
12.4.2集成測(cè)試方法
第十三章 軟件項(xiàng)目管理
先于任何技術(shù)開始之前并貫穿于整個(gè)生命周期
13.1估算軟件規(guī)模
13.1.1代碼行技術(shù)
優(yōu)點(diǎn):容易計(jì)算
缺點(diǎn):①源代碼僅是軟件配置的一部分②不同語(yǔ)言書寫同一程序所需代碼不同③不適用于非過程語(yǔ)言
13.1.2功能點(diǎn)技術(shù)
克服了代碼行的缺點(diǎn)
13.2工作量估算
13.2.1靜態(tài)單變量模型
13.2.2動(dòng)態(tài)多變量模型
13.2.3COCOMO2模型
13.3進(jìn)度計(jì)劃
13.3.1估算開發(fā)模型
Walston_Felix、COCOMO、COCOMO2、PUTNAM(動(dòng)態(tài)多變量)
13.3.2Gantt圖
歷史悠久、應(yīng)用廣泛
缺點(diǎn):
①不能顯示地描繪各項(xiàng)作業(yè)彼此間的依賴關(guān)系
②進(jìn)度計(jì)劃的關(guān)鍵部分不明確
③計(jì)劃中有潛力的部分及潛力的大小不明確
13.3.3工程網(wǎng)絡(luò)
13.3.4估算工程進(jìn)度
13.3.5關(guān)鍵路徑
13.3.6機(jī)動(dòng)時(shí)間
13.4人員組織
13.4.1民主制程序員組
小組成員完全平等,享有充分民主,通過協(xié)商作出技術(shù)決策
13.4.2主程序員組
主程序員既有技術(shù)又有行政管理能力
13.4.3現(xiàn)代程序員組
兩種程序員組的綜合
13.5質(zhì)量保證
13.5.1軟件質(zhì)量
軟件質(zhì)量就是“軟件與明確地和隱含地定義的需求相一致的程度”
13.5.2軟件質(zhì)量保證
為保證產(chǎn)品和服務(wù)充分滿足消費(fèi)者要求的質(zhì)量而進(jìn)行的有計(jì)劃、有組織的活動(dòng)
13.6軟件配置管理
軟件配置管理是在軟件的整個(gè)生命期內(nèi)管理變化的一組活動(dòng)。
這組活動(dòng)用來(lái):①表示變化②控制變化③確保適當(dāng)?shù)貙?shí)現(xiàn)了變化④想需要知道這類信息的人報(bào)告變化
13.6.1軟件配置
軟件配置項(xiàng):①計(jì)算機(jī)程序②描述計(jì)算機(jī)程序的文檔③數(shù)據(jù)
基數(shù)
各開發(fā)階段末尾的特定點(diǎn)
已經(jīng)通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品,它可以作為進(jìn)一步開發(fā)的基礎(chǔ),并且只有通過正式的變化控制工程才能改變他。
13.6.2軟件配置管理過程
軟件配置管理主要有五項(xiàng)任務(wù):標(biāo)識(shí)、版本控制、變化控制、配置審計(jì)和報(bào)告
13.7能力成熟度模型
初始級(jí)、可重復(fù)級(jí)、已定義級(jí)、已管理級(jí)、優(yōu)化級(jí)
總結(jié)
- 上一篇: 前端:Element UI 多选框组用法
- 下一篇: 正则不等于一个字符串_乳饮料不等于酸奶,