版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程--
原理、方法與應(yīng)用第一章緒論軟件與軟件危機(jī)軟件工程學(xué)傳統(tǒng)軟件工程和面向?qū)ο筌浖こ誊浖こ痰膽?yīng)用軟件程序、軟件與軟件產(chǎn)品獨(dú)唱-->小合唱-->合唱-->萬(wàn)人大合唱
|||簡(jiǎn)單程序較復(fù)雜程序軟件軟件定義:軟件=程序+數(shù)據(jù)+文檔程序:按事先設(shè)計(jì)的功能和性能需求執(zhí)行的指令序列數(shù)據(jù):是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔:與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料軟件的特征軟件是邏輯的,而不是物理的軟件開發(fā)與人關(guān)系密切軟件開發(fā)成本大軟件生產(chǎn)是簡(jiǎn)單的拷貝軟件不會(huì)磨損和老化軟件受環(huán)境影響大軟件維護(hù)易產(chǎn)生新的問題軟件開發(fā)的發(fā)展過程計(jì)算機(jī)應(yīng)用發(fā)展軟件數(shù)量多規(guī)模大軟件成本高質(zhì)量低個(gè)體化軟件開發(fā)方法軟件維護(hù)困難軟件危機(jī)軟件工程軟件危機(jī)定義計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程所遇到的一系列嚴(yán)重問題表現(xiàn)對(duì)軟件開發(fā)成本和進(jìn)度的估算很不準(zhǔn)確用戶很不滿意質(zhì)量很不可靠沒有適當(dāng)?shù)奈臋n軟件成本比重上升供不應(yīng)求:軟件開發(fā)生產(chǎn)率跟不上計(jì)算機(jī)應(yīng)用迅速深入的趨勢(shì)硬件/軟件成本變化趨勢(shì)
硬件
軟件
100%0%195519701985軟件技術(shù)進(jìn)步落后于需求增長(zhǎng)軟件危機(jī)原因客觀:軟件本身特點(diǎn)邏輯部件規(guī)模龐大主觀:不正確的開發(fā)方法忽視需求分析錯(cuò)誤認(rèn)為:軟件開發(fā)=程序編寫輕視軟件維護(hù)軟件危機(jī)解決途徑組織管理工程項(xiàng)目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具軟件工程學(xué)的范疇軟件工程學(xué)指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科工程管理+開發(fā)技術(shù)軟件開發(fā)技術(shù)軟件開發(fā)方法學(xué)軟件工具軟件工程環(huán)境軟件工程管理軟件管理學(xué)軟件經(jīng)濟(jì)學(xué)軟件度量學(xué)兩種程序設(shè)計(jì)方法程序設(shè)計(jì)的兩次飛躍結(jié)構(gòu)化程序設(shè)計(jì)程序=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο蟪绦蛟O(shè)計(jì)程序
=對(duì)象
+消息
面向過程和面向?qū)ο蟮木幋a存款取款利息結(jié)算帳戶余額帳戶余額利息結(jié)算存款取款兩類軟件工程方法傳統(tǒng)軟件工程軟件分析
→
總體設(shè)計(jì)
→
詳細(xì)設(shè)計(jì)
→
面向過程的編碼
→
測(cè)試
面向?qū)ο筌浖こ誊浖治雠c對(duì)象抽取
→
對(duì)象詳細(xì)設(shè)計(jì)
→
面向?qū)ο蟮木幋a
→
測(cè)試
軟件工程的應(yīng)用軟件工程指導(dǎo)中小型軟件軟件工程指導(dǎo)大型軟件軟件工程的成就軟件工程的局限第二章軟件開發(fā)模型傳統(tǒng)開發(fā)模型瀑布模型(waterfallmodel)快速原型模型(rapidprototypemodel)演化開發(fā)模型增量模型(incrementalmodel)螺旋模型(spiralmodel)面向?qū)ο箝_發(fā)模型構(gòu)件集成模型(componentintegrationmodel)
形式化開發(fā)模型轉(zhuǎn)換模型(transformationalmodel)凈室模型(cleanroommodel)軟件生存周期計(jì)劃時(shí)期問題定義可行性分析開發(fā)時(shí)期需求分析軟件設(shè)計(jì)編碼測(cè)試運(yùn)行時(shí)期軟件維護(hù)瀑布模型問題定義可行性研究需求分析軟件設(shè)計(jì)編碼測(cè)試維護(hù)計(jì)劃時(shí)期開發(fā)時(shí)期運(yùn)行時(shí)期瀑布模型特點(diǎn)階段的順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證存在問題不適合需求模糊的系統(tǒng)快速原型模型需求分析原型開發(fā)最終系統(tǒng)設(shè)計(jì)原型評(píng)價(jià)最終系統(tǒng)實(shí)現(xiàn)用戶反饋快速原型模型特點(diǎn)快速開發(fā)工具循環(huán)低成本種類漸進(jìn)型拋棄型增量模型規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)和集成交付客戶規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)和集成交付客戶規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)和集成交付客戶規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)和集成交付客戶增量1增量2增量3增量n增量模型增量小而可用的軟件特點(diǎn)在前面增量的基礎(chǔ)上開發(fā)后面的增量每個(gè)增量的開發(fā)可用瀑布或快速原型模型迭代的思路螺旋模型螺旋模型特點(diǎn)瀑布模型+快速原型+風(fēng)險(xiǎn)分析迭代過程一個(gè)螺旋式周期
確定目標(biāo),選擇方案,選定完成目標(biāo)的策略
風(fēng)險(xiǎn)角度分析該策略
啟動(dòng)一個(gè)開發(fā)階段
評(píng)價(jià)前一步的結(jié)果,計(jì)劃下一輪的工作
構(gòu)件集成模型構(gòu)件集成模型特點(diǎn)面向?qū)ο蠡跇?gòu)件庫(kù)融合螺旋模型特征支持軟件開發(fā)的迭代方法
軟件重用面向?qū)ο蟮幕靖拍顚?duì)象Object類Class繼承Inheritance消息Message面向?qū)ο髮?duì)象+類+繼承+消息通信對(duì)象Object客觀世界中的實(shí)體狀態(tài)(靜態(tài)屬性Attributes)操作(動(dòng)態(tài)行為Methods)對(duì)象::=<ID,MS,DS,MI>IdentifierMethodSetDataStructureMessageInterface對(duì)象的特點(diǎn)以數(shù)據(jù)為中心對(duì)象是主動(dòng)的實(shí)現(xiàn)數(shù)據(jù)封裝本質(zhì)上有并行性模塊獨(dú)立性好類Class和實(shí)例Instance類相同屬性和行為的對(duì)象的抽象實(shí)例特定類所描述的一個(gè)具體對(duì)象子類直接繼承父類的數(shù)據(jù)和操作繼承的傳遞性,單繼承、多重繼承繼承(Inheritance)家具桌子椅子衣柜床椅子的實(shí)例多態(tài)性Polymorphism概念不同類層次共享一個(gè)方法名相同的參數(shù)特征和返回值類型多種不同實(shí)現(xiàn)C++中虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編重載Overloading函數(shù)重載同一作用域多個(gè)名字相同的函數(shù)參數(shù)特征不同靜態(tài)聯(lián)編運(yùn)算符重載消息Message對(duì)象間的交互手段形式:Message:[dest,op,para]DestinationObjectOperationParameters轉(zhuǎn)換模型形式化規(guī)格說明與需求比較后修正變換2變換1變換n測(cè)試形式化開發(fā)記錄系統(tǒng)需求目標(biāo)系統(tǒng)轉(zhuǎn)換模型特點(diǎn)形式化軟件開發(fā)方法
形式化需求規(guī)格說明
變換技術(shù)程序自動(dòng)生成技術(shù)
確保正確凈室模型需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計(jì)統(tǒng)計(jì)性使用測(cè)試正確性證明代碼生成與檢查測(cè)試計(jì)劃認(rèn)證需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計(jì)統(tǒng)計(jì)性使用測(cè)試正確性證明代碼生成與檢查測(cè)試計(jì)劃認(rèn)證需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計(jì)統(tǒng)計(jì)性使用測(cè)試正確性證明代碼生成與檢查測(cè)試計(jì)劃認(rèn)證增量1增量2增量n凈室模型凈室思想在分析和設(shè)計(jì)階段消除錯(cuò)誤在“潔凈”狀態(tài)下實(shí)現(xiàn)軟件制作形式化盒結(jié)構(gòu)表示分析和設(shè)計(jì)正確性驗(yàn)證增量模型小結(jié)軟件開發(fā)模型是不斷發(fā)展的各種軟件開發(fā)模型各有優(yōu)缺點(diǎn)選用時(shí)不必拘泥與某種模型可組合多種模型也可根據(jù)實(shí)際創(chuàng)建新的模型第三章軟件需求分析需求分析的任務(wù)與步驟需求獲取的常用方法分析建模軟件需求說明結(jié)構(gòu)化分析方法面向?qū)ο蠓治龇椒ㄐ枨蠓治龅娜蝿?wù)和步驟需求分析的任務(wù)建立分析模型
編寫需求說明
需求分析的步驟需求獲取
需求提煉
需求描述
需求驗(yàn)證
需求獲取的常用方法聯(lián)合分析小組
用戶代表、領(lǐng)域?qū)<液拖到y(tǒng)分析員客戶訪談
充分準(zhǔn)備,尋找共同語(yǔ)言循循序漸進(jìn)、逐步逼近
問題分析與確認(rèn)
多個(gè)來(lái)回分析建模結(jié)構(gòu)化分析模型面向?qū)ο蠓治瞿P头治瞿P兔枋龉ぞ逥FD、DD和PSPECCFD、CSPEC和STDE-R圖
用例圖,對(duì)象-關(guān)系圖,對(duì)象-行為圖
結(jié)構(gòu)化分析模型加工說明數(shù)據(jù)對(duì)象說明CFD,STD圖DFD圖E-R圖DD控制說明面向?qū)ο蠓治瞿P蛯傩浴⒉僮?、協(xié)作者對(duì)象-行為模型對(duì)象-關(guān)系模型類/對(duì)象模型使用實(shí)例分析模型描述工具結(jié)構(gòu)化分析工具DFD、DD和PSPECCFD、CSPEC和STDE-R圖
面向?qū)ο蠓治龉ぞ哂美龍D,類對(duì)象圖對(duì)象-關(guān)系圖對(duì)象-行為圖數(shù)據(jù)流圖DFD描述系統(tǒng)邏輯模型信息在系統(tǒng)中的流動(dòng)和處理用途交流信息的工具結(jié)構(gòu)化分析和設(shè)計(jì)的工具
數(shù)據(jù)流圖DFD組成符號(hào)圓框代表加工箭頭代表數(shù)據(jù)流向方框代表源點(diǎn)和終點(diǎn)雙杠表示數(shù)據(jù)文件或數(shù)據(jù)庫(kù)分層從高層到低層分解前后的數(shù)據(jù)流必須一致命名數(shù)據(jù)流處理領(lǐng)書單
進(jìn)書通知
購(gòu)書單
缺書單
DFD練習(xí)—售書系統(tǒng)學(xué)生教材購(gòu)銷系統(tǒng)書庫(kù)保管員領(lǐng)書單進(jìn)書通知
進(jìn)書通知
購(gòu)書單缺書單
DFD練習(xí)—售書系統(tǒng)1銷售2采購(gòu)書庫(kù)保管員學(xué)生F1教材存量表
F2缺書登記表
數(shù)據(jù)字典DDDFD中所有元素的定義的集合內(nèi)容數(shù)據(jù)流數(shù)據(jù)流分量數(shù)據(jù)存儲(chǔ)處理(一般不用DD描述)數(shù)據(jù)字典DD定義數(shù)據(jù)的方法自頂向下分解數(shù)據(jù)數(shù)據(jù)元素的組合方式順序:A+B選擇:[A|B]重復(fù):1{A}5可選:(A)數(shù)據(jù)字典DDDD的用途分析階段的交流工具包含控制信息數(shù)據(jù)庫(kù)設(shè)計(jì)的基礎(chǔ)例子P41例3.6加工說明加工說明PSPEC說明DFD中的每個(gè)加工描述工具結(jié)構(gòu)化語(yǔ)言判定表判定樹加工說明—例子結(jié)構(gòu)化語(yǔ)言P42-43,例3.7,3.8判定樹P44,例3.9判定表P44,例3.9CFD和CSPEC適合實(shí)時(shí)系統(tǒng)的分析與DFD和PSPEC類似和DFD與PSPEC配合使用表示控制流和控制加工CFD和DFD的關(guān)系
數(shù)據(jù)條件控制輸入加工激活信號(hào)控制輸出輸入數(shù)據(jù)加工模型PSPEC控制模型CSPEC輸出數(shù)據(jù)
控制輸入CFD的符號(hào)表示控制信息或事件引用控制說明DFD和CFD例子---DFD信號(hào)半分鐘數(shù)據(jù)光電管采集計(jì)數(shù)傳送工控機(jī)處理實(shí)時(shí)數(shù)據(jù)顯示班數(shù)據(jù)處理半小時(shí)數(shù)據(jù)班數(shù)據(jù)DFD和CFD例子---CFD翻屏人工驅(qū)動(dòng)信息時(shí)鐘半小時(shí)半分鐘某型號(hào)累加物品經(jīng)過信號(hào)半分鐘數(shù)據(jù)光電管采集計(jì)數(shù)傳送工控機(jī)處理實(shí)時(shí)數(shù)據(jù)顯示班數(shù)據(jù)處理半小時(shí)數(shù)據(jù)班數(shù)據(jù)STD描述軟件狀態(tài)變遷符號(hào)表示矩形---系統(tǒng)狀態(tài)箭頭---狀態(tài)轉(zhuǎn)變方向規(guī)則表達(dá)式---事件/觸發(fā)行為狀態(tài)1狀態(tài)2事件/觸發(fā)行為STD例子20秒到/翻屏生成最新數(shù)據(jù)/翻屏半小時(shí)到/工控處理半分鐘到/傳送空閑/采集物品經(jīng)過/計(jì)數(shù)采集PLC計(jì)數(shù)傳送工控處理實(shí)時(shí)翻屏E-R圖用于對(duì)復(fù)雜數(shù)據(jù)的用作數(shù)據(jù)分析和建模實(shí)體、屬性和關(guān)系組成符號(hào)0:11:10:m1:mE-R圖例子電話機(jī)生產(chǎn)廠商經(jīng)銷商用戶生產(chǎn)購(gòu)買使用經(jīng)銷用例圖用例:系統(tǒng)和外部角色的交互符號(hào)表示:
系統(tǒng)名稱系統(tǒng)用例名用例角色關(guān)聯(lián)UseCase圖例子保險(xiǎn)商務(wù)系統(tǒng)簽定保險(xiǎn)單銷售統(tǒng)計(jì)客戶統(tǒng)計(jì)客戶保險(xiǎn)銷售員用例之間的關(guān)系擴(kuò)展關(guān)系使用關(guān)系組合關(guān)系《擴(kuò)展》簽保險(xiǎn)單簽汽車購(gòu)買契約《使用》《使用》簽保險(xiǎn)單簽汽車保險(xiǎn)單簽房屋保險(xiǎn)單對(duì)象-關(guān)系圖從E-R圖演變而來(lái)描述對(duì)象間關(guān)系學(xué)生書出版商購(gòu)買來(lái)自1:10:m1:11:1對(duì)象-行為圖描述對(duì)象的動(dòng)態(tài)行為對(duì)象狀態(tài)轉(zhuǎn)換圖事件軌跡圖事件流圖對(duì)象狀態(tài)轉(zhuǎn)換圖例子加紙紙用完故障修復(fù)打印故障打印完成接到打印命令就緒打印缺紙故障事件軌跡圖例子[打印機(jī)忙]保存文件[打印機(jī)就緒]打印文件打印文件打印文件計(jì)算機(jī)打印服務(wù)器打印隊(duì)列打印機(jī)事件流圖例子[打印機(jī)忙]保存文件[打印機(jī)就緒]打印文件打印文件計(jì)算機(jī)打印隊(duì)列打印服務(wù)器打印機(jī)軟件需求說明(SRS)引言信息描述功能描述行為描述質(zhì)量保證接口描述其它結(jié)構(gòu)化分析方法基本步驟自頂向下,功能分解分層DFD由后向前,定義數(shù)據(jù)和加工DD,PSPEC根據(jù)需要,分析復(fù)雜數(shù)據(jù)和動(dòng)態(tài)模型E-R圖,CFD,CSPEC,STD編寫SRSDFD的復(fù)審父圖和子圖不平衡未區(qū)分局部文件和局部外部項(xiàng)分解的速度太快不遵守加工編號(hào)規(guī)則面向?qū)ο蠓治龇椒ɑ静襟E定義系統(tǒng)的用例領(lǐng)域分析,建立類對(duì)象模型建立對(duì)象-關(guān)系模型建立對(duì)象-行為模型編寫SRS定義用例回答問題—發(fā)現(xiàn)角色使用系統(tǒng)主要功能的人是誰(shuí)?
需要借助于系統(tǒng)完成日常工作的人是誰(shuí)?
誰(shuí)來(lái)維護(hù)、管理系統(tǒng),保證系統(tǒng)正常工作?
系統(tǒng)控制的硬件設(shè)備有哪些?
系統(tǒng)需要和哪些其它系統(tǒng)接口?
對(duì)系統(tǒng)產(chǎn)生的結(jié)果感興趣的人和事是哪些?
定義用例回答問題—發(fā)現(xiàn)用例角色需要從系統(tǒng)中獲得哪種功能?需要角色做什么?
角色需要讀取、產(chǎn)生、刪除、修改或存儲(chǔ)系統(tǒng)中的某種信息嗎?
系統(tǒng)中發(fā)生的事件需要通知角色嗎?角色需要通知系統(tǒng)某件事嗎?這些事件能干什么?
系統(tǒng)需要輸入/輸出的是什么信息?這些輸入/輸出信息從哪兒來(lái)
?到哪兒去?
系統(tǒng)當(dāng)前的實(shí)現(xiàn)要解決的問題是什么?
領(lǐng)域分析
目的發(fā)現(xiàn)或創(chuàng)建可廣泛應(yīng)用的類,以便復(fù)用
分析特定的應(yīng)用領(lǐng)域
形式公共對(duì)象、類、子集合和框架等類對(duì)象建模(一)確定分析模型中的類對(duì)象考察系統(tǒng)用例匯總名詞、名詞短語(yǔ)得到候選對(duì)象確定類對(duì)象必要的信息、需求、服務(wù)多個(gè)屬性、公共操作類對(duì)象建模(二)定義類結(jié)構(gòu)與層次一般----特殊整體----部分定義主題和子系統(tǒng)高層抽象例子電話話筒按鍵連接線話機(jī)人電話人教師大學(xué)生小學(xué)生學(xué)生中學(xué)生建立對(duì)象—關(guān)系模型步驟復(fù)審需求描述和用例陳述找出表示關(guān)系的動(dòng)詞或動(dòng)詞短語(yǔ)用線連接起來(lái),箭頭表示方向給連接命名,標(biāo)上基數(shù)對(duì)象-關(guān)系圖例子1:10:11:11:10:11:m1:11:11:m0:m1:11:10:m1:11:11:m1:11:m1:11:m1:1部門流水線工序材料在制品1:m不良品指標(biāo)數(shù)據(jù)1:m1:1規(guī)格實(shí)時(shí)數(shù)據(jù)建立對(duì)象行為模型基本過程評(píng)估用例,理解系統(tǒng)中的交互序列找出驅(qū)動(dòng)交互序列的事件為每個(gè)用例創(chuàng)建事件軌跡為對(duì)象創(chuàng)建狀態(tài)轉(zhuǎn)換圖第四章軟件設(shè)計(jì)概述軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的基本概念模塊化設(shè)計(jì)設(shè)計(jì)需要處理的問題設(shè)計(jì)文檔及其復(fù)審軟件設(shè)計(jì)的任務(wù)分析模型設(shè)計(jì)模型設(shè)計(jì)文檔回答Howtodo?可以分為概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)軟件設(shè)計(jì)包括數(shù)據(jù)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)過程設(shè)計(jì)軟件設(shè)計(jì)的任務(wù)數(shù)據(jù)設(shè)計(jì)信息模型軟件數(shù)據(jù)結(jié)構(gòu)體系結(jié)構(gòu)設(shè)計(jì)定義軟件部件間的關(guān)系接口設(shè)計(jì)軟件內(nèi)部、外部及與人之間的通信過程設(shè)計(jì)軟件組件的過程性描述軟件設(shè)計(jì)的基本概念模塊(module)與構(gòu)件(component)模塊:定義輸入、輸出和特性的程序?qū)嶓w構(gòu)件:可重復(fù)使用的軟件組件抽象(abstract)與細(xì)化(refinement)抽象:分層次考慮和處理問題(數(shù)據(jù)和過程)細(xì)化:從高到低的逐步分解過程信息隱藏對(duì)其它模塊隱藏模塊內(nèi)部的數(shù)據(jù)和過程軟件復(fù)用Designwithreuse,designforreuse
模塊化設(shè)計(jì)(modulardesign)分解(decomposition)模塊獨(dú)立性(moduleindependence)自頂向下(top—downdesign)自底向上(bottom—updesign)分解(decomposition)C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)
C為問題的復(fù)雜度,E為解題需要的工作量
模塊數(shù)接口成本最小成本區(qū)M軟件開發(fā)工作量總成本模塊成本模塊獨(dú)立性(moduleindependence)內(nèi)聚(cohesion)模塊內(nèi)部各成分之間耦合(coupling)一個(gè)模塊與其它模塊之間模塊的獨(dú)立性高
塊內(nèi)聯(lián)系強(qiáng)
塊間聯(lián)系弱
內(nèi)聚1234567
弱強(qiáng)低內(nèi)聚中內(nèi)聚高內(nèi)聚
內(nèi)聚cohesion1.偶然性內(nèi)聚
coincidentalcohesion2.邏輯性內(nèi)聚
logicalcohesion3.時(shí)間性內(nèi)聚
temporalcohesion4.過程性內(nèi)聚
proceduralcohesion5.通訊性內(nèi)聚
communicationalcohesion6.順序性內(nèi)聚
sequentialcohesion7.功能性內(nèi)聚functionalcohesion邏輯性模塊
讀入分?jǐn)?shù)平均/最高?計(jì)算平均分計(jì)算最高分輸出結(jié)果耦合coupling1.非直接耦合nodirectcoupling
2.數(shù)據(jù)耦合datacoupling
3.特征耦合
stampcoupling
4.控制耦合controlcoupling
5.外部耦合
externalcoupling6.公共耦合
commoncoupling7.內(nèi)容耦合
contentcoupling弱耦合數(shù)據(jù)耦合非直接耦合模塊2模塊1模塊4模塊3特征耦合(參數(shù)表傳遞數(shù)據(jù)結(jié)構(gòu))公共耦合DCBANL自定向下和自底向上設(shè)計(jì)自頂向下頂層開始逐步分解由底向上選擇關(guān)鍵部分先設(shè)計(jì)擴(kuò)展到整個(gè)系統(tǒng)設(shè)計(jì)需要處理的問題協(xié)同設(shè)計(jì)誰(shuí)最合適設(shè)計(jì)系統(tǒng)的某一方面?
如何使組內(nèi)成員相互了解別人的設(shè)計(jì)?
如何協(xié)調(diào)設(shè)計(jì)組件使整個(gè)系統(tǒng)統(tǒng)一?
用戶界面設(shè)計(jì)讓用戶駕馭軟件,不是軟件駕馭用戶
減少用戶的記憶
保持界面的一致性
并發(fā)系統(tǒng)設(shè)計(jì)怎樣確保同時(shí)執(zhí)行的組件間對(duì)共享數(shù)據(jù)的一致性
并發(fā)處理(順序執(zhí)行)1、
組件1查詢X是否為空。2、
組件1被告知X不為空。3、
組件2查詢X是否為空。4、
組件2被告知X不為空。5、
組件1出棧,刪除最后一個(gè)元素。6、組件2想出棧,但X已為空,系統(tǒng)進(jìn)入非法狀態(tài)。
并發(fā)處理1、
組件1詢問棧X是否為空。2、
組件1被告知棧X不為空。3、
組件2詢問棧X是否為空。4、
組件2被告知棧X不為空。5、
組件1出棧,刪去最后一個(gè)元素,并鎖住棧X。6、
組件2想出棧,但被告知X已上鎖。7、
另一個(gè)組件加了一個(gè)元素到棧X中。8、
組件2被告知X已開鎖(由于外部進(jìn)程或者因?yàn)榻M件2再次嘗試)9、 組件2出棧。
軟件設(shè)計(jì)文檔軟件設(shè)計(jì)說明書1)
范圍
2)
數(shù)據(jù)設(shè)計(jì)
3)
體系結(jié)構(gòu)設(shè)計(jì)4)接口設(shè)計(jì)
5)
模塊的過程設(shè)計(jì)
6)其他
包括測(cè)試的考慮,確保設(shè)計(jì)滿足所有需求,設(shè)計(jì)約束和一些特殊注解等內(nèi)容。
設(shè)計(jì)復(fù)審(designreview)及早發(fā)現(xiàn)設(shè)計(jì)中的缺陷差錯(cuò)的傳播復(fù)審的內(nèi)容概要設(shè)計(jì)復(fù)審
系統(tǒng)的總體結(jié)構(gòu),模塊劃分,內(nèi)外接口
詳細(xì)設(shè)計(jì)復(fù)審
各個(gè)模塊的具體設(shè)計(jì)
設(shè)計(jì)復(fù)審(designreview)復(fù)審的方式FormalreviewDesignreviewmeetingInformalreviewWalk-through第五章傳統(tǒng)的設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)模型結(jié)構(gòu)化設(shè)計(jì)方法過程設(shè)計(jì)Jackson方法PSPEC結(jié)構(gòu)化設(shè)計(jì)的內(nèi)容數(shù)據(jù)對(duì)象描述CFDDFDE-RDDCSPEC過程設(shè)計(jì)
接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)的內(nèi)容結(jié)構(gòu)設(shè)計(jì)—概要設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)SC圖接口設(shè)計(jì)SC圖數(shù)據(jù)庫(kù)設(shè)計(jì)物理數(shù)據(jù)模型過程設(shè)計(jì)—詳細(xì)設(shè)計(jì)模塊的處理過程N(yùn)-S圖,PAD,PDL等描述工具—SC圖SC圖的組成符號(hào)(P88)矩形框來(lái)表示模塊
帶箭頭的連線表示模塊間的調(diào)用關(guān)系傳入和傳出模塊的數(shù)據(jù)流SC圖中的模塊符號(hào)傳入傳出變換源漏控制SC圖中的模塊調(diào)用簡(jiǎn)單調(diào)用
選擇調(diào)用
循環(huán)調(diào)用ABCDABC面向數(shù)據(jù)流的設(shè)計(jì)方法DFD圖的類型
變換型結(jié)構(gòu)
事務(wù)型結(jié)構(gòu)
從DFD圖到SC圖的映射
復(fù)審DFD圖,必要時(shí)可再次進(jìn)行修改或細(xì)化鑒別DFD圖的結(jié)構(gòu)特征:事務(wù)?變換?按照規(guī)則,把DFD圖為初始的SC圖改進(jìn)初始的SC圖變換結(jié)構(gòu)的DFD變換中心傳入傳出信息傳入流傳出流
變換流時(shí)間事務(wù)型結(jié)構(gòu)DFD事務(wù)中心接受路徑動(dòng)作路徑同時(shí)存在兩類結(jié)構(gòu)T傳入變換傳出事務(wù)中心變換分析劃分DFD圖的邊界
建立初始SC圖的框架頂層都只含一個(gè)用于控制的主模塊
第一層包括傳入、傳出和中心變換三個(gè)模塊
分解SC圖的各個(gè)分支
分解實(shí)質(zhì)上是“映射”
例子—?jiǎng)澐諨FDPEDCBAWRUVQabcdeprwuv傳入部分變換中心傳出部分第一級(jí)分解MEMTMCMAc,ec,eu,wu,w傳入分支的分解GetEAtoBReadDDtoEReadABtoCGetBGetCMAc,ecebbcaabddb傳出分支的分解WriteWUtoVWriteVPutUMEw,uwuuvv變換中心的分解MTRPQepc,prrw,u初始SC圖MCMTQPRMEWriteWPutUUtoVWriteVAtoBReadAGetBDtoEReadDBtoCGetCGetEMA事務(wù)分析在DFD圖上確定邊界事務(wù)中心接受部分(包括接受路徑)發(fā)送部分(包括全部動(dòng)作路徑)
畫出SC圖框架
DFD圖的三個(gè)部分分別映射為事務(wù)控制模塊,接受模塊和動(dòng)作發(fā)送模塊
分解和細(xì)化接受分支和發(fā)送分支
例子—?jiǎng)澐諨FD傳入T變換傳出接受部分事務(wù)中心動(dòng)作部分Example----first-levelfactoring發(fā)送事務(wù)控制接收頂層第一層混合結(jié)構(gòu)C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm優(yōu)化結(jié)構(gòu)設(shè)計(jì)的指導(dǎo)規(guī)則
對(duì)模塊分割、合并和變動(dòng)調(diào)用關(guān)系的指導(dǎo)規(guī)則
提高內(nèi)聚,降低耦合后簡(jiǎn)化模塊接口少用全局性數(shù)據(jù)和控制型信息保持高扇入/低扇出的原則
作用域/控制域規(guī)則
作用域不要超出控制域的范圍
位置離受它控制的模塊越近越好
扇入和扇出MMM的扇入M的扇出例子:扇出計(jì)算實(shí)發(fā)工資取得工資數(shù)據(jù)編外人員扣款編外人員工資編外人員稅收薪金制工資額計(jì)時(shí)制工資額常規(guī)扣款稅收扣款煎餅形結(jié)構(gòu)不可取!例子:扇出常規(guī)扣款編外人員實(shí)發(fā)工資
計(jì)算實(shí)發(fā)工資取得工資數(shù)據(jù)計(jì)時(shí)工人實(shí)發(fā)工資計(jì)薪工人實(shí)發(fā)工資編外人員扣款編外人員稅收編外人員工資稅收扣款計(jì)時(shí)制工資額薪金制工資額塔型結(jié)構(gòu)過程設(shè)計(jì)
目的確定模塊采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu)
任務(wù):編寫軟件的“過程設(shè)計(jì)說明書”
為每個(gè)模塊確定采用的算法
確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)
確定模塊接口的細(xì)節(jié)
過程設(shè)計(jì)的原則清晰第一的設(shè)計(jì)風(fēng)格結(jié)構(gòu)化的控制結(jié)構(gòu)逐步細(xì)化的實(shí)現(xiàn)方法過程設(shè)計(jì)工具流程圖N-S圖偽代碼PDL語(yǔ)言N-S圖S1S2順序CTFS1S2選擇WhileC
S
SUntilC
循環(huán)Jackson方法實(shí)體動(dòng)作實(shí)體結(jié)構(gòu)初始建模系統(tǒng)功能系統(tǒng)時(shí)間系統(tǒng)實(shí)現(xiàn)Jackson表示法Jackson圖Jackson偽代碼ABCAB0C0AB*順序選擇重復(fù)AseqAselectcond1Aiter{until
或while}condBBCorcond2BendAC
endAendA
(a)順序(b)選擇(c)重復(fù)面向?qū)ο笤O(shè)計(jì)的任務(wù)面向?qū)ο笤O(shè)計(jì)的任務(wù)
系統(tǒng)設(shè)計(jì)
系統(tǒng)整體結(jié)構(gòu)的設(shè)計(jì)
對(duì)象設(shè)計(jì)
對(duì)OOA模型中類/對(duì)象模型的具體化和細(xì)化
消息設(shè)計(jì)
從對(duì)象-
關(guān)系模型,設(shè)計(jì)出消息模型
設(shè)計(jì)模型復(fù)審面向?qū)ο笤O(shè)計(jì)責(zé)任設(shè)計(jì)消息設(shè)計(jì)類及對(duì)象設(shè)計(jì)子系統(tǒng)設(shè)計(jì)屬性、操作、協(xié)作者對(duì)象-行為模型對(duì)象-關(guān)系模型類/對(duì)象模型使用實(shí)例系統(tǒng)設(shè)計(jì)過程⑴
劃分子系統(tǒng);⑵
確定需要并發(fā)運(yùn)行的子系統(tǒng)并為它們分配處理器;⑶
描述子系統(tǒng)之間的通信;⑷
確定系統(tǒng)資源的管理和控制;⑸
確定人機(jī)交互構(gòu)件;⑹選擇實(shí)現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本策略。
四種主要子系統(tǒng)問題域子系統(tǒng)人機(jī)交互子系統(tǒng)任務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)劃分子系統(tǒng)劃分原則模塊化、功能獨(dú)立、信息隱藏同一個(gè)子系統(tǒng)的類擁有共同特性同一個(gè)子系統(tǒng)的類具有共同目的同一個(gè)子系統(tǒng)的類提供相似服務(wù)同一個(gè)子系統(tǒng)的類間相對(duì)高耦合子系統(tǒng)標(biāo)準(zhǔn)有明確的借口,與其他子系統(tǒng)通信一般類只和子系統(tǒng)內(nèi)部的其它類協(xié)作處理并發(fā)操作并發(fā)的對(duì)象(子系統(tǒng))同時(shí)異步作用于同一事件處理將并發(fā)子系統(tǒng)分配到不同處理器將并發(fā)子系統(tǒng)分配到同一處理器系統(tǒng)提供同步控制描述子系統(tǒng)間的通信子系統(tǒng)協(xié)作模型客戶/服務(wù)器端對(duì)端請(qǐng)求客戶子系統(tǒng)contract服務(wù)器子系統(tǒng)peersubsystempeersubsystem請(qǐng)求請(qǐng)求人機(jī)交互設(shè)計(jì)分類分析用戶特點(diǎn),設(shè)計(jì)不同界面增加用戶界面專用的類和對(duì)象利用快速原型演示,改進(jìn)界面設(shè)計(jì)任務(wù)管理設(shè)計(jì)策略確定任務(wù)的特征定義一個(gè)協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)的對(duì)象集成其它任務(wù)和協(xié)調(diào)者步驟識(shí)別由事件驅(qū)動(dòng)和時(shí)間驅(qū)動(dòng)的任務(wù)識(shí)別關(guān)鍵性任務(wù)、任務(wù)優(yōu)先級(jí)和任務(wù)管理類定義任務(wù)必要時(shí)擴(kuò)充有關(guān)任務(wù)的類和對(duì)象數(shù)據(jù)管理設(shè)計(jì)解決對(duì)象數(shù)據(jù)的存儲(chǔ)和檢索數(shù)據(jù)管理設(shè)計(jì)定義數(shù)據(jù)格式與所使用的數(shù)據(jù)存儲(chǔ)管理模式相關(guān)設(shè)計(jì)相應(yīng)的操作說明對(duì)象及所屬類和對(duì)象如何存儲(chǔ)自己對(duì)象設(shè)計(jì)
設(shè)計(jì)模型對(duì)象數(shù)據(jù)結(jié)構(gòu)算法消息傳遞控制分析模型類屬性方法關(guān)系行為對(duì)象描述對(duì)象描述協(xié)議描述:一組消息和對(duì)消息的注釋
實(shí)現(xiàn)描述:對(duì)對(duì)象接收到某個(gè)消息后所執(zhí)行的操作的實(shí)現(xiàn)細(xì)節(jié)的描述
算法設(shè)計(jì)
程序構(gòu)件與接口
對(duì)象間的接口和對(duì)象的整體結(jié)構(gòu)
領(lǐng)域?qū)ο蟮脑O(shè)計(jì)設(shè)計(jì)目的——支持軟件復(fù)用設(shè)計(jì)內(nèi)容調(diào)整需求復(fù)用已有的組件引入父類,分組管理領(lǐng)域類添加一般化類以建立協(xié)議調(diào)整OOA模型設(shè)計(jì)復(fù)審設(shè)計(jì)模板第七章統(tǒng)一建模語(yǔ)言UMLUML簡(jiǎn)介靜態(tài)建模動(dòng)態(tài)建模物理架構(gòu)建模RUPUMLUnifiedModelingLanguage近10年來(lái)OOSE最重要的成果貢獻(xiàn)者:GradyBooch,IvarJacobson,
JinRumbaugh中文網(wǎng)站http://www.umlUML的組成UML的模型元素表示模型中的某個(gè)概念表示模型元素之間的關(guān)系UML的元模型結(jié)構(gòu)元元模型層元模型層模型層用戶模型層UML模型UML模型圖靜態(tài)圖動(dòng)態(tài)圖視圖用例視圖邏輯視圖并發(fā)視圖構(gòu)件視圖部署視圖UML的特點(diǎn)統(tǒng)一標(biāo)準(zhǔn)面向?qū)ο蟊磉_(dá)能力強(qiáng)大可視化UML的應(yīng)用用于描述系統(tǒng)開發(fā)的不同類型于不同階段從需求分析到軟件設(shè)計(jì)到軟件測(cè)試及維護(hù)可視化問題描述,幫助理解問題幫助建立各階段的文檔獲取和交流有關(guān)應(yīng)用問題求解的知識(shí)輔助構(gòu)建系統(tǒng)靜態(tài)建模用例模型用例圖表示從最終用戶的角度描述系統(tǒng)功能類和對(duì)象模型類圖和對(duì)象圖表示類圖ClassDiagram學(xué)生姓名:string學(xué)號(hào):string書書名:string價(jià)格:real 1 購(gòu)買
0..*
屬于
對(duì)象圖ObjectDiagram王平:學(xué)生姓名:王平學(xué)號(hào):020106英語(yǔ):書書名:英語(yǔ)價(jià)格:26.5數(shù)學(xué):書書名:數(shù)學(xué)價(jià)格:21.8對(duì)象間關(guān)系關(guān)聯(lián)關(guān)系
(Association)
聚集關(guān)系(Aggregation)
泛化關(guān)系(Generalization)
依賴關(guān)系(Dependency)
細(xì)化關(guān)系
(Refinement)包圖子系統(tǒng)A子系統(tǒng)D子系統(tǒng)B子系統(tǒng)C子系統(tǒng)E子系統(tǒng)F動(dòng)態(tài)建模狀態(tài)圖(StateDiagram)時(shí)序圖(SequenceDiagram)協(xié)作圖(CollaborationDiagram)活動(dòng)圖(ActivityDiagram)消息同步消息異步消息簡(jiǎn)單消息狀態(tài)圖StateDiagram超時(shí)到達(dá)上樓上樓到達(dá)上樓到達(dá)在底樓向上移動(dòng)向底樓移動(dòng)向下移動(dòng)空閑[打印機(jī)就緒]打印文件時(shí)序圖(SequenceDiagram)[打印機(jī)忙]保存文件打印文件打印文件計(jì)算機(jī)打印服務(wù)器打印隊(duì)列計(jì)算機(jī)協(xié)作圖(CollaborationDiagram)[打印機(jī)忙]保存文件[打印機(jī)就緒]打印文件打印文件計(jì)算機(jī)打印隊(duì)列打印服務(wù)器打印機(jī)活動(dòng)圖ActivityDiagramDiskfreeDiskfull顯示磁盤滿顯示在打印刪去顯示信息建立打印文件Win.printAll()^printer.print()物理架構(gòu)建模邏輯架構(gòu)和物理架構(gòu)邏輯架構(gòu)物理架構(gòu)構(gòu)件圖配置圖RUP—基于UML的統(tǒng)一建模過程第八章編碼和語(yǔ)言選擇
編碼的目的編碼的風(fēng)格編碼使用的語(yǔ)言編碼的目的
編碼模塊的過程性描述一一一>源程序(不可執(zhí)行的)(可執(zhí)行的)編碼的過程熟悉所選語(yǔ)言的功能和程序開發(fā)環(huán)境
仔細(xì)閱讀設(shè)計(jì)文檔詳細(xì)設(shè)計(jì)
弄清要編碼的模塊的外部接口與內(nèi)部過程
編碼的風(fēng)格追求“聰明”和“技巧”---〉提倡“簡(jiǎn)明”和“直接”
使用標(biāo)準(zhǔn)的控制結(jié)構(gòu)
清晰的前提下求取效率
.Makeitrightbeforeyoumakeitfaster..Makeitclearbeforeyoumakeitfaster..Keepitrightwhenyoumakeitfaster.(求快不忘保持程序正確).Keepitsimpletomakeitfaster.(保持程序簡(jiǎn)單以求快).don’tsacrificeclarityfor“efficiency”.(書寫清楚,不要為“效率”犧牲清楚)源程序的文檔化
(codedocumentation)有意義的變量名稱適當(dāng)?shù)淖⑨寴?biāo)準(zhǔn)的書寫格式——用分層縮進(jìn)的寫法顯示嵌套結(jié)構(gòu)的層次;——在注釋段的周圍加上邊框;——在注釋段與程序段、以及不同程序段之間插入空行;——每行只寫一條語(yǔ)句;——書寫表達(dá)式時(shí),適當(dāng)使用空格或圓括號(hào)等作隔離符;
程序設(shè)計(jì)語(yǔ)言的發(fā)展面向機(jī)器的語(yǔ)言高級(jí)語(yǔ)言(第3代)甚高級(jí)語(yǔ)言機(jī)器語(yǔ)言(第1代)匯編語(yǔ)言(第2代)結(jié)構(gòu)語(yǔ)言基礎(chǔ)語(yǔ)言面向?qū)ο笳Z(yǔ)言第4代語(yǔ)言語(yǔ)言的選擇選擇編碼語(yǔ)言的標(biāo)準(zhǔn)
應(yīng)用領(lǐng)域
算法與計(jì)算復(fù)雜性
數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性
效率的考慮
適用各類應(yīng)用領(lǐng)域的語(yǔ)言
年代應(yīng)用領(lǐng)域主要語(yǔ)言其他語(yǔ)言20世紀(jì)60年代商業(yè)COBOLAssembler科學(xué)計(jì)算FORTRANALGOL、BASIC、APL系統(tǒng)AssemblerForth人工智能LISPSNOBOL
現(xiàn)代商業(yè)COBOL、C++、Java、電子表格C、PL/1科學(xué)計(jì)算FORTRAN、C、C++JavaBASIC系統(tǒng)C、C++、JavaAda、Modula人工智能LISP、Prolog
第九章軟件測(cè)試
測(cè)試的基本概念
黑盒測(cè)試
白盒測(cè)試
測(cè)試用例設(shè)計(jì)
多模塊程序的測(cè)試策略
面向?qū)ο笙到y(tǒng)的測(cè)試
測(cè)試的基本概念
測(cè)試(testing)的目的與任務(wù)
目的:發(fā)現(xiàn)程序的錯(cuò)誤
任務(wù):通過執(zhí)行程序,暴露潛在的錯(cuò)誤
糾錯(cuò)(debugging)的目的與任務(wù)
目的:定位和糾正錯(cuò)誤
任務(wù):消除軟件故障,保證程序的可靠運(yùn)行
測(cè)試的特性
挑剔性
抱著為證明程序有錯(cuò)的目的去測(cè)試
復(fù)雜性
設(shè)計(jì)合適的測(cè)試用例
不徹底性
Dijkstra一句名言:“程序測(cè)試只能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在”
經(jīng)濟(jì)性測(cè)試的種類
靜態(tài)分析(不執(zhí)行程序)靜態(tài)分析器代碼復(fù)審(CodeReview)動(dòng)態(tài)分析(執(zhí)行程序)黑盒測(cè)試測(cè)試程序功能白盒測(cè)試測(cè)試程序結(jié)構(gòu)測(cè)試的文檔
測(cè)試計(jì)劃
測(cè)試項(xiàng)目的名稱各項(xiàng)測(cè)試的目的、步驟和進(jìn)度測(cè)試用例的設(shè)計(jì)
測(cè)試報(bào)告測(cè)試項(xiàng)目名稱實(shí)測(cè)結(jié)果與期望結(jié)果的比較發(fā)現(xiàn)的問題測(cè)試達(dá)到的效果
黑盒測(cè)試
等價(jià)分類法(equivalencepartitioning)把輸入數(shù)據(jù)的可能值劃分為若干等價(jià)類
有效等價(jià)類和無(wú)效等價(jià)類每一無(wú)效等價(jià)類至少需要一個(gè)測(cè)試用例
例子某工廠公開招工,規(guī)定報(bào)名者年齡應(yīng)在16周歲至35周歲之間(到2002年3月30日止)即出生年月不在上述范圍內(nèi),將拒絕接受,并顯示“年齡不合格”等出錯(cuò)信息。
“出生年月”的等價(jià)分類
輸入數(shù)據(jù)有效等價(jià)類無(wú)效等價(jià)類出生年月①6位數(shù)字字符②有非數(shù)字字符③少于6個(gè)數(shù)字符④多于6個(gè)數(shù)字符對(duì)應(yīng)數(shù)值⑤在196702—198603之間⑥<196702⑦>198603月份對(duì)應(yīng)數(shù)值⑧在1—12之間⑨等于“0”⑩>12黑盒測(cè)試邊界值分析法(boundaryvalueanalysis)
使被測(cè)程序在邊界值及其附近運(yùn)行,從而更有效地暴露程序中潛藏的錯(cuò)誤
錯(cuò)誤猜測(cè)法(errorguessing)
猜測(cè)被測(cè)程序在哪些地方容易出錯(cuò)
針對(duì)可能的薄弱環(huán)節(jié)來(lái)設(shè)計(jì)測(cè)試用例
白盒測(cè)試
邏輯復(fù)蓋測(cè)試法(logiccoveragetesting)
用流程圖來(lái)設(shè)計(jì)測(cè)試用例
邏輯復(fù)蓋測(cè)試的5種標(biāo)準(zhǔn)發(fā)現(xiàn)錯(cuò)誤的能力
弱
強(qiáng)語(yǔ)句覆蓋每條語(yǔ)句至少執(zhí)行一次判定覆蓋每一判定的每個(gè)分支至少執(zhí)行一次條件覆蓋每一判定中的每個(gè)條件,分別按“真”、“假”至少各執(zhí)行一次判定/條件覆蓋同時(shí)滿足判定復(fù)蓋和條件復(fù)蓋的要求條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次白盒測(cè)試路徑測(cè)試法(pathtesting)著眼于程序執(zhí)行路徑的測(cè)試方法
程序圖(programgraph)
點(diǎn)覆蓋邊覆蓋路徑覆蓋測(cè)試用例設(shè)計(jì)黑盒測(cè)試用例設(shè)計(jì)三角形分類程序見教材p205白盒測(cè)試用例設(shè)計(jì)學(xué)生成績(jī)查詢程序見教材p208軟件的糾錯(cuò)糾錯(cuò)的策略試湊法跟蹤法推理法常用的糾錯(cuò)技術(shù)插入打印語(yǔ)句設(shè)置斷點(diǎn)掩蔽部分程序蠻力糾錯(cuò)技術(shù)多模塊程序的測(cè)試策略
測(cè)試的層次性
單元(模塊)測(cè)試(unittesting)綜合(集成)測(cè)試(integrationtesting)確認(rèn)測(cè)試(validationtesting)系統(tǒng)測(cè)試(systemtesting)程序錯(cuò)誤的類型
語(yǔ)法錯(cuò)誤
結(jié)構(gòu)性錯(cuò)誤
功能性錯(cuò)誤
接口錯(cuò)誤
單元測(cè)試
目的
通過模塊測(cè)試,使其代碼達(dá)到模塊說明書的需求
任務(wù)
(1)對(duì)模塊代碼進(jìn)行編譯,發(fā)現(xiàn)并糾正其語(yǔ)法錯(cuò)誤;(2)進(jìn)行靜態(tài)分析,驗(yàn)證模塊結(jié)構(gòu)及其內(nèi)部調(diào)用序列是否正確;(3)確定模塊的測(cè)試策略,并據(jù)此設(shè)計(jì)一組測(cè)試用例和必要的測(cè)試軟件;(4)用選定的測(cè)試用例對(duì)模塊進(jìn)行測(cè)試,直至滿足測(cè)試終止標(biāo)準(zhǔn)為止;(5)編制單元測(cè)試報(bào)告。
單元測(cè)試實(shí)施步驟編譯靜態(tài)分析器檢查代碼評(píng)審動(dòng)態(tài)測(cè)試測(cè)試驅(qū)動(dòng)模塊測(cè)試樁模塊集成測(cè)試
目的將經(jīng)過單元測(cè)試的模塊逐步組裝成具有良好一致性的完整的程序任務(wù)制訂集成測(cè)試實(shí)施策略確定集成測(cè)試的實(shí)施步驟,設(shè)計(jì)測(cè)試用例逐一地添加模塊,進(jìn)行測(cè)試集成測(cè)試策略與步驟
自頂向下測(cè)試
先廣后深實(shí)施步驟
先深后廣實(shí)施步驟
由底向上測(cè)試
混合方式測(cè)試(sandwichtesting)
對(duì)上層模塊采取自頂向下測(cè)試
對(duì)關(guān)鍵模塊或子系統(tǒng)采取由底向上測(cè)試
確認(rèn)測(cè)試
目的
確認(rèn)組裝好的程序是否滿足(SRS)的要求任務(wù)有效性測(cè)試(黑盒測(cè)試)配置復(fù)審(confingurationreview)
驗(yàn)收測(cè)試—專用
alpha與beta測(cè)試—通用系統(tǒng)測(cè)試
目的
軟件安裝到系統(tǒng)中以后,能否與系統(tǒng)的其余部分協(xié)調(diào)運(yùn)行
任務(wù)測(cè)試是否與硬件協(xié)調(diào)運(yùn)行測(cè)試是否和原來(lái)就有的其它軟件協(xié)調(diào)運(yùn)行
測(cè)試是否完成SRS對(duì)它的要求
終止測(cè)試的標(biāo)準(zhǔn)規(guī)定測(cè)試策略和應(yīng)達(dá)標(biāo)準(zhǔn)規(guī)定至少要查出的錯(cuò)誤數(shù)量面向?qū)ο笙到y(tǒng)的測(cè)試
OO軟件的測(cè)試策略
OO軟件測(cè)試用例設(shè)計(jì)
OO軟件的測(cè)試策略O(shè)O軟件的單元測(cè)試
全面地測(cè)試類和對(duì)象所封裝的屬性和操縱這些屬性的操作的整體
發(fā)現(xiàn)類的所有操作中存在的問題
與其他的類協(xié)同工作時(shí)可能出現(xiàn)的錯(cuò)誤
OO軟件的集成測(cè)試
基于黑盒方法的集成測(cè)試
基于線程的測(cè)試(thread-basedtesting)
基于使用(use-based)的測(cè)試
OO軟件的測(cè)試策略O(shè)O軟件的確認(rèn)測(cè)試和系統(tǒng)測(cè)試采用傳統(tǒng)的黑盒法OOA階段的用例所描述的用戶交互進(jìn)行測(cè)試導(dǎo)出OO系統(tǒng)測(cè)試的測(cè)試用例對(duì)象—行為模型時(shí)序圖等模擬用戶實(shí)際使用環(huán)境OO軟件測(cè)試用例設(shè)計(jì)
(1)
每個(gè)測(cè)試用例都要有一個(gè)唯一的標(biāo)識(shí),并與被測(cè)試的一個(gè)或幾個(gè)類相關(guān)聯(lián)起來(lái);(2)
每個(gè)測(cè)試用例都要陳述測(cè)試的目的;(3)
對(duì)每個(gè)測(cè)試用例要有相應(yīng)的測(cè)試步驟,包括被測(cè)對(duì)象的特定狀態(tài)、所使用的消息和操作、可能產(chǎn)生的錯(cuò)誤、測(cè)試需要的外部環(huán)境等
OO概念對(duì)測(cè)試用例設(shè)計(jì)的影響
繼承的成員函數(shù)需要測(cè)試
子類的測(cè)試用例可以參照父類
類測(cè)試用例設(shè)計(jì)
基于故障的測(cè)試用例設(shè)計(jì)基于用例的測(cè)試用例設(shè)計(jì)類間測(cè)試用例設(shè)計(jì)
類—關(guān)系模型
類—行為模型
第十章軟件復(fù)用
軟件復(fù)用的基本概念 領(lǐng)域工程基于構(gòu)件的開發(fā)
面向?qū)ο笈c軟件復(fù)用
小結(jié)
軟件復(fù)用的基本概念
軟件復(fù)用的定義
軟件復(fù)用的重要性
軟件復(fù)用的目的是能更快、更好、成本更低地生產(chǎn)軟件制品。一般地說,在軟件開發(fā)中采用復(fù)用構(gòu)件可以比從頭開發(fā)這個(gè)軟件更加容易。軟件復(fù)用的粒度
按照可復(fù)用的粒度,軟件制品從小到大分為以下幾類:源代碼復(fù)用軟件體系結(jié)構(gòu)復(fù)用應(yīng)用程序生成器領(lǐng)域特定的軟件體系結(jié)構(gòu)的復(fù)用領(lǐng)域工程所謂的“領(lǐng)域”,指的是一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。通過領(lǐng)域分析(domainanalysis)找出最優(yōu)復(fù)用,對(duì)它們進(jìn)行設(shè)計(jì)和構(gòu)造,形成為可復(fù)用構(gòu)件,進(jìn)而建立大規(guī)模的軟件構(gòu)件倉(cāng)庫(kù)的過程,就是領(lǐng)域工程。橫向復(fù)用和縱向復(fù)用
橫向復(fù)用是指復(fù)用不同應(yīng)用領(lǐng)域中的軟件元素??v向復(fù)用是指在一類具有較多公共性的應(yīng)用領(lǐng)域之間進(jìn)行軟部品復(fù)用。領(lǐng)域分析用戶需求軟件開發(fā)與構(gòu)件開發(fā)目標(biāo)軟件確認(rèn)可復(fù)用構(gòu)件庫(kù)檢索理解領(lǐng)域分析
定義領(lǐng)域分析是在特定應(yīng)用領(lǐng)域?qū)ふ易顑?yōu)復(fù)用,以公共對(duì)象、類、子集合和框架等形式進(jìn)行標(biāo)識(shí)、分析和規(guī)約。目標(biāo)是獲得領(lǐng)域分析模型
領(lǐng)域分析的輸入和輸出
建造可復(fù)用構(gòu)件
創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計(jì)框架
標(biāo)準(zhǔn)數(shù)據(jù)
標(biāo)準(zhǔn)接口協(xié)議程序模板構(gòu)件模型
建立可復(fù)用構(gòu)件庫(kù)
三種分類模式
枚舉分類
門面分類
屬性-值分類
基于構(gòu)件的開發(fā)
構(gòu)件集成模型應(yīng)用系統(tǒng)工程面向?qū)ο笈c軟件復(fù)用
OO方法對(duì)軟件復(fù)用的支持復(fù)用技術(shù)對(duì)OO方法的支持小結(jié)軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動(dòng)的解決方案。通過軟件復(fù)用,可以提高軟件開發(fā)的效率和質(zhì)量。軟件復(fù)用研究被視為解決軟件危機(jī),提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實(shí)可行的途徑。第十一章軟件維護(hù)軟件維護(hù)的種類
軟件可維護(hù)性
軟件維護(hù)的實(shí)施
軟件維護(hù)的管理
軟件再工程
軟件維護(hù)的種類完善性維護(hù)(perfectivemaintenance)
適應(yīng)性維護(hù)(adaptivemaintenance)糾錯(cuò)性維護(hù)(correctivemaintenance)預(yù)防性維護(hù)(preventivemaintenance)
軟件可維護(hù)性
(maintainability)
影響可維護(hù)性的軟件屬性
可理解性(understandability)
可修改性(modifiability)
可測(cè)試性(testability)對(duì)可維護(hù)性的定量度量提高可維護(hù)性的途徑提供完整和一致的文檔
采用現(xiàn)代化的開發(fā)方法
軟件維護(hù)的實(shí)施
不嚴(yán)重
⊕維護(hù)人員糾錯(cuò)嚴(yán)重名單測(cè)試*⊕已修改⊕適應(yīng)維護(hù)人*的軟件員名單已修改完善高的配置⊕批準(zhǔn)交付低用戶的配置
開發(fā)項(xiàng)目表
嚴(yán)重性評(píng)價(jià)錯(cuò)誤分析優(yōu)先度評(píng)價(jià)維護(hù)過程配置復(fù)審問題分析區(qū)分類型糾錯(cuò)項(xiàng)目表維護(hù)的副作用
修改編碼的副作用
修改數(shù)據(jù)的副作用
修改文檔的副作用
軟件維護(hù)的管理
維護(hù)的機(jī)構(gòu)與人員
維護(hù)時(shí)期的配置管理
配置管理數(shù)據(jù)庫(kù)
版本控制
變動(dòng)控制維護(hù)管理文檔
維護(hù)日志
維護(hù)申請(qǐng)摘要報(bào)告和維護(hù)趨勢(shì)圖
維護(hù)費(fèi)用的估算
軟件再工程
正向工程信息庫(kù)分析文檔重構(gòu)逆向工程代碼重構(gòu)數(shù)據(jù)重構(gòu)逆向工程重構(gòu)代碼提取抽象求精簡(jiǎn)化“臟的”源代碼干凈的源代碼初始的設(shè)計(jì)說明最終的設(shè)計(jì)說明處理界面數(shù)據(jù)庫(kù)計(jì)劃時(shí)期的工作流程開始問題定義可行性研究可行否項(xiàng)目實(shí)施計(jì)劃終止項(xiàng)目的建議停止問題定義目的弄清需要解決的問題項(xiàng)目所需的資源和經(jīng)費(fèi)任務(wù)編寫“系統(tǒng)目標(biāo)與范圍的說明”《系統(tǒng)目標(biāo)與范圍的說明》
示例系統(tǒng)目標(biāo)和范圍說明書2001年1月1.項(xiàng)目:教材銷售系統(tǒng)2.問題:人工發(fā)售教材手續(xù)繁瑣,且易出錯(cuò)。3.項(xiàng)目目標(biāo):建立一個(gè)高效率、無(wú)差錯(cuò)的微機(jī)教材銷售系統(tǒng)。4.項(xiàng)目范圍:利用現(xiàn)有微型計(jì)算機(jī),軟件開發(fā)費(fèi)用不超過5000元。5.初步想法:建議在系統(tǒng)中增加對(duì)缺書的統(tǒng)計(jì)與采購(gòu)功能。6.可行性研究:建議進(jìn)行大約10天的可行性研究,研究費(fèi)用不超過1000元??尚行匝芯磕康难芯宽?xiàng)目是否可能實(shí)現(xiàn)和值得進(jìn)行回答Whytodo?研究的內(nèi)容經(jīng)濟(jì)可行性技術(shù)可行性運(yùn)行可行性法律可行性可行性研究研究的步驟細(xì)化和修改“系統(tǒng)目標(biāo)和范圍”,得出新系統(tǒng)的邏輯模型弄清當(dāng)前系統(tǒng)—系統(tǒng)流程圖導(dǎo)出新系統(tǒng)邏輯模型—數(shù)據(jù)流圖導(dǎo)出新系統(tǒng)的解決方案提出推薦的方案本項(xiàng)目的開發(fā)價(jià)值推薦這個(gè)方案的理由系統(tǒng)流程圖描述系統(tǒng)物理模型包含人員、硬件、軟件等子系統(tǒng)符號(hào)借用程序流程圖符號(hào)舉例見p268圖12.5成本—效益分析系統(tǒng)成本開發(fā)成本運(yùn)行維護(hù)成本系統(tǒng)效益經(jīng)濟(jì)效益社會(huì)效益可行性論證報(bào)告系統(tǒng)概述簡(jiǎn)述當(dāng)前系統(tǒng)及其問題新系統(tǒng)功能及新舊系統(tǒng)的比較可行性分析經(jīng)濟(jì)、技術(shù)、法律上的可行性建立新系統(tǒng)的主客觀條件分析結(jié)論意見YesorNo軟件風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)識(shí)別項(xiàng)目風(fēng)險(xiǎn)技術(shù)風(fēng)險(xiǎn)商業(yè)風(fēng)險(xiǎn)風(fēng)險(xiǎn)預(yù)測(cè)風(fēng)險(xiǎn)發(fā)生的可能性風(fēng)險(xiǎn)發(fā)生后的后果風(fēng)險(xiǎn)的駕馭和監(jiān)控軟件計(jì)劃項(xiàng)目實(shí)施計(jì)劃質(zhì)量保證計(jì)劃軟件測(cè)試計(jì)劃文檔編制計(jì)劃用戶培訓(xùn)計(jì)劃綜合支持計(jì)劃軟件分發(fā)計(jì)劃項(xiàng)目實(shí)施計(jì)劃
系統(tǒng)概述包括項(xiàng)目目標(biāo),主要功能,系統(tǒng)特點(diǎn),以及關(guān)于開發(fā)工作的安排系統(tǒng)資源包括開發(fā)和運(yùn)行該軟件系統(tǒng)所需要的各種資源,如硬件、軟件、人員和組織機(jī)構(gòu)等費(fèi)用預(yù)算分階段的人員費(fèi)用、機(jī)時(shí)費(fèi)用及其它費(fèi)用進(jìn)度安排各階段起止時(shí)間、完成文檔及驗(yàn)收方式要交付的產(chǎn)品清單第十三章軟件工程管理管理的目的與內(nèi)容軟件估算模型軟件成本估計(jì)人員的分配與組織項(xiàng)目進(jìn)度安排軟件知識(shí)產(chǎn)權(quán)保護(hù)管理的目的與內(nèi)容目的按預(yù)定的時(shí)間和費(fèi)用,完成軟件的計(jì)劃、開發(fā)和維護(hù)內(nèi)容費(fèi)用管理估算軟件的開發(fā)費(fèi)用管理開發(fā)費(fèi)用的有效使用質(zhì)量管理(包括配置管理)項(xiàng)目的其它管理項(xiàng)目進(jìn)度安排人員的分配與組織軟件估算模型靜態(tài)單變量資源模型Putnam資源模型COCOMO模型靜態(tài)單變量資源模型資源=c1x(估計(jì)的軟件特征)c2資源開發(fā)工作量(E)、開發(fā)時(shí)間(T)或開發(fā)人數(shù)(P)估計(jì)的軟件特征源程序長(zhǎng)度(L)或軟件工作量(E)c1,c2依賴于開發(fā)環(huán)境和軟件應(yīng)用領(lǐng)域的常數(shù)Putnam資源模型L=cK1/3T4/3或K=L3/(c3T4)L(行):源程序長(zhǎng)度T(年):開發(fā)時(shí)間K(人-年):全生存期工作量c:與開發(fā)環(huán)境有關(guān)的常數(shù)COCOMO模型COnstructiveCOstMOdel以靜態(tài)單變量模型為基礎(chǔ)將軟件分類:組織半獨(dú)立嵌入增加工作量調(diào)節(jié)因子不同類型軟件的
COCOMO模型
軟件類別模型方程適用范圍組織型E=3.2×L1.05T=2.5×E0.38高級(jí)語(yǔ)言應(yīng)用程序,如科學(xué)計(jì)算,數(shù)據(jù)處理企業(yè)管理程序等半獨(dú)立型E=3.0×L1.12T=2.5×E0.35大多數(shù)實(shí)用程序,如編輯程序、連接程序編輯程序等嵌入型E=2.8×L1.20T=2.5×E0.32與硬件關(guān)系密切的系統(tǒng)程序,如操作系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng),實(shí)時(shí)處理與控制程序等調(diào)節(jié)因子和它的值范圍
屬性調(diào)節(jié)因子調(diào)節(jié)值范圍例13.1中使用的值產(chǎn)品屬性要求的可靠性等級(jí)數(shù)據(jù)庫(kù)規(guī)模產(chǎn)品復(fù)雜度0.75-1.400.94-1.160.70-1.651.000.941.30計(jì)算機(jī)屬性對(duì)程序執(zhí)行時(shí)間的約束對(duì)程序占用存儲(chǔ)容量的約束開發(fā)環(huán)境的變動(dòng)開發(fā)環(huán)境的響應(yīng)時(shí)間1.00-1.661.0
-1.560.87-1.300.87-1.151.111.061.001.00人員屬性分析員水平程序員水平對(duì)應(yīng)用領(lǐng)域的熟悉程度對(duì)開發(fā)環(huán)境的熟悉程度對(duì)所用語(yǔ)言的熟悉程度1.46-0.711.42-0.701.29-0.821.21-0.901.14-0.950.860.861.001.101.00項(xiàng)目屬性開發(fā)方法的現(xiàn)代化軟件工具的數(shù)質(zhì)量完成時(shí)間的限制1.24-0.821.24-0.831.23-1.100.911.101.00軟件成本估計(jì)自頂向下成本估計(jì)由底向上成本估計(jì)算法模型估計(jì)自頂向下成本估計(jì)首先估算總成本然后在項(xiàng)目?jī)?nèi)部進(jìn)行成本分配特爾斐Delphi法多個(gè)專家各自填表綜合專家意見,摘要通知大家開始新一輪估計(jì)多次反復(fù),直到專家意見接近由底向上成本估算先將開發(fā)任務(wù)分解為許多子任務(wù)子任務(wù)分成子子任務(wù)估計(jì)各個(gè)任務(wù)單元的成本匯合成項(xiàng)目總成本算法模型估計(jì)算法模型就是資源模型由歷史數(shù)據(jù)導(dǎo)出選擇適用的模型模型估計(jì)法與自頂向下估計(jì)或由底向上估計(jì)結(jié)合使用人員的分配與組織Rayleigh-Norden曲線兩條重要定律人員組織Rayleigh-Norden曲線①②③td
t人力①浪費(fèi)的人力②不足的人力③過晚的人力兩條重要的定律人員-時(shí)間權(quán)衡定律Brooks定律向一個(gè)已經(jīng)延晚的項(xiàng)目追加開發(fā)人員,可能使它完成得更晚E=常數(shù)/(T或td)4
人員組織層次型組織結(jié)構(gòu)軟件經(jīng)理項(xiàng)目經(jīng)理開發(fā)小組民主開發(fā)小組無(wú)我程序設(shè)計(jì)主程序員小組一元化領(lǐng)導(dǎo)主程序員分配工作主程序員決定重大問題項(xiàng)目進(jìn)度安排計(jì)劃評(píng)審技術(shù)建立PERT圖找出關(guān)鍵路徑標(biāo)出最遲開始時(shí)間PERT圖的使用Gannt圖PERT圖例子測(cè)試數(shù)據(jù)2編碼4產(chǎn)品測(cè)試4測(cè)試軟件6測(cè)試計(jì)劃2起點(diǎn)分析終點(diǎn)文檔2設(shè)計(jì)4關(guān)鍵路徑編碼4產(chǎn)品測(cè)試4測(cè)試軟件6測(cè)試數(shù)據(jù)2測(cè)試計(jì)劃2起點(diǎn)終點(diǎn)文檔2設(shè)計(jì)4分析3(0,0)(0,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025甘肅省安全員-A證考試題庫(kù)附答案
- 2025年-河北省安全員-C證考試題庫(kù)
- 2025重慶市安全員知識(shí)題庫(kù)
- 《手的運(yùn)動(dòng)》課件
- 課件:新課標(biāo)《信用工具和外匯》
- 《PICC置管及其維護(hù)》課件
- 《南朝山水詩(shī)》課件
- 單位人力資源管理制度合并匯編十篇
- 【語(yǔ)文課件】《落花生》復(fù)習(xí)課件
- 單位管理制度展示選集【人事管理篇】十篇
- 列管式換熱器-換熱面積計(jì)算
- 10個(gè)地基基礎(chǔ)工程質(zhì)量通病及防治措施
- 25m預(yù)應(yīng)力混凝土簡(jiǎn)支T梁橋設(shè)計(jì)(共30頁(yè))
- 籃球校本課程教案
- 高一學(xué)生文理分班意向表
- 高等傳熱學(xué)部分答案
- 地球物理學(xué)進(jìn)展投稿須知
- 機(jī)床精度檢驗(yàn)標(biāo)準(zhǔn) VDI3441 a ISO230-2
- 七年級(jí)英語(yǔ)下冊(cè)任務(wù)型閱讀單元測(cè)試題(含答案)(word)
- 解析電力施工項(xiàng)目的信息化管理
- 火炬介紹 音速火炬等
評(píng)論
0/150
提交評(píng)論