軟件工程軟件工程實(shí)踐課件
軟件教研室軟件工程的知識(shí)體系軟件工程知識(shí)體系軟件需求軟件設(shè)計(jì)軟件測(cè)試軟件維護(hù)軟件需求基礎(chǔ)需求過程需求獲取需求分析需求規(guī)格說明需求分析工具軟件設(shè)計(jì)基礎(chǔ)軟件設(shè)計(jì)關(guān)鍵問題軟件結(jié)構(gòu)與體系結(jié)構(gòu)軟件設(shè)計(jì)質(zhì)量的分析與評(píng)價(jià)軟件設(shè)計(jì)符號(hào)軟件設(shè)計(jì)的策略與方法軟件測(cè)試基礎(chǔ)測(cè)試級(jí)別測(cè)試技術(shù)與 測(cè) 試相 關(guān) 的度量測(cè)試過程軟件維護(hù)基礎(chǔ)軟件維護(hù)的關(guān)鍵問題維護(hù)過程維護(hù)技術(shù)可行性研究可行性研究的目的可行性研究的過程系統(tǒng)流程圖數(shù)據(jù)流圖數(shù)據(jù)字典成 本/效益分析第1頁(yè)/共140頁(yè) 軟件教研室軟件工程實(shí)踐的各個(gè)環(huán)節(jié)的本質(zhì)1.理解問題(通訊和分析);2.計(jì)劃一個(gè)解決方案(建模和軟件設(shè)計(jì));3.執(zhí)行計(jì)劃(編寫代碼);4.檢查結(jié)果的精度(測(cè)試和品質(zhì)保證)第2頁(yè)/共140頁(yè) 軟件教研室對(duì)需求內(nèi)容進(jìn)行初步的分析,確定解決問題的可能性,分析不同解決方案的優(yōu)劣,并提出建議。其本質(zhì)實(shí)際上就是一個(gè)粗略的系統(tǒng)分析和設(shè)計(jì)過程,通常由客戶完成??尚行匝芯康哪康目尚行匝芯康哪康牡?頁(yè)/共140頁(yè) 軟件教研室可行性研究的類型可行性研究的類型1.1.研究型項(xiàng)目的可行性研究分析研究型項(xiàng)目的可行性研究分析2.2.委托型可行性研究分析;委托型可行性研究分析;3.3.自主開發(fā)性可行性研究分析;自主開發(fā)性可行性研究分析;第4頁(yè)/共140頁(yè) 軟件教研室可行性研究解決問題過程的本質(zhì)當(dāng)前系統(tǒng)物理模型邏輯模型邏輯模型物理模型目標(biāo)系統(tǒng)模型化抽象化怎么做做什么實(shí)例化具體化導(dǎo)出理解需求表達(dá)需求第5頁(yè)/共140頁(yè) 軟件教研室問題定義問題定義n n了解系統(tǒng)應(yīng)解決的問題,這些問題是如何提出的n n設(shè)想這些問題如何解決才能滿足要求n n了解問題的結(jié)構(gòu)第6頁(yè)/共140頁(yè) 軟件教研室設(shè)計(jì)方案選擇設(shè)計(jì)方案選擇1.市場(chǎng)分析;2.軟件環(huán)境分析;3.硬件環(huán)境分析;4.功能分析;5.動(dòng)態(tài)分析;6.壓力分析;第7頁(yè)/共140頁(yè) 軟件教研室方案評(píng)估方案評(píng)估1.項(xiàng)目效益評(píng)估;2.社會(huì)效益評(píng)估;3.項(xiàng)目成本核算;4.工作計(jì)劃評(píng)估;5.項(xiàng)目風(fēng)險(xiǎn)評(píng)估;可行性研究報(bào)告可行性研究報(bào)告研究型示例招標(biāo)文件第8頁(yè)/共140頁(yè) 軟件教研室思考題思考題加油站基礎(chǔ)信息管理系統(tǒng),是一個(gè)定位于加油站基本信息、油機(jī)信息、油罐信息、加油站督查情況、督查圖片、加油站電子地圖等信息查詢、維護(hù)的管理系統(tǒng)。該管理系統(tǒng)放在安徽省石油公司內(nèi)網(wǎng)上,采用網(wǎng)站的形式使用該管理系統(tǒng),有助于各分公司隨時(shí)查看加油站基礎(chǔ)信息,便于對(duì)加油站信息的統(tǒng)計(jì)、查詢等。全系統(tǒng)共分為加油站信息管理、人的管理、費(fèi)用管理三個(gè)大塊。編寫可行性研究報(bào)告第9頁(yè)/共140頁(yè) 軟件教研室系統(tǒng)流程圖實(shí)例加油站基礎(chǔ)信息管理模塊(提供加油站設(shè)備和經(jīng)營(yíng)產(chǎn)品的基本信息,如加油機(jī)、油槍和油品的對(duì)應(yīng)關(guān)系信息和油罐相關(guān)數(shù)據(jù)信息-罐容表等)加油站人員管理模塊(提供加油站人員和班組信息);并客戶信息管理功能1銷售數(shù)據(jù)管理2庫(kù)存數(shù)據(jù)管理3進(jìn)油數(shù)據(jù)管理4預(yù)收款加油管理5計(jì)帳加油管理6代儲(chǔ)代付管理7加油站資金管理8發(fā)票管理9潤(rùn)滑油管理10IC卡加油管理數(shù)據(jù)采集客戶端(自動(dòng)采集加油機(jī)和液位儀數(shù)據(jù))為ERP和二次物流提供經(jīng)營(yíng)數(shù)據(jù)日常業(yè)務(wù)管理非日常業(yè)務(wù)管理1月末盤點(diǎn)2價(jià)格調(diào)整3季節(jié)變號(hào)4損溢調(diào)整5油搶校檢6更還主板7亂碼管理8自用油管理報(bào)表生成(交接班表、銷售日?qǐng)?bào)表、付油日?qǐng)?bào)表、商品盤點(diǎn)月報(bào)表、月商品盤點(diǎn)附表、油品分罐保管表、庫(kù)存商品明細(xì)分類帳表,其他一些相關(guān)業(yè)務(wù)表)加油站管理人員ME管理人員地市管理人員省公司管理人員虛線為相關(guān)功能實(shí)線為管理功能第10頁(yè)/共140頁(yè) 軟件教研室面向數(shù)據(jù)流的模型-數(shù)據(jù)流圖 數(shù)據(jù)流圖是一種圖形化技術(shù),它描述信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換ComputerbasedComputerbasedsystemsysteminputinputoutputoutput第11頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流圖的主要圖形元素 第12頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流與數(shù)據(jù)加工之間的關(guān)系第13頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流的分層描述為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,需要采用層次結(jié)構(gòu)的數(shù)據(jù)流圖。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)第14頁(yè)/共140頁(yè) 軟件教研室編寫數(shù)據(jù)流圖的步驟一最高抽象層 抽取數(shù)據(jù)的源點(diǎn)和終點(diǎn)信息分析問題描述,重點(diǎn)提取問題描述中源點(diǎn)和終點(diǎn)信息,同時(shí)分析與源點(diǎn)和終點(diǎn)有關(guān)的各類高抽象度的加工和數(shù)據(jù)流以及數(shù)據(jù)存儲(chǔ)信息。處理順序是:1.首先抽取數(shù)據(jù)的源點(diǎn)和終點(diǎn)信息2.抽取加工點(diǎn)的信息3.最后考慮數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)信息(數(shù)據(jù)流圖與程序流不同,程序流圖表示的是控制,而數(shù)據(jù)流圖描述的是數(shù)據(jù)的流向。)第15頁(yè)/共140頁(yè) 軟件教研室編寫數(shù)據(jù)流圖的步驟一細(xì)化處理進(jìn)一步分解數(shù)據(jù)流圖的加工,數(shù)據(jù)流和儲(chǔ)存信息分析問題描述,重點(diǎn)細(xì)化加工點(diǎn),處理順序是:1.分析上層加工點(diǎn)的信息,細(xì)化加工點(diǎn)信息2.分析數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)信息,細(xì)化數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)信息3.對(duì)加工點(diǎn)、數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)進(jìn)行多層次的優(yōu)化第16頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流圖繪制的準(zhǔn)則數(shù)據(jù)流圖繪制的準(zhǔn)則 細(xì)化結(jié)束的準(zhǔn)則:是當(dāng)涉及到如何具體實(shí)現(xiàn)一個(gè)功能時(shí)就不應(yīng)該再細(xì)化了。細(xì)化一致性準(zhǔn)則:當(dāng)把一個(gè)處理細(xì)化為一些子處理時(shí),細(xì)化前和細(xì)化后的數(shù)據(jù)流必須相同。層次編號(hào)準(zhǔn)則:對(duì)數(shù)據(jù)流圖中的元素進(jìn)行編號(hào)處理時(shí)應(yīng)該能夠反映出元素的層次和分解關(guān)系。數(shù)據(jù)分解簡(jiǎn)化性準(zhǔn)則:數(shù)據(jù)流圖中的元素不能太多,如果太多就需要進(jìn)行分層描述處理。第17頁(yè)/共140頁(yè) 軟件教研室創(chuàng)建數(shù)據(jù)流圖方法-語(yǔ)法分析方法 所謂語(yǔ)法分析方法是通過對(duì)軟件需求的文本描述的分析,選取出其中的動(dòng)詞和名詞。其中動(dòng)詞通常表示為應(yīng)用中的加工過程描述;而名詞通常被描述為外部實(shí)體(方框)、數(shù)據(jù)或控制對(duì)象(箭頭)、或數(shù)據(jù)存儲(chǔ)(雙線表示)。這些名詞和動(dòng)詞之間是相互關(guān)聯(lián)的。第18頁(yè)/共140頁(yè) 軟件教研室語(yǔ)法分析方法實(shí)例語(yǔ)法分析方法實(shí)例加油站電子帳表系統(tǒng)是根據(jù)加油站日常工作流程開發(fā),適用于加油站進(jìn)、銷、付、存管理的服務(wù)模塊。系統(tǒng)可以根據(jù)加油站錄入的日常顧客消費(fèi)數(shù)據(jù),結(jié)合油庫(kù)的進(jìn)貨數(shù)據(jù),自動(dòng)生成各種報(bào)表和帳表。第19頁(yè)/共140頁(yè) 軟件教研室加油站電子帳表系統(tǒng)這個(gè)數(shù)據(jù)流圖只是一個(gè)高層的系統(tǒng)邏輯模型,它反映了目標(biāo)系統(tǒng)要實(shí)現(xiàn)的功能0層:數(shù)據(jù)流圖實(shí)例數(shù)據(jù)流圖實(shí)例 顧客事物處理油庫(kù)第20頁(yè)/共140頁(yè) 軟件教研室1層描述第21頁(yè)/共140頁(yè) 軟件教研室2層描述第22頁(yè)/共140頁(yè) 軟件教研室3層銷售細(xì)化描述第23頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)詞典數(shù)據(jù)詞典 數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合。第24頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)詞典實(shí)例數(shù)據(jù)詞典實(shí)例-銀行存折銀行存折 第25頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)詞典實(shí)例數(shù)據(jù)詞典實(shí)例-銀行存折銀行存折 第26頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)詞典實(shí)例數(shù)據(jù)詞典實(shí)例-銀行存折銀行存折 存折格式存折戶名所號(hào)帳號(hào)開戶日性質(zhì)(印密)1存取行50戶名2字母24所號(hào)“001”.“999”帳號(hào)“00000001”.“99999999”開戶日年月日性質(zhì)“1”.“6”注:“1”表示普通戶,“5”表示工資戶等印密“0”注:印密在存折上不顯示存取行日期(摘要)支出存入余額操作復(fù)核第27頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)字典實(shí)例加油站員工信息表字段名稱字段類型值域備注序號(hào)數(shù)值型加油站編號(hào)字符型外鍵員工編號(hào)字符型主鍵姓名字符型性別字符型男、女年齡數(shù)值型職位字符型是否正式工字符型是、否是否列入勞資報(bào)表字符型列入勞資報(bào)表用工、由勞務(wù)公司派遣、其他員工是否住站字符型是、否文化程度字符型小學(xué)、初中、高中、中專、大專、本科、研究生入職時(shí)間(年月日)日期型上報(bào)時(shí)間(年月日)日期型備注字符型第28頁(yè)/共140頁(yè) 軟件教研室成本估算的三種技術(shù) 1.代碼行技術(shù):代碼行技術(shù)的優(yōu)缺點(diǎn),估算代碼行比較困難.如果有類似的經(jīng)歷也許可以比較簡(jiǎn)單但成本有高估的可能;2.任務(wù)分解技術(shù):這是目前應(yīng)用比較多的一種方法;3.自動(dòng)估計(jì)成本技術(shù);第29頁(yè)/共140頁(yè) 軟件教研室成本/效益分析的方法 1.貨幣的時(shí)間價(jià)值;2.投資回收期;3.純收入;4.投資回收率;第30頁(yè)/共140頁(yè) 軟件教研室思考題 1.可行性研究的意義在哪里?2.可行性研究的粒度如何?3.可行性研究的種類和可行分析的不同側(cè)重點(diǎn)?4.數(shù)據(jù)流圖是否僅僅應(yīng)用于可行研究?5.甲古文公司的產(chǎn)品BC4J怎么念?第31頁(yè)/共140頁(yè) 軟件教研室需求分析的任務(wù) 確定軟件設(shè)計(jì)的約束、軟件同其它系統(tǒng)元素的接口細(xì)節(jié)和逆向需求定義軟件的其它有效性需求,如出錯(cuò)處理等基本要求需求分析研究的對(duì)象是軟件項(xiàng)目的用戶要求準(zhǔn)確地表達(dá)被接受的用戶要求確定被開發(fā)軟件系統(tǒng)的系統(tǒng)元素將功能和信息結(jié)構(gòu)分配到這些系統(tǒng)元素中建立四類模型(數(shù)據(jù)模型、功能模型、行為模型和層次模型)第32頁(yè)/共140頁(yè) 軟件教研室需求分析的數(shù)據(jù)流圖需求分析的數(shù)據(jù)流圖 第33頁(yè)/共140頁(yè) 軟件教研室需求任務(wù)的過程模型需求任務(wù)的過程模型 需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的“做什么”的問題。通常軟件開發(fā)項(xiàng)目是要實(shí)現(xiàn)目標(biāo)系統(tǒng)的物理模型。目標(biāo)系統(tǒng)的具體物理模型是由它的邏輯模型經(jīng)實(shí)例化,即具體到某個(gè)業(yè)務(wù)領(lǐng)域而得到的第34頁(yè)/共140頁(yè) 軟件教研室獲取需求的方法 獲取需求的方法訪談?wù){(diào)查表情景分析功能分析數(shù)據(jù)流圖數(shù)據(jù)字典IPO圖使用說明書建立快速原形第四代開發(fā)語(yǔ)言可重用的軟件構(gòu)件形式化規(guī)格說明第35頁(yè)/共140頁(yè) 軟件教研室其它獲取需求的方法 頭腦風(fēng)暴:其基本概念是指一組人沉迷于一種“自由發(fā)言”的境界中,在無約束的環(huán)境下進(jìn)行某個(gè)方面的自由思考,目的是產(chǎn)生新的想法。人種論:要求觀察者只有靠完全溶入到工作中,才能徹底地了解各種實(shí)踐、問題和所關(guān)注的事物等。需求剝離:當(dāng)存在一份客戶的需求文檔或規(guī)格說明時(shí),或者存在一份可能相似的、原有產(chǎn)品的規(guī)格說明書時(shí),使用需求剝離技術(shù)將單個(gè)需求可以從原始中抽取(剝離)出來,并加入到新的文檔中。第36頁(yè)/共140頁(yè) 軟件教研室分析模型的介紹 主要?jiǎng)?chuàng)建的模型是:數(shù)據(jù)模型:主要采用ERD圖描述,描繪數(shù)據(jù)對(duì)象及數(shù)據(jù)對(duì)象之間的關(guān)系。功能模型:主要采用數(shù)據(jù)流圖描述,描述當(dāng)數(shù)據(jù)在軟件系統(tǒng)中移動(dòng)時(shí)被變換的邏輯過程,指明系統(tǒng)具有的變換數(shù)據(jù)的功能。行為模型:采用狀態(tài)轉(zhuǎn)換圖描述,指明了作為外部事件結(jié)果的系統(tǒng)行為。為此,狀態(tài)轉(zhuǎn)換圖描述了系統(tǒng)各種行為模式(狀態(tài))和在不同狀態(tài)間轉(zhuǎn)換的方式。第37頁(yè)/共140頁(yè) 軟件教研室系統(tǒng)描述分析模型設(shè)計(jì)模型分析模型的關(guān)系 第38頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)模型的描述工具-實(shí)體關(guān)系圖 ObjectObject1 1ObjectObject2 2relationshiprelationship(0,m)(0,m)(1,1)(1,1)第39頁(yè)/共140頁(yè) 軟件教研室實(shí)體關(guān)系圖中的主要元素?cái)?shù)據(jù)對(duì)象 實(shí)例:如操作的人員;報(bào)表;打??;報(bào)警信息;地理位置等數(shù)據(jù)對(duì)象是對(duì)軟件必須理解的復(fù)合信息的抽象。所謂復(fù)合信息是指具有一系列不同性質(zhì)或?qū)傩缘氖挛???傊梢杂梢唤M屬性來定義的實(shí)體都可以被認(rèn)為是數(shù)據(jù)對(duì)象。第40頁(yè)/共140頁(yè) 軟件教研室實(shí)體關(guān)系圖中的主要元素?cái)?shù)據(jù)屬性 實(shí)例:如汽車的屬性(生產(chǎn)廠家、品牌、型號(hào)、發(fā)動(dòng)機(jī)號(hào)等)數(shù)據(jù)屬性定義了對(duì)象的性質(zhì)。通過這些性質(zhì)可以標(biāo)識(shí)該系統(tǒng)具有的特點(diǎn)。第41頁(yè)/共140頁(yè) 軟件教研室實(shí)體關(guān)系圖中的主要元素?cái)?shù)據(jù)聯(lián)系 聯(lián)系的方式:1.一對(duì)一(1:1)2.一對(duì)多(1:N)3.多對(duì)多(M:N)數(shù)據(jù)聯(lián)系定義了數(shù)據(jù)對(duì)象之間相互連接的方式。第42頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)模型的描述工具-實(shí)體關(guān)系圖 建立ER圖的過程:第1層 提取所有的實(shí)體(對(duì)象)和對(duì)象之間的關(guān)第2層 建模他們之間關(guān)系的整體模型第3層 進(jìn)一步描述所有實(shí)體、關(guān)系的屬性信息第43頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)模型的描述工具-實(shí)體關(guān)系圖 (1,1)(1,1)(1,m)(1,m)placesCustomerCustomerrequestrequestforserviceforservicegenerates(1,n)(1,n)(1,1)(1,1)workworkorderorderworkworktaskstasksmaterialsmaterialsconsistsoflists(1,1)(1,1)(1,w)(1,w)(1,1)(1,i)(1,i)selectedfromstandardstandardtasktabletasktable(1,w)(1,w)(1,1)(1,1)第44頁(yè)/共140頁(yè) 軟件教研室功能模型的描述工具-數(shù)據(jù)流圖 數(shù)據(jù)流圖讓軟件工程師能夠建模同時(shí)建模信息模型和功能模型。第45頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流圖描述ICIC開發(fā)票需求 第46頁(yè)/共140頁(yè) 軟件教研室行為模型的描述工具-狀態(tài)轉(zhuǎn)換圖 狀態(tài)轉(zhuǎn)換圖是描述系統(tǒng)的狀態(tài)如何相應(yīng)外部的信號(hào)進(jìn)行推移的一種圖形表示。注:狀態(tài)遷移圖的優(yōu)點(diǎn):狀態(tài)之間的關(guān)系能夠直觀地捕捉到由于狀態(tài)遷移圖的單純性,能夠機(jī)械地分析許多情況,可很容易地建立分析工具狀態(tài)1狀態(tài)變量1活動(dòng)表初始事件結(jié)束事件第47頁(yè)/共140頁(yè) 軟件教研室進(jìn)程狀態(tài)轉(zhuǎn)換圖 第48頁(yè)/共140頁(yè) 軟件教研室密碼驗(yàn)證狀態(tài)轉(zhuǎn)換圖 第49頁(yè)/共140頁(yè) 軟件教研室其他圖形-層次方框圖 第50頁(yè)/共140頁(yè) 軟件教研室其他圖形-Warnier圖;IPO圖(主要作為算法描述圖);第51頁(yè)/共140頁(yè) 軟件教研室需求文檔的介紹 主要的文檔是:軟件需求說明書;數(shù)據(jù)要求說明書;初步的用戶手冊(cè);修改、完善與確定軟件開發(fā)實(shí)施計(jì)劃;第52頁(yè)/共140頁(yè) 軟件教研室需求驗(yàn)證 所謂需求驗(yàn)證是指對(duì)通過需求分析過程獲得的各類需求描述由第三方進(jìn)行嚴(yán)格的綜合再分析。其目的是提高軟件品質(zhì),降低開發(fā)成本。第53頁(yè)/共140頁(yè) 軟件教研室需求驗(yàn)證的方面 一般特別需要驗(yàn)證的方面有:(1)一致性驗(yàn)證:主要是分析需求描述中是否存在一些需求沖突問題;(2)完整性驗(yàn)證:需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個(gè)功能或性能;(3)現(xiàn)實(shí)性驗(yàn)證:驗(yàn)證需求內(nèi)容的可實(shí)現(xiàn)性;(4)有效性驗(yàn)證:驗(yàn)證需求對(duì)于實(shí)際的問題解決確實(shí)是正確有效的;第54頁(yè)/共140頁(yè) 軟件教研室其他需求文檔介紹 需求說明書模板美國(guó)公司的需求文檔日本公司的需求文檔第55頁(yè)/共140頁(yè) 軟件教研室第三節(jié) 總體設(shè)計(jì) 什么是設(shè)計(jì)MitchKapor(美國(guó)蓮花公司的創(chuàng)始人,Lotus1-2-3)給出一個(gè)比喻。所謂設(shè)計(jì)就象一個(gè)人用一只腳站在兩個(gè)世界中(一個(gè)是技術(shù)的世界,而另一個(gè)是人和人類目標(biāo)的世界),并且這個(gè)人希望將這兩個(gè)世界結(jié)合到一起。第56頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)的任務(wù)(技術(shù)觀點(diǎn))根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進(jìn)行根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進(jìn)行:數(shù)據(jù)設(shè)計(jì):側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義系統(tǒng)結(jié)構(gòu)設(shè)計(jì):定義軟件系統(tǒng)各主要成份之間的關(guān)系過程設(shè)計(jì):是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過測(cè)試最終得到完整有效的軟件第57頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)的任務(wù)(管理觀點(diǎn))從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成。概要設(shè)計(jì):將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。(概要設(shè)計(jì)對(duì)應(yīng)了技術(shù)觀點(diǎn)中的系統(tǒng)結(jié)構(gòu)設(shè)計(jì))詳細(xì)設(shè)計(jì):即過程設(shè)計(jì)。通過對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。(詳細(xì)設(shè)計(jì)對(duì)應(yīng)了技術(shù)觀點(diǎn)中的數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì))第58頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)過程1.制定規(guī)范制定規(guī)范在進(jìn)入軟件開發(fā)階段之初,首先應(yīng)為軟件開發(fā)組制定在設(shè)計(jì)時(shí)應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。閱讀和理解軟件需求說明書,確認(rèn)用戶要求能否實(shí)現(xiàn),明確實(shí)現(xiàn)的條件,從而確定設(shè)計(jì)的目標(biāo),以及它們的優(yōu)先順序根據(jù)目標(biāo)確定最合適的設(shè)計(jì)方法規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn)規(guī)定編碼的信息形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則等 第59頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)過程2.軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)基于功能層次結(jié)構(gòu)建立系統(tǒng)采用某種設(shè)計(jì)方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)確定每個(gè)模塊的功能建立與已確定的軟件需求的對(duì)應(yīng)關(guān)系確定模塊間的調(diào)用關(guān)系確定模塊間的接口評(píng)估模塊劃分的質(zhì)量第60頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)過程3.處理方式設(shè)計(jì)處理方式設(shè)計(jì)確定為實(shí)現(xiàn)系統(tǒng)的功能需求所必需的算法,評(píng)估算法的性能確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式周轉(zhuǎn)時(shí)間響應(yīng)時(shí)間吞吐量精度確定外部信號(hào)的接收發(fā)送形式第61頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)過程4.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫(kù)的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計(jì)確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包)限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍若需要與操作系統(tǒng)或調(diào)度程序接口所必須的控制表等數(shù)據(jù)時(shí),確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則數(shù)據(jù)的保護(hù)性設(shè)計(jì):在軟件設(shè)計(jì)中就插入自動(dòng)檢錯(cuò),報(bào)錯(cuò)和糾錯(cuò)的功能一致性設(shè)計(jì):保證軟件運(yùn)行過程中所使用的數(shù)據(jù)的類型和取值范圍不變;在并發(fā)處理過程中使用封鎖和解除封鎖機(jī)制保持?jǐn)?shù)據(jù)不被破壞;冗余性設(shè)計(jì):針對(duì)同一問題,由兩個(gè)開發(fā)者采用不同的程序設(shè)計(jì)風(fēng)格不同的算法設(shè)計(jì)軟件,當(dāng)兩者運(yùn)行結(jié)果之差不在允許范圍內(nèi)時(shí),利用檢錯(cuò)系統(tǒng)予以糾正,或使用表決技術(shù)決定一個(gè)正確結(jié)果。第62頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)過程5.可靠性設(shè)計(jì)可靠性設(shè)計(jì)可靠性設(shè)計(jì)也叫做質(zhì)量設(shè)計(jì)。在運(yùn)行過程中,為了適應(yīng)環(huán)境的變化和用戶新的要求,需經(jīng)常對(duì)軟件進(jìn)行改造和修正。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護(hù)第63頁(yè)/共140頁(yè) 軟件教研室概要設(shè)計(jì)文檔概要設(shè)計(jì)階段完成時(shí)應(yīng)編寫以下文檔:概要設(shè)計(jì)說明書數(shù)據(jù)庫(kù)設(shè)計(jì)說明書用戶手冊(cè)制定初步的測(cè)試計(jì)劃第64頁(yè)/共140頁(yè) 軟件教研室概要設(shè)計(jì)的評(píng)審可追溯性:確認(rèn)該設(shè)計(jì)是否復(fù)蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項(xiàng)需求接口:確認(rèn)該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)風(fēng)險(xiǎn):確認(rèn)該設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn)實(shí)用性:確認(rèn)該設(shè)計(jì)對(duì)于需求的解決方案是否實(shí)用技術(shù)清晰度:確認(rèn)該設(shè)計(jì)是否以一種易于翻譯成代碼的形式表達(dá)可維護(hù)性:確認(rèn)該設(shè)計(jì)是否考慮了方便未來的維護(hù)質(zhì)量:確認(rèn)該設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么限制:評(píng)估對(duì)該軟件的限制是否現(xiàn)實(shí),是否與需求一致其它具體問題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過程.等進(jìn)行評(píng)估第65頁(yè)/共140頁(yè) 軟件教研室軟件設(shè)計(jì)原理核心概念:軟件結(jié)構(gòu);程序結(jié)構(gòu);模塊化;信息隱蔽;模塊的獨(dú)立性;自頂向下,逐步細(xì)化;抽象化;第66頁(yè)/共140頁(yè) 軟件教研室軟件結(jié)構(gòu)軟件的體系結(jié)構(gòu)通過一個(gè)劃分過程來完成。該劃分過程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問題進(jìn)行分割,使其每個(gè)部分用一個(gè)或幾個(gè)軟件成份加以解決,整個(gè)問題就解決了注:軟件結(jié)構(gòu)包括兩部分。程序的模塊結(jié)構(gòu)和數(shù)據(jù)的結(jié)構(gòu)第67頁(yè)/共140頁(yè) 軟件教研室程序結(jié)構(gòu) 程序結(jié)構(gòu)表明了程序各個(gè)部件(模塊)的組織情況,是軟件的過程表示。第68頁(yè)/共140頁(yè) 軟件教研室模塊化 軟件系統(tǒng)的模塊化是指整個(gè)軟件被劃分成若干單獨(dú)命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個(gè)問題的需求。注:軟件的復(fù)雜性并不是隨著分解模塊的增多而變的越來越容易,相反隨著模塊的增加由于交互的復(fù)雜,變的更加復(fù)雜。第69頁(yè)/共140頁(yè) 軟件教研室模塊定義 “模塊”,又稱“組件”。它一般具有如下三個(gè)基本屬性:功能:描述該模塊實(shí)現(xiàn)什么功能邏輯:描述模塊內(nèi)部怎么做狀態(tài):該模塊使用時(shí)的環(huán)境和條件在描述一個(gè)模塊時(shí),還必須按模塊的外部特性與內(nèi)部特性分別描述模塊的外部特性:模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個(gè)系統(tǒng)造成的影響模塊的內(nèi)部特性:完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)第70頁(yè)/共140頁(yè) 軟件教研室模塊的獨(dú)立性模塊獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其它的模塊的接口是簡(jiǎn)單的。注:例如,若一個(gè)模塊只具有單一的功能且與其它模塊沒有太多的聯(lián)系,則稱此模塊具有模塊獨(dú)立性一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性。即模塊間耦合和模塊內(nèi)聚 第71頁(yè)/共140頁(yè) 軟件教研室耦合 是模塊之間的互相連接的緊密程度的度量。第72頁(yè)/共140頁(yè) 軟件教研室模塊之間偶合的種類 第73頁(yè)/共140頁(yè) 軟件教研室如果兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的,這就是非直接耦合。這種耦合的模塊獨(dú)立性最強(qiáng)。非直接耦合(NondirectCoupling)第74頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)耦合 (Data Coupling)(Data Coupling)如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過簡(jiǎn)單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。第75頁(yè)/共140頁(yè) 軟件教研室標(biāo)記耦合 (Stamp Coupling)(Stamp Coupling)如果一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。第76頁(yè)/共140頁(yè) 軟件教研室控制耦合 (Control Coupling)(Control Coupling)如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。第77頁(yè)/共140頁(yè) 軟件教研室外部耦合(External External CouplingCoupling)一組模塊都訪問同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。第78頁(yè)/共140頁(yè) 軟件教研室公共耦合(Common CouplingCommon Coupling)若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合第79頁(yè)/共140頁(yè) 軟件教研室內(nèi)容耦合 (Content Coupling)(Content Coupling)如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合(1)一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;(3)兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中);(4)一個(gè)模塊有多個(gè)入口。第80頁(yè)/共140頁(yè) 軟件教研室內(nèi)聚 標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。第81頁(yè)/共140頁(yè) 軟件教研室模塊內(nèi)聚的種類第82頁(yè)/共140頁(yè) 軟件教研室功能內(nèi)聚一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。第83頁(yè)/共140頁(yè) 軟件教研室信息內(nèi)聚 這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。由于這個(gè)模塊的所有功能都是基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)(符號(hào)表),因此,它是一個(gè)信息內(nèi)聚的模塊。第84頁(yè)/共140頁(yè) 軟件教研室通信內(nèi)聚 如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。第85頁(yè)/共140頁(yè) 軟件教研室過程內(nèi)聚 使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過程內(nèi)聚模塊。第86頁(yè)/共140頁(yè) 軟件教研室時(shí)間內(nèi)聚 時(shí)間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。第87頁(yè)/共140頁(yè) 軟件教研室邏輯內(nèi)聚 這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。第88頁(yè)/共140頁(yè) 軟件教研室巧合內(nèi)聚 巧合內(nèi)聚又稱為偶然內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。第89頁(yè)/共140頁(yè) 軟件教研室模塊設(shè)計(jì)的啟發(fā)式規(guī)則一 模塊功能的完善化一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分:執(zhí)行規(guī)定的功能的部分;出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,出現(xiàn)例外情況的原因。如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)結(jié)束狀態(tài)標(biāo)志。消除重復(fù)功能,改善軟件結(jié)構(gòu) 完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方法。局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。第90頁(yè)/共140頁(yè) 軟件教研室模塊設(shè)計(jì)的啟發(fā)式規(guī)則二 模塊的作用范圍應(yīng)在控制范圍之內(nèi)模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。第91頁(yè)/共140頁(yè) 軟件教研室模塊設(shè)計(jì)的啟發(fā)式規(guī)則三 避免或減少使用病態(tài)聯(lián)接模塊的大小要適中模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語(yǔ)句行數(shù)在50100左右,保持在一頁(yè)紙之內(nèi),最多不超過500行。第92頁(yè)/共140頁(yè) 軟件教研室模塊設(shè)計(jì)的啟發(fā)式規(guī)則四 設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過分受限制的模塊一個(gè)功能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測(cè)的。對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測(cè)。所謂過分限制是指由于對(duì)于局部數(shù)據(jù)結(jié)構(gòu)進(jìn)行了過分的要求,是模塊的功能過分局限,降低了模塊的靈活性。軟件包應(yīng)滿足設(shè)計(jì)約束和可移植性為了使得軟件包可以在某些特定的環(huán)境下能夠安裝和運(yùn)行,對(duì)軟件包提出了一些設(shè)計(jì)約束和可移植的要求。例如,設(shè)計(jì)約束有時(shí)要求一個(gè)程序段在存儲(chǔ)器中覆蓋自身。當(dāng)這種情況出現(xiàn)時(shí),設(shè)計(jì)出來的軟件程序結(jié)構(gòu)不得不根據(jù)重復(fù)程度、訪問頻率、調(diào)用間隔等等特性,重新加以組織。第93頁(yè)/共140頁(yè) 軟件教研室自頂向下,逐步細(xì)化將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確立整個(gè)的體系結(jié)構(gòu)。逐步求精的主要目的是集中精力處理好當(dāng)前急需處理的主要問題,而推遲對(duì)其它細(xì)節(jié)的處理第94頁(yè)/共140頁(yè) 軟件教研室抽象化 抽象概念與模塊化和逐步求精是密切相關(guān)的,模塊是一定抽象描述的體現(xiàn),逐步求精一般只能夠理解為一個(gè)過程,即是一個(gè)由頂向下的細(xì)化過程,而抽象即可以理解為一個(gè)過程也可以理解為一種狀態(tài)。理解為過程時(shí)他表示從下向上的對(duì)于事物共性的抽取過程,而暫時(shí)忽略掉他們之間的差異,抽象同時(shí)也可以理解為一種狀態(tài),表示一種使用問題環(huán)境語(yǔ)言描述的,較容易被人接受的描述體系。第95頁(yè)/共140頁(yè) 軟件教研室信息隱蔽 由 parnas 方法提倡的信息隱蔽是指,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用。第96頁(yè)/共140頁(yè) 軟件教研室面向數(shù)據(jù)流的設(shè)計(jì)方法 首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對(duì)于發(fā)現(xiàn)的問題及時(shí)解決。然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補(bǔ)充數(shù)據(jù)詞典。制定測(cè)試計(jì)劃。第97頁(yè)/共140頁(yè) 軟件教研室變換流 輸入流外部表示變換流內(nèi)部表示輸出流外部表示第98頁(yè)/共140頁(yè) 軟件教研室事物流 事物中心觸發(fā)事物活動(dòng)事物1活動(dòng)事物2活動(dòng)事物3活動(dòng)事物n第99頁(yè)/共140頁(yè) 軟件教研室結(jié)構(gòu)圖 結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系,它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。第100頁(yè)/共140頁(yè) 軟件教研室軟件的系統(tǒng)結(jié)構(gòu)圖 第101頁(yè)/共140頁(yè) 軟件教研室結(jié)構(gòu)圖中的模塊類型 第102頁(yè)/共140頁(yè) 軟件教研室變換型結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。第103頁(yè)/共140頁(yè) 軟件教研室事物型結(jié)構(gòu)圖 它接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧缓蠼o出結(jié)果。在事務(wù)型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一事務(wù)處理模塊執(zhí)行。各事務(wù)處理模塊并列。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。第104頁(yè)/共140頁(yè) 軟件教研室變換分析 重畫數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊;進(jìn)行二級(jí)分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模塊;第105頁(yè)/共140頁(yè) 軟件教研室變換原則 在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。在設(shè)計(jì)下層模塊時(shí),應(yīng)考慮模塊的耦合和內(nèi)聚問題,以提高初始結(jié)構(gòu)圖的質(zhì)量。使用“黑箱”技術(shù):在設(shè)計(jì)當(dāng)前模塊時(shí),先把這個(gè)模塊的所有下層模塊定義成“黑箱”,在設(shè)計(jì)中利用它們時(shí),暫時(shí)不考慮其內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對(duì)它們進(jìn)行設(shè)計(jì)和加工。這樣,又會(huì)導(dǎo)致更多的“黑箱”。最后,全部“黑箱”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。在模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過10個(gè),可設(shè)立中間層次。如果出現(xiàn)了以下情況,就停止模塊的功能分解:當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時(shí);當(dāng)分解成用戶提供的模塊或程序庫(kù)的子程序時(shí);當(dāng)模塊的界面是輸入輸出設(shè)備傳送的信息時(shí);當(dāng)模塊不宜再分解得過小時(shí)。第106頁(yè)/共140頁(yè) 軟件教研室變換分析實(shí)例 第107頁(yè)/共140頁(yè) 軟件教研室事物分析 在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。第108頁(yè)/共140頁(yè) 軟件教研室事物分析過程 識(shí)別事務(wù)源利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來自物理輸入裝置。有時(shí),設(shè)計(jì)人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。識(shí)別各種事務(wù)和它們定義的操作從問題定義和需求分析中找出的事務(wù)及其操作所必需的全部信息,對(duì)于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作注意利用公用模塊在事務(wù)分析的過程中,如果不同事務(wù)的一些中間模塊可由具有類似的語(yǔ)法和語(yǔ)義的若干個(gè)低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊;如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個(gè)事務(wù)處理模塊。對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊第109頁(yè)/共140頁(yè) 軟件教研室變換分析和事物分析關(guān)系 變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的主要方法。一般,一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。第110頁(yè)/共140頁(yè) 軟件教研室分析實(shí)例 第111頁(yè)/共140頁(yè) 軟件教研室思考題 1.軟件設(shè)計(jì)與軟件需求有什么不同概要設(shè)計(jì)說明書2概要設(shè)計(jì)說明書1第112頁(yè)/共140頁(yè) 軟件教研室三個(gè)問題 1.軟件工程的主要的研究?jī)?nèi)容,與其他計(jì)算機(jī)相關(guān)課程之間的關(guān)系?2.說說我們目前上過的主要軟件工程分析方法?3.說說面向結(jié)構(gòu)軟件工程生命周期的各個(gè)階段和其主要的目的。第113頁(yè)/共140頁(yè) 軟件教研室第四節(jié) 詳細(xì)設(shè)計(jì) 1.確定軟件各個(gè)組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織;2.選定某種過程的表達(dá)形式來描述各種算法;3.進(jìn)行詳細(xì)設(shè)計(jì)的評(píng)審;第114頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)設(shè)計(jì)原則 為在需求分析階段所確定的數(shù)據(jù)對(duì)象選擇邏輯表示,需要對(duì)不同結(jié)構(gòu)進(jìn)行算法分析,以便選擇一個(gè)最有效的結(jié)構(gòu);設(shè)計(jì)對(duì)于這種邏輯數(shù)據(jù)結(jié)構(gòu)的一組操作,以實(shí)現(xiàn)各種所期望的運(yùn)算。確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包),以便限制或確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍。第115頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)設(shè)計(jì)過程 1.用于軟件的系統(tǒng)化方法也適用于數(shù)據(jù)。2.確定所有的數(shù)據(jù)結(jié)構(gòu)和在每種數(shù)據(jù)結(jié)構(gòu)上施加的操作。3.應(yīng)當(dāng)建立一個(gè)數(shù)據(jù)詞典并用它來定義數(shù)據(jù)和軟件的設(shè)計(jì)。4.低層數(shù)據(jù)設(shè)計(jì)的決策應(yīng)推遲到設(shè)計(jì)過程的后期進(jìn)行。5.數(shù)據(jù)結(jié)構(gòu)的表示只限于那些必須直接使用該數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)的模塊才能知道。6.應(yīng)當(dāng)建立一個(gè)存放有效數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作的庫(kù)。7.軟件設(shè)計(jì)和程序設(shè)計(jì)語(yǔ)言應(yīng)當(dāng)支持抽象數(shù)據(jù)類型的定義和實(shí)現(xiàn)。第116頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)設(shè)計(jì)工具 圖形工具(程序流程圖、N-SN-S圖、問題分析圖,PADPAD);表格工具(判定表);語(yǔ)言工具(ProgressDesignLanguage,PDL)第117頁(yè)/共140頁(yè) 軟件教研室 程序流程圖第118頁(yè)/共140頁(yè) 軟件教研室N-SN-S圖第119頁(yè)/共140頁(yè) 軟件教研室問題分析圖(PAD)(PAD)第120頁(yè)/共140頁(yè) 軟件教研室判定表 判定表用于表示程序的靜態(tài)邏輯在判定表中的條件部分給出所有的兩分支判斷的列表,動(dòng)作部分給出相應(yīng)的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷第121頁(yè)/共140頁(yè) 軟件教研室對(duì)應(yīng)流程圖的判定表 第122頁(yè)/共140頁(yè) 軟件教研室PDLPDL語(yǔ)言 PDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言。稱為設(shè)計(jì)程序用語(yǔ)言。它是一種偽碼。偽碼的語(yǔ)法規(guī)則分為“外語(yǔ)法”和“內(nèi)語(yǔ)法”。PDL具有嚴(yán)格的關(guān)鍵字外語(yǔ)法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時(shí)它的表示實(shí)際操作和條件的內(nèi)語(yǔ)法又是靈活自由的,可使用自然語(yǔ)言的詞匯。示例:拼詞檢查程序PROCEDUREspellcheckISBEGINsplitdocumentintosinglewordsloodupwordsindictionarydisplaywordswhicharenotindictionarycreateanewdictionaryENDspellcheck第123頁(yè)/共140頁(yè) 軟件教研室JacksonJackson方法 nJackson方法是一類面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法n該方法主要應(yīng)用于軟件設(shè)計(jì)的詳細(xì)設(shè)計(jì)階段nJackson圖第124頁(yè)/共140頁(yè) 軟件教研室ABCDAseqBCDAendJackson圖-順序結(jié)構(gòu)順序結(jié)構(gòu)第125頁(yè)/共140頁(yè) 軟件教研室ABCDAselectcond1BAorcond2CAorcond3DAendJackson圖-選擇結(jié)構(gòu)選擇結(jié)構(gòu)第126頁(yè)/共140頁(yè) 軟件教研室AC*Aiteruntil(while)condBAendJackson圖-循環(huán)結(jié)構(gòu)第127頁(yè)/共140頁(yè) 軟件教研室便于表示層次結(jié)構(gòu),而且是對(duì)結(jié)構(gòu)進(jìn)行自頂向下分解的有力工具;形象直觀可讀性好既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)Jackson圖特點(diǎn)第128頁(yè)/共140頁(yè) 軟件教研室數(shù)據(jù)流圖是根據(jù)數(shù)據(jù)確定軟件結(jié)構(gòu)的方法,主要應(yīng)用于需求分析和概要設(shè)計(jì)階段Jackson圖是根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序處理過程的方法層次框圖與Jackson圖雖然類似,但其中圖形元素的含義不同,層次圖主要用于描述模塊及其之間的關(guān)系.但Jackson圖描述的是程序結(jié)構(gòu).Jackson圖與數(shù)據(jù)流圖和層次框圖之間的區(qū)別第129頁(yè)/共140頁(yè) 軟件教研室分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并使用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元(即程序中可以同時(shí)處理的數(shù)據(jù)單元)依據(jù)規(guī)則導(dǎo)出Jackson圖列出所有操作和條件,并把他們分配到程序結(jié)構(gòu)圖的適當(dāng)位置用偽碼表示程序Jackson方法的基本步驟第130頁(yè)/共140頁(yè) 軟件教研室為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框?qū)С鯦ackson圖的規(guī)則第131頁(yè)/共140頁(yè) 軟件教研室第一步:描繪輸入輸出數(shù)據(jù)結(jié)構(gòu)正文文件字符串*字符*空格非空格輸出表格表格體串信息*字符串空格數(shù)空格總數(shù)IIISJackson圖的實(shí)例統(tǒng)計(jì)文件中的空格數(shù)第132頁(yè)/共140頁(yè) 軟件教研室第二步:分析對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元正文文件輸出表格字符串*信息串*第133頁(yè)/共140頁(yè) 軟件教研室 第三步:數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖統(tǒng)計(jì)空格程序體處理字符串*印字符串分析字符數(shù)印總數(shù)I印空格串分析字符*處理空格處理非空格IS第134頁(yè)/共140頁(yè) 軟件教研室 第四步:列出所有操作和條件,并分配它們到程序結(jié)構(gòu)圖(1)停止(2)打開文件(3)關(guān)閉文件(4)印出字符串(5)印出空格數(shù)目(6)印出空格數(shù)目(7)sum:=sum+1(8)total:=totalsum+sum(9)讀入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格第135頁(yè)/共140頁(yè) 軟件教研室統(tǒng)計(jì)空格程序體處理字符串*印字符串分析字符數(shù)印總數(shù)I印空格串分析字符*處理空格處理非空格IS2911316第136頁(yè)/共140頁(yè) 軟件教研室第五步:使用偽碼表示程序處理過程統(tǒng)計(jì)空格seq打開文件讀入字符串totalsum:=0程序體iteruntil文件結(jié)束處理字符串seq印字符串end.統(tǒng)計(jì)空格end第137頁(yè)/共140頁(yè) 軟件教研室McCabe方法流程圖-流圖-分析流圖Halstead方法分析程序中的運(yùn)算付和操作數(shù)來度量程序復(fù)雜性其他方法第138頁(yè)/共140頁(yè) 軟件教研室思考題 1.詳細(xì)設(shè)計(jì)的主要內(nèi)容?2.詳細(xì)設(shè)計(jì)的主要描述分析方法及其相互關(guān)系?3.Jackson方法的意義?第139頁(yè)/共140頁(yè) 軟件教研室謝謝您的觀看!第140頁(yè)/共140頁(yè)