軟件設(shè)計(jì)方法-中國(guó)科學(xué)技術(shù)大學(xué).ppt_第1頁(yè)
軟件設(shè)計(jì)方法-中國(guó)科學(xué)技術(shù)大學(xué).ppt_第2頁(yè)
軟件設(shè)計(jì)方法-中國(guó)科學(xué)技術(shù)大學(xué).ppt_第3頁(yè)
軟件設(shè)計(jì)方法-中國(guó)科學(xué)技術(shù)大學(xué).ppt_第4頁(yè)
軟件設(shè)計(jì)方法-中國(guó)科學(xué)技術(shù)大學(xué).ppt_第5頁(yè)
已閱讀5頁(yè),還剩131頁(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)介

軟件工程學(xué),中國(guó)科學(xué)技術(shù)大學(xué)網(wǎng)絡(luò)學(xué)院,4.1 軟件設(shè)計(jì)的目標(biāo)和任務(wù) 4.2 軟件設(shè)計(jì)基礎(chǔ) 4.3 模塊獨(dú)立性 4.4 結(jié)構(gòu)化設(shè)計(jì)方法 4.5 數(shù)據(jù)設(shè)計(jì)和文件設(shè)計(jì) 4.6 過(guò)程設(shè)計(jì),第4章 軟件設(shè)計(jì)方法,4.1軟件設(shè)計(jì)的目標(biāo)和任務(wù),根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進(jìn)行 數(shù)據(jù)設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 接口設(shè)計(jì) 過(guò)程設(shè)計(jì)。,數(shù)據(jù)設(shè)計(jì)需求分析階段創(chuàng)建的信息模型轉(zhuǎn)變成實(shí)現(xiàn)軟件所需要的數(shù)據(jù)結(jié)構(gòu)。 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成以及這些模塊相互間的關(guān)系。 接口設(shè)計(jì)的結(jié)果描述了軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與使用它的人之間的通信方式。 過(guò)程設(shè)計(jì)則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過(guò)程性描述。在編碼步驟,根據(jù)這種過(guò)程性描述,生成源程序代碼,然后通過(guò)測(cè)試最終得到完整有效的軟件。,開(kāi)發(fā)階段的信息流,程序模塊,測(cè)試,編碼,設(shè)計(jì),信息域需求,功能與性能需求,數(shù)據(jù)設(shè)計(jì),過(guò)程設(shè)計(jì),系統(tǒng)結(jié)構(gòu)設(shè)計(jì),組裝好的有效的軟件,軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒(méi)有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu),軟件設(shè)計(jì)任務(wù),從工程管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成。 概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。 詳細(xì)設(shè)計(jì),即過(guò)程設(shè)計(jì)。通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。,軟件設(shè)計(jì)過(guò)程,1. 制定規(guī)范 在進(jìn)入軟件開(kāi)發(fā)階段之初,首先應(yīng)為軟件開(kāi)發(fā)組制定在設(shè)計(jì)時(shí)應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。包括:,閱讀和理解軟件需求說(shuō)明書(shū),確認(rèn)用戶要求能否實(shí)現(xiàn),明確實(shí)現(xiàn)的條件,從而確定設(shè)計(jì)的目標(biāo),以及它們的優(yōu)先順序 根據(jù)目標(biāo)確定最合適的設(shè)計(jì)方法 規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn) 規(guī)定編碼的信息形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則,2. 軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì),基于功能層次結(jié)構(gòu)建立系統(tǒng)。 采用某種設(shè)計(jì)方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu) 確定每個(gè)模塊的功能 建立與已確定的軟件需求的對(duì)應(yīng)關(guān)系 確定模塊間的調(diào)用關(guān)系 確定模塊間的接口 評(píng)估模塊劃分的質(zhì)量,3. 處理方式設(shè)計(jì),確定為實(shí)現(xiàn)系統(tǒng)的功能需求所必需的算法,評(píng)估算法的性能 確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式 周轉(zhuǎn)時(shí)間 響應(yīng)時(shí)間 吞吐量 精度 確定外部信號(hào)的接收發(fā)送形式,4. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫(kù)的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計(jì) 確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu) 結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作 確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包),限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍 若需要與操作系統(tǒng)或調(diào)度程序接口所必須的控制表等數(shù)據(jù)時(shí),確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則 數(shù)據(jù)的保護(hù)性設(shè)計(jì) 防衛(wèi)性設(shè)計(jì):在軟件設(shè)計(jì)中就插入自動(dòng)檢錯(cuò),報(bào)錯(cuò)和糾錯(cuò)的功能,一致性設(shè)計(jì): 保證軟件運(yùn)行過(guò)程中所使用的數(shù)據(jù)的類(lèi)型和取值范圍不變 在并發(fā)處理過(guò)程中使用封鎖和解除封鎖機(jī)制保持?jǐn)?shù)據(jù)不被破壞 冗余性設(shè)計(jì):針對(duì)同一問(wèn)題,由兩個(gè)開(kāi)發(fā)者采用不同的程序設(shè)計(jì)風(fēng)格不同的算法設(shè)計(jì)軟件,當(dāng)兩者運(yùn)行結(jié)果之差不在允許范圍內(nèi)時(shí),利用檢錯(cuò)系統(tǒng)予以糾正,或使用表決技術(shù)決定一個(gè)正確結(jié)果。,5.可靠性設(shè)計(jì),可靠性設(shè)計(jì)也叫做質(zhì)量設(shè)計(jì) 在運(yùn)行過(guò)程中,為了適應(yīng)環(huán)境的變化和用戶新的要求,需經(jīng)常對(duì)軟件進(jìn)行改造和修正。在軟件開(kāi)發(fā)的一開(kāi)始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護(hù)。,6.編寫(xiě)概要設(shè)計(jì)階段的文檔,概要設(shè)計(jì)階段完成時(shí)應(yīng)編寫(xiě)以下文檔: 概要設(shè)計(jì)說(shuō)明書(shū) 數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū) 用戶手冊(cè) 制定初步的測(cè)試計(jì)劃,7.概要設(shè)計(jì)評(píng)審,可追溯性:確認(rèn)該設(shè)計(jì)是否復(fù)蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項(xiàng)需求 接口:確認(rèn)該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi) 風(fēng)險(xiǎn):確認(rèn)該設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn),實(shí)用性:確認(rèn)該設(shè)計(jì)對(duì)于需求的解決方案是否實(shí)用 技術(shù)清晰度:確認(rèn)該設(shè)計(jì)是否以一種易于翻譯成代碼的形式表達(dá) 可維護(hù)性:確認(rèn)該設(shè)計(jì)是否考慮了方便未來(lái)的維護(hù) 質(zhì)量:確認(rèn)該設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征,各種選擇方案:看是否考慮過(guò)其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么 限制:評(píng)估對(duì)該軟件的限制是否現(xiàn)實(shí),是否與需求一致 其它具體問(wèn)題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等進(jìn)行評(píng)估,在詳細(xì)設(shè)計(jì)過(guò)程中,需要完成的工作是: 確定軟件各個(gè)組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織 選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。 進(jìn)行詳細(xì)設(shè)計(jì)的評(píng)審,詳細(xì)設(shè)計(jì),4.2軟件設(shè)計(jì)基礎(chǔ),自頂向下,逐步細(xì)化 軟件結(jié)構(gòu) 程序結(jié)構(gòu) 結(jié)構(gòu)圖 模塊化 抽象化 信息隱蔽,自頂向下,逐步細(xì)化,將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次的過(guò)程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確立整個(gè)的體系結(jié)構(gòu)。,軟件結(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è)軟件成份加以解決,整個(gè)問(wèn)題就解決了,程序結(jié)構(gòu),程序結(jié)構(gòu)表明了程序各個(gè)部件(模塊)的組織情況,是軟件的過(guò)程表示。,結(jié)構(gòu)圖,結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞, 模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它。, 模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊。, 模塊間的信息傳遞:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。而被調(diào)用模塊在執(zhí)行過(guò)程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊, 在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào),表示模塊A有條件地調(diào)用另一個(gè)模塊B。當(dāng)一個(gè)在調(diào)用箭頭尾部標(biāo)以一個(gè)弧形符號(hào),表示模塊A反復(fù)調(diào)用模塊C和模塊D。,程序的系統(tǒng)結(jié)構(gòu)圖,模塊化,軟件系統(tǒng)的模塊化是指整個(gè)軟件被劃分成若干單獨(dú)命名和可編址的部分,稱(chēng)之為模塊。這些模塊可以被組裝起來(lái)以滿足整個(gè)問(wèn)題的需求。 把問(wèn)題子問(wèn)題的分解與軟件開(kāi)發(fā)中的系統(tǒng)子系統(tǒng)或系統(tǒng)模塊對(duì)應(yīng)起來(lái),就能夠把一個(gè)大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。,抽象化,軟件系統(tǒng)進(jìn)行模塊設(shè)計(jì)時(shí),可有不同的抽象層次。 在最高的抽象層次上,可以使用問(wèn)題所處環(huán)境的語(yǔ)言概括地描述問(wèn)題的解法。 在較低的抽象層次上,則采用過(guò)程化的方法。,(1) 過(guò)程的抽象 在軟件工程中,從系統(tǒng)定義到實(shí)現(xiàn),每進(jìn)展一步都可以看做是對(duì)軟件解決方法的抽象化過(guò)程的一次細(xì)化。 在軟件需求分析階段,用“問(wèn)題所處環(huán)境的為大家所熟悉的術(shù)語(yǔ)”來(lái)描述軟件的解決方法。 在從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)的過(guò)程中,抽象化的層次逐次降低。當(dāng)產(chǎn)生源程序時(shí)到達(dá)最低抽象層次。,(2) 數(shù)據(jù)抽象 抽象是人類(lèi)在認(rèn)識(shí)復(fù)雜現(xiàn)象、解決復(fù)雜問(wèn)題的過(guò)程中使用的最強(qiáng)有用的思維工具。 在現(xiàn)實(shí)世界中,一定事物、狀態(tài)或過(guò)程之間總會(huì)存在某些相似的方面(共性),把這些相似的方面集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象。 或者說(shuō)抽象就是提取出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。,由于人數(shù)思維能力的限制,如果一次面臨的因素太多,是不可能做出精確思維的 設(shè)計(jì)復(fù)雜系統(tǒng)的惟一有效的方法是用層次的方式分析和構(gòu)造它 一個(gè)復(fù)雜的軟件系統(tǒng)應(yīng)該首先用一些高級(jí)的抽象概念來(lái)理解和構(gòu)造,這些高級(jí)概念又可以用一些較低級(jí)的概念來(lái)理解和構(gòu)造,如此進(jìn)行下去,直至最低層的具體元素,信息隱蔽,由 parnas 方法提倡的信息隱蔽是指,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來(lái)說(shuō)是隱蔽的。也就是說(shuō),模塊中所包含的信息(包括數(shù)據(jù)和過(guò)程)不允許其它不需要這些信息的模塊使用。,模塊的獨(dú)立性,模塊(Module) “模塊”,又稱(chēng)“組件”。它一般具有如下三個(gè)基本屬性: 功能:描述該模塊實(shí)現(xiàn)什么功能 邏輯:描述模塊內(nèi)部怎么做 狀態(tài):該模塊使用時(shí)的環(huán)境和條件,在描述一個(gè)模塊時(shí),還必須按模塊的外部特性與內(nèi)部特性分別描述 模塊的外部特性 模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個(gè)系統(tǒng)造成的影響 模塊的內(nèi)部特性 完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù),4.3模塊獨(dú)立性 模塊獨(dú)立性, 是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能, 而和軟件系統(tǒng)中其它的模塊的接口是簡(jiǎn)單的 例如, 若一個(gè)模塊只具有單一的功能且與其它模塊沒(méi)有太多的聯(lián)系, 則稱(chēng)此模塊具有模塊獨(dú)立性 一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性。即模塊間耦合和模塊內(nèi)聚,耦合是模塊之間的互相連接的緊密程度的度量。 內(nèi)聚是模塊功能強(qiáng)度(一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量。 模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊。,模塊間的耦合,非直接耦合(Nondirect Coupling) 兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之 間的聯(lián)系完全是通過(guò)主模塊的控制和 調(diào)用來(lái)實(shí)現(xiàn)的。 非直接耦合的 模塊獨(dú)立性最 強(qiáng)。,數(shù)據(jù)耦合 (Data Coupling) 一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) 來(lái)交換輸入、輸出信息的。 標(biāo)記耦合 (Stamp Coupling) 一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。,控制耦合 (Control Coupling) 如果一個(gè)模 塊通過(guò)傳送開(kāi) 關(guān)、標(biāo)志、名 字等控制信息, 明顯地控制選 擇另一模塊的 功能,就是控 制耦合。,外部耦合(External Coupling) 一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱(chēng)之為外部耦合。 公共耦合(Common Coupling) 若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱(chēng)為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。,公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。,內(nèi)容耦合 (Content Coupling) 如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合 (1) 一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù); (2) 一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部; (3) 兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中); (4) 一個(gè)模塊有多個(gè)入口。,c,模塊內(nèi)聚,功能內(nèi)聚 (Functional Cohesion) 一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱(chēng)該模塊為功能內(nèi)聚模塊。,信息內(nèi)聚 (Informational Cohesion) 這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。由于這個(gè)模塊的所有功能都是基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)(符號(hào)表),因此,它是一個(gè)信息內(nèi)聚的模塊。,信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。,通信內(nèi)聚 (Communication Cohesion) 如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱(chēng)之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過(guò)數(shù)據(jù)流圖來(lái)定義的。,過(guò)程內(nèi)聚 (Procedural Cohesion) 使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。,時(shí)間內(nèi)聚 (Classical Cohesion) 時(shí)間內(nèi)聚又稱(chēng)為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。,邏輯內(nèi)聚(Logical Cohesion) 這種模塊把幾種 相關(guān)的功能組合 在一起,每次被 調(diào)用時(shí),由傳送 給模塊的判定參 數(shù)來(lái)確定該模塊 應(yīng)執(zhí)行哪一種功 能。,巧合內(nèi)聚(Coincidental Cohesion) 巧合內(nèi)聚 (偶然內(nèi)聚)。當(dāng)模塊內(nèi)各部分之間沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián) 系也很松散, 則稱(chēng)這種模 塊為巧合內(nèi) 聚模塊,它 是內(nèi)聚程度 最低的模塊。,4.4結(jié)構(gòu)化設(shè)計(jì)方法,首先研究、分析和審查數(shù)據(jù)流圖。 從軟件的需求規(guī)格說(shuō)明中弄清數(shù)據(jù)流加工的過(guò)程,對(duì)于發(fā)現(xiàn)的問(wèn)題及時(shí)解決。 然后根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類(lèi)型。數(shù)據(jù)處理問(wèn)題典型的類(lèi)型有兩種:變換型和事務(wù)型。針對(duì)兩種不同的類(lèi)型分別進(jìn)行分析處理。,由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。 利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。 修改和補(bǔ)充數(shù)據(jù)詞典。 制定測(cè)試計(jì)劃。,在系統(tǒng)結(jié)構(gòu)圖中的模塊,傳入模塊 從下屬模塊取得數(shù)據(jù),經(jīng)過(guò)某些處理,再將其傳送給上級(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)和管理的模塊。,變換型系統(tǒng)結(jié)構(gòu)圖,變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。 相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。,事務(wù)型系統(tǒng)結(jié)構(gòu)圖,它接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。 在事務(wù)型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類(lèi)型,選擇某一事務(wù)處理模塊執(zhí)行。各事務(wù)處理模塊并列。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。,變換分析,變換分析方法由以下四步組成: 重畫(huà)數(shù)據(jù)流圖; 區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分; 進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊; 進(jìn)行二級(jí)分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模塊。, 在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成 之后,才 能轉(zhuǎn)向另 一個(gè)模塊 的下層模 塊的設(shè)計(jì)。, 在設(shè)計(jì)下層模塊時(shí),應(yīng)考慮模塊的耦合和內(nèi)聚問(wèn)題,以提高初始結(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)完全被確定。, 在模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過(guò)10個(gè),可設(shè)立中間層次。 如果出現(xiàn)了以下情況,就停止模塊的功能分解: 當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時(shí); 當(dāng)分解成用戶提供的模塊或程序庫(kù)的子程序時(shí); 當(dāng)模塊的界面是輸入輸出設(shè)備傳送的信息時(shí); 當(dāng)模塊不宜再分解得過(guò)小時(shí)。,事務(wù)分析,在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。 與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開(kāi)始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。,事務(wù)分析過(guò)程, 識(shí)別事務(wù)源 利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問(wèn)題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來(lái)自物理輸入裝置。有時(shí),設(shè)計(jì)人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。, 規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu) 在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。 識(shí)別各種事務(wù)和它們定義的操作。 從問(wèn)題定義和需求分析中找出的事務(wù)及其操作所必需的全部信息,對(duì)于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作。, 注意利用公用模塊 在事務(wù)分析的過(guò)程中,如果不同事務(wù)的一些中間模塊可由具有類(lèi)似的語(yǔ)法和語(yǔ)義的若干個(gè)低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。 對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊; 如果發(fā)現(xiàn)在系統(tǒng)中有類(lèi)似的事務(wù),可以把它們組成一個(gè)事務(wù)處理模塊。, 對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K 對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊 變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的主要方法。一般,一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。,軟件模塊結(jié)構(gòu)的改進(jìn),模塊功能的完善化 一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分: 執(zhí)行規(guī)定的功能的部分; 出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,出現(xiàn)例外情況的原因。 如果需要返回?cái)?shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí), 應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)狀態(tài)碼。,消除重復(fù)功能,改善軟件結(jié)構(gòu) 完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類(lèi)型上不一致。此時(shí)可以采取完全合并的方法。 局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。,模塊的作用范圍應(yīng)在控制范圍之內(nèi) 模塊的控制范圍包括它本身及其所有的從屬模塊。 模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。 如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。,盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。 如果一個(gè)模塊的扇出數(shù)過(guò)大,就意味著該模塊過(guò)分復(fù)雜,需要協(xié)調(diào)和控制過(guò)多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。,避免或減少使用病態(tài)聯(lián)接 應(yīng)限制使用如下三種病態(tài)聯(lián)接: 直接病態(tài)聯(lián)接 即模塊A直接從模塊B內(nèi)部取出某些數(shù)據(jù),或者把某些數(shù)據(jù)直接送到模塊B內(nèi)部。, 公共數(shù)據(jù)域病態(tài)聯(lián)接 模塊A和模塊B通過(guò)公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過(guò)它們的上級(jí)模塊。這種方式將使得模塊間的耦合程度劇增。它不僅影響模塊和模塊,而且影響與公共數(shù)據(jù)域有關(guān)聯(lián)的所有模塊。, 通信模塊聯(lián)接 即模塊A和模塊B通過(guò)通信模塊TABLEIT傳送數(shù)據(jù)。從表面看,這不是病態(tài)聯(lián)接,因?yàn)槟K和模塊B都未涉及通信模塊TABLEIT 的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒(méi)有通過(guò)它們的上級(jí)模塊。從這個(gè)意義上講,這種聯(lián)接是病態(tài)的。,模塊的大小要適中 模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多少來(lái)衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語(yǔ)句行數(shù)在50100左右,保持在一頁(yè)紙之內(nèi),最多不超過(guò)500行。,設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過(guò)分受限制的模塊 一個(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è)。,如果一個(gè)模塊的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟件) 的接口模式被限制死了,則很難適應(yīng)用戶新的要求或環(huán)境的變更。 為了能夠適應(yīng)將來(lái)的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對(duì)于調(diào)用者來(lái)說(shuō),應(yīng)當(dāng)是可預(yù)測(cè)的。而與外界的接口應(yīng)當(dāng)是靈活的。,軟件包應(yīng)滿足設(shè)計(jì)約束和可移植性 為了使得軟件包可以在某些特定的環(huán)境下能夠安裝和運(yùn)行,對(duì)軟件包提出了一些設(shè)計(jì)約束和可移植的要求。例如,設(shè)計(jì)約束有時(shí)要求一個(gè)程序段在存儲(chǔ)器中覆蓋自身。當(dāng)這種情況出現(xiàn)時(shí),設(shè)計(jì)出來(lái)的軟件程序結(jié)構(gòu)不得不根據(jù)重復(fù)程度、訪問(wèn)頻率、調(diào)用間隔等等特性,重新加以組織。,設(shè)計(jì)的后處理,為每一個(gè)模塊寫(xiě)一份處理說(shuō)明 為每一個(gè)模塊提供一份接口說(shuō)明 確定全局?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)化(如果需要和可能的話),4.5數(shù)據(jù)設(shè)計(jì)及文件設(shè)計(jì),數(shù)據(jù)設(shè)計(jì)的原則 文件設(shè)計(jì),數(shù)據(jù)設(shè)計(jì)的原則,R.S.Pressman數(shù)據(jù)設(shè)計(jì)的過(guò)程 為在需求分析階段所確定的數(shù)據(jù)對(duì)象選擇邏輯表示,需要對(duì)不同結(jié)構(gòu)進(jìn)行算法分析,以便選擇一個(gè)最有效的結(jié)構(gòu);設(shè)計(jì)對(duì)于這種邏輯數(shù)據(jù)結(jié)構(gòu)的一組操作,以實(shí)現(xiàn)各種所期望的運(yùn)算。,確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包),以便限制或確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍。 Pressman提出了一組原則,用來(lái)定義和設(shè)計(jì)數(shù)據(jù)。實(shí)際上,在進(jìn)行需求分析時(shí)往往就開(kāi)始了數(shù)據(jù)設(shè)計(jì)。,1.用于軟件的系統(tǒng)化方法也適用于數(shù)據(jù)。在導(dǎo)出、評(píng)審和定義軟件的需求和軟件系統(tǒng)結(jié)構(gòu)時(shí),必須定義和評(píng)審其中所用到的數(shù)據(jù)流、數(shù)據(jù)對(duì)象及數(shù)據(jù)結(jié)構(gòu)的表示。應(yīng)當(dāng)考慮幾種不同的數(shù)據(jù)組織方案,還應(yīng)當(dāng)分析數(shù)據(jù)設(shè)計(jì)給軟件設(shè)計(jì)帶來(lái)的影響。,2.確定所有的數(shù)據(jù)結(jié)構(gòu)和在每種數(shù)據(jù)結(jié)構(gòu)上施加的操作。設(shè)計(jì)有效的數(shù)據(jù)結(jié)構(gòu),必須考慮到要對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行的各種操作。 3.應(yīng)當(dāng)建立一個(gè)數(shù)據(jù)詞典并用它來(lái)定義數(shù)據(jù)和軟件的設(shè)計(jì)。數(shù)據(jù)詞典清楚地說(shuō)明了各個(gè)數(shù)據(jù)之間的關(guān)系和對(duì)數(shù)據(jù)結(jié)構(gòu)內(nèi)各個(gè)數(shù)據(jù)元素的約束。,4.低層數(shù)據(jù)設(shè)計(jì)的決策應(yīng)推遲到設(shè)計(jì)過(guò)程的后期進(jìn)行。在進(jìn)行需求分析時(shí)確定的總體數(shù)據(jù)組織,應(yīng)在概要設(shè)計(jì)階段加以細(xì)化,在詳細(xì)設(shè)計(jì)階段才規(guī)定具體的細(xì)節(jié)。 5.數(shù)據(jù)結(jié)構(gòu)的表示只限于那些必須直接使用該數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)的模塊才能知道。此原則就是信息隱蔽和與此相關(guān)的耦合性原則。,6.應(yīng)當(dāng)建立一個(gè)存放有效數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作的庫(kù)。數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)設(shè)計(jì)成為可復(fù)用的。建立一個(gè)存有各種可復(fù)用的數(shù)據(jù)結(jié)構(gòu)模型的部件庫(kù)。 7.軟件設(shè)計(jì)和程序設(shè)計(jì)語(yǔ)言應(yīng)當(dāng)支持抽象數(shù)據(jù)類(lèi)型的定義和實(shí)現(xiàn)。 以上原則適用于軟件工程的定義階段和開(kāi)發(fā)階段?!扒逦男畔⒍x是軟件開(kāi)發(fā)成功的關(guān)鍵”。,文件設(shè)計(jì),文件設(shè)計(jì)的過(guò)程,主要分兩個(gè)階段。第一個(gè)階段是文件的邏輯設(shè)計(jì),主要在概要設(shè)計(jì)階段實(shí)施。,(1) 整理必須的數(shù)據(jù)元素: 在軟件設(shè)計(jì)中所使用的數(shù)據(jù),有長(zhǎng)期的,有短期的,還有臨時(shí)的。它們都可以存放在文件中,在需要時(shí)對(duì)它們進(jìn)行訪問(wèn)。因此首先必須整理應(yīng)存儲(chǔ)的數(shù)據(jù)元素,給它們一個(gè)易于理解的名字,指明其類(lèi)型和位數(shù),以及其內(nèi)容涵義。,(2) 分析數(shù)據(jù)間的關(guān)系: 分析在業(yè)務(wù)處理中哪些數(shù)據(jù)元素是同時(shí)使用的。把同時(shí)使用次數(shù)多的數(shù)據(jù)元素歸納成一個(gè)文件進(jìn)行管理。分析數(shù)據(jù)元素的內(nèi)容,研究數(shù)據(jù)元素與數(shù)據(jù)元素之間的邏輯關(guān)系,根據(jù)分析,弄清數(shù)據(jù)元素的含義及其屬性。,(3) 確定文件的邏輯設(shè)計(jì): 根據(jù)數(shù)據(jù)關(guān)聯(lián)性分析,明確哪些數(shù)據(jù)元素應(yīng)當(dāng)歸于一組進(jìn)行管理,把應(yīng)當(dāng)歸于一組的數(shù)據(jù)元素進(jìn)行統(tǒng)一布局,產(chǎn)生文件的邏輯設(shè)計(jì)。應(yīng)用關(guān)系模型設(shè)計(jì)文件的邏輯結(jié)構(gòu)時(shí),必須使其達(dá)到第三范式(3NF),以減少數(shù)據(jù)的冗余,提高存取的效率。,顧客文件 商品文件,X : 英文字母數(shù)字; K : 漢字; N : 數(shù)字,第二個(gè)階段是文件的物理設(shè)計(jì),主要在軟件的詳細(xì)設(shè)計(jì)階段實(shí)施 (4) 理解文件的特性: 對(duì)于文件的邏輯規(guī)格說(shuō)明,研究從業(yè)務(wù)處理的觀點(diǎn)來(lái)看所要求的一些特性,包括文件的使用率、追加率和刪除率,以及保護(hù)和保密等??紤]需要采用什么文件組織形式。,(5)確定文件的組織方式 一般要根據(jù)文件的特性,來(lái)確定文件的組織方式。 順序文件: 連續(xù)文件 串聯(lián)文件。 直接存取文件: 無(wú)關(guān)鍵字直接存取文件 帶關(guān)鍵字直接存取文件 桶式直接存取文件。,索引順序文件: 其基本數(shù)據(jù)記錄按順序文件組 織,記錄排列順序必須按關(guān)鍵 字值升序或降序安排,且具有 索引部分,也按同一關(guān)鍵字進(jìn) 行索引。 分區(qū)文件: 這類(lèi)文件主要用于存放程序。 它由若干稱(chēng)為成員的順序組織 的記錄組和索引組成。,虛擬存儲(chǔ)文件: 這是基于操作系統(tǒng)的請(qǐng)求頁(yè)式 存儲(chǔ)管理功能而建立的索引順 序文件。 倒排文件: 按候選屬性建立索引表。,(6)確定文件的存儲(chǔ)介質(zhì); (7)確定文件的記錄格式; 確定文件記錄中各數(shù)據(jù)項(xiàng)以及它們?cè)谟涗浿械奈锢戆才拧?記錄的長(zhǎng)度:設(shè)計(jì)記錄的長(zhǎng)度要確保能滿足需要,還要考慮使用設(shè)備的制約和效率,盡可能與讀寫(xiě)單位匹配,并盡可能減少處理過(guò)程中內(nèi)外存的交換次數(shù)。, 數(shù)據(jù)項(xiàng)的順序:對(duì)于可變長(zhǎng)記錄,應(yīng)在記錄的開(kāi)頭記入長(zhǎng)度信息;對(duì)于關(guān)鍵字項(xiàng),應(yīng)盡量按級(jí)別高低,順序配置;聯(lián)系較密切的數(shù)據(jù)項(xiàng),應(yīng)歸納在一起進(jìn)行配置。 數(shù)據(jù)項(xiàng)的屬性:屬性相同的數(shù)據(jù)項(xiàng),應(yīng)盡量歸納在一起配置;數(shù)據(jù)項(xiàng)應(yīng)按雙字長(zhǎng),全字長(zhǎng),半字長(zhǎng)和字節(jié)的屬性,順序配置。, 預(yù)留空間:考慮到將來(lái)可能的變更或擴(kuò)充,應(yīng)當(dāng)預(yù)先留一些空閑空間。不必統(tǒng)一地預(yù)留,可在有可能變更或擴(kuò)充的項(xiàng)旁邊,在相鄰接處預(yù)留。 (8) 估算存取時(shí)間和存儲(chǔ)容量。,4.6過(guò)程設(shè)計(jì),從軟件開(kāi)發(fā)的工程化觀點(diǎn)來(lái)看,在使用程序設(shè)計(jì)語(yǔ)言編制程序以前,需要對(duì)所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過(guò)程細(xì)節(jié),

溫馨提示

  • 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)論