




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章軟件設(shè)計的概念和過程軟件設(shè)計階段的目的是產(chǎn)生一個具有良好結(jié)構(gòu)的、可以初步運行的軟件系統(tǒng)。§1.軟件設(shè)計過程:結(jié)構(gòu)化設(shè)計
初步設(shè)計設(shè)計復(fù)審具體設(shè)計設(shè)計復(fù)審編碼軟件結(jié)構(gòu)與說明修改設(shè)計資料模塊算法描述限制邏輯修改規(guī)格說明源代碼第三章軟件設(shè)計的概念和過程指導(dǎo)原則:層次化:合理地限制和劃分軟件成分的關(guān)系。模塊化:充分接受信息隱藏原則,最大限度地實現(xiàn)程序局部化和數(shù)據(jù)局部化,限制困難性。功能獨立:盡量使每個軟件成分的功能保持相對獨立。信息驅(qū)動:盡量運用分析階段取得的成果。結(jié)構(gòu)清晰:盡量使軟件成分之間的關(guān)系簡潔。限制簡潔:盡量使軟件成分內(nèi)部的限制關(guān)系清晰,限制結(jié)構(gòu)嚴(yán)格受限,避開混亂。第三章軟件設(shè)計的概念和過程§2.自頂向下、逐步求精的設(shè)計方法原則從軟件系統(tǒng)的最高層起先,定義一個軟件的總控程序,由它驅(qū)動其次層次的任務(wù),再逐級向下按同樣的原則依次擴展,直至最底層不行再分的任務(wù)(模塊),編制源代碼?;A(chǔ):基于軟件的限制流向或程序的限制結(jié)構(gòu)。優(yōu)點:信息隱藏。各層之間存在單向的限制關(guān)系,通過傳送必要的限制信息或數(shù)據(jù)來實現(xiàn),同層之間則無限制關(guān)系;某個數(shù)據(jù)結(jié)構(gòu)及其操作完全位于低層,則無需在高層定義;限制關(guān)系向下傳遞。第三章軟件設(shè)計的概念和過程2.【例】銀行算法A.問題假定某個銀行有一筆若干個單位的資金,可供客戶項目發(fā)展貸款,尋求一個平安的貸款策略。B.規(guī)定:客戶預(yù)知貸款總額,且全部客戶貸款總額之和將超過資金總額;每個客戶一次請貸一個單位;對客戶的貸款懇求,可以馬上付給,也可請其等待;一旦客戶貸足總額,馬上歸還全部貸款。第三章軟件設(shè)計的概念和過程C.分析銀行存在兩種可能的狀態(tài):平安、擔(dān)憂全。平安狀態(tài):銀行無論如何貸款,都有可能使它當(dāng)前的全部客戶在有限的時間內(nèi)完成項目建設(shè)并歸還全部貸款。擔(dān)憂全狀態(tài):銀行將不行能實現(xiàn)上述目標(biāo),資金無法收回。例如,銀行有10個貨幣單位,3個客戶,它們的貸款總額分別為:8、3、9。第三章軟件設(shè)計的概念和過程狀態(tài)1是平安的:狀態(tài)2是擔(dān)憂全的:銀行資金:4A:3(5)B:2(1)C:1(8)銀行資金:1A:4(4)B:2(1)C:3(6)第三章軟件設(shè)計的概念和過程進(jìn)一步分析:在平安狀態(tài)和擔(dān)憂全狀態(tài)之間,存在一個臨界狀態(tài)。此時,只有依據(jù)特定的貸款策略才可以完成全部項目。自頂向下設(shè)計當(dāng)前系統(tǒng)的描述:types=recordtransactions:array[1..n]ofrecordclaim,loan:int;completed:booleanend;capital,cash:int;end;第三章軟件設(shè)計的概念和過程第一步:確定當(dāng)前系統(tǒng)平安否,分兩步。functionsafe(current_state:s):boolean;varstate:s;beginstate:=current_state;試完成全部的交易;safe:=全部的交易是否全部完成;end;平安否試完成全部交易是否全部完成第三章軟件設(shè)計的概念和過程其次步:針對逐個試完成交易,又分兩步。此時有兩個程序:逐個試完成交易、全部交易是否完成。①逐個試完成交易procedurecomplete_transactions(varstate:s);varcustomer:int;progress:boolean;beginrepeatprogress:=false;forcustomer:=1tondoifnotstate.transactions[customer].completedthenif該項交易能完成thenbegin
第三章軟件設(shè)計的概念和過程歸還貸款;state.transactions[customer].completed:=true;progress:=true;end;untilnotprogress;end;②全部交易是否完成functionall_transactions_completed(state.s):boolean;beginifstate.capital=state.cashthenall_transactions_completed:=trueelseall_transactions_completed:=false;end;第三章軟件設(shè)計的概念和過程這時,系統(tǒng)將又向下細(xì)化一級:是否平安試完成全部交易是否全部完成逐個試完成交易歸還貸款第三章軟件設(shè)計的概念和過程第三步:針對逐個試完成交易,又有兩項任務(wù):試完成每一項交易、歸還貸款。①試完成每一項交易
functioncompletion_possible(claim,cash:int):boolean;beginifclaim>cashthencompletion_possible:=falseelsecompletion_possible:=true;end;②歸還貸款
procedurereturn_loan(varloan,cash:int);begincash:=cash+loan;end;第三章軟件設(shè)計的概念和過程于是,試完成全部交易的程序就完善了:procedurecomplete_transactions(varstate:s);varcustomer:int;progress:boolean;beginrepeatprogress:=false;forcustomer:=1tondoifnotstate.transactions[customer].completedthenifcompletion_possible(state.transactions[customer].claim,state.cash)thenbeginreturn_loan(state.transactions[customer].loan,state.cash);state.transactions[customer].completed:=true;progress:=true;end;untilnotprogress;end;第三章軟件設(shè)計的概念和過程
這樣,通過三級的求精過程,完成了全部的設(shè)計任務(wù)。整個程序結(jié)構(gòu)為:functionsafe(current_state:s):boolean;var:state:s;procedurecomplete_transactions(varstate:s);procedurereturn_loan(loan,cash:int);functionall_transactions_completed(state:s):boolean;functioncompletion_possible(claim,cash:int);beginstate:=current_state;complete_transactions(state);safe:=all_transactions_completed(state);end;
第三章軟件設(shè)計的概念和過程§3軟件概念軟件結(jié)構(gòu)軟件結(jié)構(gòu)是指程序的系統(tǒng)結(jié)構(gòu)。通常,它意味一種特殊的層次限制體系,但不確定表示軟件中各部分處理的依次、調(diào)用的次數(shù)或判定。僅僅體現(xiàn)了程序各部分之間的限制關(guān)系。探討軟件結(jié)構(gòu)就是探討各部分劃分的原則以及它們之間的聯(lián)系。軟件結(jié)構(gòu)的好壞對軟件的質(zhì)量具有極其重要的影響;另一方面,從不同的角度動身,同一個問題可以由不同的軟件結(jié)構(gòu)。第三章軟件設(shè)計的概念和過程要解決的問題軟件結(jié)構(gòu)必需著重指出,軟件的層次不是固有的,在很大程度上它是人為的。是人們?yōu)榱朔纸獯笙到y(tǒng)的困難性而引入的。不同的設(shè)計方法可以產(chǎn)生不同的結(jié)構(gòu),問題是何種結(jié)構(gòu)使軟件系統(tǒng)更加清晰、維護(hù)更加便利,這是人們所關(guān)切的。第三章軟件設(shè)計的概念和過程模塊模塊是組成軟件的最小單位。嚴(yán)格地定義是:模塊是一個可以獨立編址的程序單位。3.結(jié)構(gòu)
深度寬度第三章軟件設(shè)計的概念和過程軟件結(jié)構(gòu)的深度是指限制的層數(shù);軟件結(jié)構(gòu)的寬度是指同一層次的最大跨度。模塊性模塊性是指軟件易于開發(fā)、管理和維護(hù)的程度。(C(P1)>C(P2))(E(P1)>E(P2))但是,C(P1+P2)>C(P1)+C(P2),因此,E(P1+P2)>E(P1)+E(P2)第三章軟件設(shè)計的概念和過程但是,除了處理的困難性以外,還存在模塊之間接口的困難性。開發(fā)工作量是與兩者之和相關(guān)的。工作量模塊數(shù)量接口代價模塊代價總代價第三章軟件設(shè)計的概念和過程●抽象:指開發(fā)時概括的級別,層次越高,抽象級別越高?!裥畔㈦[藏:指模塊內(nèi)部定義的數(shù)據(jù)結(jié)構(gòu)和操作的外部不行見性,用以防止錯誤擴散。模塊獨立性模塊獨立性是指模塊可以被獨立地理解、編制、測試和修改的程度。其量度的標(biāo)準(zhǔn)是內(nèi)聚和耦合。內(nèi)聚:模塊內(nèi)部結(jié)合的緊密程度,志向的高內(nèi)聚是一個模塊恰好完成一件任務(wù)。第三章軟件設(shè)計的概念和過程
低高共存的:模塊的語句之間事實上沒有聯(lián)系,僅僅從存儲的角度將它們放在一起;邏輯的:將邏輯上相像的功能合并為一個模塊;時態(tài)的:將須要同時執(zhí)行的程序放在一個模塊內(nèi);以上為弱內(nèi)聚的。過程的:模塊的各部分相互關(guān)聯(lián),且必需按指定的次序執(zhí)行;通信的:模塊的各個處理部分都因用同樣的數(shù)據(jù);共存的邏輯的時態(tài)的過程的通信的依次的功能的第三章軟件設(shè)計的概念和過程依次的:模塊中的各個處理部分都緊密相關(guān)于一個功能,而且其中一個部分的輸出就是另一部分的輸入;功能的:一個模塊實現(xiàn)且僅實現(xiàn)一個功能。目標(biāo):盡可能設(shè)計高內(nèi)聚的模塊!耦合:模塊之間相互聯(lián)系和依靠的程度。模塊之間的耦合依靠于模塊之間接口的困難性??疾炷K之間的耦合從三個角度:方式,耦合的方式;作用,共享信息的作用;數(shù)量,模塊間聯(lián)系的多少第三章軟件設(shè)計的概念和過程探討耦合的目的:防止錯誤擴散。低高數(shù)據(jù)的:模塊之間通過調(diào)用進(jìn)行聯(lián)系,調(diào)用參數(shù)為整體變量的數(shù)據(jù)型參數(shù);標(biāo)記的:模塊之間通過調(diào)用進(jìn)行聯(lián)系,調(diào)用參數(shù)可以是域變量的數(shù)據(jù)型參數(shù);無耦合數(shù)據(jù)的標(biāo)記的限制的外部的共用的內(nèi)容的第三章軟件設(shè)計的概念和過程限制的:模塊之間通過調(diào)用進(jìn)行聯(lián)系,調(diào)用參數(shù)可以限制下屬模塊的運行;外部的:模塊之間由于外部環(huán)境的約束而產(chǎn)生聯(lián)系,例如,兩個模塊通過I/O聯(lián)系、通過中斷(如OS)聯(lián)系等;共用的:模塊之間通過共同的數(shù)據(jù)區(qū)聯(lián)系;內(nèi)容的:一個模塊運用另一個模塊定義的數(shù)據(jù)結(jié)構(gòu)或限制信息??傊?,聯(lián)系方式:調(diào)用(好),干脆引用數(shù)據(jù)或指令(不好),相互作用:數(shù)據(jù)溝通(好),運行限制(不好)。目標(biāo):盡可能設(shè)計低耦合的模塊聯(lián)系。第三章軟件設(shè)計的概念和過程設(shè)計的留意要點●模塊的大小問題:在一個編程人員可以限制的困難性以內(nèi);●高內(nèi)聚、耦合●保持單入口、單出口,防止病態(tài)連接,舉薦運用三種結(jié)構(gòu):第三章軟件設(shè)計的概念和過程●爭取合理的軟件結(jié)構(gòu),深度過大時可以適當(dāng)增加扇出、寬度過大時可以適當(dāng)削減扇出。第三章軟件設(shè)計的概念和過程●將模塊的作用范圍限制在它的限制范圍內(nèi)。ABCDEFGHIA’C’DEF’BGHI判定影響判定第三章軟件設(shè)計的概念和過程●盡可能利用“黑箱”技術(shù),使模塊的功能可預(yù)料(具有內(nèi)部“存儲器”的模塊功能是難預(yù)料的)。第三章軟件設(shè)計的概念和過程§4軟件初步設(shè)計軟件初步設(shè)計的任務(wù):得到一個良好的軟件結(jié)構(gòu),又稱軟件的結(jié)構(gòu)設(shè)計。良好的軟件結(jié)構(gòu)良好的軟件結(jié)構(gòu)應(yīng)當(dāng)是模塊單向依靠的,亦即下層模塊依靠上層模塊而不是反之。通常的軟件結(jié)構(gòu)有依次、半序和樹型三種。第三章軟件設(shè)計的概念和過程依次:偏序:樹型:程序結(jié)構(gòu)圖沒有徊路!第三章軟件設(shè)計的概念和過程2.設(shè)計方法分類:面對功能的設(shè)計方法;面對數(shù)據(jù)流的設(shè)計方法;面對數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法;面對數(shù)據(jù)流和面對數(shù)據(jù)結(jié)構(gòu)相結(jié)合的設(shè)計方法;面對對象的設(shè)計方法;思想與手段分解與抽象,分解軟件系統(tǒng)的困難性。第三章軟件設(shè)計的概念和過程面對數(shù)據(jù)流的設(shè)計方法基本思想:利用系統(tǒng)分析階段得到的DFD,導(dǎo)出軟件的系統(tǒng)結(jié)構(gòu)。通過定義若干“映射”規(guī)則,把不同的數(shù)據(jù)流映射到軟件結(jié)構(gòu)。應(yīng)用范圍:原則上可以通用。特殊是對軟件的信息結(jié)構(gòu)不特別清晰或不易用形式化手段描述時,這種方法更有效。例如嵌入式軟件、困難的數(shù)值計算和分析過程、工業(yè)過程限制、CAD、GIS應(yīng)用軟件等。第三章軟件設(shè)計的概念和過程(1)信息流一般來說,信息流可以分為兩個大類。①轉(zhuǎn)換流:具有明顯的傳入、處理、傳出界限的信息流。是一種基本上呈現(xiàn)線性形態(tài)的DFD。傳入流轉(zhuǎn)換流傳出流傳入流信息時間第三章軟件設(shè)計的概念和過程轉(zhuǎn)換中心:信息和形態(tài)發(fā)生根本變更的部分ABCDEFHGIJKL傳入流傳出流轉(zhuǎn)換中心第三章軟件設(shè)計的概念和過程②事務(wù)基元流:具有明顯散射特性的DFD。事務(wù)基元中心:對輸入信息進(jìn)行推斷確定處理方式的部分
ABCDHLMOEFGIJK動作路徑:處理輸入信息的部分第三章軟件設(shè)計的概念和過程在大型的DFD中,這兩種信息流可能同時存在。(2)設(shè)計步驟①復(fù)審、精化DFD,考慮正確性和合理性;②確定信息流的特性,從總體上區(qū)分是轉(zhuǎn)換流或事務(wù)基元流;③確定流的邊界事務(wù)基元流:以事務(wù)基元中心分界,分為傳入、事務(wù)基元中心和動作路徑;轉(zhuǎn)換流:從輸入端向內(nèi)推動,找出離輸入端最遠(yuǎn)、但仍構(gòu)成系統(tǒng)的輸入,與物理輸入有最小的相像性(如去掉注釋、間隔符,轉(zhuǎn)成內(nèi)部表示,經(jīng)過編輯、有效性檢查等)的地方,作為傳入流邊界。第三章軟件設(shè)計的概念和過程從物理輸出端起先向內(nèi)推動,但仍構(gòu)成系統(tǒng)的輸出,與物理輸出有最小的相像性(如未經(jīng)格式編排、未作單位轉(zhuǎn)換等)的地方,作為傳出流的邊界。有可能傳入流、傳出流的邊界重合,這時軟件的功能就是分發(fā)、轉(zhuǎn)換,沒有實質(zhì)性的處理。④將DFD轉(zhuǎn)化為軟件的結(jié)構(gòu)●轉(zhuǎn)換流軟件呈現(xiàn)三分結(jié)構(gòu):總控模塊傳入部分轉(zhuǎn)換部分傳出部分第三章軟件設(shè)計的概念和過程傳入部分:在無子流的狀況,從邊界由里向外推。ABDEC傳入分控ECDBAA第三章軟件設(shè)計的概念和過程傳出部分:在無子流的狀況,由傳出邊界里向外推。IJKL傳出分控JIKLK第三章軟件設(shè)計的概念和過程轉(zhuǎn)換中心:在無子流的狀況,自傳入邊界向傳出邊界推動。FGH轉(zhuǎn)換分控FGHH第三章軟件設(shè)計的概念和過程●
事務(wù)基元流軟件呈現(xiàn)出二分結(jié)構(gòu)。總控模塊接收部分發(fā)送部分第三章軟件設(shè)計的概念和過程接收部分:同轉(zhuǎn)換流的傳入部分類似。AB接收分控AB第三章軟件設(shè)計的概念和過程發(fā)送部分:由事務(wù)基元中心向外推。CDEFGHIJKLMO發(fā)送分控LMOHIJKDFEG第三章軟件設(shè)計的概念和過程⑤接著分解,在有子流的狀況,接著依據(jù)子流的類型轉(zhuǎn)化。例如,上例中事務(wù)基元流的其次條路徑又是一個轉(zhuǎn)換流,假定轉(zhuǎn)換轉(zhuǎn)換中心是I、J,就變成:發(fā)送分控LMO路徑子控H轉(zhuǎn)換微控KIJDFEG第三章軟件設(shè)計的概念和過程●對得到的軟件結(jié)構(gòu)求精。原則:高內(nèi)聚、低耦合;具有相同的模塊可以合并,即可以產(chǎn)生偏序的軟件結(jié)構(gòu)。例如,上例的轉(zhuǎn)換流中,沿著流的方向出現(xiàn)分叉和合并,形成的軟件結(jié)構(gòu)中會出現(xiàn)一些相同的模塊。這時就可以將它們合并;視狀況省略分限制模塊,如傳入部分只有一個數(shù)據(jù)流進(jìn)入轉(zhuǎn)換中心,傳入分控模塊可以省略、轉(zhuǎn)換分控模塊也可省去,傳出部分也類似。第三章軟件設(shè)計的概念和過程系統(tǒng)總控轉(zhuǎn)換分控傳入分控傳出分控EDBACFGHKIJL軟件結(jié)構(gòu)圖:第三章軟件設(shè)計的概念和過程⑥文檔整理文檔整理是軟件初步設(shè)計的一個重要階段。在得到軟件的結(jié)構(gòu)以后,必需確定模塊之間的接口。要對模塊之間的調(diào)用給出明確的規(guī)定。模塊處理說明:模塊處理說明是對系統(tǒng)分析階段的加工說明加以細(xì)化,比較深化地描述模塊在軟件系統(tǒng)中所處的位置及地位。要給出它運用的外部數(shù)據(jù)(包括數(shù)據(jù)庫中的數(shù)據(jù)、系統(tǒng)的全程數(shù)據(jù)結(jié)構(gòu)以及上級模塊的調(diào)用參數(shù)。還要給出它調(diào)用下級模塊所運用的參數(shù)。第三章軟件設(shè)計的概念和過程5.數(shù)據(jù)設(shè)計初步設(shè)計階段的另一個工作是進(jìn)行數(shù)據(jù)設(shè)計:數(shù)據(jù)庫設(shè)計,定義數(shù)據(jù)庫模式。要對系統(tǒng)分析階段得到的E-R圖進(jìn)行細(xì)化,特殊是為了提高效率,須要設(shè)計部分中間數(shù)據(jù)表項,例如臺帳等。全程數(shù)據(jù)結(jié)構(gòu);大致指出模塊內(nèi)部須要定義的局部數(shù)據(jù)結(jié)構(gòu);明確每個模塊的I/O數(shù)據(jù)及其結(jié)構(gòu)。第三章軟件設(shè)計的概念和過程模塊說明的內(nèi)容:模塊名;模塊處理的描述;模塊中運用的數(shù)據(jù):數(shù)據(jù)庫表、輸入、輸出數(shù)據(jù)、全程數(shù)據(jù)結(jié)構(gòu)等;上級模塊名;上級模塊調(diào)用的參數(shù)及其含義和作用;下級模塊名;調(diào)用下級模塊運用的參數(shù)及其含義和作用。
第三章軟件設(shè)計的概念和過程§5面對數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法數(shù)據(jù)結(jié)構(gòu)與程序程序=數(shù)據(jù)結(jié)構(gòu)+算法數(shù)據(jù)結(jié)構(gòu)猛烈地影響軟件的設(shè)計與過程設(shè)計:處理重復(fù)數(shù)據(jù)結(jié)構(gòu)的程序往往具有循環(huán)結(jié)構(gòu);處理選擇數(shù)據(jù)結(jié)構(gòu)的程序往往具有條件判定的機構(gòu);處理分層次數(shù)據(jù)結(jié)構(gòu)的程序往往具有層次結(jié)構(gòu)。面對數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法就是把對數(shù)據(jù)結(jié)構(gòu)的描述轉(zhuǎn)化為對軟件結(jié)構(gòu)的描述。從I/O數(shù)據(jù)結(jié)構(gòu)動身,推倒軟件的結(jié)構(gòu)及某些細(xì)微環(huán)節(jié)。第三章軟件設(shè)計的概念和過程[例]處理工資報表問題環(huán)境數(shù)據(jù)結(jié)構(gòu)完成的任務(wù)執(zhí)行的操作程序結(jié)構(gòu)讀、寫程序第三章軟件設(shè)計的概念和過程適用范圍原則上,處理定義清晰、具有層次特點的信息結(jié)構(gòu),都可以運用面對數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。如:●商業(yè)財政應(yīng)用—有明確的數(shù)據(jù)文件、輸出報告●管理信息系統(tǒng)—固定的單據(jù)、報表●系統(tǒng)程序—OS以大型表格為基本的數(shù)據(jù)結(jié)構(gòu)DBMS處理結(jié)構(gòu)定義清晰的紀(jì)錄●GIS—固定的點、線、面結(jié)構(gòu)第三章軟件設(shè)計的概念和過程與面對數(shù)據(jù)流方法的不同●設(shè)計動身點不同(對現(xiàn)實世界的視察點不同)面對數(shù)據(jù)流方法以信息在處理時刻的流向為基礎(chǔ),設(shè)計一個具有顯明時序特征的軟件結(jié)構(gòu),而面對數(shù)據(jù)結(jié)構(gòu)的方法以信息的構(gòu)成及其在處理時刻的相互關(guān)系為基礎(chǔ),設(shè)計一個具有顯明層次特征的軟件結(jié)構(gòu)及其處理細(xì)微環(huán)節(jié)?!裨O(shè)計的最終目標(biāo)不同前者以初步設(shè)計為目標(biāo),產(chǎn)生軟件的模塊結(jié)構(gòu),后者以具體設(shè)計為目標(biāo),產(chǎn)生軟件的過程描述,模塊結(jié)構(gòu)僅僅是副產(chǎn)品。第三章軟件設(shè)計的概念和過程●設(shè)計步驟不同①評價數(shù)據(jù)結(jié)構(gòu)的特性(對軟件規(guī)格說明中描述的信息結(jié)構(gòu)進(jìn)行復(fù)審)②將數(shù)據(jù)結(jié)構(gòu)表示成初等形式(依次、選擇、循環(huán))③把數(shù)據(jù)結(jié)構(gòu)的初等表示映射到軟件的限制層次④細(xì)化⑤開發(fā)軟件的過程性描述(即完成軟件的具體設(shè)計)第三章軟件設(shè)計的概念和過程Jackson方法學(xué)基本思想:把一個問題分解成可以由三種結(jié)構(gòu)形式表示的一個層次結(jié)構(gòu)。Jackson方法以特定的數(shù)據(jù)模型為基礎(chǔ),但是,并不意味著必需描述數(shù)據(jù)結(jié)構(gòu)的物理特性(如數(shù)據(jù)類型、存儲長度等)。而是指視察問題的角度,是描述數(shù)據(jù)結(jié)構(gòu)的邏輯特性,指建立面對問題的數(shù)據(jù)結(jié)構(gòu)。首先,建立面對問題的、由三種結(jié)構(gòu)形式表示的層次數(shù)據(jù)結(jié)構(gòu),然后映射為軟件結(jié)構(gòu),同時給出“偽碼”表示。第三章軟件設(shè)計的概念和過程基本圖形(樹型)表示技術(shù):依次:數(shù)據(jù)結(jié)構(gòu)A由B、C、D所組成,每個成分僅出現(xiàn)一次。ACBD第三章軟件設(shè)計的概念和過程選?。簲?shù)據(jù)結(jié)構(gòu)A由B或C組成,且僅出現(xiàn)一次。ABC第三章軟件設(shè)計的概念和過程選取型的推廣ACBD第三章軟件設(shè)計的概念和過程重復(fù):
A由多個B所組成(并不給定重復(fù)次數(shù))。利用這三種基本表示,可以構(gòu)造隨意困難的分層次樹型數(shù)據(jù)結(jié)構(gòu)。樹中的每個“樹葉”都可以用一棵子樹代替。AB*第三章軟件設(shè)計的概念和過程【例】高校高校政黨部組織宣揚統(tǒng)戰(zhàn)宣揚教學(xué)機關(guān)部財務(wù)科研院數(shù)學(xué)物理統(tǒng)戰(zhàn)統(tǒng)戰(zhàn)院***第三章軟件設(shè)計的概念和過程【例】列車:車頭、行李車、郵政車、餐車各一個,硬座、硬臥、軟座、軟臥車廂若干。列車車頭車體服務(wù)車廂旅客車廂郵政行李餐車臥座軟硬軟硬**第三章軟件設(shè)計的概念和過程程序結(jié)構(gòu)基本圖形表示法:ABCABC依次:選取:第三章軟件設(shè)計的概念和過程ABABCB1B2*重復(fù):回朔:quit第三章軟件設(shè)計的概念和過程假如在一個須要作出選取判定的點上無法依據(jù)現(xiàn)有駕馭的信息對判定條件進(jìn)行測定,只能任擇其中的一個分支起先執(zhí)行。在隨后的執(zhí)行過程中逐步獲得足夠的信息,對從前的選擇進(jìn)行事后評價以確定其是否正確。如發(fā)覺當(dāng)時假設(shè)的判定選擇有誤時,要返回到原判定點并轉(zhuǎn)向其它的分支,這種現(xiàn)象稱為回朔?!纠堪送鹾髥栴}:如何在一個8╳8的棋盤上放置8個王后,使它們不能自相殘殺。(兩個王后既不能在同一行上,也不能在同一列上)第三章軟件設(shè)計的概念和過程偽碼:偽碼(pseudocode)是一種混雜的語言,它運用一種語言(通常是自然語言)的詞匯和另一種語言(例如程序設(shè)計語言)的語法。前者用來描述處理的操作(因為其敏捷、表達(dá)實力強),后者用來克化限制的結(jié)構(gòu)(因為其嚴(yán)格、沒有或較少有歧義)因此,通常用偽碼來描述程序的處理過程,用來書寫具體設(shè)計的文檔。第三章軟件設(shè)計的概念和過程四種程序結(jié)構(gòu)的偽碼表示:依次AseqAseq處理B;處理B;處理C;處理C;Aend;推廣處理D;處理E;Aend;ABC第三章軟件設(shè)計的概念和過程四種基本程序結(jié)構(gòu)的偽碼表示:選取Aselect(條件)Aselect(條件1)處理B;處理B;Aor
推廣Aor(條件2)處理C;處理C;Aend;Aor(條件3)處理D;Aend;ABC第三章軟件設(shè)計的概念和過程
重復(fù)
Aiter
until(條件)處理B;Aend;AB*第三章軟件設(shè)計的概念和過程
回朔
Aposit(條件1)
Bseq
quitAif(條件2)處理B1;
quitAif(條件3)處理B2;Bend;Aadmit處理C;quitAend;由此可見:條件2
V
條件3┑條件1ABCB1B2第三章軟件設(shè)計的概念和過程Jackson方法的設(shè)計步驟:●復(fù)審,檢查數(shù)據(jù)結(jié)構(gòu)的合理性●用三種基本的圖形形式表示數(shù)據(jù)結(jié)構(gòu)●找出輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間的對應(yīng)關(guān)系(在找不到對應(yīng)關(guān)系的時候,要引入中間數(shù)據(jù)結(jié)構(gòu),形成一串對應(yīng)關(guān)系鏈)●依據(jù)數(shù)據(jù)結(jié)構(gòu)之間的對應(yīng)關(guān)系,得到程序的結(jié)構(gòu)●對得到的程序結(jié)構(gòu)求精(考慮回朔問題、列出操作和判定條件等)●偽碼表示第三章軟件設(shè)計的概念和過程【例】處理卡片問題:一張卡片上有三個域F1、F2、F3,若F1在[1,99]內(nèi),則從文件中取出兩個數(shù)a,b(假定a<b)和一個三元組(x,y,z),若a≤F2≤b,則用(F2×x,F(xiàn)2×y,F(xiàn)2×z)作為磁盤地址從磁盤上取出一個字符串s,若F3是s的一個子串,則打印F3。第一步:數(shù)據(jù)結(jié)構(gòu)的合理性無容置疑其次步:畫出基本圖形第三章軟件設(shè)計的概念和過程基本圖形:第三步:輸出結(jié)構(gòu)為一個字符串,基本上可以忽視,輸入、輸出數(shù)據(jù)結(jié)構(gòu)無結(jié)構(gòu)沖突。第四步:依據(jù)輸入數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)卡片F(xiàn)1F2F3第三章軟件設(shè)計的概念和過程處理卡片此處,P1:處理F1,得到a,b和(x,y,z);P2:處理F2,以(F2×x,F(xiàn)2×y,F(xiàn)2×z)為地址得到串s;P3:處理F3,打印。P1P2P3第三章軟件設(shè)計的概念和過程第四步:求精。考慮卡片可能不符合規(guī)定的處理要求,無法最終打印F3。因此:處理卡片處理好卡片出錯處理P1P2P3第三章軟件設(shè)計的概念和過程用回朔結(jié)構(gòu)代替處理卡片處理好卡片出錯處理PPPquit第三章軟件設(shè)計的概念和過程第五步:偽碼表示。處理卡片posit(卡片正確)處理好卡片seq
quit處理卡片if(F1<1orF1>99)P1;
quit處理卡片if(F2<aorF2>b)
P2;
quit處理卡片if(F3不是s的子串)P3;處理好卡片end;處理卡片admit
出錯處理(打印出錯信息);處理卡片end;第三章軟件設(shè)計的概念和過程【例】信用卡記帳系統(tǒng)支付文件顧客文件顧客號日期交易額顧客號結(jié)余額╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳第三章軟件設(shè)計的概念和過程記賬報告:顧客號日期交易額老結(jié)余新結(jié)余╳╳╳╳╳╳第三章軟件設(shè)計的概念和過程支付文件顧客號組交易記錄顧客號支付記錄日期交易額**基本圖形表示支付文件:第三章軟件設(shè)計的概念和過程顧客文件顧客記錄顧客號結(jié)余額顧客文件:*第三章軟件設(shè)計的概念和過程記帳報告顧客數(shù)據(jù)店主數(shù)據(jù)顧客號組顧客號支付記錄支付小計結(jié)余小計日期交易額老結(jié)余新結(jié)余銷售總額總結(jié)余記賬報告:**第三章軟件設(shè)計的概念和過程分析:系統(tǒng)有兩個輸入數(shù)據(jù)結(jié)構(gòu):支付文件、顧客文件;兩個輸出數(shù)據(jù)結(jié)構(gòu):記帳報告和顧客文件。可以看出,記帳報告的內(nèi)容涵蓋了支付文件和顧客文件的全部內(nèi)容,而且,在內(nèi)容的組織方式上亦基本上一樣。結(jié)論:可以以記帳報告的結(jié)構(gòu)為主要參考點構(gòu)造程序結(jié)構(gòu)。同時,在處理的過程中考慮顧客文件的生成、更新。第三章軟件設(shè)計的概念和過程記帳系統(tǒng)處理顧客數(shù)據(jù)處理店主數(shù)據(jù)處理顧客號組處理顧客號處理支付記錄計算支付小計計算結(jié)余處理老結(jié)余計算新結(jié)余計算銷售總額計算總結(jié)余程序結(jié)構(gòu):*第三章軟件設(shè)計的概念和過程偽碼表示記帳系統(tǒng)seq處理顧客數(shù)據(jù)seq打開支付文件、顧客文件;處理顧客號組iteruntil(支付文件結(jié)束)讀支付文件;處理顧客號(讀顧客文件、登記老結(jié)余);處理支付記錄iteruntil(顧客號組結(jié)束)讀支付文件;累計支付額;登記報告行;
第三章軟件設(shè)計的概念和過程
處理支付記錄end;打開支付小計;計算結(jié)余seq處理老結(jié)余{照抄};計算新結(jié)余{老結(jié)余-支付小計};登記顧客報告行;計算結(jié)余end;處理顧客號組end;處理顧客數(shù)據(jù)end;處理店主數(shù)據(jù)seq計算銷售總額{支付小計之和};第三章軟件設(shè)計的概念和過程計算總結(jié)余{老結(jié)余之和-銷售總額);處理店主數(shù)據(jù)end;記帳系統(tǒng)end;第三章軟件設(shè)計的概念和過程Jackson方法的一些補充技術(shù):●回朔回朔是常常出現(xiàn)的,特殊是接受摸索算法時。●結(jié)構(gòu)沖突當(dāng)輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)沒有明顯的對應(yīng)關(guān)系時,謂之產(chǎn)生“結(jié)構(gòu)沖突”。這時,無法建立這兩種數(shù)據(jù)結(jié)構(gòu)的對應(yīng),因而不能顯式地導(dǎo)出程序結(jié)構(gòu)?!纠烤幾g程序:輸入的是字符流,輸出的是二進(jìn)制代碼流。第三章軟件設(shè)計的概念和過程解決方法:引入中間數(shù)據(jù)結(jié)構(gòu),從而使輸入、輸出數(shù)據(jù)結(jié)構(gòu)通過若干中間數(shù)據(jù)結(jié)構(gòu)的過渡建立對應(yīng)關(guān)系。事實上,這種方法就是將全系統(tǒng)劃分成若干個部分(分系統(tǒng)),對每個分系統(tǒng)生成程序結(jié)構(gòu)。再在分系統(tǒng)內(nèi)分解為若干個模塊,形成層次。大致上,結(jié)構(gòu)沖突可以分為兩類:次序沖突和邊界沖突。①次序沖突【例】矩陣轉(zhuǎn)換:矩陣按行輸入,按列輸出。每行一個數(shù)組。第三章軟件設(shè)計的概念和過程輸入結(jié)構(gòu)輸出結(jié)構(gòu)第一級:無對應(yīng)關(guān)系,每一個列輸出不能由每一個行輸入得出。行、列的個數(shù)也可以不同。輸入矩陣輸出矩陣列元素元素行****第三章軟件設(shè)計的概念和過程其次級:無對應(yīng)關(guān)系,元素個數(shù)盡管相同,但次序不同。解決方法:將整個程序分成三個部分。行輸入P1按行排列元素P2按列排列元素P3列輸出第三章軟件設(shè)計的概念和過程P1:按行輸入,每個行數(shù)組的元素依據(jù)輸入行序號和行內(nèi)元素輸入序號標(biāo)注行、列號,存入磁盤;P2;重新排序,讀磁盤,將先行后列存儲元素的文件轉(zhuǎn)化為先列后行存儲元素的文件,存入磁盤;P3;讀磁盤,按列輸出。若內(nèi)存空間足夠大,也可以將程序分為兩個部分,即一切都在內(nèi)存中進(jìn)行:按行輸入并作標(biāo)記;轉(zhuǎn)換成列并輸出。②邊界沖突【例】報文分析:第三章軟件設(shè)計的概念和過程明顯,報文和信包不同步,輸入數(shù)據(jù)(信包)和輸出數(shù)據(jù)存在邊界沖突。第一級:信包組,無對應(yīng)關(guān)系;其次級:信包,無對應(yīng)關(guān)系。第三章軟件設(shè)計的概念和過程一組報文,存放在一組信包上,每次只讀入一個信包。每個信包內(nèi)有若干個詞,用空格分開,信包的終結(jié)符為EOB。最終一個信包的內(nèi)容為EOF,表示本組報文結(jié)束。每個報文的結(jié)尾詞用2222表示,EOF前的一個信包內(nèi)容只含2222。每個信包可以有若干個報文,一個報文可以占若干個信包。打印報文分析報告報文1:共×××個詞,其中××個詞多于12個字符。報文n:共×××個詞,其中××個詞多于12個字符。第三章軟件設(shè)計的概念和過程信包組信包EOF報文包EOB報文內(nèi)容字符組空格組詞空格字符字符組****分析:輸入數(shù)據(jù)結(jié)構(gòu)第三章軟件設(shè)計的概念和過程分析報告報告體標(biāo)題結(jié)束報文報告總詞數(shù)超長詞數(shù)*輸出數(shù)據(jù)結(jié)構(gòu):第三章軟件設(shè)計的概念和過程由于報文和信包不同步,邊界混淆,形成邊界沖突。為此,引入兩個中間數(shù)據(jù)結(jié)構(gòu)。(1)詞組(2)報文組詞組詞報文組報文詞2222正常詞超長詞***第三章軟件設(shè)計的概念和過程通過引入兩個中間數(shù)據(jù)結(jié)構(gòu),重新設(shè)計的信包組的分析過程為:信包組P1詞組P2報文組P3分析報告第三章軟件設(shè)計的概念和過程P1:讀入信包組,去掉空格、EOF、EOB,按詞先后排列,形成詞組;P2:按2222的分割組織報文,去掉2222,形成報文組;P3:按報文統(tǒng)計正常詞的數(shù)量和超長詞的數(shù)量并形成分析報告,打印輸出。注:明顯,我們可以再進(jìn)行求精。例如,可以將三個模塊合成兩個(中間數(shù)據(jù)結(jié)構(gòu)只有一個):P1:讀入信包組,去掉空格、EOB、EOF,按詞排列并標(biāo)記超長詞;P2:按報文計數(shù),去掉2222,形成分析報告。第三章軟件設(shè)計的概念和過程在單用戶、單任務(wù)系統(tǒng)中,P1、P2不能同時執(zhí)行,這樣會使運行效率降低(從文件上讀出信包時須要等待)。接受多道程序設(shè)計技術(shù),將P1、P2設(shè)計成兩個進(jìn)程(或線程),P1讀完一個信包后就交給P2,這樣就可以邊讀、邊分析、邊打印,同時無需存儲整個中間文件。同樣,還可以接受程序變換的手法,將P1變成P2的子程序P’1,P2每調(diào)用一次P’1,就可以得到一個詞,然后處理。第三章軟件設(shè)計的概念和過程【作業(yè)】在上例中,按求精后的狀況:給出中間數(shù)據(jù)結(jié)構(gòu)的基本圖形表示;給出P1、P2程序結(jié)構(gòu)的基本圖形表示;給出P1、P2的偽碼表示;給出整個處理程序的偽碼表示?!舅妓黝}】按程序變換的方法,給出P2、P’1的偽碼表示。第三章軟件設(shè)計的概念和過程LCP方法LCP方法是依據(jù)理論的推導(dǎo),從數(shù)據(jù)結(jié)構(gòu)的表示動身,作出過程的形式化描述,最終用系統(tǒng)的方法生成偽碼,并加以驗證和優(yōu)化。LCP方法給出了一組“規(guī)則”,這組規(guī)則將支配信息的結(jié)構(gòu)以及得到的程序結(jié)構(gòu)。這樣,LCP方法既比較嚴(yán)格,又便于驗證?!馱arnier圖Warnier圖既描繪了數(shù)據(jù)結(jié)構(gòu)的層次,又描繪了重復(fù)數(shù)據(jù)的次數(shù)。第三章軟件設(shè)計的概念和過程數(shù)據(jù)項A(1次)數(shù)據(jù)記錄1數(shù)據(jù)項B(1次)
(4次)數(shù)據(jù)項C(1次)數(shù)據(jù)項F(1次)數(shù)據(jù)文件數(shù)據(jù)記錄2
(0或1次)數(shù)據(jù)項C(0或1次)
數(shù)據(jù)項D元素I(m次)數(shù)據(jù)記錄3(0或n次)
(n次)數(shù)據(jù)項E(1次)第三章軟件設(shè)計的概念和過程●步驟①復(fù)審軟件規(guī)格說明及數(shù)據(jù)結(jié)構(gòu)的Warnier圖。②用Warnier圖表示軟件處理的層次,依據(jù)輸入數(shù)據(jù)結(jié)構(gòu)導(dǎo)出軟件處理層次圖。③依據(jù)Warnier圖,畫出程序處理流程圖。④列出指令索引表(進(jìn)行具體設(shè)計,安排指令操作)第三章軟件設(shè)計的概念和過程程序起先起先(1次)起先(1次)(1次)處理數(shù)據(jù)記錄1處理A、B、C(1次)(1次)結(jié)束(1次)起先(1次)處理F(1次)程序處理數(shù)據(jù)文件處理數(shù)據(jù)記錄2處理G(1次)(1次)處理G結(jié)束(1次)處理數(shù)據(jù)記錄2程序結(jié)束(1次)第三章軟件設(shè)計的概念和過程起先(1次)起先(1次)處理D(n次)處理i((m次)處理數(shù)據(jù)記錄3處理D結(jié)束(1次)(n次)處理E(1次)結(jié)束(1次)第三章軟件設(shè)計的概念和過程起先處理數(shù)據(jù)文件處理記錄1處理A、B、C<4次記錄2處理記錄2處理FG處理G處理記錄3D處理D處理項I<m次<n次處理E<n次結(jié)束第三章軟件設(shè)計的概念和過程【例】顧客記帳報告輸入數(shù)據(jù)結(jié)構(gòu)活動記錄顧客號活動號數(shù)量特征碼顧客號名字活動號借額貸額╳╳╳╳╳╳【例】顧客記帳報告輸入數(shù)據(jù)結(jié)構(gòu)顧客號名字老余額顧客頭記錄第三章軟件設(shè)計的概念和過程輸入文件(0或1次)顧客(n次)顧客號(1次)名字(1次)
老余額(1次)活動組(0或1次)活動(m次)顧客號(1次)活動號(1次)數(shù)量(1次)特征碼(1次)第一層其次層第三層第四層第五層信息結(jié)構(gòu)第三章軟件設(shè)計的概念和過程
顧客號
(1次)活動號(1次)名字活動行借額(0或1次)
(1次)(m次)貸額(0或1次)輸出報告顧客活動組借小計
(0或1次)(1次)老余額貸小計
(1次)(1次)新余額
(1次)第三章軟件設(shè)計的概念和過程處理層次:起先起先起先(1次)起先(1次)(1次)處理借(1次)起先處理活動組處理活動(0或1次)(1次)(1次)(m次)處理貸程序處理顧客處理活動組結(jié)束(0或1次)(0或1次)(n次)結(jié)束(1次)結(jié)束結(jié)束(1次)(1次)結(jié)束(1次)(1次)第三章軟件設(shè)計的概念和過程流程圖:010080090
020030100
040110120050060
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人學(xué)習(xí)經(jīng)驗總結(jié)
- 企業(yè)代培訓(xùn)合同范本
- 公司外包車合同范本
- 主播學(xué)徒合同范本
- 南昌全款購車合同范本
- 化妝師題庫(含參考答案)
- 七年級第二學(xué)期體育教學(xué)計劃
- 七年級國旗下保護(hù)環(huán)境講話稿
- 醫(yī)院骨科采購合同范本
- 區(qū)別真假租房合同范本
- DB34T∕ 2452-2015 旅行社小包團服務(wù)指南
- 隊列研究評估預(yù)后標(biāo)志物的外部驗證
- 2024全國各地區(qū)英語中考真題匯編《第一期》
- 電梯應(yīng)急救援與事故處理考核試卷
- 第1章 跨境電商概述
- 2024-2030年中國長管拖車行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 《高等教育學(xué)》近年考試真題題庫(含答案)
- 2024福建省廈門市總工會擬錄用人員筆試歷年典型考題及考點剖析附答案帶詳解
- 供熱管道施工組織設(shè)計
- 浙江省中小學(xué)心理健康教育教師上崗資格證書管理辦法(修訂)
- 2024年青島港灣職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫審定版
評論
0/150
提交評論