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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

--軟件設(shè)計(jì)軟件工程內(nèi)容提要軟件設(shè)計(jì)根底原理概要設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件設(shè)計(jì)軟件設(shè)計(jì)是軟件開(kāi)發(fā)的最重要階段;是保證軟件質(zhì)量的重要步驟;軟件設(shè)計(jì)是把用戶需求準(zhǔn)確轉(zhuǎn)化為軟件系統(tǒng)的唯一途徑。軟件設(shè)計(jì)軟件設(shè)計(jì)是把軟件需求轉(zhuǎn)換為軟件表示的過(guò)程。它包含兩個(gè)階段:概要設(shè)計(jì) 將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。詳細(xì)設(shè)計(jì) 通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。軟件設(shè)計(jì)的根底概念軟件結(jié)構(gòu)軟件結(jié)構(gòu)包括兩局部,一是軟件模塊的層次結(jié)構(gòu);二是數(shù)據(jù)的結(jié)構(gòu)。通常軟件的體系結(jié)構(gòu)通過(guò)一個(gè)劃分過(guò)程來(lái)完成。該劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)模型出發(fā),對(duì)整個(gè)問(wèn)題進(jìn)行分解,使其每一局部用一個(gè)或幾個(gè)軟件成分加以解決,從而解決整個(gè)問(wèn)題。該過(guò)程可用以下圖形象表示:P1P2P3S1S2S3軟件設(shè)計(jì)的根本原理抽象模塊化逐步求精信息隱藏與局部化模塊的獨(dú)立性抽象抽象,即析取出事物的本質(zhì)特征而不考慮他們的細(xì)節(jié)。抽象是人類認(rèn)識(shí)復(fù)雜問(wèn)題的重要思維工具之一。抽象的過(guò)程是從特殊到一般的過(guò)程,上層概念是下層概念的抽象。下層概念是上層概念的精化和細(xì)化。模塊化模塊是數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募?,它是單?dú)命名的,并且可以通過(guò)名字來(lái)訪問(wèn)的。例如,過(guò)程。函數(shù)、子程序、宏等等都可作為模塊。模塊具有三個(gè)根本屬性:功能—模塊實(shí)現(xiàn)的功能邏輯—描述模塊內(nèi)部怎么做狀態(tài)—模塊使用時(shí)的環(huán)境和條件模塊化模塊的特征:內(nèi)部特征—模塊的名字、參數(shù)等;外部特征—完成模塊功能的程序代碼和模塊內(nèi)部數(shù)據(jù)。模塊化,即把軟件按照規(guī)定原那么,劃分為一個(gè)個(gè)較小的,相互獨(dú)立的但又相互關(guān)聯(lián)的部件。模塊化實(shí)際上是系統(tǒng)分解和抽象的過(guò)程。模塊化理想的模塊每個(gè)模塊只解決一個(gè)問(wèn)題;每個(gè)模塊的功能應(yīng)該明確,使人容易理解;模塊之間的聯(lián)結(jié)關(guān)系簡(jiǎn)單,具有獨(dú)立性;用理想模塊構(gòu)建的系統(tǒng),容易使人理解,易于編程,易于測(cè)試,易于修改和維護(hù)。對(duì)用戶來(lái)說(shuō),其感興趣的是模塊的功能,而不必理解模塊內(nèi)部的結(jié)構(gòu)和原理。模塊化的理論依據(jù)設(shè)函數(shù)C(x)定義問(wèn)題x的復(fù)雜程度,函數(shù)E(x)確定解決問(wèn)題x需要的工作量。對(duì)于兩個(gè)問(wèn)題P1和P2,如果有:C(P1)>C(P2), 那么顯然有:E(P1)>E(P2);根據(jù)人類解決一般問(wèn)題的經(jīng)驗(yàn),有: C(P1+P2)>C(P1)+C(P2);進(jìn)而獲得:E(P1+P2)>E(P1)+E(P2)。模塊化的理論依據(jù)此不等式說(shuō)明:?jiǎn)为?dú)解決問(wèn)題P1和P2所需的工作量之和,比把P1和P2合起來(lái)作為一個(gè)問(wèn)題來(lái)解決所需要的工作量要少。這種“分而治之〞的思想提供了模塊化的理論依據(jù):把復(fù)雜問(wèn)題分解成許多容易解決的小問(wèn)題,那么原來(lái)復(fù)雜的問(wèn)題也就容易解決了。模塊化與軟件本錢本錢或工作量模塊數(shù)目模塊本錢接口本錢最小本錢區(qū)軟件總本錢αM模塊化采用模塊化原理使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解:因?yàn)槌绦蝈e(cuò)誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件容易調(diào)試和測(cè)試,有助于提高軟件的可靠性;因?yàn)樽儎?dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化能夠提高軟件的可修改性;模塊化也有助于軟件工程的組織管理,一個(gè)復(fù)雜的大型軟件可以有許多程序員分工編寫(xiě),進(jìn)而提高了開(kāi)發(fā)效率。逐步求精逐步求精是人類解決復(fù)雜問(wèn)題的根本技術(shù)之一,它是把問(wèn)題的求解過(guò)程分解成假設(shè)干步驟或階段,每步都比上步更精化,更接近問(wèn)題的解法。為了能集中精力解決主要問(wèn)題而盡量推遲問(wèn)題細(xì)節(jié)的考慮。它可以看作是一項(xiàng)把一個(gè)時(shí)期必須解決的種種問(wèn)題按優(yōu)先級(jí)別排序的技術(shù)。逐步求精和抽象是一對(duì)互補(bǔ)的概念。信息隱藏和局部化應(yīng)用模塊化原那么,自然會(huì)產(chǎn)生一個(gè)問(wèn)題“為了得到一組模塊,應(yīng)該怎樣分解軟件呢?〞信息隱藏原理指出:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息對(duì)不需要這些信息的模塊來(lái)說(shuō)是不能訪問(wèn)的。局部化指把一些關(guān)系密切的軟件元素放得彼此靠近。顯然,局部化有助于信息隱藏。信息隱藏和局部化實(shí)際上應(yīng)該隱藏的不是模塊的一切信息,而是模塊的實(shí)現(xiàn)細(xì)節(jié)。因此這條原理也被稱作“細(xì)節(jié)隱藏〞。隱藏,意味著有效的模塊化可以通過(guò)定義一組獨(dú)立的模塊而實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換的信息。信息隱藏和局部化有助于軟件測(cè)試和維護(hù)!模塊獨(dú)立性模塊獨(dú)立性是模塊化、信息隱藏和局部化等概念的直接結(jié)果。為什么模塊獨(dú)立性很重要?有效模塊化的軟件比較容易開(kāi)發(fā)出來(lái);獨(dú)立的模塊比較容易測(cè)試和維護(hù)??傊K獨(dú)立是設(shè)計(jì)好壞的關(guān)鍵!模塊獨(dú)立的含義:模塊完成獨(dú)立的功能,與其他模塊的接口簡(jiǎn)單;符合信息隱蔽和信息局部化原那么;模塊間關(guān)連和依賴程度盡可能小。模塊獨(dú)立的度量模塊的獨(dú)立程度可由兩個(gè)定性標(biāo)準(zhǔn)來(lái)衡量:耦合 耦合衡量不同模塊彼此間相互依賴的緊密程度;內(nèi)聚 內(nèi)聚衡量同一模塊內(nèi)部各元素彼此組合的緊密程度;耦合性耦合是程序結(jié)構(gòu)內(nèi)不同模塊之間相互關(guān)聯(lián)的度量,是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的重要因素。耦合強(qiáng)度依賴的因素:一模塊對(duì)另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊控制的數(shù)量模塊間接口的復(fù)雜程度設(shè)計(jì)目標(biāo):低耦合(建立模塊間耦合盡可能松散的系統(tǒng))耦合度耦合性模塊獨(dú)立性數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合特征耦合外部耦合非直接耦合非直接耦合(NodirectCoupling)兩個(gè)模塊沒(méi)有直接關(guān)系(模塊1和模塊2),它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn),非直接耦合是模塊獨(dú)立性最強(qiáng)的。模塊1模塊2模塊3模塊4主模塊數(shù)據(jù)耦合(DataCoupling)一模塊調(diào)用另一模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)和外部變量)來(lái)交換輸入、輸出信息。屬松散耦合。開(kāi)發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額特征耦合(StampCoupling)如兩個(gè)模塊之間是通過(guò)傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡(jiǎn)單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個(gè)數(shù)據(jù)結(jié)構(gòu)有關(guān)系,那么稱這兩個(gè)模塊間存在特征偶合。計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶情況水費(fèi)電費(fèi)住戶情況“住戶情況〞是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)?!坝?jì)算水費(fèi)〞和“計(jì)算電費(fèi)〞本無(wú)關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間就是特征偶合。特征耦合將特征耦合改為數(shù)據(jù)耦合:計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量水費(fèi)電費(fèi)本月用電量控制耦合(ControlCoupling)一模塊向下屬模塊傳遞的信息控制了被調(diào)用模塊的內(nèi)部邏輯。如開(kāi)關(guān)量、標(biāo)志、名稱等控制決策的變量,控制選擇了被調(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計(jì)算平均分或最高分平均/最高(控制信號(hào))成績(jī)讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B控制耦合控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了模塊間的相互依賴關(guān)系。去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行;被調(diào)用模塊分解成假設(shè)干單一功能模塊。控制耦合修改控制耦合為數(shù)據(jù)耦合:AB1計(jì)算平均分平均成績(jī)B2計(jì)算最高分最高成績(jī)外部耦合(ExternalCoupling)一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。公共環(huán)境耦合一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。其中,公共數(shù)據(jù)區(qū)指:全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享的通訊區(qū)內(nèi)存的公共覆蓋區(qū)等A公共數(shù)據(jù)區(qū)CB公共環(huán)境耦合公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增多而顯著增加。假設(shè)只有兩個(gè)模塊間存在公共數(shù)據(jù)環(huán)境,那么公共耦合有兩種情況,松散公共耦合和緊密公共耦合。AB公共數(shù)據(jù)區(qū)AB公共數(shù)據(jù)區(qū)a.松散公共耦合b.緊密公共耦合公共環(huán)境耦合存在的問(wèn)題軟件可理解性降低診斷錯(cuò)誤困難軟件可維護(hù)性差,軟件可靠性差 公共數(shù)據(jù)區(qū)及全程變量無(wú)保護(hù)措施慎用公共數(shù)據(jù)區(qū)和全程變量!!!內(nèi)容耦合(ContentCoupling)如果發(fā)生以下情形之一,兩模塊之間就產(chǎn)生了內(nèi)容耦合:一個(gè)模塊直接訪問(wèn)另一模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊的內(nèi)部;兩個(gè)模塊有局部程序代碼重疊;一個(gè)模塊有多個(gè)入口。一模塊直接訪問(wèn)另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù)〕ABAB模塊代碼重疊Entry1……Entry2……多入口模塊如何降低模塊間耦合度①盡量使用數(shù)據(jù)耦合少用控制耦合限制公共環(huán)境耦合的范圍堅(jiān)決防止使用內(nèi)容耦合②降低接口的復(fù)雜性內(nèi)聚性內(nèi)聚指一個(gè)模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強(qiáng)度(彼此結(jié)合的緊密程度),它是信息隱藏和局部化概念的擴(kuò)展。設(shè)計(jì)目標(biāo): 高內(nèi)聚(模塊在軟件過(guò)程中完成單一的任務(wù))內(nèi)聚性模塊獨(dú)立性偶然內(nèi)聚邏輯內(nèi)聚時(shí)間內(nèi)聚過(guò)程內(nèi)聚通信內(nèi)聚信息內(nèi)聚功能內(nèi)聚內(nèi)聚性偶然內(nèi)聚(ConcidentalCohesion)含義:模塊內(nèi)各局部之間沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。如:A、B兩個(gè)模塊含有相同的一段代碼C,程序員為了節(jié)約內(nèi)存,而將A、B放在同一模塊內(nèi),以共享C,模塊AB即為偶然內(nèi)聚。缺點(diǎn):可理解性差,可修改性差CCABCAB偶然內(nèi)聚例子ABCMOVEOTORREADFILEFMOVESTOTM模塊M中的三個(gè)任務(wù)沒(méi)有任何聯(lián)系邏輯內(nèi)聚(LogicalCohesion)把幾種相關(guān)的功能〔邏輯上相似的功能〕組合在一模塊內(nèi),每次調(diào)用時(shí),由傳給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一個(gè)功能。!邏輯內(nèi)聚導(dǎo)致模塊間的控制耦合調(diào)用模塊判定讀一個(gè)記錄寫(xiě)一個(gè)記錄被調(diào)用模塊AMBCEFGAMBCEFGE、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合(控制);不易修改,效率低A1B1C1EFG模塊內(nèi)部邏輯公用代碼段公用代碼段邏輯內(nèi)聚例子時(shí)間內(nèi)聚(ClassicalCohesion)這種模塊大多為多功能模塊,但模塊內(nèi)的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間內(nèi)執(zhí)行,這些功能只因時(shí)間因素關(guān)聯(lián)在一起。例如:系統(tǒng)初始化模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時(shí)間性內(nèi)聚模塊.過(guò)程內(nèi)聚(ProceduralCohesion)模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。 使用流程圖作為工具設(shè)計(jì)程序時(shí),把流程圖中的某一局部劃出來(lái)組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把流程圖中的循環(huán)局部、判定局部、計(jì)算局部分成三個(gè)模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。讀入成績(jī)單讀入并審查成績(jī)單審查成績(jī)單統(tǒng)計(jì)成績(jī)打印成績(jī)統(tǒng)計(jì)并打印成績(jī)單通信內(nèi)聚

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論