《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
4.1 軟件設(shè)計(jì)的概念及目標(biāo) 軟件設(shè)計(jì)的概念軟件設(shè)計(jì)的概念 設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。在在2020世紀(jì)世紀(jì)9090年代早期,年代早期,Lotus 1-2-3Lotus 1-2-3的發(fā)明的發(fā)明人人Mitch KaporMitch Kapor在在Dr.DobbsDr.Dobbs雜志上發(fā)表了雜志上發(fā)表了“軟件設(shè)計(jì)宣言軟件設(shè)計(jì)宣言”,其中指出:,其中指出:“什么是設(shè)計(jì)?設(shè)計(jì)是你站在兩個(gè)世界什么是設(shè)計(jì)?設(shè)計(jì)是你站在兩個(gè)世界技術(shù)世界和人類的目標(biāo)世界技術(shù)世界和人類的目標(biāo)世界而你嘗而你嘗試將這兩個(gè)世界結(jié)合在一起試將這兩個(gè)世界結(jié)合在一起”。4.1 軟件設(shè)計(jì)的概念及目標(biāo)軟件設(shè)計(jì)的概念軟件設(shè)計(jì)的概念 羅馬建筑批評(píng)家羅馬建筑批評(píng)家VitruviusVitruvius提出了這樣一個(gè)提出了這樣一個(gè)觀念:觀念:“設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用和令人賞心悅目和令人賞心悅目”。4.1 軟件設(shè)計(jì)的概念及目標(biāo)軟件設(shè)計(jì)的目標(biāo)軟件設(shè)計(jì)的目標(biāo) 軟件設(shè)計(jì)的目標(biāo)涉及性能、可靠性、成本、維護(hù)軟件設(shè)計(jì)的目標(biāo)涉及性能、可靠性、成本、維護(hù)等多個(gè)方面的目標(biāo)。等多個(gè)方面的目標(biāo)。一般來說,可以從需求規(guī)格說明書中選擇重要的一般來說,可以從需求規(guī)格說明書中選擇重要的質(zhì)量屬性,作為設(shè)計(jì)目標(biāo),如性能目標(biāo)、可靠性質(zhì)量屬性,作為設(shè)計(jì)目標(biāo),如性能目標(biāo)、可靠性目標(biāo)等,而成本和維護(hù)方面往往需要從客戶和供目標(biāo)等,而成本和維護(hù)方面往往需要從客戶和供應(yīng)商那里得到。應(yīng)商那里得到。4.1 軟件設(shè)計(jì)的概念及目標(biāo)性能準(zhǔn)則性能準(zhǔn)則 性能準(zhǔn)則包括對(duì)系統(tǒng)速度和空間的需求。性能準(zhǔn)則包括對(duì)系統(tǒng)速度和空間的需求。4.1 軟件設(shè)計(jì)的概念及目標(biāo)可靠性準(zhǔn)則可靠性準(zhǔn)則可靠性準(zhǔn)則決定了對(duì)減少系統(tǒng)崩潰及隨后所造成可靠性準(zhǔn)則決定了對(duì)減少系統(tǒng)崩潰及隨后所造成危害所做的努力程度。危害所做的努力程度。4.1 軟件設(shè)計(jì)的概念及目標(biāo)成本準(zhǔn)則成本準(zhǔn)則成本準(zhǔn)則包括開發(fā)、配置和管理系統(tǒng)的成本。成本準(zhǔn)則包括開發(fā)、配置和管理系統(tǒng)的成本。成本準(zhǔn)則不僅包括設(shè)計(jì)上的考慮,還包括管理上成本準(zhǔn)則不僅包括設(shè)計(jì)上的考慮,還包括管理上的考慮。的考慮。4.1 軟件設(shè)計(jì)的概念及目標(biāo)維護(hù)準(zhǔn)則維護(hù)準(zhǔn)則護(hù)準(zhǔn)則確定在完成開發(fā)后再改變系統(tǒng)的困難程度。護(hù)準(zhǔn)則確定在完成開發(fā)后再改變系統(tǒng)的困難程度。4.1 軟件設(shè)計(jì)的概念及目標(biāo)最終用戶準(zhǔn)則最終用戶準(zhǔn)則最終用戶準(zhǔn)則包括從用戶視點(diǎn)出發(fā)所需的屬性,最終用戶準(zhǔn)則包括從用戶視點(diǎn)出發(fā)所需的屬性,但并沒有覆蓋性能準(zhǔn)則和可靠性準(zhǔn)則。但并沒有覆蓋性能準(zhǔn)則和可靠性準(zhǔn)則。4.1 軟件設(shè)計(jì)的概念及目標(biāo)設(shè)計(jì)目標(biāo)的某些權(quán)衡設(shè)計(jì)目標(biāo)的某些權(quán)衡 空間與速度空間與速度交付時(shí)間與功能交付時(shí)間與功能交付時(shí)間與質(zhì)量交付時(shí)間與質(zhì)量交付時(shí)間與人員配置交付時(shí)間與人員配置 4.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的主要任務(wù)是要解決如何做的問題,要軟件設(shè)計(jì)的主要任務(wù)是要解決如何做的問題,要在需求分析的基礎(chǔ)上,建立各種設(shè)計(jì)模型,并通在需求分析的基礎(chǔ)上,建立各種設(shè)計(jì)模型,并通過對(duì)設(shè)計(jì)模型的分析和評(píng)估,來確定這些模型是過對(duì)設(shè)計(jì)模型的分析和評(píng)估,來確定這些模型是否能夠滿足需求。否能夠滿足需求。軟件設(shè)計(jì)是將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟軟件設(shè)計(jì)是將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到構(gòu)造之間起到了橋件產(chǎn)品的唯一途徑,在需求到構(gòu)造之間起到了橋梁作用。梁作用。在軟件設(shè)計(jì)階段,往往存在多種設(shè)計(jì)方案,通常在軟件設(shè)計(jì)階段,往往存在多種設(shè)計(jì)方案,通常需要在多種設(shè)計(jì)方案之中進(jìn)行決策和折中,并使需要在多種設(shè)計(jì)方案之中進(jìn)行決策和折中,并使用選定的方案進(jìn)行后續(xù)的開發(fā)活動(dòng)。用選定的方案進(jìn)行后續(xù)的開發(fā)活動(dòng)。4.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從工程管理的角度,可以將軟件設(shè)計(jì)分為從工程管理的角度,可以將軟件設(shè)計(jì)分為概要設(shè)概要設(shè)計(jì)階段計(jì)階段和和詳細(xì)設(shè)計(jì)階段詳細(xì)設(shè)計(jì)階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為分為體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)接口設(shè)計(jì)和和過程過程設(shè)計(jì)設(shè)計(jì)4 4部分;部分;面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)類設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)接口設(shè)計(jì)和和構(gòu)件級(jí)設(shè)計(jì)構(gòu)件級(jí)設(shè)計(jì)4 4部分。部分。4.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。4.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)軟件設(shè)計(jì)的階段與任務(wù)體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)定義軟件的主要結(jié):體系結(jié)構(gòu)設(shè)計(jì)定義軟件的主要結(jié)構(gòu)元素及其之間的關(guān)系。構(gòu)元素及其之間的關(guān)系。類設(shè)計(jì)類設(shè)計(jì):類設(shè)計(jì)對(duì)分析階段所建立的分析類模型:類設(shè)計(jì)對(duì)分析階段所建立的分析類模型進(jìn)行細(xì)化,轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)及軟件實(shí)現(xiàn)所要進(jìn)行細(xì)化,轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)及軟件實(shí)現(xiàn)所要求的數(shù)據(jù)結(jié)構(gòu)。求的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì):傳統(tǒng)方法主要根據(jù)需求階段所建立的:傳統(tǒng)方法主要根據(jù)需求階段所建立的實(shí)體實(shí)體關(guān)系圖(關(guān)系圖(ERER圖)來確定軟件涉及的文件系圖)來確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。4.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)軟件設(shè)計(jì)的階段與任務(wù)接口設(shè)計(jì)接口設(shè)計(jì):接口設(shè)計(jì)描述用戶界面,軟件和其他:接口設(shè)計(jì)描述用戶界面,軟件和其他硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構(gòu)件之間的內(nèi)部接口。以及各種構(gòu)件之間的內(nèi)部接口。構(gòu)件級(jí)設(shè)計(jì)構(gòu)件級(jí)設(shè)計(jì):構(gòu)件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu):構(gòu)件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)元素變換為對(duì)軟件構(gòu)件的過程性描述。元素變換為對(duì)軟件構(gòu)件的過程性描述。過程設(shè)計(jì)過程設(shè)計(jì):過程設(shè)計(jì)的主要工作是確定軟件各個(gè):過程設(shè)計(jì)的主要工作是確定軟件各個(gè)組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種過程的表達(dá)形式來描述各種算法。過程的表達(dá)形式來描述各種算法。4.2 軟件設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的輸入信息。兩者的關(guān)系如圖所示。輸入信息。兩者的關(guān)系如圖所示。4.2 軟件設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn)結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn)(1)(1)研究、分析和審查數(shù)據(jù)流圖。研究、分析和審查數(shù)據(jù)流圖。(2)(2)根據(jù)數(shù)據(jù)流圖決定問題的類型:變換型和事務(wù)根據(jù)數(shù)據(jù)流圖決定問題的類型:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。(3)(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。(4)(4)利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。直到得到符合要求的結(jié)構(gòu)圖為止。(5)(5)根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫(kù)設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫(kù)設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)。(6)(6)在上面設(shè)計(jì)的基礎(chǔ)上,并依據(jù)分析模型中的加在上面設(shè)計(jì)的基礎(chǔ)上,并依據(jù)分析模型中的加工規(guī)格說明、狀態(tài)轉(zhuǎn)換圖進(jìn)行過程設(shè)計(jì)。工規(guī)格說明、狀態(tài)轉(zhuǎn)換圖進(jìn)行過程設(shè)計(jì)。(7)(7)制定測(cè)試計(jì)劃。制定測(cè)試計(jì)劃。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊結(jié)構(gòu)及表示模塊結(jié)構(gòu)及表示一般通過功能劃分過程來完成軟件結(jié)構(gòu)設(shè)計(jì)。功一般通過功能劃分過程來完成軟件結(jié)構(gòu)設(shè)計(jì)。功能劃分過程從需求分析確立的目標(biāo)系統(tǒng)的模型出能劃分過程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問題進(jìn)行分割,使其每一部分用一個(gè)發(fā),對(duì)整個(gè)問題進(jìn)行分割,使其每一部分用一個(gè)或幾個(gè)軟件模塊加以解決,整個(gè)問題就解決了。或幾個(gè)軟件模塊加以解決,整個(gè)問題就解決了。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊模塊一個(gè)軟件系統(tǒng)通常由很多模塊組成,結(jié)構(gòu)化程序一個(gè)軟件系統(tǒng)通常由很多模塊組成,結(jié)構(gòu)化程序設(shè)計(jì)中的函數(shù)和子程序都可稱為模塊,它是程序設(shè)計(jì)中的函數(shù)和子程序都可稱為模塊,它是程序語(yǔ)句按邏輯關(guān)系建立起來的組合體。語(yǔ)句按邏輯關(guān)系建立起來的組合體。模塊用矩形框表示,并用模塊的名字標(biāo)記它。模塊用矩形框表示,并用模塊的名字標(biāo)記它。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊的分類模塊的分類4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊的結(jié)構(gòu)模塊的結(jié)構(gòu)模塊結(jié)構(gòu)最普通的形式就是模塊結(jié)構(gòu)最普通的形式就是樹狀結(jié)構(gòu)樹狀結(jié)構(gòu)和和網(wǎng)狀結(jié)構(gòu)網(wǎng)狀結(jié)構(gòu),如圖所示。如圖所示。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖結(jié)構(gòu)圖結(jié)構(gòu)圖(結(jié)構(gòu)圖(structure chartstructure chart,SCSC)是精確表達(dá)模塊)是精確表達(dá)模塊結(jié)構(gòu)的圖形表示工具。結(jié)構(gòu)的圖形表示工具。(1)(1)模塊的模塊的調(diào)用關(guān)系和接口調(diào)用關(guān)系和接口:在結(jié)構(gòu)圖中,兩個(gè)模:在結(jié)構(gòu)圖中,兩個(gè)模塊之間用單向箭頭連接。塊之間用單向箭頭連接。(2)(2)模塊間的模塊間的信息傳遞信息傳遞:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。模塊,以使被調(diào)用模塊能夠運(yùn)行。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖結(jié)構(gòu)圖模塊間的調(diào)用關(guān)系和接口表示模塊間的調(diào)用關(guān)系和接口表示 4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖結(jié)構(gòu)圖(3)(3)條件調(diào)用和循環(huán)調(diào)用條件調(diào)用和循環(huán)調(diào)用 :當(dāng)模塊:當(dāng)模塊A A有條件地調(diào)用有條件地調(diào)用另一個(gè)模塊另一個(gè)模塊B B時(shí),在模塊時(shí),在模塊A A的箭頭尾部標(biāo)以一個(gè)的箭頭尾部標(biāo)以一個(gè)菱菱形形符號(hào);當(dāng)一個(gè)模塊符號(hào);當(dāng)一個(gè)模塊A A反復(fù)地調(diào)用模塊反復(fù)地調(diào)用模塊C C和模塊和模塊D D時(shí),時(shí),在調(diào)用箭頭尾部則標(biāo)以一個(gè)在調(diào)用箭頭尾部則標(biāo)以一個(gè)弧形弧形符號(hào)。符號(hào)。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖結(jié)構(gòu)圖(4)(4)結(jié)構(gòu)圖的形態(tài)特征。在圖中,上級(jí)模塊調(diào)用下結(jié)構(gòu)圖的形態(tài)特征。在圖中,上級(jí)模塊調(diào)用下級(jí)模塊,它們之間存在主從關(guān)系。級(jí)模塊,它們之間存在主從關(guān)系。相關(guān)概念相關(guān)概念:寬度、深度、扇入、扇出。:寬度、深度、扇入、扇出。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間邏輯關(guān)系的一種數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間邏輯關(guān)系的一種表示。表示。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相關(guān)程度,以及信息的不同處理方法。關(guān)程度,以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類是有限的,它們是構(gòu)成一但典型的數(shù)據(jù)結(jié)構(gòu)種類是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。4.3 模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)典型的數(shù)據(jù)結(jié)構(gòu)典型的數(shù)據(jù)結(jié)構(gòu)4.4 創(chuàng)建良好設(shè)計(jì)的原則分而治之和模塊化分而治之和模塊化 分而治之是人們解決大型復(fù)雜問題時(shí)通常采用的分而治之是人們解決大型復(fù)雜問題時(shí)通常采用的策略,將大型復(fù)雜的問題分解為許多容易解決的策略,將大型復(fù)雜的問題分解為許多容易解決的小問題,原來的問題也就容易解決了。小問題,原來的問題也就容易解決了。軟件的體系結(jié)構(gòu)設(shè)計(jì)和模塊化設(shè)計(jì)都是分而治之軟件的體系結(jié)構(gòu)設(shè)計(jì)和模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)。策略的具體表現(xiàn)。4.4 創(chuàng)建良好設(shè)計(jì)的原則模塊化模塊化模塊化是將整體軟件劃分成獨(dú)立命名且可獨(dú)立訪模塊化是將整體軟件劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,不同的模塊通常具有不同的功能或職問的模塊,不同的模塊通常具有不同的功能或職責(zé)。責(zé)。每個(gè)模塊可獨(dú)立地開發(fā)、測(cè)試,最后組裝成完整每個(gè)模塊可獨(dú)立地開發(fā)、測(cè)試,最后組裝成完整的軟件。的軟件。4.4 創(chuàng)建良好設(shè)計(jì)的原則模塊化模塊化盡管模塊分解可以簡(jiǎn)化要解決的問題,但模塊分解并不是盡管模塊分解可以簡(jiǎn)化要解決的問題,但模塊分解并不是越小越好。越小越好。模塊大小、模塊數(shù)目與成本的關(guān)系如下圖。模塊大小、模塊數(shù)目與成本的關(guān)系如下圖。4.4 創(chuàng)建良好設(shè)計(jì)的原則模塊獨(dú)立性模塊獨(dú)立性模塊的獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件模塊的獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡(jiǎn)單的。的接口是簡(jiǎn)單的。一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性,即模塊間的一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性,即模塊間的耦耦合合和模塊的和模塊的內(nèi)聚內(nèi)聚。耦合耦合是模塊之間的相對(duì)獨(dú)立性(互相連接的緊密程是模塊之間的相對(duì)獨(dú)立性(互相連接的緊密程度)的度量。度)的度量。內(nèi)聚內(nèi)聚是模塊功能強(qiáng)度(模塊內(nèi)部各個(gè)是模塊功能強(qiáng)度(模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量。元素彼此結(jié)合的緊密程度)的度量。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高度內(nèi)聚高度內(nèi)聚、松散耦合松散耦合的模塊。的模塊。4.4 創(chuàng)建良好設(shè)計(jì)的原則松散耦合松散耦合 耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度量。它取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)量。它取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。用模塊的方式以及哪些信息通過接口。一般模塊之間可能的連接方式有一般模塊之間可能的連接方式有7種,構(gòu)成耦合性種,構(gòu)成耦合性的的7種類型,它們之間的關(guān)系如圖所示。種類型,它們之間的關(guān)系如圖所示。4.4 創(chuàng)建良好設(shè)計(jì)的原則(1)非直接耦合非直接耦合。如果兩個(gè)模塊之間沒有直接關(guān)系,。如果兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的,這就是非直接耦合。這種耦合的模塊來實(shí)現(xiàn)的,這就是非直接耦合。這種耦合的模塊獨(dú)立性最強(qiáng)。獨(dú)立性最強(qiáng)。(2)數(shù)據(jù)耦合數(shù)據(jù)耦合。如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼。如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)此之間是通過數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。則稱這種耦合為數(shù)據(jù)耦合。(3)標(biāo)記耦合標(biāo)記耦合。如果一組模塊通過參數(shù)表傳遞記錄信。如果一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。息,就是標(biāo)記耦合。4.4 創(chuàng)建良好設(shè)計(jì)的原則(4)控制耦合控制耦合。如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、。如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合,如圖所示。能,就是控制耦合,如圖所示。(5)外部耦合外部耦合。一組模塊都。一組模塊都訪問同一全局簡(jiǎn)單變量而不訪問同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部變量的信息,則稱之為外部耦合。耦合。4.4 創(chuàng)建良好設(shè)計(jì)的原則(6)公共耦合公共耦合。若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)。若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。境,則它們之間的耦合就稱為公共耦合。公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。如圖所示,若只是兩個(gè)模塊之間有公共著增加。如圖所示,若只是兩個(gè)模塊之間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。4.4 創(chuàng)建良好設(shè)計(jì)的原則(7)內(nèi)容耦合內(nèi)容耦合。如果發(fā)生下列情形,兩個(gè)模塊之間就。如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合,如圖所示。發(fā)生了內(nèi)容耦合,如圖所示。4.4 創(chuàng)建良好設(shè)計(jì)的原則高度內(nèi)聚高度內(nèi)聚 內(nèi)聚程度高的模塊應(yīng)當(dāng)只完成軟件過程中的一個(gè)內(nèi)聚程度高的模塊應(yīng)當(dāng)只完成軟件過程中的一個(gè)單一的任務(wù)。單一的任務(wù)。一般模塊的內(nèi)聚性分為一般模塊的內(nèi)聚性分為7種類型,它們的關(guān)系如圖種類型,它們的關(guān)系如圖所示。所示。4.4 創(chuàng)建良好設(shè)計(jì)的原則(1)巧合內(nèi)聚巧合內(nèi)聚。又稱為。又稱為偶然內(nèi)聚偶然內(nèi)聚,當(dāng)模塊內(nèi)各部分之,當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。度最低的模塊。4.4 創(chuàng)建良好設(shè)計(jì)的原則(2)邏輯內(nèi)聚邏輯內(nèi)聚。這種模塊把幾種相關(guān)的功能組合在一。這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。確定該模塊應(yīng)執(zhí)行哪一種功能。4.4 創(chuàng)建良好設(shè)計(jì)的原則(3)時(shí)間內(nèi)聚時(shí)間內(nèi)聚。又稱。又稱經(jīng)典內(nèi)聚經(jīng)典內(nèi)聚。這種模塊大多為多功。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行,如通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行,如初始化模塊和終止模塊。初始化模塊和終止模塊。(4)過程內(nèi)聚過程內(nèi)聚。如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而。如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且必須以特定次序執(zhí)行,則稱這個(gè)模塊為過程內(nèi)且必須以特定次序執(zhí)行,則稱這個(gè)模塊為過程內(nèi)聚模塊。聚模塊。(5)通信內(nèi)聚通信內(nèi)聚。如果一個(gè)模塊內(nèi)各功能部分都使用了。如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。稱之為通信內(nèi)聚模塊。4.4 創(chuàng)建良好設(shè)計(jì)的原則(6)信息內(nèi)聚信息內(nèi)聚。這種模塊完成多個(gè)功能,各個(gè)功能都。這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。的入口點(diǎn)。4.4 創(chuàng)建良好設(shè)計(jì)的原則(7)功能內(nèi)聚功能內(nèi)聚。一個(gè)模塊中各個(gè)部分都是完成某一具。一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,則稱該模塊為功能內(nèi)聚緊密聯(lián)系,不可分割的,則稱該模塊為功能內(nèi)聚模塊。模塊。4.4 創(chuàng)建良好設(shè)計(jì)的原則提高抽象層次提高抽象層次在進(jìn)行軟件設(shè)計(jì)時(shí),設(shè)計(jì)開始時(shí)應(yīng)盡量提高軟件在進(jìn)行軟件設(shè)計(jì)時(shí),設(shè)計(jì)開始時(shí)應(yīng)盡量提高軟件的抽象層次,按抽象級(jí)別從高到低進(jìn)行軟件設(shè)計(jì)。的抽象層次,按抽象級(jí)別從高到低進(jìn)行軟件設(shè)計(jì)。將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確立整個(gè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確立整個(gè)系統(tǒng)的體系結(jié)構(gòu)。系統(tǒng)的體系結(jié)構(gòu)。4.4 創(chuàng)建良好設(shè)計(jì)的原則復(fù)用性設(shè)計(jì)復(fù)用性設(shè)計(jì)復(fù)用是指同一實(shí)體不做修改或稍加修改就可以多復(fù)用是指同一實(shí)體不做修改或稍加修改就可以多次重復(fù)使用,將復(fù)用的思想用于軟件開發(fā),稱為次重復(fù)使用,將復(fù)用的思想用于軟件開發(fā),稱為軟件復(fù)用。軟件復(fù)用。在軟件的設(shè)計(jì)階段,就要考慮軟件復(fù)用問題,并在軟件的設(shè)計(jì)階段,就要考慮軟件復(fù)用問題,并進(jìn)行復(fù)用性設(shè)計(jì)。進(jìn)行復(fù)用性設(shè)計(jì)。復(fù)用性設(shè)計(jì)有兩方面的含義:一是盡量使用已有復(fù)用性設(shè)計(jì)有兩方面的含義:一是盡量使用已有的構(gòu)件;二是如果確實(shí)需要?jiǎng)?chuàng)建新的構(gòu)件,則在的構(gòu)件;二是如果確實(shí)需要?jiǎng)?chuàng)建新的構(gòu)件,則在設(shè)計(jì)時(shí)應(yīng)該考慮將來的可重復(fù)使用性。設(shè)計(jì)時(shí)應(yīng)該考慮將來的可重復(fù)使用性。4.4 創(chuàng)建良好設(shè)計(jì)的原則靈活性設(shè)計(jì)靈活性設(shè)計(jì)在設(shè)計(jì)中引入靈活性的方法如下。在設(shè)計(jì)中引入靈活性的方法如下。(1)降低耦合并提高內(nèi)聚(易于提高替換能力);降低耦合并提高內(nèi)聚(易于提高替換能力);(2)建立抽象(創(chuàng)建有多態(tài)操作的接口和父類);建立抽象(創(chuàng)建有多態(tài)操作的接口和父類);(3)不要將代碼寫死(消除代碼中的常數(shù));不要將代碼寫死(消除代碼中的常數(shù));(4)拋出異常(由操作的調(diào)用者處理異常);拋出異常(由操作的調(diào)用者處理異常);(5)使用并創(chuàng)建可復(fù)用的代碼。使用并創(chuàng)建可復(fù)用的代碼。4.4 創(chuàng)建良好設(shè)計(jì)的原則預(yù)防過期預(yù)防過期 在設(shè)計(jì)中應(yīng)遵循的預(yù)防過期的規(guī)則如下:在設(shè)計(jì)中應(yīng)遵循的預(yù)防過期的規(guī)則如下:(1)避免使用早期發(fā)布的技術(shù)。避免使用早期發(fā)布的技術(shù)。(2)避免使用針對(duì)特定環(huán)境的軟件庫(kù)。避免使用針對(duì)特定環(huán)境的軟件庫(kù)。(3)避免使用軟件庫(kù)中文檔不全或很少使用的功能。避免使用軟件庫(kù)中文檔不全或很少使用的功能。(4)避免使用小公司或可能不提供長(zhǎng)期支持的公司提避免使用小公司或可能不提供長(zhǎng)期支持的公司提供的可復(fù)用構(gòu)件或特殊硬件。供的可復(fù)用構(gòu)件或特殊硬件。(5)使用眾多廠商支持的標(biāo)準(zhǔn)語(yǔ)言和技術(shù)。使用眾多廠商支持的標(biāo)準(zhǔn)語(yǔ)言和技術(shù)。4.4 創(chuàng)建良好設(shè)計(jì)的原則可移植性設(shè)計(jì)可移植性設(shè)計(jì) 軟件的可移植性指的是軟件不經(jīng)修改或稍加修改軟件的可移植性指的是軟件不經(jīng)修改或稍加修改就可以運(yùn)行于不同軟硬件環(huán)境(就可以運(yùn)行于不同軟硬件環(huán)境(CPU、OS和編譯和編譯器)的能力,可移植性是軟件的質(zhì)量要素之一。器)的能力,可移植性是軟件的質(zhì)量要素之一。良好的可移植性可以延長(zhǎng)軟件的生命周期,拓展良好的可移植性可以延長(zhǎng)軟件的生命周期,拓展軟件的應(yīng)用環(huán)境。軟件的應(yīng)用環(huán)境。可移植性設(shè)計(jì)的主要目標(biāo)是讓軟件在盡可能多的可移植性設(shè)計(jì)的主要目標(biāo)是讓軟件在盡可能多的平臺(tái)上運(yùn)行。平臺(tái)上運(yùn)行。4.4 創(chuàng)建良好設(shè)計(jì)的原則可移植性設(shè)計(jì)可移植性設(shè)計(jì) 實(shí)現(xiàn)可移植性的規(guī)則主要有:實(shí)現(xiàn)可移植性的規(guī)則主要有:(1)軟件設(shè)計(jì)時(shí)應(yīng)該將軟件設(shè)計(jì)時(shí)應(yīng)該將“設(shè)備相關(guān)程序設(shè)備相關(guān)程序”與與“設(shè)備無設(shè)備無關(guān)程序關(guān)程序”分開,將分開,將“功能模塊功能模塊”與與“用戶界面用戶界面”分開,這樣可以提高可移植性。分開,這樣可以提高可移植性。(2)避免使用特定環(huán)境的專有功能。避免使用特定環(huán)境的專有功能。(3)使用不依賴特定平臺(tái)的程序設(shè)計(jì)語(yǔ)言。使用不依賴特定平臺(tái)的程序設(shè)計(jì)語(yǔ)言。(4)小心使用可能依賴某一平臺(tái)的類庫(kù)。小心使用可能依賴某一平臺(tái)的類庫(kù)。(5)了解其他語(yǔ)言可能依賴特殊硬件結(jié)構(gòu)的功能和文了解其他語(yǔ)言可能依賴特殊硬件結(jié)構(gòu)的功能和文本文件的差異。本文件的差異。4.4 創(chuàng)建良好設(shè)計(jì)的原則可測(cè)試性設(shè)計(jì)可測(cè)試性設(shè)計(jì) 實(shí)現(xiàn)在進(jìn)行可測(cè)試性設(shè)計(jì)時(shí),需要堅(jiān)持以下原則。實(shí)現(xiàn)在進(jìn)行可測(cè)試性設(shè)計(jì)時(shí),需要堅(jiān)持以下原則。(1)堅(jiān)持測(cè)試驅(qū)動(dòng)設(shè)計(jì)(測(cè)試先行)的方法。一般先堅(jiān)持測(cè)試驅(qū)動(dòng)設(shè)計(jì)(測(cè)試先行)的方法。一般先編寫驗(yàn)收測(cè)試代碼,再編寫單元測(cè)試代碼,編寫編寫驗(yàn)收測(cè)試代碼,再編寫單元測(cè)試代碼,編寫和實(shí)現(xiàn)迭代進(jìn)行。和實(shí)現(xiàn)迭代進(jìn)行。(2)函數(shù)小型化。盡量做到一個(gè)函數(shù)對(duì)應(yīng)一個(gè)操作,函數(shù)小型化。盡量做到一個(gè)函數(shù)對(duì)應(yīng)一個(gè)操作,使函數(shù)小型化。使函數(shù)小型化。(3)數(shù)據(jù)的顯示與控制分離。將處理代碼與圖形用戶數(shù)據(jù)的顯示與控制分離。將處理代碼與圖形用戶界面(界面(GUI)分離。這樣,各種)分離。這樣,各種GUI 動(dòng)作就變成動(dòng)作就變成了模型上的簡(jiǎn)單方法調(diào)用。了模型上的簡(jiǎn)單方法調(diào)用。4.4 創(chuàng)建良好設(shè)計(jì)的原則防御性設(shè)計(jì)防御性設(shè)計(jì) 防御性設(shè)計(jì)技術(shù)的主要思想如下:防御性設(shè)計(jì)技術(shù)的主要思想如下:(1)被調(diào)用操作為正常執(zhí)行必須滿足的條件稱為前置條件,被調(diào)用操作為正常執(zhí)行必須滿足的條件稱為前置條件,在調(diào)用一個(gè)操作時(shí)要確保該操作的前置條件成立。在調(diào)用一個(gè)操作時(shí)要確保該操作的前置條件成立。(2)被調(diào)用操作正常執(zhí)行所得到的結(jié)果必須滿足的條件稱為被調(diào)用操作正常執(zhí)行所得到的結(jié)果必須滿足的條件稱為后置條件,在被調(diào)用操作返回后要確保該操作的后置條件后置條件,在被調(diào)用操作返回后要確保該操作的后置條件成立。成立。(3)被調(diào)用操作在執(zhí)行時(shí)一直保持成立的條件稱為不變式。被調(diào)用操作在執(zhí)行時(shí)一直保持成立的條件稱為不變式。(4)前置條件、后置條件和不變式都是布爾表達(dá)式,其計(jì)算前置條件、后置條件和不變式都是布爾表達(dá)式,其計(jì)算結(jié)果為假,表示有錯(cuò)誤發(fā)生。結(jié)果為假,表示有錯(cuò)誤發(fā)生。(5)可以使用斷言機(jī)制,在重要構(gòu)件的邊界應(yīng)始終保留嚴(yán)格可以使用斷言機(jī)制,在重要構(gòu)件的邊界應(yīng)始終保留嚴(yán)格的斷言檢測(cè)。的斷言檢測(cè)。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法也稱為也稱為過程驅(qū)動(dòng)過程驅(qū)動(dòng)的設(shè)計(jì)方的設(shè)計(jì)方法法;這種方法與軟件需求分析階段的結(jié)構(gòu)化分析方法這種方法與軟件需求分析階段的結(jié)構(gòu)化分析方法相銜接,可以很方便地將用數(shù)據(jù)流圖表示的信息相銜接,可以很方便地將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述;轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述;這種方法還能和編碼階段的這種方法還能和編碼階段的“結(jié)構(gòu)化程序設(shè)計(jì)方結(jié)構(gòu)化程序設(shè)計(jì)方法法”相適應(yīng),成為常用的結(jié)構(gòu)化設(shè)計(jì)方法。相適應(yīng),成為常用的結(jié)構(gòu)化設(shè)計(jì)方法。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法設(shè)計(jì)過程設(shè)計(jì)過程基于數(shù)據(jù)流方基于數(shù)據(jù)流方法的設(shè)計(jì)過程法的設(shè)計(jì)過程4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法典型的數(shù)據(jù)流類型和系統(tǒng)結(jié)構(gòu)典型的數(shù)據(jù)流類型和系統(tǒng)結(jié)構(gòu)典型的數(shù)據(jù)流類型有典型的數(shù)據(jù)流類型有變換型數(shù)據(jù)流變換型數(shù)據(jù)流和和事務(wù)型數(shù)據(jù)事務(wù)型數(shù)據(jù)流流,數(shù)據(jù)流的類型不同,得到的系統(tǒng)結(jié)構(gòu)也不同。,數(shù)據(jù)流的類型不同,得到的系統(tǒng)結(jié)構(gòu)也不同。通常,一個(gè)系統(tǒng)中的所有數(shù)據(jù)流都可以認(rèn)為是通常,一個(gè)系統(tǒng)中的所有數(shù)據(jù)流都可以認(rèn)為是變變換流換流,但是,當(dāng)遇到有明顯事務(wù)特性的數(shù)據(jù)流時(shí),但是,當(dāng)遇到有明顯事務(wù)特性的數(shù)據(jù)流時(shí),建議采用建議采用事務(wù)型事務(wù)型映射方法進(jìn)行設(shè)計(jì)。映射方法進(jìn)行設(shè)計(jì)。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換型數(shù)據(jù)流變換型數(shù)據(jù)流 變換型數(shù)據(jù)處理問題的工作過程大致分為變換型數(shù)據(jù)處理問題的工作過程大致分為3步,即步,即取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖所示。取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換型系統(tǒng)結(jié)構(gòu)圖變換型系統(tǒng)結(jié)構(gòu)圖 變換型系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出變換型系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出3部部分組成。分組成。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流 通常接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),通常接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。完成選擇分派任務(wù)的部分稱為完成選擇分派任務(wù)的部分稱為事務(wù)處理中心事務(wù)處理中心,或,或分派部件分派部件。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)型系統(tǒng)結(jié)構(gòu)圖事務(wù)型系統(tǒng)結(jié)構(gòu)圖 4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法簡(jiǎn)化的事務(wù)型系統(tǒng)結(jié)構(gòu)圖簡(jiǎn)化的事務(wù)型系統(tǒng)結(jié)構(gòu)圖 事務(wù)型系統(tǒng)的結(jié)構(gòu)圖可以有多種不同的形式,如事務(wù)型系統(tǒng)的結(jié)構(gòu)圖可以有多種不同的形式,如有多層操作層或沒有操作層。有多層操作層或沒有操作層。如果調(diào)度模塊并不復(fù)雜,可將其歸入事務(wù)中心模如果調(diào)度模塊并不復(fù)雜,可將其歸入事務(wù)中心模塊。塊。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換型映射方法變換型映射方法系統(tǒng)數(shù)據(jù)處理問題的處理流程總能表示為變換型系統(tǒng)數(shù)據(jù)處理問題的處理流程總能表示為變換型數(shù)據(jù)流圖,進(jìn)一步可采用變換型映射方法建立系數(shù)據(jù)流圖,進(jìn)一步可采用變換型映射方法建立系統(tǒng)的結(jié)構(gòu)圖。統(tǒng)的結(jié)構(gòu)圖。也可能遇到明顯的事務(wù)數(shù)據(jù)處理問題,這時(shí)可采也可能遇到明顯的事務(wù)數(shù)據(jù)處理問題,這時(shí)可采用事務(wù)型映射方法。用事務(wù)型映射方法。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟變換分析方法的步驟(1)重畫數(shù)據(jù)流圖。在需求分析階段得到的數(shù)據(jù)流圖重畫數(shù)據(jù)流圖。在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫數(shù)據(jù)流圖的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)的。的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)的。(2)在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。中心變換部分。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟變換分析方法的步驟(3)進(jìn)行一級(jí)分解,設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一進(jìn)行一級(jí)分解,設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一層。自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹形結(jié)構(gòu)圖層。自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹形結(jié)構(gòu)圖的根或頂層模塊。的根或頂層模塊。首先設(shè)計(jì)一個(gè)首先設(shè)計(jì)一個(gè)主模塊主模塊,并用程序的名字為它命名,并用程序的名字為它命名,然后將它畫在與中心變換相對(duì)應(yīng)的位置上。然后將它畫在與中心變換相對(duì)應(yīng)的位置上。第第1層設(shè)計(jì):為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)層設(shè)計(jì):為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每個(gè)邏輯輸出它的功能是為主模塊提供數(shù)據(jù);為每個(gè)邏輯輸出設(shè)計(jì)一個(gè)設(shè)計(jì)一個(gè)輸出模塊輸出模塊,它的功能是將主模塊提供的,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊變換模塊,它的,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟變換分析方法的步驟 第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對(duì)應(yīng),如圖所示。圖相對(duì)應(yīng),如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟變換分析方法的步驟(4)進(jìn)行二級(jí)分解,設(shè)計(jì)中、下層模塊。進(jìn)行二級(jí)分解,設(shè)計(jì)中、下層模塊。這一步工作是自頂向下,逐層細(xì)化,為每一個(gè)輸這一步工作是自頂向下,逐層細(xì)化,為每一個(gè)輸入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬模入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬模塊。塊。設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)輸入模塊的下層模塊。輸入模塊的下層模塊。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)型映射方法事務(wù)型映射方法事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)的結(jié)構(gòu)圖。逐步分解,建立系統(tǒng)的結(jié)構(gòu)圖。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)分析方法的步驟事務(wù)分析方法的步驟(1)識(shí)別事務(wù)源識(shí)別事務(wù)源。利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題。利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結(jié)果中,找出各種需要處理的定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。事務(wù)。(2)規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。在確定了該數(shù)據(jù)流圖具。在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。(3)識(shí)別各種事務(wù)和它們定義的操作識(shí)別各種事務(wù)和它們定義的操作。(4)注意利用公用模塊注意利用公用模塊。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)分析方法的步驟事務(wù)分析方法的步驟(5)建立事務(wù)處理模塊建立事務(wù)處理模塊。對(duì)每一事務(wù),或?qū)β?lián)系密切。對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊。的一組事務(wù),建立一個(gè)事務(wù)處理模塊。(6)對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K。(7)對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊。大型的軟件系統(tǒng)通常是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)大型的軟件系統(tǒng)通常是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu),所以,我們通常利用以變換分析為的混合結(jié)構(gòu),所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法混合結(jié)混合結(jié)構(gòu)的例構(gòu)的例子子4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法軟件模塊結(jié)構(gòu)的改進(jìn)方法軟件模塊結(jié)構(gòu)的改進(jìn)方法(1)模塊功能的完善化模塊功能的完善化。一個(gè)完整的功能模塊,不僅。一個(gè)完整的功能模塊,不僅能夠完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用能夠完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因。也就者完成任務(wù)的狀態(tài),以及不能完成的原因。也就是說,一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分。是說,一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分。執(zhí)行規(guī)定的功能的部分。執(zhí)行規(guī)定的功能的部分。出錯(cuò)處理的部分。出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,向它的調(diào)用者報(bào)告出現(xiàn)時(shí),必須回送出錯(cuò)標(biāo)志,向它的調(diào)用者報(bào)告出現(xiàn)這種例外情況的原因。這種例外情況的原因。如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)“結(jié)束標(biāo)志結(jié)束標(biāo)志”。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(2)消除重復(fù)功能,改善軟件結(jié)構(gòu)消除重復(fù)功能,改善軟件結(jié)構(gòu)。完全相似。在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)完全相似。在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方法。類型上不一致。此時(shí)可以采取完全合并的方法。局部相似。局部相似。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法 局部相似:此時(shí),不可以把兩者合并為一,如圖局部相似:此時(shí),不可以把兩者合并為一,如圖(b)所示,所示,因?yàn)檫@樣在合并后的模塊內(nèi)部必須設(shè)置許多查詢開關(guān),如因?yàn)檫@樣在合并后的模塊內(nèi)部必須設(shè)置許多查詢開關(guān),如圖圖(f)所示。所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的。圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的。(a)4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖圖(b)表明作用范圍不在控制范圍之內(nèi)。模塊表明作用范圍不在控制范圍之內(nèi)。模塊G做出一個(gè)判做出一個(gè)判定之后,若需要模塊定之后,若需要模塊 C工作,則必須把信號(hào)回送給模塊工作,則必須把信號(hào)回送給模塊D,再由,再由D把信號(hào)回送給模塊把信號(hào)回送給模塊B。圖中加黑框表示判定的作。圖中加黑框表示判定的作用范圍。用范圍。(b)4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖圖(c)雖然表明模塊的作用范圍是在控制范圍之內(nèi),可是判雖然表明模塊的作用范圍是在控制范圍之內(nèi),可是判定所在模塊定所在模塊TOP所處層次太高,這樣也需要經(jīng)過不必要的所處層次太高,這樣也需要經(jīng)過不必要的信號(hào)傳送,增加了數(shù)據(jù)的傳送量。信號(hào)傳送,增加了數(shù)據(jù)的傳送量。(c)4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖圖(d)表明作用范圍在控制范圍之內(nèi),只有一個(gè)判定分支表明作用范圍在控制范圍之內(nèi),只有一個(gè)判定分支有一個(gè)不必要的穿越,是一個(gè)較好的結(jié)構(gòu);有一個(gè)不必要的穿越,是一個(gè)較好的結(jié)構(gòu);圖圖(e)所示為一個(gè)比較理想的結(jié)構(gòu)。所示為一個(gè)比較理想的結(jié)構(gòu)。(d)(e)4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的作用范圍應(yīng)在控制范圍之內(nèi)。如果在設(shè)計(jì)過程中,發(fā)現(xiàn)作用范圍不在控制范圍如果在設(shè)計(jì)過程中,發(fā)現(xiàn)作用范圍不在控制范圍內(nèi),可采用如下辦法把作用范圍移到控制范圍之內(nèi),可采用如下辦法把作用范圍移到控制范圍之內(nèi)。內(nèi)。將判定所在模塊合并到父模塊中,使判定處于較高層次。將判定所在模塊合并到父模塊中,使判定處于較高層次。將受判定影響的模塊下移到控制范圍內(nèi)。將受判定影響的模塊下移到控制范圍內(nèi)。將判定上移到層次中較高的位置。將判定上移到層次中較高的位置。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(4)盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。模塊的扇出數(shù)是指模塊調(diào)用子模塊的個(gè)數(shù)。如果模塊的扇出數(shù)是指模塊調(diào)用子模塊的個(gè)數(shù)。如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。雜,需要協(xié)調(diào)和控制過多的下屬模塊。出現(xiàn)這種情況是由于缺乏中間層次,所以應(yīng)當(dāng)適出現(xiàn)這種情況是由于缺乏中間層次,所以應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。如圖所示。當(dāng)增加中間層次的控制模塊。如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(4)盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模塊數(shù)目越多。扇入大,是有好處的。塊數(shù)目越多。扇入大,是有好處的。但如果一個(gè)模塊的扇入數(shù)太大,如超過但如果一個(gè)模塊的扇入數(shù)太大,如超過8,而它又,而它又不是公用模塊,說明該模塊可能具有多個(gè)功能。不是公用模塊,說明該模塊可能具有多個(gè)功能。在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分解。解。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(5)避免或減少使用病態(tài)連接。避免或減少使用病態(tài)連接。應(yīng)限制使用如下應(yīng)限制使用如下3種病態(tài)連接。種病態(tài)連接。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(6)模塊的大小要適中。模塊的大小要適中。模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多少來衡量。少來衡量。通常規(guī)定其語(yǔ)句行數(shù)為通常規(guī)定其語(yǔ)句行數(shù)為50100,保持在一頁(yè)紙,保持在一頁(yè)紙之內(nèi),最多不超過之內(nèi),最多不超過500行。行。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法實(shí)例研究實(shí)例研究 針對(duì)第針對(duì)第3章章例例3.1的銀的銀行儲(chǔ)蓄系行儲(chǔ)蓄系統(tǒng),開發(fā)統(tǒng),開發(fā)軟件的結(jié)軟件的結(jié)構(gòu)圖。構(gòu)圖。第第1步:對(duì)銀行儲(chǔ)蓄系統(tǒng)的數(shù)據(jù)流圖進(jìn)行步:對(duì)銀行儲(chǔ)蓄系統(tǒng)的數(shù)據(jù)流圖進(jìn)行復(fù)查并精化,得到如圖所示的數(shù)據(jù)流圖。復(fù)查并精化,得到如圖所示的數(shù)據(jù)流圖。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法 第第2步:確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。步:確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。通過對(duì)精化后的數(shù)據(jù)流圖進(jìn)行分析,可以看到整通過對(duì)精化后的數(shù)據(jù)流圖進(jìn)行分析,可以看到整個(gè)系統(tǒng)是對(duì)存款及取款兩種不同的事務(wù)進(jìn)行處理,個(gè)系統(tǒng)是對(duì)存款及取款兩種不同的事務(wù)進(jìn)行處理,因此具有事務(wù)特性。因此具有事務(wù)特性。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法第第3步:確定輸入流和輸出流的邊界,如圖所示。步:確定輸入流和輸出流的邊界,如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法第第4步:完成第一級(jí)分解。分解后的結(jié)構(gòu)圖如圖所示。步:完成第一級(jí)分解。分解后的結(jié)構(gòu)圖如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法 第第5步:完成第二級(jí)分解。對(duì)上圖中的步:完成第二級(jí)分解。對(duì)上圖中的“輸入數(shù)據(jù)輸入數(shù)據(jù)”、“輸出數(shù)據(jù)輸出數(shù)據(jù)”和和“調(diào)度調(diào)度”模塊進(jìn)行分解,得到未經(jīng)精化的輸模塊進(jìn)行分解,得到未經(jīng)精化的輸入結(jié)構(gòu)、輸出結(jié)構(gòu)和事務(wù)結(jié)構(gòu),分別如圖入結(jié)構(gòu)、輸出結(jié)構(gòu)和事務(wù)結(jié)構(gòu),分別如圖(a)、(b)和和(c)所所示。示。(b)未經(jīng)精化的輸出結(jié)構(gòu)未經(jīng)精化的輸出結(jié)構(gòu)(a)(a)未經(jīng)精化的輸入結(jié)構(gòu)未經(jīng)精化的輸入結(jié)構(gòu)(c)未經(jīng)精化的事務(wù)結(jié)構(gòu)未經(jīng)精化的事務(wù)結(jié)構(gòu) 4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法 第第5步:完成第二級(jí)分解。將上面的步:完成第二級(jí)分解。將上面的3部分合在一起,得到部分合在一起,得到初始的軟件結(jié)構(gòu),如圖所示。初始的軟件結(jié)構(gòu),如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法第第6步:對(duì)軟件結(jié)構(gòu)進(jìn)行精化。步:對(duì)軟件結(jié)構(gòu)進(jìn)行精化。(1)由于調(diào)度模塊下只有兩種事務(wù),因此,可以將調(diào)度模塊由于調(diào)度模塊下只有兩種事務(wù),因此,可以將調(diào)度模塊合并到上級(jí)模塊中,如圖所示。合并到上級(jí)模塊中,如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(2)“檢查密碼檢查密碼”模塊的作用范圍不在其控制范圍之內(nèi)(即模塊的作用范圍不在其控制范圍之內(nèi)(即“輸入密碼輸入密碼”模塊不在模塊不在“檢查密碼檢查密碼”模塊的控制范圍之內(nèi)),模塊的控制范圍之內(nèi)),需對(duì)其進(jìn)行調(diào)整,如圖所示。需對(duì)其進(jìn)行調(diào)整,如圖所示。4.5 面向數(shù)據(jù)流的設(shè)計(jì)方法(3)提高模塊的獨(dú)立性,提高模塊的獨(dú)立性,并對(duì)并對(duì)“輸入事務(wù)輸入事務(wù)”模塊進(jìn)行細(xì)化。模塊進(jìn)行細(xì)化。也可以將也可以將“檢查密檢查密碼碼”功能合并到其功能合并到其上級(jí)模塊中。上級(jí)模塊中。4.6 接口設(shè)計(jì)接口設(shè)計(jì)概述接口設(shè)計(jì)概述 接口設(shè)計(jì)的依據(jù)是數(shù)據(jù)流圖中的自動(dòng)化系統(tǒng)邊界。接口設(shè)計(jì)的依據(jù)是數(shù)據(jù)流圖中的自動(dòng)化系統(tǒng)邊界。接口設(shè)計(jì)主要包括接口設(shè)計(jì)主要包括3個(gè)方面:模塊或軟件構(gòu)件間的個(gè)方面:模塊或軟件構(gòu)件間的接口設(shè)計(jì);軟件與其他軟硬件系統(tǒng)之間的接口設(shè)接口設(shè)計(jì);軟件與其他軟硬件系統(tǒng)之間的接口設(shè)計(jì);軟件與人(用戶)之間的交互設(shè)計(jì)。計(jì);軟件與人(用戶)之間的交互設(shè)計(jì)。人機(jī)交互(用戶)界面是人機(jī)交互的主要方式人機(jī)交互(用戶)界面是人機(jī)交互的主要方式 4.6 接口設(shè)計(jì)人機(jī)交互界面人機(jī)交互界面 為了設(shè)計(jì)好人機(jī)交互界面,設(shè)計(jì)者需要了解用戶為了設(shè)計(jì)好人機(jī)交互界面,設(shè)計(jì)者需要了解用戶界面應(yīng)具有的特性;界面應(yīng)具有的特性;還應(yīng)該認(rèn)真研究使用軟件的用戶,包括用戶是什還應(yīng)該認(rèn)真研究使用軟件的用戶,包括用戶是什么人?用戶怎樣學(xué)習(xí)與新的計(jì)算機(jī)系統(tǒng)進(jìn)行交互么人?用戶怎樣學(xué)習(xí)與新的計(jì)算機(jī)系統(tǒng)進(jìn)行交互?用戶需要完成哪些工作?等等。?用戶需要完成哪些工作?等等。4.6 接口設(shè)計(jì)用戶界面應(yīng)具備的特性用戶界面應(yīng)具備的特性 可使用性可使用性:包括使用簡(jiǎn)單、界面一致、擁有:包括使用簡(jiǎn)單、界面一致、擁有HELP幫助功能、快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本幫助功能、快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本、具有容錯(cuò)能力等。、具有容錯(cuò)能力等。靈活性靈活性:考慮到用戶的特點(diǎn)、能力和知識(shí)水平,:考慮到用戶的特點(diǎn)、能力和知識(shí)水平,應(yīng)當(dāng)使用戶接口滿足不同用戶的要求。應(yīng)當(dāng)使用戶接口滿足不同用戶的要求??煽啃钥煽啃裕河脩艚缑娴目煽啃允侵笩o故障使用的間:用戶界面的可靠性是指無故障使用的間隔時(shí)間。用戶界面應(yīng)能保證用戶正確、可靠地使隔時(shí)間。用戶界面應(yīng)能保證用戶正確、可靠地使用系統(tǒng),保證有關(guān)程序和數(shù)據(jù)的安全性。用系統(tǒng),保證有關(guān)程序和數(shù)據(jù)的安全性。4.6 接口設(shè)計(jì)用戶類型用戶類型 外行型外行型:以前從未使用過計(jì)算機(jī)系統(tǒng)的用戶。:以前從未使用過計(jì)算機(jī)系統(tǒng)的用戶。初學(xué)型初學(xué)型:盡管對(duì)新的系統(tǒng)不熟悉,但對(duì)計(jì)算機(jī)還:盡管對(duì)新的系統(tǒng)不熟悉,但對(duì)計(jì)算機(jī)還有一些使用經(jīng)驗(yàn)的用戶。有一些使用經(jīng)驗(yàn)的用戶。熟練型熟練型:對(duì)一個(gè)系統(tǒng)有相當(dāng)多的經(jīng)驗(yàn),能夠熟練:對(duì)一個(gè)系統(tǒng)有相當(dāng)多的經(jīng)驗(yàn),能夠熟練操作的用戶。操作的用戶。專家型專家型:這一類用戶了解系統(tǒng)內(nèi)部的構(gòu)造,有關(guān):這一類用戶了解系統(tǒng)內(nèi)部的構(gòu)造,有關(guān)于系統(tǒng)工作機(jī)制的專業(yè)知識(shí),具有維護(hù)和修改基于系統(tǒng)工作機(jī)制的專業(yè)知識(shí),具有維護(hù)和修改基本系統(tǒng)的能力。專家型需要為他們提供能夠修改本系統(tǒng)的能力。專家型需要為他們提供能夠修改和擴(kuò)充系統(tǒng)能力的復(fù)雜界面。和擴(kuò)充系統(tǒng)能力的復(fù)雜界面。4.6 接口設(shè)計(jì)界面設(shè)計(jì)類型界面設(shè)計(jì)類型 4.6 接口設(shè)計(jì)界面設(shè)計(jì)類型界面設(shè)計(jì)類型 在選用界面形式的時(shí)候,應(yīng)當(dāng)考慮每種類型的優(yōu)在選用界面形式的時(shí)候,應(yīng)當(dāng)考慮每種類型的優(yōu)點(diǎn)和限制,可以從以下幾個(gè)方面來考察:點(diǎn)和限制,可以從以下幾個(gè)方面來考察:(1)使用的難易程度使用的難易程度:對(duì)于沒有經(jīng)驗(yàn)的用戶,該界面使用的:對(duì)于沒有經(jīng)驗(yàn)的用戶,該界面使用的難度有多大。難度有多大。(2)學(xué)習(xí)的難易程度學(xué)習(xí)的難易程度:學(xué)習(xí)該界面的命令和功能的難度有多:學(xué)習(xí)該界面的命令和功能的難度有多大。大。(3)操作速度操作速度:在完成一個(gè)指定操作時(shí),該界面在操作步驟、:在完成一個(gè)指定操作時(shí),該界面在操作步驟、擊鍵和反應(yīng)時(shí)間等方面效率有多高。擊鍵和反應(yīng)時(shí)間等方面效率有多高。4.6 接口設(shè)計(jì)界面設(shè)計(jì)類型界面設(shè)計(jì)類型(4)復(fù)雜程度復(fù)雜程度:該界面提供了什么功能、:該界面提供了什么功能、能否用新的方式組能否用新的方式組合這些功能以增強(qiáng)界面的功能。合這些功能以增強(qiáng)界面的功能。(5)控制控制:人機(jī)交互時(shí),是由計(jì)算機(jī)還是由人發(fā)起和控制對(duì):人機(jī)交互時(shí),是由計(jì)算機(jī)還是由人發(fā)起和控制對(duì)話。話。(6)開發(fā)的難易程度開發(fā)的難易程度:該界面設(shè)計(jì)是否有難度、開發(fā)工作量:該界面設(shè)計(jì)是否有難度、開發(fā)工作量有多大。有多大。4.6 接口設(shè)計(jì)設(shè)計(jì)詳細(xì)的交互設(shè)計(jì)詳細(xì)的交互 人機(jī)交互的設(shè)計(jì)有若干準(zhǔn)則,包括以下內(nèi)容:人機(jī)交互的設(shè)計(jì)有若干準(zhǔn)則,包括以下內(nèi)容:(1)一致性一致性。采用一致的術(shù)語(yǔ)、一致的步驟和一致的活動(dòng)。采用一致的術(shù)語(yǔ)、一致的步驟和一致的活動(dòng)。(2)操作步驟少操作步驟少。使擊鍵或點(diǎn)擊鼠標(biāo)的次數(shù)減到最少,甚至。使擊鍵或點(diǎn)擊鼠標(biāo)的次數(shù)減到最少,甚至要減少做某些事所需的下拉菜單的距離。要減少做某些事所需的下拉菜單的距離。(3)不要不要“啞播放啞播放”。(4)提供提供Undo功能功能。(5)減少人腦的記憶負(fù)擔(dān)減少人腦的記憶負(fù)擔(dān)。不應(yīng)該要求人從一個(gè)窗口中記住。不應(yīng)該要求人從一個(gè)窗口中記住某些信息,然后在另一個(gè)窗口中使用。某些信息,然后在另一個(gè)窗口中使用。(6)提高學(xué)習(xí)效率提高學(xué)習(xí)效率。為高級(jí)特性提供聯(lián)機(jī)幫助,以便用戶在。為高級(jí)特性提供聯(lián)機(jī)幫助,以便用戶在需要時(shí)容易找到。需要時(shí)容易找到。4.7 數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)文件設(shè)計(jì) 以下幾種情況適合于選擇文件存儲(chǔ)。以下幾種情況適合于選擇文件存儲(chǔ)。(1)數(shù)據(jù)量較大的非結(jié)構(gòu)化數(shù)據(jù),如多媒體信息。數(shù)據(jù)量較大的非結(jié)構(gòu)化數(shù)據(jù),如多媒體信息。(2)數(shù)據(jù)量大,信息松散,如歷史記錄、檔案文件等。數(shù)據(jù)量大,信息松散,如歷史記錄、檔案文件等。(3)非關(guān)系層次化數(shù)據(jù),如系統(tǒng)配置文件。非關(guān)系層次化數(shù)據(jù),如系統(tǒng)配置文件。(4)對(duì)數(shù)據(jù)的存取速度要求極高的情況。對(duì)數(shù)據(jù)的存取速度要求極高的情況。(5)臨時(shí)存放的數(shù)據(jù)。臨時(shí)存放的數(shù)據(jù)。4.7 數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)文件設(shè)計(jì) 一般要根據(jù)文件的特性,來確定文件的組織方式。一般要根據(jù)文件的特性,來確定文件的組織方式。(1)順序文件順序文件:這類文件分兩種,一種是連續(xù)文件,另:這類文件分兩種,一種是連續(xù)文件,另一種是串聯(lián)文件。一種是串聯(lián)文件。(2)直接存取文件直接存取文件:可根據(jù)記錄關(guān)鍵字的值,通過計(jì)算:可根據(jù)記錄關(guān)鍵字的值,通過計(jì)算直接得到記錄的存放地址。直接得到記錄的存放地址。(3)索引順序文件索引順序文件:其基本數(shù)據(jù)記錄按順序文件組織,:其基本數(shù)據(jù)記錄按順序文件組織,記錄排列順序必須按關(guān)鍵字值升序或降序安排,且記錄排列順序必須按關(guān)鍵字值升序或降序安排,且具有索引部分,索引部分也按同一關(guān)鍵字進(jìn)行索引。具有索引部分,索引部分也按同一關(guān)鍵字進(jìn)行索引。4.7 數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)文件設(shè)計(jì) (4)分區(qū)文件分區(qū)文件:這類文件主要用于存放程序。它由若:這類文件主要用于存放程序。它由若干稱為成員的順序組織的記錄組和索引組成。干稱為成員的順序組織的記錄組和索引組成。每一個(gè)成員就是一個(gè)程序,由于各個(gè)程序的長(zhǎng)度每一個(gè)成員就是一個(gè)程序,由于各個(gè)程序的長(zhǎng)度不同,所以各個(gè)成員的大小也不同,需要利用索不同,所以各個(gè)成員的大小也不同,需要利用索引給出各個(gè)成員的程序名、開始存放位置和長(zhǎng)度。引給出各個(gè)成員的程序名、開始存放位置和長(zhǎng)度。(5)虛擬存儲(chǔ)文件虛擬存儲(chǔ)文件:這是基于操作系統(tǒng)的請(qǐng)求頁(yè)式存:這是基于操作系統(tǒng)的請(qǐng)求頁(yè)式存儲(chǔ)管理功能而建立的索引順序文件。儲(chǔ)管理功能而建立的索引順序文件。4.7 數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì) 根據(jù)數(shù)據(jù)庫(kù)的組織,可以將數(shù)據(jù)庫(kù)分為網(wǎng)狀數(shù)據(jù)根據(jù)數(shù)據(jù)庫(kù)的組織,可以將數(shù)據(jù)庫(kù)分為網(wǎng)狀數(shù)據(jù)庫(kù)、層次數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)、庫(kù)、層次數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、多維數(shù)據(jù)庫(kù)等。文檔數(shù)據(jù)庫(kù)、多維數(shù)據(jù)庫(kù)等。關(guān)系數(shù)據(jù)庫(kù)最成熟,應(yīng)用也最廣泛,一般情況下,關(guān)系數(shù)據(jù)庫(kù)最成熟,應(yīng)用也最廣泛,一般情況下,大多數(shù)設(shè)計(jì)者都會(huì)選擇關(guān)系數(shù)據(jù)庫(kù)。大多數(shù)設(shè)計(jì)者都會(huì)選擇關(guān)系數(shù)據(jù)庫(kù)。在結(jié)構(gòu)化設(shè)計(jì)方法中,很容易將結(jié)構(gòu)化分析階段在結(jié)構(gòu)化設(shè)計(jì)方法中,很容易將結(jié)構(gòu)化分析階段建立的實(shí)體建立的實(shí)體關(guān)系模型映射到關(guān)系數(shù)據(jù)庫(kù)中。關(guān)系模型映射到關(guān)系數(shù)據(jù)庫(kù)中。4.7 數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)對(duì)象實(shí)體的映射數(shù)據(jù)對(duì)象實(shí)體的映射一個(gè)數(shù)據(jù)對(duì)象(實(shí)體)可以映射為一個(gè)表或多個(gè)一個(gè)數(shù)據(jù)對(duì)象(實(shí)體)可以映射為一個(gè)表或多個(gè)表,當(dāng)分解為多個(gè)表時(shí),可以采用表,當(dāng)分解為多個(gè)表時(shí),可以采用橫切橫切和和豎切豎切的的方法。方法。豎切常用于實(shí)例較少而屬性很多的對(duì)象豎切常用于實(shí)例較少而屬性很多的對(duì)象。通常將。通常將經(jīng)常使用的屬性放在主表中,而將其他一些次要經(jīng)常使用的屬性放在主表中,而將其他一些次要的屬性放到其他表中。的屬性放到其他表中。橫切常常用于記錄與時(shí)間相關(guān)的對(duì)象橫切常常用于記錄與時(shí)間相關(guān)的對(duì)象。往往在主。往往在主表中只記錄最近的對(duì)象,而將以前的記錄轉(zhuǎn)到對(duì)表中只記錄最近的對(duì)象,而將以前的記錄轉(zhuǎn)到對(duì)應(yīng)的歷史表中。應(yīng)的歷史表中。4.7 數(shù)據(jù)設(shè)計(jì)關(guān)系的映射關(guān)系的映射 一對(duì)一關(guān)系的映射一對(duì)一關(guān)系
收藏
編號(hào):65494723
類型:共享資源
大?。?span id="mzebxcnn0" class="font-tahoma">6.60MB
格式:ZIP
上傳時(shí)間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。