




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第4章
結(jié)構(gòu)化設(shè)計(jì)方法2主要內(nèi)容:軟件設(shè)計(jì)的概念及原則結(jié)構(gòu)化設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)過程設(shè)計(jì)軟件設(shè)計(jì)規(guī)格說明3軟件設(shè)計(jì)是一個(gè)把軟件需求變換成軟件表示的過程。根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進(jìn)行
數(shù)據(jù)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過程設(shè)計(jì)。數(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è)試最終得到完整有效的軟件。4軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。5從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成。
總體設(shè)計(jì)(概要設(shè)計(jì)):將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu),確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。
詳細(xì)設(shè)計(jì)(過程設(shè)計(jì)):通過對(duì)系統(tǒng)結(jié)構(gòu)進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法,產(chǎn)生描述各模塊程序過程的詳細(xì)文檔。64.1軟件設(shè)計(jì)的概念及原則
軟件設(shè)計(jì)的概念設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。在20世紀(jì)90年代早期,Lotus1-2-3的發(fā)明人MitchKapor在Dr.Dobbs雜志上發(fā)表了“軟件設(shè)計(jì)宣言”,其中指出:
“什么是設(shè)計(jì)?設(shè)計(jì)是你站在兩個(gè)世界——技術(shù)世界和人類的目標(biāo)世界——而你嘗試將這兩個(gè)世界結(jié)合在一起……”。羅馬建筑批評(píng)家Vitruvius提出了這樣一個(gè)觀念:
“設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用和令人賞心悅目”。7軟件設(shè)計(jì)的原則軟件設(shè)計(jì)中最重要的一個(gè)問題就是軟件質(zhì)量問題,用什么標(biāo)準(zhǔn)對(duì)軟件設(shè)計(jì)的技術(shù)質(zhì)量進(jìn)行衡量呢?本節(jié)介紹幾十年來發(fā)展并經(jīng)過時(shí)間考驗(yàn)的軟件設(shè)計(jì)的一些基本原理。分而治之模塊獨(dú)立性提高抽象層次復(fù)用性設(shè)計(jì)靈活性設(shè)計(jì)81、分而治之分而治之是人們解決大型復(fù)雜問題時(shí)通常采用的策略。將大型復(fù)雜的問題分解為許多容易解決的小問題,原來的問題也就容易解決了。軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)。9
模塊化模塊是由邊界元素限定的相鄰程序元素的序列,而且有一個(gè)總體標(biāo)識(shí)符代表它。過程、函數(shù)、子程序和宏都是模塊。面向?qū)ο蠓椒▽W(xué)中的對(duì)象、對(duì)象中的方法也是模塊。模塊是構(gòu)成程序的基本構(gòu)件。模塊化是指把整個(gè)軟件劃分成若干單獨(dú)命名且可獨(dú)立訪問的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個(gè)問題的需求。把問題/子問題的分解與軟件開發(fā)中的系統(tǒng)/子系統(tǒng)或系統(tǒng)/模塊對(duì)應(yīng)起來,就能夠把一個(gè)大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。10軟件結(jié)構(gòu)包括兩部分:程序的模塊結(jié)構(gòu)(層次結(jié)構(gòu)):是軟件模塊間關(guān)系的表示。數(shù)據(jù)結(jié)構(gòu):信息的組織、存取方法、結(jié)合的程度、處理方法。如:線性表、鏈表、隊(duì)列、堆棧、樹、圖等。11控制結(jié)構(gòu)(層次結(jié)構(gòu))12軟件的體系結(jié)構(gòu)通過一個(gè)功能劃分過程來完成。該劃分過程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問題進(jìn)行分割,使其每個(gè)部分用一個(gè)或幾個(gè)軟件模塊加以解決,整個(gè)問題就解決了。13模塊相互獨(dú)立,模塊越小,模塊內(nèi)部結(jié)構(gòu)就越簡(jiǎn)單,花費(fèi)的工作量也越低,但增加了模塊數(shù)目;當(dāng)模塊數(shù)增加時(shí),模塊間的聯(lián)系也隨之增加,把這些模塊聯(lián)接起來的工作量也隨之增加。因此存在一個(gè)模塊個(gè)數(shù)M,使得總的開發(fā)成本達(dá)到最小。
模塊化和軟件成本模塊大小、模塊數(shù)目與費(fèi)用的關(guān)系142、模塊獨(dú)立性模塊(Module)又稱“構(gòu)件”,它一般具有如下三個(gè)基本屬性:功能:描述該模塊實(shí)現(xiàn)什么功能邏輯:描述模塊內(nèi)部怎么做狀態(tài):該模塊使用時(shí)的環(huán)境和條件在描述一個(gè)模塊時(shí),還必須按模塊的外部特性與內(nèi)部特性分別描述。模塊的外部特性---概要設(shè)計(jì)的任務(wù)模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個(gè)系統(tǒng)造成的影響。模塊的內(nèi)部特性---詳細(xì)設(shè)計(jì)的任務(wù)完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)。15模塊獨(dú)立性:是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其它的模塊的接口是簡(jiǎn)單的。例如,若一個(gè)模塊只具有單一的功能且與其它模塊沒有太多的聯(lián)系,則稱此模塊具有模塊獨(dú)立性模塊獨(dú)立性高的軟件,其功能易于劃分,接口簡(jiǎn)單,因此開發(fā)比較容易;容易測(cè)試和維護(hù)。模塊獨(dú)立性的度量準(zhǔn)則:模塊間的耦合和模塊的內(nèi)聚
耦合:衡量不同模塊彼此之間互相連接(依賴)的緊密程度。內(nèi)聚:衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度(模塊功能強(qiáng)度)。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊。模塊獨(dú)立性16(1)耦合耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量.耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù).盡可能松散耦合.無耦合-沒有依賴關(guān)系松散耦合-有少量依賴關(guān)系緊密耦合-有很多依賴關(guān)系17耦合強(qiáng)度依賴的因素:一模塊對(duì)另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊的控制的數(shù)量模塊間接口的復(fù)雜程度模塊間的耦合18
非直接耦合如果兩個(gè)模塊中的每一個(gè)都能獨(dú)立工作而不需要另一個(gè)模塊的存在,那么它們彼此完全獨(dú)立,這意味著模塊間無任何連接,耦合度最低。模塊獨(dú)立性最強(qiáng)。模塊A和模塊B,它們之間的聯(lián)系完全是通過上層模塊的控制和調(diào)用來實(shí)現(xiàn)的。19數(shù)據(jù)耦合如果兩個(gè)模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合.如果傳遞的信息中有控制信息,則這種耦合稱為控制耦合。開發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額20
標(biāo)記耦合如果一組模塊通過參數(shù)表傳遞數(shù)據(jù)結(jié)構(gòu)(數(shù)組名、記錄名、文件名等,這些名字即為標(biāo)記),就是標(biāo)記耦合。計(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)”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合.將標(biāo)記耦合修改為數(shù)據(jù)耦合計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)用水量用電量水費(fèi)電費(fèi)22
控制耦合模塊向下屬模塊傳遞的信息(開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯??刂岂詈吓e例A計(jì)算平均分或最高分B平均/最高(控制信號(hào))成績(jī)讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了模塊之間的相互依賴。去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行。(2)被調(diào)用模塊分解成若干單一功能模塊。改控制耦合為數(shù)據(jù)耦合A計(jì)算平均分B1平均成績(jī)最高成績(jī)計(jì)算最高分B225
外部耦合一組模塊都訪問同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。26若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施,慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況:松散公共耦合和緊密公共耦合。
公共耦合27如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合:A、一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部信息(程序代碼或數(shù)據(jù));B、兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);C、一個(gè)模塊有多個(gè)入口。
內(nèi)容耦合28
建立模塊間耦合度盡可能松散的系統(tǒng)降低模塊間耦合度的設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和標(biāo)記耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。降低接口的復(fù)雜性29(2)內(nèi)聚內(nèi)聚標(biāo)志著一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。簡(jiǎn)單說,理想內(nèi)聚的模塊只做一件事。力求做到高內(nèi)聚。
c
偶然內(nèi)聚
0分
邏輯內(nèi)聚
1分時(shí)間內(nèi)聚
3分過程內(nèi)聚
5分
通信內(nèi)聚
7分
信息內(nèi)聚9分功能內(nèi)聚10分30一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。
功能內(nèi)聚31這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。
信息內(nèi)聚幾個(gè)加工同時(shí)引用一個(gè)共同的數(shù)據(jù)信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。32如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。
通信內(nèi)聚產(chǎn)生工資報(bào)表計(jì)算平均工資職工工資記錄職工工資報(bào)表平均工資產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊33模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。
過程內(nèi)聚讀入成績(jī)單審查成績(jī)單統(tǒng)計(jì)成績(jī)打印成績(jī)讀入并審查成績(jī)單統(tǒng)計(jì)并打印成績(jī)單34時(shí)間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如:初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等
時(shí)間內(nèi)聚35把幾種相關(guān)的功能(邏輯上相似的功能)組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。
邏輯內(nèi)聚36邏輯內(nèi)聚模塊ABCEFGABCEFGEFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合程度(控制耦合),不易修改,效率低A1B1C1公用代碼段公用代碼段37巧合內(nèi)聚又稱為偶然內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。模塊M中的三個(gè)語句沒有任何聯(lián)系缺點(diǎn):可理解性差,可修改性差
巧合內(nèi)聚383、提高抽象層次抽象就是抽取出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。即忽視一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。軟件系統(tǒng)進(jìn)行模塊設(shè)計(jì)時(shí),可有不同的抽象層次。在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則采用過程化的方法。39(1)過程抽象
在軟件工程中,從系統(tǒng)定義到實(shí)現(xiàn),每進(jìn)展一步都可以看做是對(duì)軟件解決方法的抽象化過程的一次細(xì)化。在軟件需求分析階段,用“問題所處環(huán)境的為大家所熟悉的術(shù)語”來描述軟件的解決方法。在從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)的過程中,抽象化的層次逐次降低。當(dāng)產(chǎn)生源程序時(shí)到達(dá)最低抽象層次。(2)數(shù)據(jù)抽象
在不同層次上描述數(shù)據(jù)對(duì)象的細(xì)節(jié),定義與該數(shù)據(jù)對(duì)象相關(guān)的操作。40逐步求精逐步求精是人類解決復(fù)雜問題時(shí)采用的基本方法,也是許多軟件工程技術(shù)的基礎(chǔ)。逐步求精是“為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮”。Miller法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(7±2)個(gè)知識(shí)塊上。逐步求精方法確保每個(gè)問題都將被解決,而且每個(gè)問題都將在適當(dāng)?shù)臅r(shí)候被解決。414、復(fù)用性設(shè)計(jì)復(fù)用是指同一事物不做修改或稍加修改就可以多次重復(fù)使用。將復(fù)用的思想用于軟件開發(fā),稱為軟件復(fù)用。我們將軟件的重用部分稱為軟構(gòu)件。也就是說,在構(gòu)造新的軟件系統(tǒng)時(shí)不必從零做起,可以直接使用已有的軟構(gòu)件即可組裝(或加以合理修改)成新的系統(tǒng)。目前軟件復(fù)用是提高軟件質(zhì)量和生產(chǎn)率的重要方法復(fù)用的范圍:代碼、需求模型和規(guī)格說明、設(shè)計(jì)模型、文檔、測(cè)試用例等復(fù)用性設(shè)計(jì)有兩方面的含義:盡量使用已有的構(gòu)件(開發(fā)環(huán)境提供的、以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的)如果確實(shí)需要?jiǎng)?chuàng)建新的構(gòu)件,則在設(shè)計(jì)時(shí)應(yīng)該考慮將來的可重復(fù)使用性。425、靈活性設(shè)計(jì)保證軟件靈活性設(shè)計(jì)的關(guān)鍵是抽象。面向?qū)ο笙到y(tǒng)中的類結(jié)構(gòu)類似一座金字塔,越接近金字塔的頂端,抽象程度就越高。“抽象”的反義詞是“具體”。理想情況下,一個(gè)系統(tǒng)的任何代碼、邏緝、概念在這個(gè)系統(tǒng)中都應(yīng)該是唯一的,也就是說不存在重復(fù)的代碼。43在設(shè)計(jì)中引入靈活性的方法降低耦合并提高內(nèi)聚(易于提高替換能力);建立抽象(創(chuàng)建有多態(tài)操作的接口和父類);不要將代碼寫死(消除代碼中的常數(shù));拋出異常(由操作的調(diào)用者處理異常);使用并創(chuàng)建可復(fù)用的代碼。444.2結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系模塊結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)及表示454.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的主要任務(wù)是要解決如何做的問題,要在需求分析的基礎(chǔ)上,建立各種設(shè)計(jì)模型,并通過對(duì)設(shè)計(jì)模型的分析和評(píng)估,來確定這些模型是否能夠滿足需求。軟件設(shè)計(jì)是將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到構(gòu)造之間起到了橋梁作用。在軟件設(shè)計(jì)階段,往往存在多種設(shè)計(jì)方案,通常需要在多種設(shè)計(jì)方案之中進(jìn)行決策和折中,并使用選定的方案進(jìn)行后續(xù)的開發(fā)活動(dòng)。46
軟件設(shè)計(jì)的階段與任務(wù)從工程管理的角度,可以將軟件設(shè)計(jì)分為概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。從技術(shù)的角度傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過程設(shè)計(jì)4部分;面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)4部分。47
軟件設(shè)計(jì)的階段與任務(wù)從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。48
軟件設(shè)計(jì)的任務(wù)體系結(jié)構(gòu)設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)定義軟件的主要結(jié)構(gòu)元素及其之間的關(guān)系。接口設(shè)計(jì):接口設(shè)計(jì)描述用戶界面,軟件和其他硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構(gòu)件之間的內(nèi)部接口。數(shù)據(jù)設(shè)計(jì):傳統(tǒng)方法主要根據(jù)需求階段所建立的實(shí)體—關(guān)系圖(ER圖)來確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫的表結(jié)構(gòu)。過程設(shè)計(jì):過程設(shè)計(jì)的主要工作是確定軟件各個(gè)組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種過程的表達(dá)形式來描述各種算法。494.2.2結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的輸入信息。兩者的關(guān)系如圖所示。50結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn)(1)研究、分析和審查數(shù)據(jù)流圖。(2)根據(jù)數(shù)據(jù)流圖決定問題的類型:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。(4)利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。(5)根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)。(6)在上面設(shè)計(jì)的基礎(chǔ)上,并依據(jù)分析模型中的加工規(guī)格說明、狀態(tài)轉(zhuǎn)換圖進(jìn)行過程設(shè)計(jì)。(7)制定測(cè)試計(jì)劃。514.2.3模塊結(jié)構(gòu)及表示模塊一個(gè)軟件系統(tǒng)通常由很多模塊組成,結(jié)構(gòu)化程序設(shè)計(jì)中的函數(shù)和子程序都可稱為模塊,它是程序語句按邏輯關(guān)系建立起來的組合體。模塊用矩形框表示,并用模塊的名字標(biāo)記它。52模塊的分類53模塊的分類傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級(jí)模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊─從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模塊(加工模塊)─它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級(jí)模塊。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。協(xié)調(diào)模塊─對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊,協(xié)調(diào)模塊應(yīng)在較高層出現(xiàn)。54模塊的調(diào)用關(guān)系:模塊之間用單向箭頭(或直線)聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊,表示調(diào)用模塊調(diào)用了被調(diào)用模塊。55模塊間的信息傳遞(接口):當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。而被調(diào)用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊。56兩個(gè)輔助符號(hào):條件調(diào)用:菱形符號(hào),表示當(dāng)模塊M中某個(gè)判定為真時(shí)調(diào)用模塊A,為假時(shí)調(diào)用模塊B。循環(huán)調(diào)用:弧形箭頭符號(hào),表示模塊M循環(huán)調(diào)用模塊A,B,C。
判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用B
模塊M循環(huán)調(diào)用模塊A、B、C57
模塊的結(jié)構(gòu)模塊結(jié)構(gòu)最普通的形式就是樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu),如圖所示。58結(jié)構(gòu)圖結(jié)構(gòu)圖是精確表達(dá)程序結(jié)構(gòu)的圖形表示方法。結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。結(jié)構(gòu)圖的例子——產(chǎn)生最佳解的一般結(jié)構(gòu)
59結(jié)構(gòu)圖的形態(tài)特征604.2.4數(shù)據(jù)結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間邏輯關(guān)系的一種表示。
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相關(guān)程度,以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。61典型的數(shù)據(jù)結(jié)構(gòu)624.3體系結(jié)構(gòu)設(shè)計(jì)基于數(shù)據(jù)流方法的設(shè)計(jì)過程典型的數(shù)據(jù)流類型和系統(tǒng)結(jié)構(gòu)變換型映射方法事務(wù)型映射方法軟件模塊結(jié)構(gòu)的改進(jìn)方法634.3.1基于數(shù)據(jù)流的設(shè)計(jì)方法SD由美國IBM公司的L.Constantine和E.Yourdon等人于1974年提出,與結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化編程(SP)相銜接,構(gòu)成完整的結(jié)構(gòu)化分析、設(shè)計(jì)與編程技術(shù),是目前使用最廣泛的軟件設(shè)計(jì)方法之一。結(jié)構(gòu)化設(shè)計(jì)SD是面向數(shù)據(jù)流的設(shè)計(jì)方法。以需求分析階段產(chǎn)生的數(shù)據(jù)流圖為基礎(chǔ),按一定步驟映射成軟件結(jié)構(gòu)。64基于數(shù)據(jù)流方法的設(shè)計(jì)過程65首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對(duì)于發(fā)現(xiàn)的問題及時(shí)解決。確定DFD類型:根據(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ì)劃。SD的設(shè)計(jì)過程66數(shù)據(jù)流的類型決定了映射的方法。數(shù)據(jù)流有兩種類型:變換流具有順序處理的特點(diǎn)事務(wù)流具有平行分別處理的特點(diǎn)4.3.2典型的數(shù)據(jù)流類型67數(shù)據(jù)流的類型不同,得到的系統(tǒng)結(jié)構(gòu)也不同。通常,一個(gè)系統(tǒng)中的所有數(shù)據(jù)流都可以認(rèn)為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的數(shù)據(jù)流時(shí),建議采用事務(wù)型映射方法進(jìn)行設(shè)計(jì)68變換型數(shù)據(jù)流圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步:即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、變換(處理)和輸出等三部分組成。69
變換型系統(tǒng)結(jié)構(gòu)圖變換型系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出3部分組成。
70
事務(wù)型數(shù)據(jù)流圖數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選擇一個(gè)來執(zhí)行。這類數(shù)據(jù)流稱為事務(wù)流。處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(事務(wù))(2)分析每個(gè)事務(wù)以確定它的類型(3)根據(jù)事務(wù)類型選取一條活動(dòng)通路。事務(wù)中心輸入流加工路徑T71
事務(wù)型系統(tǒng)結(jié)構(gòu)圖72簡(jiǎn)化的事務(wù)型系統(tǒng)結(jié)構(gòu)圖事務(wù)型系統(tǒng)的結(jié)構(gòu)圖可以有多種不同的形式,如有多層操作層或沒有操作層。如果調(diào)度模塊并不復(fù)雜,可將其歸入事務(wù)中心模塊。734.3.3變換型映射方法變換分析方法的步驟
(1)重畫數(shù)據(jù)流圖。在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫數(shù)據(jù)流圖的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)的。(2)在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。幾股數(shù)據(jù)流的匯合處往往是系統(tǒng)的變換中心。74變換分析方法的步驟(3)進(jìn)行一級(jí)分解,設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一層。自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹形結(jié)構(gòu)圖的根或頂層模塊。首先設(shè)計(jì)一個(gè)主模塊,并用程序的名字為它命名,然后將它畫在與中心變換相對(duì)應(yīng)的位置上。第1層設(shè)計(jì):為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。75變換分析方法的步驟第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對(duì)應(yīng),如圖所示。76(4)進(jìn)行二級(jí)分解,設(shè)計(jì)中、下層模塊:對(duì)第一層的輸入、變換、輸出模塊自頂向下逐層分解---第二級(jí)分解輸入:從變換中心的邊界開始沿著輸入通路向外移動(dòng),把輸入通路中的每個(gè)處理映射成輸入模塊控制下的一個(gè)低層模塊輸出:沿輸出通路向外移動(dòng),把輸出通路中的每個(gè)處理映射成直接或間接受輸出模塊控制的一個(gè)低層模塊變換:把變換中心內(nèi)的每個(gè)處理映射成受變換模塊控制的一個(gè)模塊變換分析方法的步驟77ADBEGF主控模塊輸入模塊變換模塊輸出模塊BDAEFG78①
在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。79②
在設(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)完全被確定。80④
在模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過10個(gè),可設(shè)立中間層次。⑤如果出現(xiàn)了以下情況,就停止模塊的功能分解當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時(shí);當(dāng)分解成用戶提供的模塊或程序庫的子程序時(shí);當(dāng)模塊的界面是輸入/輸出設(shè)備傳送的信息時(shí);當(dāng)模塊不宜再分解得過小時(shí)。814.3.4事務(wù)型映射方法當(dāng)數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí)(發(fā)射中心),采用事務(wù)分析方法。事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)的結(jié)構(gòu)圖。主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。82事務(wù)分析的映射方法83事務(wù)分析過程(步驟)確定DFD中的事務(wù)中心和加工路徑當(dāng)DFD中的某個(gè)加工具有明顯的將一個(gè)輸入數(shù)據(jù)流分解成多個(gè)發(fā)散的輸出數(shù)據(jù)流時(shí),該加工就是事務(wù)中心,從事務(wù)中心輻射出去的數(shù)據(jù)流為各個(gè)加工路徑。設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層----事務(wù)結(jié)構(gòu)
首先設(shè)計(jì)一個(gè)頂層模塊(主控模塊),有兩個(gè)功能:接收數(shù)據(jù)、根據(jù)事務(wù)類型調(diào)度相應(yīng)的處理模塊。所以事務(wù)型軟件結(jié)構(gòu)應(yīng)包括兩個(gè)部分:接收分支:負(fù)責(zé)接收數(shù)據(jù),設(shè)計(jì)方法與變換型DFD的輸入部分相同。發(fā)送分支:通常包含一個(gè)調(diào)度模塊,它控制管理所有的下層事務(wù)處理模塊。當(dāng)事務(wù)類型不多時(shí),調(diào)度模塊可與主模塊合并。84事務(wù)結(jié)構(gòu)的中、下層模塊的設(shè)計(jì)、優(yōu)化等工作同變換結(jié)構(gòu)。注意利用公用模塊
在事務(wù)分析的過程中,如果不同事務(wù)的一些中間模塊可由具有類似的語法和語義的若干個(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é)模塊。85綜合DFD的映射一般,一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。確定DFD整體上的類型標(biāo)出局部的DFD范圍,確定其類型按整體和局部的DFD特征,設(shè)計(jì)出軟件結(jié)構(gòu)綜合型DFD與分層DFD設(shè)計(jì)86
87分層DFD的映射分層的數(shù)據(jù)流圖映射成軟件結(jié)構(gòu)圖也應(yīng)該是分層的,這樣便于設(shè)計(jì)和修改。由于DFD的頂層圖反映的是系統(tǒng)與外部環(huán)境的界面,所以系統(tǒng)的物理輸入與物理輸出都在頂層圖或1層圖,那么相應(yīng)的軟件結(jié)構(gòu)圖的物理輸入與輸出部分放在主圖中較為合適。根據(jù)經(jīng)驗(yàn),事務(wù)型通常用于高層數(shù)據(jù)流圖的轉(zhuǎn)換,優(yōu)點(diǎn)是把一個(gè)大的復(fù)雜系統(tǒng)分解成較小的、簡(jiǎn)單的、相對(duì)獨(dú)立的子系統(tǒng)。而變換型通常用于較低層數(shù)據(jù)流圖的轉(zhuǎn)換,這樣輸入輸出模塊放在各自的子圖中更為合理分層DFD設(shè)計(jì)884.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法1、模塊功能的完善化。一個(gè)完整的功能模塊,不僅能夠完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因。也就是說,一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分。①執(zhí)行規(guī)定的功能的部分。②出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,向它的調(diào)用者報(bào)告出現(xiàn)這種例外情況的原因。③如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)“結(jié)束標(biāo)志”。89①
完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方法。
②局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。剩余部分還可以與它的上級(jí)模塊合并。2、消除重復(fù)功能,改善軟件結(jié)構(gòu)9091模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的。
3、模塊的作用范圍應(yīng)在控制范圍之內(nèi)9293如果在設(shè)計(jì)過程中,發(fā)現(xiàn)作用范圍不在控制范圍內(nèi),可采用如下辦法把作用范圍移到控制范圍之內(nèi)。①將判定所在模塊合并到父模塊中,使判定處于較高層次。②將受判定影響的模塊下移到控制范圍內(nèi)。③將判定上移到層次中較高的位置。944、深度、寬度、扇出和扇入都應(yīng)適當(dāng)95如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。圖a-b一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模塊數(shù)目越多。扇入大,是有好處的。但如果一個(gè)模塊的扇入數(shù)太大,如超過8,而它又不是公用模塊,說明該模塊可能具有多個(gè)功能,在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分解。965、避免或減少使用病態(tài)連接應(yīng)限制使用如下3種病態(tài)連接。
97模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。通常規(guī)定其語句行數(shù)為50~100,保持在一頁紙之內(nèi),最多不超過500行。6、模塊的大小要適中985、力爭(zhēng)降低模塊接口的復(fù)雜程度
應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。6、設(shè)計(jì)單入口單出口的模塊7、模塊功能應(yīng)該可預(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è)99100如果一個(gè)模塊的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟件)的接口模式被限制死了,則很難適應(yīng)用戶新的要求或環(huán)境的變更。為了能夠適應(yīng)將來的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對(duì)于調(diào)用者來說,應(yīng)當(dāng)是可預(yù)測(cè)的。而與外界的接口應(yīng)當(dāng)是靈活的。
101設(shè)計(jì)的后處理為每一個(gè)模塊寫一份處理說明為每一個(gè)模塊提供一份接口說明確定全局?jǐn)?shù)據(jù)結(jié)構(gòu)和局部數(shù)據(jù)結(jié)構(gòu)指出所有的設(shè)計(jì)約束和限制進(jìn)行概要設(shè)計(jì)的評(píng)審進(jìn)行設(shè)計(jì)的優(yōu)化(如果需要和可能的話)102實(shí)例研究:銀行儲(chǔ)蓄系統(tǒng)的設(shè)計(jì)第1步:對(duì)銀行儲(chǔ)蓄系統(tǒng)的數(shù)據(jù)流圖進(jìn)行復(fù)查并精化,得到如圖所示的數(shù)據(jù)流圖。103第2步:確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。通過對(duì)精化后的數(shù)據(jù)流圖進(jìn)行分析,可以看到整個(gè)系統(tǒng)是對(duì)存款及取款兩種不同的事務(wù)進(jìn)行處理,因此具有事務(wù)特性。第3步:確定輸入流和輸出流的邊界,如圖4-27所示.104。105第4步:完成第一級(jí)分解。分解后的結(jié)構(gòu)圖如圖所示。106第5步:完成第二級(jí)分解。對(duì)上圖中的“輸入數(shù)據(jù)”、“輸出數(shù)據(jù)”和“調(diào)度”模塊進(jìn)行分解,得到未經(jīng)精化的輸入結(jié)構(gòu)、輸出結(jié)構(gòu)和事務(wù)結(jié)構(gòu),分別如圖(a)、(b)和(c)所示。(b)未經(jīng)精化的輸出結(jié)構(gòu)
(a)未經(jīng)精化的輸入結(jié)構(gòu)
(c)未經(jīng)精化的事務(wù)結(jié)構(gòu)
107第5步:完成第二級(jí)分解。將上面的3部分合在一起,得到初始的軟件結(jié)構(gòu),如圖所示。108第6步:對(duì)軟件結(jié)構(gòu)進(jìn)行精化。(1)由于調(diào)度模塊下只有兩種事務(wù),因此,可以將調(diào)度模塊合并到上級(jí)模塊中,如圖所示。109(2)“檢查密碼”模塊的作用范圍不在其控制范圍之內(nèi)(即“輸入密碼”模塊不在“檢查密碼”模塊的控制范圍之內(nèi)),需對(duì)其進(jìn)行調(diào)整,如圖所示。110(3)提高模塊的獨(dú)立性,并對(duì)“輸入事務(wù)”模塊進(jìn)行細(xì)化。
也可以將“檢查密碼”功能合并到其上級(jí)模塊中。
1114.4接口設(shè)計(jì)接口設(shè)計(jì)的依據(jù)是數(shù)據(jù)流圖中的自動(dòng)化系統(tǒng)邊界。系統(tǒng)的接口設(shè)計(jì)是由穿過系統(tǒng)邊界的數(shù)據(jù)流定義的。在最終的系統(tǒng)中,數(shù)據(jù)流將成為用戶界面中的表單、報(bào)表或與其他系統(tǒng)進(jìn)行交互的文件或通信。接口設(shè)計(jì)主要包括3個(gè)方面:
模塊或軟件構(gòu)件間的接口設(shè)計(jì);軟件與其他軟硬件系統(tǒng)之間的接口設(shè)計(jì);軟件與人(用戶)之間的交互設(shè)計(jì)。人機(jī)交互(用戶)界面是人機(jī)交互的主要方式112人機(jī)交互界面為了設(shè)計(jì)好人機(jī)交互界面,設(shè)計(jì)者需要了解用戶界面應(yīng)具有的特性;還應(yīng)該認(rèn)真研究使用軟件的用戶,包括用戶是什么人?用戶怎樣學(xué)習(xí)與新的計(jì)算機(jī)系統(tǒng)進(jìn)行交互?用戶需要完成哪些工作?等等。113
用戶界面應(yīng)具備的特性可使用性:包括使用簡(jiǎn)單、界面一致、擁有HELP幫助功能、快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本、具有容錯(cuò)能力等。靈活性:考慮到用戶的特點(diǎn)、能力和知識(shí)水平,應(yīng)當(dāng)使用戶接口滿足不同用戶的要求??煽啃裕河脩艚缑娴目煽啃允侵笩o故障使用的間隔時(shí)間。用戶界面應(yīng)能保證用戶正確、可靠地使用系統(tǒng),保證有關(guān)程序和數(shù)據(jù)的安全性。114
用戶類型外行型:以前從未使用過計(jì)算機(jī)系統(tǒng)的用戶。初學(xué)型:盡管對(duì)新的系統(tǒng)不熟悉,但對(duì)計(jì)算機(jī)還有一些使用經(jīng)驗(yàn)的用戶。熟練型:對(duì)一個(gè)系統(tǒng)有相當(dāng)多的經(jīng)驗(yàn),能夠熟練操作的用戶。專家型:這一類用戶了解系統(tǒng)內(nèi)部的構(gòu)造,有關(guān)于系統(tǒng)工作機(jī)制的專業(yè)知識(shí),具有維護(hù)和修改基本系統(tǒng)的能力。專家型需要為他們提供能夠修改和擴(kuò)充系統(tǒng)能力的復(fù)雜界面。115
界面設(shè)計(jì)類型116
界面設(shè)計(jì)類型在選用界面形式的時(shí)候,應(yīng)當(dāng)考慮每種類型的優(yōu)點(diǎn)和限制,可以從以下幾個(gè)方面來考察:(1)使用的難易程度:對(duì)于沒有經(jīng)驗(yàn)的用戶,該界面使用的難度有多大。(2)學(xué)習(xí)的難易程度:學(xué)習(xí)該界面的命令和功能的難度有多大。(3)操作速度:在完成一個(gè)指定操作時(shí),該界面在操作步驟、擊鍵和反應(yīng)時(shí)間等方面效率有多高。(4)復(fù)雜程度:該界面提供了什么功能、能否用新的方式組合這些功能以增強(qiáng)界面的功能。(5)控制:人機(jī)交互時(shí),是由計(jì)算機(jī)還是由人發(fā)起和控制對(duì)話。(6)開發(fā)的難易程度:該界面設(shè)計(jì)是否有難度、開發(fā)工作量有多大。117
人機(jī)交互設(shè)計(jì)的準(zhǔn)則(1)一致性。采用一致的術(shù)語、一致的步驟和一致的活動(dòng)。(2)操作步驟少。使擊鍵或點(diǎn)擊鼠標(biāo)的次數(shù)減到最少,甚至要減少做某些事所需的下拉菜單的距離。(3)不要“啞播放”。(4)提供Undo功能。(5)減少人腦的記憶負(fù)擔(dān)。不應(yīng)該要求人從一個(gè)窗口中記住某些信息,然后在另一個(gè)窗口中使用。(6)提高學(xué)習(xí)效率。為高級(jí)特性提供聯(lián)機(jī)幫助,以便用戶在需要時(shí)容易找到。118
界面設(shè)計(jì)的黃金原則置用戶于控制之下減少用戶的記憶負(fù)擔(dān)保持界面一致1191、置用戶于控制之下1)所定義的交互模式不強(qiáng)迫用戶執(zhí)行不必要的或不希望的動(dòng)作。例如在Windows操作系統(tǒng)中,有兩種對(duì)話窗口:即模式和非模式。2)提供靈活的交互交互方式有多種:鼠標(biāo)、鍵盤、光筆、聲音等。3)允許用戶交互可以被中斷和撤消
--輸入過程中允許“取消”或“暫存”1201、置用戶于控制之下4)為熟練的用戶給出選擇初級(jí)用戶可能需要一步一步的引導(dǎo),但熟練用戶往往需要高級(jí)操作或自定義操作。5)不要讓用戶介入系統(tǒng)內(nèi)部技術(shù)細(xì)節(jié)
例如,不要在運(yùn)行過程中突然出現(xiàn)“內(nèi)存地址***H已被占用…”而退出系統(tǒng),或者出現(xiàn)系統(tǒng)錯(cuò)誤碼后死機(jī),用戶看不明白
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大型游樂設(shè)施租賃合同樣本
- 商業(yè)綜合體地簧門改造合同
- 國內(nèi)海運(yùn)貨物保險(xiǎn)合同樣本
- 擔(dān)架使用培訓(xùn)課件
- 壓力容器安全管理考核試卷
- 動(dòng)物用藥品店面的環(huán)境設(shè)計(jì)與氛圍營造考核試卷
- 有機(jī)合成原料在綠色涂料技術(shù)的創(chuàng)新考核試卷
- 木材產(chǎn)品環(huán)保性能提升考核試卷
- 整流器在數(shù)據(jù)中心能源效率優(yōu)化考核試卷
- 智慧城市和自然資源的合理利用考核試卷
- 2025年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫參考答案
- 2022年四川省綿陽市中考化學(xué)試卷
- (完整版)微生物檢驗(yàn)技術(shù)練習(xí)題(含答案)
- 佛山市內(nèi)戶口遷移申請(qǐng)表
- 《工程制圖完整》課件
- 常見焊接缺陷以及其處理方法PPT
- 《子宮脫垂護(hù)理查房》
- 關(guān)于對(duì)項(xiàng)目管理的獎(jiǎng)懲制度
- A320主起落架收放原理分析及運(yùn)動(dòng)仿真
- 2. SHT 3543-2017施工過程文件表格
評(píng)論
0/150
提交評(píng)論