《軟件工程》各章節(jié)重點_第1頁
《軟件工程》各章節(jié)重點_第2頁
《軟件工程》各章節(jié)重點_第3頁
《軟件工程》各章節(jié)重點_第4頁
《軟件工程》各章節(jié)重點_第5頁
已閱讀5頁,還剩206頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

--軟件設計軟件工程內(nèi)容提要軟件設計根底原理概要設計詳細設計軟件設計軟件設計是軟件開發(fā)的最重要階段;是保證軟件質(zhì)量的重要步驟;軟件設計是把用戶需求準確轉化為軟件系統(tǒng)的唯一途徑。軟件設計軟件設計是把軟件需求轉換為軟件表示的過程。它包含兩個階段:概要設計 將軟件需求轉化為數(shù)據(jù)結構和軟件的系統(tǒng)結構。詳細設計 通過對結構表示進行細化,得到軟件詳細的數(shù)據(jù)結構和算法。軟件設計的根底概念軟件結構軟件結構包括兩局部,一是軟件模塊的層次結構;二是數(shù)據(jù)的結構。通常軟件的體系結構通過一個劃分過程來完成。該劃分過程從需求分析確立的目標系統(tǒng)模型出發(fā),對整個問題進行分解,使其每一局部用一個或幾個軟件成分加以解決,從而解決整個問題。該過程可用以下圖形象表示:P1P2P3S1S2S3軟件設計的根本原理抽象模塊化逐步求精信息隱藏與局部化模塊的獨立性抽象抽象,即析取出事物的本質(zhì)特征而不考慮他們的細節(jié)。抽象是人類認識復雜問題的重要思維工具之一。抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象。下層概念是上層概念的精化和細化。模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,它是單獨命名的,并且可以通過名字來訪問的。例如,過程。函數(shù)、子程序、宏等等都可作為模塊。模塊具有三個根本屬性:功能—模塊實現(xiàn)的功能邏輯—描述模塊內(nèi)部怎么做狀態(tài)—模塊使用時的環(huán)境和條件模塊化模塊的特征:內(nèi)部特征—模塊的名字、參數(shù)等;外部特征—完成模塊功能的程序代碼和模塊內(nèi)部數(shù)據(jù)。模塊化,即把軟件按照規(guī)定原那么,劃分為一個個較小的,相互獨立的但又相互關聯(lián)的部件。模塊化實際上是系統(tǒng)分解和抽象的過程。模塊化理想的模塊每個模塊只解決一個問題;每個模塊的功能應該明確,使人容易理解;模塊之間的聯(lián)結關系簡單,具有獨立性;用理想模塊構建的系統(tǒng),容易使人理解,易于編程,易于測試,易于修改和維護。對用戶來說,其感興趣的是模塊的功能,而不必理解模塊內(nèi)部的結構和原理。模塊化的理論依據(jù)設函數(shù)C(x)定義問題x的復雜程度,函數(shù)E(x)確定解決問題x需要的工作量。對于兩個問題P1和P2,如果有:C(P1)>C(P2), 那么顯然有:E(P1)>E(P2);根據(jù)人類解決一般問題的經(jīng)驗,有: C(P1+P2)>C(P1)+C(P2);進而獲得:E(P1+P2)>E(P1)+E(P2)。模塊化的理論依據(jù)此不等式說明:單獨解決問題P1和P2所需的工作量之和,比把P1和P2合起來作為一個問題來解決所需要的工作量要少。這種“分而治之〞的思想提供了模塊化的理論依據(jù):把復雜問題分解成許多容易解決的小問題,那么原來復雜的問題也就容易解決了。模塊化與軟件本錢本錢或工作量模塊數(shù)目模塊本錢接口本錢最小本錢區(qū)軟件總本錢αM模塊化采用模塊化原理使軟件結構清晰,不僅容易設計也容易閱讀和理解:因為程序錯誤通常局限在有關的模塊及它們之間的接口中,所以模塊化使軟件容易調(diào)試和測試,有助于提高軟件的可靠性;因為變動往往只涉及少數(shù)幾個模塊,所以模塊化能夠提高軟件的可修改性;模塊化也有助于軟件工程的組織管理,一個復雜的大型軟件可以有許多程序員分工編寫,進而提高了開發(fā)效率。逐步求精逐步求精是人類解決復雜問題的根本技術之一,它是把問題的求解過程分解成假設干步驟或階段,每步都比上步更精化,更接近問題的解法。為了能集中精力解決主要問題而盡量推遲問題細節(jié)的考慮。它可以看作是一項把一個時期必須解決的種種問題按優(yōu)先級別排序的技術。逐步求精和抽象是一對互補的概念。信息隱藏和局部化應用模塊化原那么,自然會產(chǎn)生一個問題“為了得到一組模塊,應該怎樣分解軟件呢?〞信息隱藏原理指出:應該這樣設計和確定模塊,使得一個模塊內(nèi)包含的信息對不需要這些信息的模塊來說是不能訪問的。局部化指把一些關系密切的軟件元素放得彼此靠近。顯然,局部化有助于信息隱藏。信息隱藏和局部化實際上應該隱藏的不是模塊的一切信息,而是模塊的實現(xiàn)細節(jié)。因此這條原理也被稱作“細節(jié)隱藏〞。隱藏,意味著有效的模塊化可以通過定義一組獨立的模塊而實現(xiàn),這些獨立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換的信息。信息隱藏和局部化有助于軟件測試和維護!模塊獨立性模塊獨立性是模塊化、信息隱藏和局部化等概念的直接結果。為什么模塊獨立性很重要?有效模塊化的軟件比較容易開發(fā)出來;獨立的模塊比較容易測試和維護??傊K獨立是設計好壞的關鍵!模塊獨立的含義:模塊完成獨立的功能,與其他模塊的接口簡單;符合信息隱蔽和信息局部化原那么;模塊間關連和依賴程度盡可能小。模塊獨立的度量模塊的獨立程度可由兩個定性標準來衡量:耦合 耦合衡量不同模塊彼此間相互依賴的緊密程度;內(nèi)聚 內(nèi)聚衡量同一模塊內(nèi)部各元素彼此組合的緊密程度;耦合性耦合是程序結構內(nèi)不同模塊之間相互關聯(lián)的度量,是影響軟件復雜程度和設計質(zhì)量的重要因素。耦合強度依賴的因素:一模塊對另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊控制的數(shù)量模塊間接口的復雜程度設計目標:低耦合(建立模塊間耦合盡可能松散的系統(tǒng))耦合度耦合性模塊獨立性數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合特征耦合外部耦合非直接耦合非直接耦合(NodirectCoupling)兩個模塊沒有直接關系(模塊1和模塊2),它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn),非直接耦合是模塊獨立性最強的。模塊1模塊2模塊3模塊4主模塊數(shù)據(jù)耦合(DataCoupling)一模塊調(diào)用另一模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結構和外部變量)來交換輸入、輸出信息。屬松散耦合。開發(fā)票計算水費單價數(shù)量金額特征耦合(StampCoupling)如兩個模塊之間是通過傳遞數(shù)據(jù)結構(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結構有關系,那么稱這兩個模塊間存在特征偶合。計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況〞是一個數(shù)據(jù)結構,圖中模塊都與此數(shù)據(jù)結構有關。“計算水費〞和“計算電費〞本無關,由于引用了此數(shù)據(jù)結構產(chǎn)生依賴關系,它們之間就是特征偶合。特征耦合將特征耦合改為數(shù)據(jù)耦合:計算水電費計算水費計算電費本月用水量水費電費本月用電量控制耦合(ControlCoupling)一模塊向下屬模塊傳遞的信息控制了被調(diào)用模塊的內(nèi)部邏輯。如開關量、標志、名稱等控制決策的變量,控制選擇了被調(diào)用模塊的功能。AFlagF1F2FnFlag……..B控制耦合舉例-1PROCA(){

//調(diào)用B,使用其功能1 B(x,y,1) //調(diào)用B,使用其功能2 B(x,y,2)}PROCB(a,b,flag){ docase caseflag=1 功能1 caseflag=2 功能2

endcase}控制耦合舉例-2AB計算平均分或最高分平均/最高(控制信號)成績讀入分數(shù)輸出結果計算平均分計算最高分平均/最高?B控制耦合控制耦合增加了理解和編程的復雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了模塊間的相互依賴關系。去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進行;被調(diào)用模塊分解成假設干單一功能模塊。控制耦合修改控制耦合為數(shù)據(jù)耦合:AB1計算平均分平均成績B2計算最高分最高成績外部耦合(ExternalCoupling)一組模塊均與同一外部環(huán)境關聯(lián)(例如,I/O模塊與特定的設備、格式和通信協(xié)議相關聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應盡量少。公共環(huán)境耦合一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。其中,公共數(shù)據(jù)區(qū)指:全局數(shù)據(jù)結構共享的通訊區(qū)內(nèi)存的公共覆蓋區(qū)等A公共數(shù)據(jù)區(qū)CB公共環(huán)境耦合公共耦合的復雜程度隨耦合模塊的個數(shù)增多而顯著增加。假設只有兩個模塊間存在公共數(shù)據(jù)環(huán)境,那么公共耦合有兩種情況,松散公共耦合和緊密公共耦合。AB公共數(shù)據(jù)區(qū)AB公共數(shù)據(jù)區(qū)a.松散公共耦合b.緊密公共耦合公共環(huán)境耦合存在的問題軟件可理解性降低診斷錯誤困難軟件可維護性差,軟件可靠性差 公共數(shù)據(jù)區(qū)及全程變量無保護措施慎用公共數(shù)據(jù)區(qū)和全程變量!!!內(nèi)容耦合(ContentCoupling)如果發(fā)生以下情形之一,兩模塊之間就產(chǎn)生了內(nèi)容耦合:一個模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口轉到另一模塊的內(nèi)部;兩個模塊有局部程序代碼重疊;一個模塊有多個入口。一模塊直接訪問另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù)〕ABAB模塊代碼重疊Entry1……Entry2……多入口模塊如何降低模塊間耦合度①盡量使用數(shù)據(jù)耦合少用控制耦合限制公共環(huán)境耦合的范圍堅決防止使用內(nèi)容耦合②降低接口的復雜性內(nèi)聚性內(nèi)聚指一個模塊內(nèi)部元素在功能上相互關聯(lián)的強度(彼此結合的緊密程度),它是信息隱藏和局部化概念的擴展。設計目標: 高內(nèi)聚(模塊在軟件過程中完成單一的任務)內(nèi)聚性模塊獨立性偶然內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚信息內(nèi)聚功能內(nèi)聚內(nèi)聚性偶然內(nèi)聚(ConcidentalCohesion)含義:模塊內(nèi)各局部之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。如:A、B兩個模塊含有相同的一段代碼C,程序員為了節(jié)約內(nèi)存,而將A、B放在同一模塊內(nèi),以共享C,模塊AB即為偶然內(nèi)聚。缺點:可理解性差,可修改性差CCABCAB偶然內(nèi)聚例子ABCMOVEOTORREADFILEFMOVESTOTM模塊M中的三個任務沒有任何聯(lián)系邏輯內(nèi)聚(LogicalCohesion)把幾種相關的功能〔邏輯上相似的功能〕組合在一模塊內(nèi),每次調(diào)用時,由傳給模塊的判定參數(shù)來確定該模塊應執(zhí)行哪一個功能。!邏輯內(nèi)聚導致模塊間的控制耦合調(diào)用模塊判定讀一個記錄寫一個記錄被調(diào)用模塊AMBCEFGAMBCEFGE、F、G邏輯功能相似,組成新模塊EFG缺點:增強了耦合(控制);不易修改,效率低A1B1C1EFG模塊內(nèi)部邏輯公用代碼段公用代碼段邏輯內(nèi)聚例子時間內(nèi)聚(ClassicalCohesion)這種模塊大多為多功能模塊,但模塊內(nèi)的各個功能的執(zhí)行與時間有關,通常要求所有功能必須在同一時間內(nèi)執(zhí)行,這些功能只因時間因素關聯(lián)在一起。例如:系統(tǒng)初始化模塊、系統(tǒng)結束模塊、緊急故障處理模塊等均是時間性內(nèi)聚模塊.過程內(nèi)聚(ProceduralCohesion)模塊內(nèi)各處理成分相關,且必須以特定次序執(zhí)行。 使用流程圖作為工具設計程序時,把流程圖中的某一局部劃出來組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)局部、判定局部、計算局部分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。讀入成績單讀入并審查成績單審查成績單統(tǒng)計成績打印成績統(tǒng)計并打印成績單通信內(nèi)聚

(CommunicationCohesion〕如果一個模塊內(nèi)各功能局部使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出結果,那么稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。打印報告A打印報告B打印報告C計算A計算B保存學生信息通信內(nèi)聚例子產(chǎn)生職工工資報表并計算平均工資模塊產(chǎn)生工資報表計算平均工資職工工資記錄職工工資報表平均工資A結果B結果文件讀文件打印檢驗結果計算A計算B讀卡片文件合并修改文件A/B卡片A/B數(shù)據(jù)新文件獲得A/B數(shù)據(jù)加工記錄通信內(nèi)聚例子信息內(nèi)聚(InformationalCohesion)模塊完成多個功能,各功能都在同一數(shù)據(jù)結構上操作,每一功能有唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪個功能。由于這個模塊的所有功能都基于同一個數(shù)據(jù)結構(符號表),因此,它是一個信息內(nèi)聚模塊信息內(nèi)聚例子符號表查找登錄刪除修改功能內(nèi)聚(FunctionalCohesion)一個模塊中各個局部都是完成某一具體功能必不可少的組成局部,或者說該模塊中所有局部都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。內(nèi)聚性最強!耦合與內(nèi)聚的關系內(nèi)聚與耦合密切相關,同其它模塊強耦合的模塊意味著弱內(nèi)聚,強內(nèi)聚模塊意味著與其它模塊間松散耦合。耦合與內(nèi)聚都是模塊獨立性的定性標準,都反映模塊獨立性的良好程度。但耦合是直接的主導因素,內(nèi)聚那么輔助耦合共同對模塊獨立性進行衡量。內(nèi)聚度耦合度概要設計概要設計的根本目的概要設計的根本任務概要設計過程結構化設計方法面向數(shù)據(jù)流的設計方法概要設計工具層次圖和HIPO圖結構圖概要設計的根本目的概要設計的根本目的就是答復“概括的說,系統(tǒng)應該如何實現(xiàn)?〞概要設計的根本任務確定軟件系統(tǒng)的結構和數(shù)據(jù)庫結構劃出組成系統(tǒng)的物理元素:程序、文件、數(shù)據(jù)庫、人工過程和文檔等等;設計軟件結構,即確定系統(tǒng)由哪些模塊組成,以及這些模塊之間的相互關系(接口)。概要設計的主要工作是:完成模塊分解即每個模塊的功能說明!概要設計過程設想供選擇的方案選擇合理的方案推薦最正確方案功能分解設計軟件結構數(shù)據(jù)庫設計制訂測試方案編寫文檔審查和復審設想供選擇的方案在概要設計開始時,只有系統(tǒng)的邏輯模型,分析人員有充分的自由比較分析不同的物理實現(xiàn)方案。設想供選擇的方案的一種通常的做法是,設想數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄技術上行不通的分組方法,余下的分組方法代表可能的實現(xiàn)策略,并且可以啟示供選擇的物理系統(tǒng)。選取合理的方案在數(shù)據(jù)流圖的根底上,一個邊界一個邊界設想并列出可供選擇的方案。通常,選擇的這些方案中至少應包括低本錢、中本錢和高本錢的三種方案;對每個合理方案要提供以下幾方面資料:系統(tǒng)流程圖;數(shù)據(jù)字典;本錢、效益分析;實現(xiàn)這個系統(tǒng)的進度方案。推薦最正確方案分析人員應該在綜合分析比照各種合理方案利弊,推薦一個最正確方案,并為推薦的方案擬定詳細的實現(xiàn)方案。用戶和有關的技術專家應該認真審查分析員所推薦的最正確系統(tǒng),如果系統(tǒng)符合用戶的需求,并且在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的。那么應該提請使用部門負責人進一步審批。在使用部門負責人也接受了分析員的推薦方案之后,才可以進入下一個環(huán)節(jié)。對分析結果進一步細化,再進行功能分解。P2P5P3P4P1需要通過軟件解決的“問題〞S1S2S3S4S5軟件的“解決方案〞功能分解設計軟件結構軟件結構反映系統(tǒng)中模塊的相互調(diào)用關系:頂層模塊調(diào)用它的下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,最下層的模塊完成最具體的功能;軟件結構通過層次圖或結構圖來描述,可以直接從DFD映射出軟件結構。數(shù)據(jù)庫設計數(shù)據(jù)庫應用越來越廣泛,目前大多數(shù)的系統(tǒng)都要用到數(shù)據(jù)庫技術。數(shù)據(jù)庫設計是一項專門的技術,包括模式設計、子模式設計、完整性和平安性設計和優(yōu)化處理等。制訂測試方案在軟件開發(fā)的早期階段提前考慮軟件的測試方案是很有必要的。這樣能促使軟件設計人員在設計時注意到軟件的測試問題,從而有利于提高軟件的可測試性。文檔編寫概要設計階段需要編寫的文檔包括: 系統(tǒng)說明書;用戶手冊; 測試方案;詳細的實現(xiàn)方案; 數(shù)據(jù)庫設計結果;審查與復審最后應該對概要設計的結果進行嚴格的技術審查,然后再提交使用部門負責人從管理角度進行審查。概要設計準那么改進軟件結構提高模塊獨立性模塊適當?shù)纳疃取挾?、扇出和扇入模塊判斷作用范圍應在其控制作用范圍內(nèi)力爭降低模塊接口的復雜度設計單入口單出口的模塊模塊功能應該是可以預測的改進軟件結構提高模塊獨立性設計出軟件的初步結構以后,應該審查分析該結構,通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調(diào)用;有時也可以通過分解或合并模塊以減少信息傳遞對全局數(shù)據(jù)的引用,并降低接口的復雜性。模塊大小適中,一般一個模塊包含的語句在30~50條左右較好。模塊適度的寬度、深度、扇出和扇入深度:軟件結構中模塊的層數(shù)寬度:軟件結構內(nèi)同一層的模塊總數(shù)的最大值扇出:一個模塊所調(diào)用(直屬下級)的模塊個數(shù)(控制在7以內(nèi))扇入:有多少上級模塊調(diào)用它經(jīng)驗證明,一個設計好的軟件結構,通常頂層扇出比較高,中層扇出比較少,底層有高扇入。模塊適當?shù)纳疃?、寬度、扇出、扇入MabcdelmfghnopqijrDepthFan-inFan-outWidth控制作用范圍:本身及其所有下級模塊判斷作用范圍:被判斷調(diào)用的模塊對于任何一個內(nèi)部存在判斷調(diào)用的模塊,它的判斷作用范圍應該是其控制作用范圍的一個子集;ABCDEFG模塊G中有一條判斷調(diào)用模塊D的語句。判斷作用范圍應在控制作用范圍內(nèi)存在判斷調(diào)用的模塊所在層次不要與那些屬于判斷作用范圍的模塊所在的層次相隔太遠。ABDGEFC模塊C中有一條判斷調(diào)用模塊G的語句。相隔太遠正確ABDGCFE判斷作用范圍應在控制作用范圍內(nèi)力爭降低模塊接口的復雜性模塊接口的復雜度是軟件發(fā)生錯誤的一個主要原因。應該仔細設計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。接口復雜或不一致〔即看起來傳遞的參數(shù)之間沒有聯(lián)系〕,是高耦合和低內(nèi)聚的征兆,應該重新分析這個模塊的獨立性。設計單入口單出口的模塊即不要使模塊間出現(xiàn)內(nèi)容耦合模塊功能應該是可以預測的只要輸入的數(shù)據(jù)相同就產(chǎn)生相同的輸出數(shù)據(jù),這個模塊的功能就是可以預測的;模塊的功能應該可以預測,但也要防止模塊功能過分局限。概要設計工具層次圖(HierarchyChart

)輸入/處理/輸出圖(IPO)HIPO圖結構圖(StructureChart)層次圖層次圖用來描繪軟件的層次結構的圖形工具。正文加工系統(tǒng)輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表IPO圖HC圖中的每一個模塊,均可用一張IPO圖來描述。IPO圖由輸入、處理和輸出三個框組成,需要時還可以增加一個數(shù)據(jù)文件框。IPO圖在需求分析階段主要用來描述系統(tǒng)的主要算法。

IPO圖例子(班務管理系統(tǒng))

未繳班費處理添加新的繳費學生名單出錯信息記錄不符合1將合格標志送回上一級2調(diào)用模式3將核對的記錄記入文件4修改學生記錄5添加學生記錄1核對學號和原有學生記錄2核查學生繳費狀況3處理過程1上組模塊送入學生數(shù)據(jù)2讀取原有學生記錄3讀取學生學號4學生所繳班費輸出部分O處理部分P輸入部分I使用單位教務處和班主任模塊名稱財務信息查詢IPO圖1財務查詢IPO圖1表示了財務查詢系統(tǒng),它講述如何查詢學生繳費情況,并且驗證其是否準確HIPO圖HIPO圖即HC加IPO層次圖加上編號稱為H圖。在層次圖的根底上,除最頂層的方框之外,其余每個方框都加了編號。層次圖中每一個方框都有一個對應IPO圖(表示模塊的處理過程)。每張IPO圖應增加編號與其表示的(對應的)層次圖編號一致。正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6結構圖(SC)結構圖是SD方法在概要設計中的主要表達工具約定:一個方框代表一個模塊,框內(nèi)注明模塊的名稱或主要功能;方框之間的箭頭表示模塊的調(diào)用關系;尾部帶空心圓的短箭頭表示數(shù)據(jù)信息,尾部帶實心圓的短箭頭表示控制信息。數(shù)據(jù)信息控制信息結構圖例1:編輯學生記錄讀學生記錄學生數(shù)據(jù)無此學生學號結構圖例2:產(chǎn)生最正確解得到好輸入計算最正確解輸出結果讀輸入編輯輸入結果格式化顯示結果解解解好輸入原始輸入編輯結果原始輸入格式化的解格式化的解ACBD結構圖結構圖中還有一些附加符號,來表示模塊的選擇調(diào)用和循環(huán)調(diào)用:A根據(jù)內(nèi)部判斷決定是否調(diào)用BA按另一判定結果選擇調(diào)用C或DABCA根據(jù)內(nèi)在的循環(huán)重復調(diào)用B、C等模塊提示層次圖和結構圖并不嚴格表示模塊的調(diào)用次序,也不指明什么時候調(diào)用下層模塊,他們僅僅表示一個模塊調(diào)用那些模塊,至于模塊內(nèi)有無其他成分那么完全沒有表示。通常用層次圖作為描述軟件結構的文檔。結構圖作為文檔并不適宜,因為圖中包含信息過多,有時反而降低了清晰程度。但是,結構圖可以作為檢查設計正確性和評價模塊獨立性的好方法。面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法〔結構化設計方法〕概述變換流與事務流變換分析事務分析面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法以數(shù)據(jù)流圖為根底,它定義了把數(shù)據(jù)流圖變換成軟件結構的不同映射方法。因為任何系統(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設計方法理論上可以設計出任何軟件的系統(tǒng)結構。數(shù)據(jù)流類型決定了映射方法。數(shù)據(jù)流有變換流和事務流兩種根本類型。軟件結構也被劃分為變換型結構、事務性結構兩種類型。變換流外部表示內(nèi)部表示信息時間信息流輸入流輸出流變換流信息沿輸入通路進入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)過加工處理后再沿輸出通路變換為外部形式離開軟件系統(tǒng)。特點:從同一數(shù)據(jù)源進入系統(tǒng)的數(shù)據(jù),它在DFD中流動的邏輯路徑是相同的。事務流數(shù)據(jù)沿輸入通路到達一個處理(事務中心)這個處理根據(jù)輸入數(shù)據(jù)的類型在假設干個動作序列中選出一個來執(zhí)行。這種以“事務為中心〞的數(shù)據(jù)流,稱為“事務流〞;事務中心完成:接受輸入數(shù)據(jù);分析每個事務以確定它的類型;根據(jù)事務類型選取一條活動通路。事務中心事務DFD類型輸入輸出事務中心接受路徑動作路徑事務型結構由輸入、變換中心和輸出三局部組成具有在多種事務中選擇執(zhí)行某類事物的能力變換型數(shù)DFD事務型DFD變換中心變換型結構根本結構特征映射變換型DFD變換中心傳入局部傳出局部總控模塊加工模塊輸入模塊輸出模塊變換型SC輸入加工輸出映射映射事務型DFD動作1事務中心接受局部接受事務事務分析動作2動作3事務中心調(diào)度模塊接受事務輸出模塊動作2動作1動作3映射事務型SC提示大型系統(tǒng)的數(shù)據(jù)流圖中,變換型和事務型結構往往共存:T傳入變換傳出事務中心面向數(shù)據(jù)流的設計過程精化DFD確定DFD類型把DFD映射到系統(tǒng)模塊結構設計出模塊結構的上層基于DFD逐步分解高層模塊設計出下層模塊根據(jù)模塊獨立性原理,精化模塊結構模塊接口描述面向數(shù)據(jù)流方法中兩種映射過渡方法變換型DFD事務型DFD初始SC初始SC變換分析事務分析變換分析步驟確定輸入流和輸出流的邊界,孤立出變換中心在數(shù)據(jù)流圖上標明分界線Aabcedrpuwv變換中心傳入部分傳出部分BCDEPRQWUV變換分析步驟第一級分解(建立初始結構圖框架)設計頂層和第一層模塊MCMTMAME總控模塊初始的SC第一層分解后的結構圖-1MCMTMAME第一層頂層c,ec,eu,wu,w傳出模塊中心變換模塊傳入模塊第一層分解后的結構圖-2MCMA1ceu,wc,pMA2QPRME1eprrw,uw傳入分支模塊中心加工分支模塊傳出分支模塊ME2變換分析步驟第二級分解: 自頂向下分解,設計出每個分支的中、下層模塊方法從變換中心的邊界開始沿輸入通路向外移動,把輸入通路中每個處理邏輯映射成軟件結構中MA控制的一個下層模塊;然后沿輸出通路向外移動,把輸出通路中每個處理邏輯映射成直接或間接受模塊ME控制的一個底層模塊;最后把變換中心內(nèi)的每個處理映射成受MT控制的一個模塊。傳入分支的分解MACBAbacEDdec,e(1)c,eMAGetCGetBReadAbacGetEReadDdeDtoEBtoCAtoBbcdeab(2)傳出分支的分解MEWPutUWriteVuuw,uUtoVvvvMEUWriteWwwuw,uV(1)(2)中心加工分支的分解MTPQRec,pru,wpr變換分析實例某校欲設計“成績錄入〞程序,由錄入員輸入成績信息(學號+課程代碼+成績),對程序要求如下:查詢是否有該學生查詢該學生的班級信息查詢教學方案信息查詢成績是否重復錄入在核對以上信息后保存該成績信息。成績信息成績庫姓名班級信息課程信息成績信息成績錄入精化數(shù)據(jù)流圖管理員輸入成績查詢學生查詢班級查詢教學方案查詢成績成績信息成績信息成績信息成績信息顯示姓名顯示班級顯示課程保存成績姓名班級信息課程信息教學方案班級信息學生信息無此學生報告無此班級報告無此課程報告重復輸入報告姓名班級信息課程信息成績信息劃界的數(shù)據(jù)流圖管理員輸入成績查詢學生查詢班級查詢教學方案查詢成績成績信息成績信息成績信息成績信息成績信息顯示姓名顯示班級顯示課程保存成績姓名班級信息課程信息成績庫教學方案班級信息學生信息無此學生報告無此班級報告無此課程報告重復輸入報告輸出加工輸入成績錄入上層模塊圖主模塊查詢輸出成績錄入如果輸入或輸出模塊已經(jīng)是原子模塊,那么不必進一步細化;如果輸入和輸出模塊不需要變換數(shù)據(jù),那么輸入和輸出不需設計下層模塊;如果有多種輸入或輸出,那么這些輸入或輸出模塊作為輸入和輸出模塊的下層模塊。進一步分解的規(guī)那么成績錄入結構二次分解主模塊查詢輸出成績錄入查詢學生查詢班級查詢教學計劃查詢重復顯示姓名顯示班級顯示課程保存成績事務分析事務分析的設計步驟和變換分析的設計步驟大局部相同或類似,主要差異僅在由數(shù)據(jù)流圖到軟件結構圖的映射方法不同。由事務流映射成軟件結構包括一個接受分支和一個發(fā)送分支。映射出接受分支結構的方法和變換分析映射出輸入結構的方法相似,即從事務中心的邊界開始,把沿著接受流通路的處理邏輯模塊映射成模塊。發(fā)送分支的結構包含一個調(diào)度模塊,它控制下層的所有活動模塊;然后把DFD中的每個活動流通路映射成與它的特征相對應的結構。事務分析步驟在數(shù)據(jù)流圖上確定事務中心、接收局部和發(fā)送局部。畫出結構圖框架,把數(shù)據(jù)流圖上的三局部分別映射為事務控制模塊、接收模塊和動作發(fā)送模塊。分解細化接收分支和發(fā)送分支,完成初始結構圖。初始的SC事務控制模塊接受模塊動作發(fā)送模塊動作1模塊動作2模塊動作3模塊由事務分析產(chǎn)生主模塊調(diào)度模塊事務分析的映射方法總控調(diào)度C通路B通路A通路TA通路B通路C通路接收路徑事務分析舉例ILMNABCDFEG事務中心事務流設計舉例取A總控ALMNGDBCFE〔主模塊〕調(diào)度動作分支的典型結構PT2T1TiA2D2A1D1A3AjDk事務層操作層細節(jié)層處理層調(diào)度模塊事務加工模塊操作模塊細節(jié)模塊事務型數(shù)據(jù)流圖舉例ILMONABCDFEGH總控輸入A變換控制ALMNAGDBCFE輸出E、F、GE、F、GE、F、G輸出HOE、F、GHH事務型數(shù)據(jù)流圖舉例事務型分析實例某校欲設計“收費查詢〞系統(tǒng),該程序可以為學生和管理人員效勞,由錄入員和管理員輸入查詢請求,即可查出學生的繳費情況,要求做到:按學號查詢按姓名查詢按專業(yè)查詢按班級查詢精化數(shù)據(jù)流圖錄入員接受查詢分析查詢按學號查詢按姓名查詢按專業(yè)查詢按班級查詢查詢信息查詢信息學號姓名專業(yè)班級學生管理員繳費清單繳費清單繳費清單繳費清單得出程序結構首先應設計出事務中心模塊,對整個事務進行控制。從數(shù)據(jù)流圖可看出,“分析查詢〞處理是事務調(diào)度中心,可以設計為事務調(diào)度模塊。由四個事務處理,分別為其設計事務處理模塊。輸入模塊為“接受查詢〞。事務中心接受查詢調(diào)度輸出查詢結果按學號查詢按姓名查詢按專業(yè)查詢按班級查詢混合流分析-例13412675810911變換中心傳入傳出事務型混合流分析-例2T傳入變換傳出事務中心接收局部發(fā)送部分混合流分析-例3AB變換中心傳入傳出abb1b2b3c1c2c3BCT1T2CDT3DEEHFJLMKLdegfjLm事務流子系統(tǒng)HKhk混合流分析—例4XX系統(tǒng)輸入D變換控制輸出K輸入Cdc輸出LCDDEFJEHHKKLcddkkkLL輸出MLMmmL事務子系統(tǒng)de,f,g提示對于一個大型系統(tǒng),常常把變換分析和事務分析應用到同一個數(shù)據(jù)流圖的不同局部,由此得到的子結構形成“構件〞,可以利用它們構造完整的軟件結構;一般來說,如果數(shù)據(jù)流不具有顯著的事務特點,使用變換分析;反之,假設具有明顯的事務中心,那么應該采用事務分析技術。設計優(yōu)化考慮設計優(yōu)化問題時,應該記住“一個不能工作的‘最正確設計’的價值是值得疑心的〞。應該在設計的早期階段對軟件結構進行精化、優(yōu)化??梢詫С霾煌能浖Y構,并對它們進行評價和比較,力求得到“最好〞的結果。注意,簡單的結構通常既表示優(yōu)雅的設計風格,又表示高效率。設計優(yōu)化應該力求做到在有效模塊化的前提下使用最少的模塊,以及在能夠滿足系統(tǒng)數(shù)據(jù)要求的前提下,使用最簡單的數(shù)據(jù)結構。階段性成果系統(tǒng)說明書用戶手冊測試方案詳細的實現(xiàn)方案數(shù)據(jù)庫設計文檔……詳細設計內(nèi)容提要詳細設計根底結構化程序設計方法詳細設計工具流程圖〔FC〕盒圖圖〔NS〕PAD圖程序設計語言判定表判定樹詳細設計說明書設計復審詳細設計又稱過程設計,在概要設計階段,已經(jīng)確定了軟件系統(tǒng)的總體結構,給出系統(tǒng)中各個組成模塊的功能和模塊間的聯(lián)系。這一步的工作,就是要在上述結果的根底上,考慮“怎樣實現(xiàn)〞這個軟件系統(tǒng),直到對系統(tǒng)中的每個模塊給出足夠詳細的過程性描述。需要指出,這些描述應該用詳細設計的表達工具來表示,因它們還不是程序,一般不能夠在計算機上運行。詳細設計提示詳細設計是編碼的先導。這個階段所產(chǎn)生的設計文檔的質(zhì)量,將直接影響下一階段程序的質(zhì)量。為了提高文檔的質(zhì)量和可讀性,本章除要說明詳細設計的目的、任務與表達工具外,還將扼要介紹結構程序設計的根本原理,以及如何用這些原理來指導模塊內(nèi)部的邏輯設計,提高模塊控制結構的清晰度。對于功能較簡單的系統(tǒng)開發(fā),概要設計之后可以跳過詳細設計直接進行編碼。詳細設計的目的詳細設計的目的是為軟件結構圖〔SC圖或HC圖〕中的每一個模塊確定使用的算法和塊內(nèi)數(shù)據(jù)結構,并用某種選定的表達工具給出清晰的描述。表達工具可以由開發(fā)單位或設計人員選擇,但表達工具必須具有描述過程細節(jié)的能力,進而可在編碼階段能夠直接將它翻譯為用程序設計語言書寫的源程序。詳細設計的任務為每個模塊確定采用的算法,選擇某種適當?shù)墓ぞ弑磉_算法的過程,編寫模塊的詳細過程性描述;確定每一模塊使用的數(shù)據(jù)結構;確定模塊接口的細節(jié),包括對系統(tǒng)外部的接口和用戶界面,對系統(tǒng)內(nèi)部其它模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細節(jié)。在詳細設計結束時,應該把上述結果寫入詳細設計說明書,并且通過復審形成正式文檔。交付給下一階段〔編碼階段〕的工作依據(jù)。詳細設計的任務要為每一個模塊設計出一組測試用例,以便在編碼階段對模塊代碼〔即程序〕進行測試。模塊的測試用例是軟件測試方案的重要組成局部,通常應包括輸入數(shù)據(jù),期望輸出等內(nèi)容。由于負責詳細設計的軟件人員對模塊的功能、邏輯和接口最清楚,所以由他們提出對各個模塊的測試要求最為適宜。詳細設計的原那么模塊的邏輯描述要清晰易讀、正確可靠。選擇恰當描述工具來描述各模塊算法。采用結構化設計方法,改善控制結構,降低程序的復雜程度,從而提高程序的可讀性、可測試性、可維護性。其根本內(nèi)容歸納如下:程序語言中應盡量少用GOTO語句,以確保程序結構的獨立性。使用單入口單出口的控制結構,確保程序的靜態(tài)結構與動態(tài)執(zhí)行情況相一致。保證程序易理解。程序的控制結構一般采用順序、選擇、循環(huán)三種結構來構成,確保結構簡單。用自頂向下逐步求精方法完成程序設計。結構化程序設計的缺點是存儲容量和運行時間增加10一20%,但可讀性和可維護性好。詳細設計的方法--結構程序設計方法結構程序設計的概念最早由提出。1965年他在一次會議上指出“可以從高級語言中消除goto語句〞,“程序的質(zhì)量和程序中所包含的goto語句的數(shù)量成反比〞。1966年Bohm、Jacopomo證明了只用三種根本的控制結構—順序、選擇、循環(huán),就能實現(xiàn)任何單入口單出口程序。結構程序設計方法實際上用順序和循環(huán)結構〔do-while〕完全可以實現(xiàn)選擇結構〔if-then-else〕因此理論上最根本的控制結構只有兩種。ABExpBTFExpTFAB結構程序設計方法隨著對高級語言中是否取消GOTO語句討論的深入,人們逐漸認識到:不是簡單去掉GOTO語句,而是要建立一種新的程序設計思想、方法和風格,以顯著的提高軟件生產(chǎn)率和降低軟件維護代價。成功的工程實踐:紐約時報信息庫管理系統(tǒng)美國宇航局空間實驗室飛行模擬系統(tǒng) 驗證了結構設計方法的有效性。結構程序設計方法1972年Mills進一步指出:程序應該只有一個入口和一個出口,補充了結構程序設計的規(guī)那么。結構程序設計的定義經(jīng)典定義 “如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種根本控制結構進行連結,并且每個代碼塊只有一個入口和一個出口,那么稱這個程序是結構化的。〞上述經(jīng)典定義過于狹隘,結構程序設計的實質(zhì)并不是無goto語句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。為此我們給出如下定義: “結構程序設計是盡可能少用goto語句的程序設計方法。最好在檢測出錯誤時才使用goto語句。〞結構程序設計雖然理論上上述三種根本控制結構就可以實現(xiàn)任何單入口單出口的程序,但是為了實際使用方便起見,常常允許使用do-until和do-case結構:ExpTAFDoCaseiCASE1CASEn……結構程序設計有時要立即從循環(huán)中轉移出來,如果允許使用leave或break結構,那么不僅方便而且高效。Leave和break實質(zhì)是受限制的goto語句。詳細設計工具如何用一種適宜的表示方式來描述每個模塊的執(zhí)行過程? 目前常用的描述方式一般有三類,即圖形描述、語言描述和表格描述:圖形描述包括程序流程圖、盒圖、問題分析圖等;語言描述,即用某種高級語言〔稱之為偽碼〕來描述過程的細節(jié)。表格描述包括判定表等。程序流程圖程序流程圖又稱之為程序框圖,它是軟件開發(fā)者最熟悉的一種算法表達工具。它獨立于任何一種程序設計語言,能比較直觀和清晰地描述過程的控制流程,易于學習掌握。因此,程序流程圖是軟件開發(fā)者最普遍采用的一種工具。程序流程圖在程序流圖中定義了下述的五種根本控制結構:順序型選擇性While型循環(huán)Until型循環(huán)多情況型選擇程序流程圖順序型由幾個連續(xù)的處理步驟依次排列構成選擇型是指由某個邏輯判斷式的取值決定選擇兩個處理中的一個ABABP程序流程圖while型循環(huán)是先判定型循環(huán),在循環(huán)控制條件成立時,重復執(zhí)行特定的處理until型循環(huán)是后判定型循環(huán),重復執(zhí)行某些特定的處理,直到控制條件成立為止SPSP程序流程圖多情況型選擇列舉多種處理情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。A1PPPA2An……程序流程圖的主要缺點程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早考慮程序控制流程,而不去考慮程序的全局結構。程序流圖中用箭頭表示控制流,因此程序員不受任何約束,可以完全不顧結構程序設計思想,隨意轉移控制。程序流程圖不易表示數(shù)據(jù)結構。N-S圖Nassi和Shneiderman提出了一種符合結構化程序設計原那么的圖形描述工具,稱之為盒圖〔N-S圖〕。在N-S圖中,為了表示五種根本控制結構,規(guī)定了五種圖形構件:順序型結構選擇型結構While重復型循環(huán)結構Until重復型循環(huán)結構多分支選擇型結構N-S圖順序型選擇型多分支選擇型ABTFPS1S2While循環(huán)結構Until型循環(huán)結構TFPSDO-WHILEPSDO-UNTILPSP=1=2=nS1S2S2…………N-S圖另外,補充調(diào)用子程序的盒圖表示方法如下:AN-S圖例1:AX1TFX2TFDO-WHILEX2CDBN-S圖ajbX1fX2X4=1=2=3ighcdeTTFFDO-UNTILX5DO-UNTILX6DO-WHILEX3例2:N-S圖的特點圖形清晰、準確;控制轉移不能任意規(guī)定,必須遵守結構化程序設計原那么;很容易確定局部數(shù)據(jù)和全局數(shù)據(jù)的作用域;容易表現(xiàn)嵌套關系和模塊的層次結構。PAD圖PAD是Problemanalysisdiagram的英文縮寫,它是日本日立公司提出的。它是用結構化程序設計思想表現(xiàn)程序邏輯結構的圖形工具。PAD也設置了五種根本控制結構的圖示,并允許遞歸使用:PAD圖按順序先執(zhí)行A,再執(zhí)行B。給出了判斷條件為C的選擇型結構。當P為真值時執(zhí)行上面的A框,C取假值時執(zhí)行下面的B框中的內(nèi)容。如果這種選擇型結構只有A框,沒有B框,表示該選擇結構中只有THEN后面有可執(zhí)行語句A,沒有ELSE局部。ABAB條件CPAD圖WHILECPUNTILCPWhile型循環(huán)結構Until型循環(huán)結構PnP2P1多分支選擇型結構PAD圖的擴充結構為了反映增量型循環(huán)結構,在PAD圖中增加了對用于FORi:=n1ton2stepn3do的循環(huán)控制結構,如以下圖所示。其中,n1是循環(huán)初值,n2是循環(huán)終值,n3是循環(huán)增量。I=n1,n2,n3SPAD圖的擴充結構PAD所描述程序的層次關系表現(xiàn)在縱線上。每條縱線表示一個層次。把PAD圖從左到右展開,隨著程序?qū)哟蔚脑黾?,PAD逐漸向右展開,有可能會超過一頁紙,這時,對PAD增加了一種如以下圖所示的擴充形式:當一個模塊A在一頁紙上畫不下時,可在圖中該模塊相應位置矩形框中簡記一個“NAMEA〞,再在另一頁紙上詳細畫出A的內(nèi)容,用def及雙下劃線來定義作A的PAD。這種方式可使在一張紙上畫不下的圖,分在幾張紙上畫出,也可以用它定義子程序。defP1P2條件CSNAMEANAMEAP1C1C2I=n1,n2,n3PAD圖的特點PAD圖的結構化程度高;PAD圖中的第一條縱線是程序的主干線,即程序的第一層結構。其后,每增加一個層次,那么向右擴展一條縱線。程序中的層數(shù)就是PAD圖中的縱線數(shù)。因此,PAD圖的可讀性強。利用PAD圖設計出的程序必定是結構化的程序。利用軟件工具可以將PAD圖轉換成高級語言程序,進而提高了軟件的可靠性和生產(chǎn)率。PAD圖支持自頂向下的逐步求精的方法。PDL—過程設計語言PDL〔ProcedureDesignLanguage〕是過程設計語言的英文縮寫,于1975年由Caine與Gordon首先提出。PDL是所有非正文形式的過程設計工具的統(tǒng)稱,到目前為止已出現(xiàn)多種PDL語言。PDL的特點關鍵字采用固定語法并支持結構化構件、數(shù)據(jù)說明機制和模塊化;處理局部采用自然語言描述;可以說明簡單和復雜的數(shù)據(jù)結構;子程序的定義與調(diào)用規(guī)那么不受具體接口方式的影響。選擇結構IF<條件> 一條或數(shù)條語句ELSEIF<條件> 一條或數(shù)條語句ELSEIF<條件> 一條或數(shù)條語句ELSE 一條或數(shù)條語句ENDIF循環(huán)結構While循環(huán)結構Until循環(huán)結構For循環(huán)結構DOWHILE<條件描述> 一條或數(shù)條語句ENDWHILEREPEATUNTIL<條件描述> 一條或數(shù)條語句ENDREPFOR<循環(huán)變量>=<取值范圍,表達式或序列> 一條或數(shù)條語句ENDFOR子程序 PROCEDURE<子程序名><屬性表> INTERFACE<參數(shù)表> 一條或數(shù)條語句 END 其中,屬性表指明了子程序的引用特性和利用的程序語言的特性。輸入輸出READ/WRITETO<設備><I/O表>PDL評價優(yōu)點可以作為注釋直接插在源程序中;可以使用普通的文本編輯工具或文字處理工具產(chǎn)生和管理;已經(jīng)有自動處理程序存在,而且可以自動有PDL生成程序代碼。缺乏不如圖型工具形象直觀,描述復雜的條件組合與動作間對應關系時,不如判定表、判定樹清晰簡單。當模塊中包含復雜的條件組合時,并要根據(jù)這些條件選擇動作時,系統(tǒng)流程圖、盒圖、PDL語言都有一定缺陷。這時我們可以采用判定表、判定樹來描述。判定表判定表有四局部組成:所有條件、所有動作、條件組合及其對應動作。所有條件條件組合所有動作相應動作判定表例子假設某航空公司規(guī)定,乘客可以免費托運重量不超過30公斤的行李。當行李重量超過30公斤時,對頭等艙的國內(nèi)乘客超重局部每公斤收費4元,對其它艙的國內(nèi)乘客超重局部每公斤收費6元,對外國乘客超重局部每公斤收費比國內(nèi)乘客多一倍,對殘疾乘客超重局部每公斤收費比正常乘客少一半。用判定表來表示與上述每種條件組合相對應的動作。判定表TFFFTTTFTTTTTTTTTFFFFFFFFFFFFFFFF×××××××××國內(nèi)乘客頭等艙殘疾乘客行李≤30kg免費(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*12判定樹判定樹實質(zhì)是判定表的變形,它們僅僅是形式上的差異,本質(zhì)是一樣的!行李費算法行李重量W>30國內(nèi)乘客外國乘客頭等艙其它艙殘疾乘客----(W-30)*2正常乘客----(W-30)*4殘疾乘客----(W-30)*3正常乘客----(W-30)*6頭等艙其它艙殘疾乘客----(W-30)*4正常乘客----(W-30)*8殘疾乘客----(W-30)*6正常乘客----(W-30)*12免費行李重量W<=30判定表和判定樹可以描述復雜的條件,這些用N-S圖和PAD圖是不易表達的;判定樹的優(yōu)點是形式簡單、較直觀、易于掌握和使用;判定樹的缺點是簡潔性不如判定表、重復多。詳細設計的階段性成果詳細設計說明書表示軟件結構的圖表;對逐個模塊的描述,包括算法和邏輯流程,輸入/輸出項,與外部接口等。詳細設計復審復審的指導原那么詳細設計復審一般不邀請用戶和其他領域的代表。復審是為了提早揭露錯誤,參加復審的設計人員應該歡送別人提出批評和建議,但復審的對象是設計文檔,不是設計者本身,其他參加者也應為復審創(chuàng)造和諧的氣氛。復審中提出的問題應詳細記錄,但不一定當場解決。復審結束前作出本次復審能否通過的結論。設計復審是非常重要的工作,設計復審主要是指對設計文檔的復審。復審的主要內(nèi)容詳細設計復審的重點應該放在各個模塊的具體設計上。例如模塊的設計能否滿足其功能與性能要求、選擇的算法與數(shù)據(jù)結構是否合理、符不符合編碼語言的特點、設計描述是否簡單、清晰等等。復審的方式復審分正式與非正式兩種方式:非正式復審的特點是參加人數(shù)少,且均為軟件人員,帶有同行討論的性質(zhì)。因而方便靈活,十分適合于詳細設計復審。常采用的非正式復審的過程是:由一名設計人員逐行宣讀設計資料,由到會的同行跟隨他指出的次序一行行的往下審查。發(fā)現(xiàn)有問題或錯誤就做好記錄,然后根據(jù)多數(shù)參加者的意見,決定通過該設計資料或退回原設計人進行糾正。正式復審除軟件開發(fā)人員外,還邀請用戶代表和領域?qū)<覅⒓樱ǔ2捎棉q論方式,與會者要提前審閱文檔資料,設計人員對設計方案詳細說明之后,答復與會者的問題并記錄各種重要的評審意見。人機界面設計人機界面〔Human-ComputeInterface,HCI〕設計是絕大局部軟件設計中必不可少的活動,與其他設計活動相比,人機界面的設計與最終用戶及應用領域的關系更緊密。一個好的界面設計必須建立在對應用領域中原有任務及軟件系統(tǒng)未來的用戶透徹了解和把握的根底之上。設計用戶界面不僅需要計算機科學的理論知識,而且需要認知心理學以及人-機工程學、語言學等學科的知識。人機界面設計內(nèi)容提要人的因素人機界面風格人機界面設計過程人機界面實現(xiàn)的原那么人機界面標準人的因素所謂“人的因素〞包含如下3層含義;人對感知過程的認識,包括視覺、閱讀時的認知心理、記憶、歸納與演繹推理等;用戶已有的技能和行為方式:用戶所要求完成的整個任務以及用戶對人機交互局部的特殊要求。由于用戶通過界面與系統(tǒng)交互.因此只有充分考慮了人的因素,對話才能和諧流暢,否那么系統(tǒng)內(nèi)部無論設計得多么合理,整個系統(tǒng)也將表現(xiàn)得不夠友善。人類感知根底感官是人類認知客觀世界的初始通道。因此,設計人機界面要充分考慮視覺、觸覺和聽覺的作用,這樣才能使用戶有效地從系統(tǒng)獲取信息,并存入記憶中,并通過大腦用歸納和演繹的方法進行推理。大多數(shù)人機界面都在可視介質(zhì)上實現(xiàn),此時,用戶總是眼腦并用,并根據(jù)所顯示的內(nèi)容、體積、形狀、顏色、方向、移動和其他表現(xiàn)解釋所獲可視信息。如何表示這些可視信息是設計“友好〞界面的關鍵。人類感知根底閱讀--從正文中提取信息仍為大多數(shù)界面的主要活動。人們首先對可視的句式〔patterns〕進行解碼,然后在大腦內(nèi)檢索字或短語的意思。這個過程的快慢受到眼球運動模式的控制,字號、字體、行長、大小寫、位置和顏色等諸多因素也會直接影響到信息提取的難易程度。人類感知根底人腦的組成:短期記憶系統(tǒng)〔Short?TermMemory,STM〕長期記憶系統(tǒng)〔Long?TermMemory,LTM〕感官輸入〔視、聽、觸〕一開始放在“緩沖區(qū)〞中,隨即存入STM,STM中的信息可立即重用。但緩沖區(qū)的大小、STM中信息可重用的時間間隔都十分有限。知識—指語法、語義信息,一般存在LTM中,它們是人對事物做出反響的依據(jù)。因此,系統(tǒng)分析員在說明人機界面時,假設對STM和〔或〕LTM有什么過分要求,必將導致系統(tǒng)性能的下降。人類感知根底大多數(shù)人遇到問題時并不進行形式的演繹和歸納推理,而是使用一組啟發(fā)式策略。這組策略是從以往對類似問題的處理中逐漸獲得的。因此,設計人機界面時還應便于用戶積累有關交互工作的經(jīng)驗,同時要注意這些啟發(fā)式策略的一致性,不宜受特殊交互領域的影響。用戶的技能用戶本身的技能,個性上的差異,行為方式的不同,都會對人機界面造成影響。終端用戶的技能,直接影響到他從人機界面上獲取信息、對系統(tǒng)做出反響、以及使用啟發(fā)式策略與系統(tǒng)和諧地進行交互的能力。大多數(shù)情況下,特定領域的知識比廣泛的教育和智慧更重要。此外,每個人的個性又往往與思維方式或認知方式相聯(lián)系。因此理想的人機界面應針對具有典型個性的特定的一類用戶設計,不過目前在這方面可供人機界面設計人員參考的經(jīng)驗還很貧乏。任務與用戶的特殊要求設計交互式應用軟件系統(tǒng),大多數(shù)情況下是為了追求速度、效率、精度或降低本錢,使那些原來由手工或其他方式完成的任務能自動〔或半自動〕地完成。因任務本身根本不變,用戶自然要求人機界面能提供一個他早已熟悉,并感到親切自然的環(huán)境。任務與用戶的特殊要求任務千差萬別,但大致可分為下面幾類:通信型任務〔communicationtask〕:使信息從生產(chǎn)者傳遞到使用者的活動。對話型任務〔dialoguetask〕:使用戶能指揮和控制與系統(tǒng)交互的活動。認知型任務〔cognitivetask〕:獲得信息即可執(zhí)行的活動,或與系統(tǒng)功能關聯(lián)的活動。控制型任務〔controltask〕:允許用戶對信息及其他任務處理的順序進行控制的活動。具體開發(fā)這些任務時,將用到用戶界面設計技術--任務分析和建模。人機界面風格命令和詢問方式簡單的菜單式面向窗口的點選〔W窗口I圖標M菜單P光標〕界面第四代界面命令和詢問方式最早在圖形顯示、鼠標、高速工作站等技術出現(xiàn)之前,現(xiàn)實可行的界面方式只能是命令和詢問方式,通信完全以正文形式并通過用戶命令和用戶對系統(tǒng)詢問的響應來完成。例如:>run/debug='on'/out=P1/in=t1/alloc=1000k.RUNALLOCATIONTOBEQUEUED?>>yes.AUTOMATICCHECKPOINTINGINTERVAL?>>5盡管每個命令和詢問都不復雜,但對用戶來說易出錯、不友善且難于學習。簡單的菜單式 這種方式與命令行方式相比不易出錯,但使用起來仍然乏味。比方有選擇7進入另一個選擇時候,必須逐級進行,不能一步到位。Chooseprogramoptionthatisdesired:1.Inputdatamanually2.Inputdatafromexistingdatafile3.Performsimplifiedanalysis4.Performdetailedanalysis5.Prodecetabularoutput6.Producegraphicaloutput7.OtheroptionscalssesSelectoption?_面向窗口的點選界面隨著硬件的開展,特別是軟件工程師逐漸認識到人的因素對界面設計的影響,面向窗口的點選界面出現(xiàn)了,此類界面亦稱為WIMP界面,即窗口、圖標、菜單、指示器四為一體,形成桌面的概念。面向窗口的點選界面的優(yōu)點能同時顯示不同種類的信息,使用戶可在幾個工作環(huán)境中切換而不喪失幾個工作之間的聯(lián)系,窗口使用戶能自如地執(zhí)行許多通信型和認知型任務。用戶通過下拉式菜單可以方便的執(zhí)行控制型和對話型任務。引入圖標、下拉式菜單、按鈕和滾動條技術,可大大減少鍵盤輸入,這對那些不精于打字的用戶無疑提高了交互效率,極大地推動了計算機應用。第四代界面最新一代HCI把第三代HCI技術與超文本、多任務概念結合起來,使用戶可同時執(zhí)行多個仟務。第四代界面已出現(xiàn)在許多工作站和高性能PC機上。人機界面設計過程人機界面的設計過程可分為下面幾個步驟:創(chuàng)立系統(tǒng)功能的外部模型;確定為完成此系統(tǒng)功能人和計算機應分別完成的任務考慮界面設計中的典型問題;借助CASE工具構造界面原型;真正實現(xiàn)設計模型:評估界面質(zhì)量。人機界面設計的相關模型在人機界面的設計過程中先后涉及四個模型:由軟件工程師創(chuàng)立的設計模型〔designmodel〕,由人機工程師〔或軟件工程師〕創(chuàng)立的用戶模型〔usermodel〕,終端用戶對未來系統(tǒng)的假想〔systemperception或user'smodel〕系統(tǒng)實現(xiàn)后得到的系統(tǒng)映象〔systemimage〕。一般來說,這四個模型之間差異很大,界面設計時要充分平衡四者之間的差異,設計協(xié)調(diào)一致的界面。人機界面設計的相關模型設計模型主要考慮軟件的數(shù)據(jù)結構、總體結構和過程性描述,界面設計一般只作為附屬品;用戶模型概括了終端用戶的大致情況,只有對假想用戶的情況有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論