已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章 軟件設(shè)計,掌握:概要設(shè)計的方法、詳細設(shè)計的方法、軟件設(shè)計說明書的規(guī)范化編寫。,4.1 軟件設(shè)計概述,4.1.1 軟件設(shè)計的任務(wù),軟件設(shè)計的基本目的就是回答“系統(tǒng)應(yīng)該如何實現(xiàn)?”這個問題。軟件設(shè)計的任務(wù),就是把分析階段產(chǎn)生的軟件需求說明轉(zhuǎn)換為用適當(dāng)手段表示的軟件設(shè)計文檔。,1系統(tǒng)結(jié)構(gòu)設(shè)計 系統(tǒng)結(jié)構(gòu)設(shè)計用于定義軟件主要結(jié)構(gòu)性元素之間的關(guān)系。系統(tǒng)結(jié)構(gòu)設(shè)計表示(即基于計算機的系統(tǒng)的框架)可以從系統(tǒng)規(guī)約、分析模型以及分析模型中所定義的子系統(tǒng)的交互中導(dǎo)出。 2數(shù)據(jù)設(shè)計 數(shù)據(jù)設(shè)計用于將分析階段創(chuàng)建的信息模型,如數(shù)據(jù)字典、數(shù)據(jù)流圖等,轉(zhuǎn)變?yōu)閷崿F(xiàn)軟件所需的數(shù)據(jù)結(jié)構(gòu)。部分數(shù)據(jù)設(shè)計可能和軟件系統(tǒng)結(jié)構(gòu)的設(shè)計同時發(fā)生,但更詳細的數(shù)據(jù)設(shè)計活動則會發(fā)生在設(shè)計每個具體軟件構(gòu)件(或模塊)的時候。,3接口設(shè)計 接口設(shè)計描述軟件內(nèi)部模塊之間以及軟件與人之間是如何通信的(包括數(shù)據(jù)流和控制流)。一個接口意味著特定的信息流(如數(shù)據(jù)流或控制流)以及行為類型,因此,數(shù)據(jù)和控制流圖提供了接口設(shè)計所需的信息。 4構(gòu)件設(shè)計 從工程管理的角度來看,傳統(tǒng)的軟件設(shè)計任務(wù)通常分兩個階段完成,即概要設(shè)計和詳細設(shè)計。,4.1.2 模塊與模塊化,在軟件系統(tǒng)設(shè)計中,模塊是一個明確定義的輸入、輸出和特性的程序?qū)嶓w,通常程序中單獨命名且可通過名字訪問的過程函數(shù)、子程序或宏調(diào)用都可看作模塊。一般模塊具有以下幾種特征: (1)接口:模塊的輸入/輸出。 (2)功能:模塊實現(xiàn)什么功能,有什么作用。 (3)邏輯:描述模塊內(nèi)部如何實現(xiàn)需求及所需數(shù)據(jù)。 (4)狀態(tài):模塊的運行環(huán)境,模塊間調(diào)用與被調(diào)用關(guān)系。,軟件設(shè)計應(yīng)當(dāng)遵循“模塊化”的原則。所謂“模塊化”,就是將程序劃分成若干個獨立的模塊的過程,其中,每個模塊完成一個特定子功能,每個模塊既相對獨立,又相互聯(lián)系,它們共同完成系統(tǒng)指定的各項功能。,4.1.3 抽象與細化,抽象是指從一些事物中抽取其本質(zhì)的共同的特性,而忽略其非本質(zhì)細節(jié)的差異。 細化是一種先總體、后局部的思維原則,也就是一種逐層分解、分而治之的方法。 模塊的“粒度”是指模塊的規(guī)模。如果模塊的規(guī)模過大,會使得模塊的可重用性差,同時,修改、維護也比較困難。在模塊設(shè)計中,“細化”與“抽象”的思想極為重要。通過細化,可以將一個大模塊分解成若干個小模塊;通過抽象,可以將多個模塊中的公共部分概括出來,用單獨的模塊表示,從而降低了模塊的粒度。,4.1.4 信息隱蔽,信息隱蔽是在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說是不能訪問的。它通過定義一組獨立的模塊來實現(xiàn)有效的模塊化。信息隱蔽作為一種設(shè)計準則用于模塊化系統(tǒng),在測試與維護期間會為軟件修改帶來極大的好處。,4.1.5 模塊的獨立性,模塊的獨立性是指軟件系統(tǒng)中的每個模塊只涉及軟件要求的具體的子功能,應(yīng)與軟件系統(tǒng)中其他模塊的接口保持簡單化,即模塊間的聯(lián)系不要太多。例如,若一個模塊只具有單一的功能,且與其他模塊沒有太多的聯(lián)系,那么稱此模塊具有模塊獨立性。,1. 耦合,耦合是模塊之間的相對獨立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨立性就越弱。 1)非直接耦合 非直接耦合是指兩個模塊之間無直接關(guān)系,它們之間的聯(lián)系完全是通過主程序的控制和調(diào)用來實現(xiàn)的。非直接耦合的模塊間耦合程度最低,即模塊獨立性最強。,2)數(shù)據(jù)耦合 數(shù)據(jù)耦合指的是模塊間的通信參數(shù)都是數(shù)據(jù)項。數(shù)據(jù)是模塊間進行信息交流的一種必不可少的聯(lián)系形式。在模塊之間傳輸?shù)臄?shù)據(jù)項越少,產(chǎn)生的不利影響越少。,圖4-1 數(shù)據(jù)耦合,3)標記耦合 如果兩個模塊通過參數(shù)表傳遞記錄信息,而這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)(如字符串),而不是簡單變量 4)控制耦合 控制耦合是指一個模塊向另一個模塊傳送的信息控制了另一個模塊的執(zhí)行。,圖4-2 控制耦合,圖4-3 控制耦合的修改,5)外部耦合 如果一組模塊通過同個全局簡單變量相互作用,那么它們之間的耦合稱為外部耦合。 6)公共耦合 公共耦合就是一組模塊都訪問同一全局數(shù)據(jù)結(jié)構(gòu)。 7)內(nèi)容耦合 內(nèi)容耦合是指一個模塊直接訪問另一模塊的內(nèi)容。,圖4-4 7種耦合的耦合性及數(shù)據(jù)獨立性,2. 內(nèi)聚,內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。一個模塊內(nèi)部各個元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高,相對地,它與其他模塊之間的耦合性就會減低,而模塊獨立性也就越強。 1)偶然內(nèi)聚 如果一個模塊的各個部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也是很松散的,就稱為偶然內(nèi)聚。 2)邏輯內(nèi)聚 如果把幾個邏輯上相關(guān)的功能放在同一個模塊中,則模塊每次被調(diào)用時,根據(jù)傳送給該模塊的判定參數(shù)來確定模塊應(yīng)執(zhí)行的功能,就稱為邏輯內(nèi)聚。,3)時間內(nèi)聚 時間內(nèi)聚是指一個模塊的各個組成部分的處理動作和時間有關(guān)。 4)通信內(nèi)聚 通信內(nèi)聚是指一個模塊內(nèi)各個組成部分的處理動作都使用相同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出數(shù)據(jù)。 5)順序內(nèi)聚 順序內(nèi)聚是指一個模塊內(nèi)部的各個組成部分執(zhí)行的幾個處理動作有這樣的特征:前一處理動作所產(chǎn)生的輸出數(shù)據(jù)是下一個處理動作的輸入數(shù)據(jù)。 6)功能內(nèi)聚 功能內(nèi)聚是指一個模塊內(nèi)部的各個組成部分的處理動作全部都為執(zhí)行同一個功能而存在,并且只執(zhí)行一個功能。,圖4-5 6種耦合的耦合性及數(shù)據(jù)獨立,4.1.6 自底向上與自頂向下設(shè)計策略,采用自頂向下的策略,首先將整個系統(tǒng)分解成子系統(tǒng),再將子系統(tǒng)分解成更小的子系統(tǒng),直至分解為能夠直接實現(xiàn)的軟件模塊。 采用自底向上的策略則首先考慮最基本的系統(tǒng)構(gòu)件和系統(tǒng)的內(nèi)部函數(shù),然后逐步將這些構(gòu)件聚合成更大的軟件模塊、子系統(tǒng),最終形成整個系統(tǒng)。,4.1.7 結(jié)構(gòu)化設(shè)計原則,(1)設(shè)計過程應(yīng)該能夠預(yù)測和評估。 (2)設(shè)計對于分析模型應(yīng)該是可跟蹤的。 (3)設(shè)計應(yīng)該重視資源重用。 (4)設(shè)計應(yīng)該使最終軟件盡可能和現(xiàn)實世界中的問題“相似”,也就是說,軟件設(shè)計的結(jié)構(gòu)應(yīng)該盡可能地模擬問題域的結(jié)構(gòu)。 (5)設(shè)計應(yīng)該表現(xiàn)出一致性和集成性。 (6)設(shè)計應(yīng)該適應(yīng)擴展和變更。 (7)設(shè)計應(yīng)該考慮軟件的容錯性和處理錯誤、異常的能力。 (8)設(shè)計不是編碼,編碼也不是設(shè)計。 (9)在創(chuàng)建設(shè)計時就應(yīng)該能夠評估質(zhì)量,而不是在事情完成之后評估。 (10)應(yīng)該評審設(shè)計,以減少概念性(語義性)錯誤。,4.2 概要設(shè)計,4.2.1 概要設(shè)計的基本任務(wù),1. 制定規(guī)范,如規(guī)定代碼體系、接口規(guī)約、命名規(guī)則等。,2. 總體結(jié)構(gòu)設(shè)計,(1)將軟件功能轉(zhuǎn)換成模塊,規(guī)定每個功能用哪些模塊實現(xiàn),保證每個功能都有相應(yīng)的模塊來實現(xiàn)。 (2)決定模塊層次結(jié)構(gòu)和模塊間的調(diào)用關(guān)系。 (3)模塊間的接口設(shè)計決定模塊間傳遞的信息及結(jié)構(gòu)。 (4)用戶界面設(shè)計。 (5)詳細的數(shù)據(jù)結(jié)構(gòu)設(shè)計,如表、索引、文件等。 (6)與算法相關(guān)的邏輯數(shù)據(jù)結(jié)構(gòu)及操作。 (7)其他性能方面的設(shè)計。,4.2.2 概要設(shè)計的步驟,1. 結(jié)構(gòu)化軟件設(shè)計方法,結(jié)構(gòu)化軟件概要設(shè)計的步驟如下: (1)詳細閱讀需求規(guī)格說明書,理解系統(tǒng)建設(shè)目標、業(yè)務(wù)現(xiàn)狀、現(xiàn)有系統(tǒng)、用戶需求的各功能說明。 (2)分析數(shù)據(jù)流圖,弄清數(shù)據(jù)流加工的過程。 (3)根據(jù)數(shù)據(jù)流圖來決定數(shù)據(jù)處理問題的類型,一般分為變換型、事務(wù)型。 (4)推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。 一般遵循以下步驟: 找出系統(tǒng)底層邏輯輸入、主加工和邏輯輸出; 設(shè)計頂層模塊和第一層模塊; 對輸入、變換、輸出模塊逐個分解,便可得到初始結(jié)構(gòu)圖,(5)對初始結(jié)構(gòu)圖進行改進完善:所有的加工都要能對應(yīng)到相應(yīng)模塊(模塊的完整性在于它們完成了需求中的所有加工),消除完全相似或局部相似的重復(fù)功能,理清模塊間的層次、控制關(guān)系,平衡模塊大小。 (6)由數(shù)據(jù)字典導(dǎo)出邏輯數(shù)據(jù)結(jié)構(gòu)、每種數(shù)據(jù)結(jié)構(gòu)上的操作,操作應(yīng)當(dāng)屬于某個模塊。 (7)確定系統(tǒng)包含哪些應(yīng)用服務(wù)子系統(tǒng)、客戶端、數(shù)據(jù)庫管理子系統(tǒng)。 (8)對每個篩選后的模塊進行列表說明。 (9)對邏輯數(shù)據(jù)結(jié)構(gòu)進行列表說明。 (10)編寫概要設(shè)計說明書。,2. 面向?qū)ο蟮能浖O(shè)計方法,使用面向?qū)ο蟮脑O(shè)計方法,首先需要構(gòu)建軟件的體系結(jié)構(gòu),其過程是:先將系統(tǒng)劃分為子系統(tǒng)(可以使用包來描述子系統(tǒng)),根據(jù)子系統(tǒng)提供的操作定義它們的接口,然后設(shè)計子系統(tǒng)的概念模型。對復(fù)雜的子系統(tǒng),可以繼續(xù)將其分解,得到更簡單的子系統(tǒng)。,3. 結(jié)構(gòu)化軟件設(shè)計方法和面向?qū)ο蟮能浖O(shè)計方法之間的比較,(1)從概念方面看,結(jié)構(gòu)化軟件是功能的集合,通過模塊以及模塊和模塊之間的分層調(diào)用關(guān)系實現(xiàn);面向?qū)ο筌浖鞘挛锏募?,通過對象以及對象和對象之間的通訊聯(lián)系實現(xiàn)。 (2)從構(gòu)成方面看,結(jié)構(gòu)化軟件過程數(shù)據(jù),以過程為中心;面向?qū)ο筌浖〝?shù)據(jù)相應(yīng)操作)的封裝,以數(shù)據(jù)為中心。 (3)從運行控制方面看,結(jié)構(gòu)化軟件采用順序處理方式,由過程驅(qū)動控制;面向?qū)ο筌浖捎媒换ナ?、并行處理方式,由消息?qū)動控制。,(4)從開發(fā)方面看,結(jié)構(gòu)化方法的工作重點是設(shè)計;面向?qū)ο蠓椒ǖ墓ぷ髦攸c是分析。但是,在結(jié)構(gòu)化方法中,分析階段和設(shè)計階段采用了不相吻合的表達方式,需要把在分析階段采用的具有網(wǎng)絡(luò)特征的數(shù)據(jù)流圖轉(zhuǎn)換為設(shè)計階段采用的具有分層特征的結(jié)構(gòu)圖,而在面向?qū)ο蠓椒ㄖ袆t不存在這一問題。 (5)從應(yīng)用方面看,相對而言,結(jié)構(gòu)化方法和面向?qū)ο蟮姆椒ňm合數(shù)據(jù)處理、事務(wù)處理軟件的開發(fā),但相對而言,結(jié)構(gòu)化方法更適合數(shù)據(jù)類型比較簡單的數(shù)值計算軟件的開發(fā),面向?qū)ο蠓椒▌t更適合大型復(fù)雜軟件的開發(fā)。,4.2.3 軟件結(jié)構(gòu)圖,圖4-6 成績管理系統(tǒng)的軟件結(jié)構(gòu)圖,4.2.4 數(shù)據(jù)流圖,數(shù)據(jù)流圖簡稱DFD,是采用圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。,4.3 詳細設(shè)計,4.3.1 詳細設(shè)計的基本任務(wù),(1)對每個模塊進行詳細的算法設(shè)計。用某種圖形、表格、語言工具將每個模塊處理過程的詳細算法描述出來。 (2)對模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進行設(shè)計。對需求分析、概要設(shè)計確定的概念性的數(shù)據(jù)類型進行確切的定義。 (3)對數(shù)據(jù)結(jié)構(gòu)進行物理設(shè)計,即確定數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)主要指數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。 (4)其他設(shè)計:為了提高數(shù)據(jù)的輸入、分類、存儲、檢索等操作的效率,節(jié)約內(nèi)存空間,對數(shù)據(jù)庫中的某些數(shù)據(jù)項的值要進行代碼設(shè)計。為了規(guī)范系統(tǒng)的輸入和輸出,還需要進行輸入/輸出格式設(shè)計。對于一個實時系統(tǒng),用戶與計算機頻繁對話,因此要進行對話方式、內(nèi)容、格式的具體設(shè)計。 (5)編寫詳細設(shè)計說明書。 (6)評審。對處理過程的算法和數(shù)據(jù)庫的物理結(jié)構(gòu)都要評審。,4.3.2 程序流程圖,表4-1 程序流程圖的符號說明,圖4-7 程序流程圖的一個簡單例子,4.3.3 盒圖,圖4-8 盒圖的順序結(jié)構(gòu),圖4-9 盒圖的條件結(jié)構(gòu),圖4-10 盒圖的While循環(huán)結(jié)構(gòu),圖4-11 盒圖的Until循環(huán)結(jié)構(gòu),圖4-12 盒圖的選擇結(jié)構(gòu),圖4-13 盒圖的端點表示,圖4-14 盒圖的模塊調(diào)用,圖4-15 盒圖表示的一個簡單例子,4.3.4 詳細設(shè)計中的IPO圖,IPO圖既是需求分析的工具,也是詳細設(shè)計的工具。它的優(yōu)點是輸入、輸出明顯,容易被人理解,適合于進行自頂向下設(shè)計,有一定的靈活性。另外,使用IPO圖開發(fā)軟件還可以便于人員分工,具有易于測試、糾錯等優(yōu)點。它的缺點是:制作量較大,修改較困難。,4.3.5 PAD圖,圖4-16 PAD圖的常見結(jié)構(gòu),4.3.6 偽代碼,偽代碼是一種算法描述語言,它介于自然語言與實際的編程語言之間。相比實際的編程語言而言,偽代碼的代碼簡單、可讀性好,但它不可以在實際的編程環(huán)境中編譯運行。相比自然語言而言,偽代碼更容易被轉(zhuǎn)換為實際的程序。一般來說,在軟件設(shè)計中,一些復(fù)雜的算法可以用偽代碼來表示。,4.4 軟件設(shè)計說明書與案例分析,4.4.1 軟件設(shè)計說明書,1. 概要設(shè)計說明書,1引言 1.1編寫目的 1.2背景 1.3定義 1.4參考資料 2總體設(shè)計 2.1需求規(guī)定 2.2運行環(huán)境 2.3基本設(shè)計概念和處理流程 2.4結(jié)構(gòu) 2.5功能需求與程序的關(guān)系 2.6人工處理過程 2.7尚未問決的問題,3接口設(shè)計 3.1用戶接口 3.2外部接口 3.3內(nèi)部接口 4運行設(shè)計 4.1運行模塊組合 4.2運行控制 4.3運行時間 5系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Pyridyl-disulfide-Dexamethasone-生命科學(xué)試劑-MCE-7118
- 2025年度生姜種植與鄉(xiāng)村旅游融合發(fā)展合作協(xié)議
- 二零二五年度解除勞動合同經(jīng)濟補償標準與法律依據(jù)合同
- 二零二五年度小微企業(yè)貸款服務(wù)合同
- 2025年度門頭制作施工與綠色建筑認證服務(wù)合同
- 2025年度幼兒園品牌授權(quán)與技術(shù)轉(zhuǎn)讓合作協(xié)議
- 二零二五年度質(zhì)押式回購證券化合同模板
- 二零二五年度勞動合同終止證明及競業(yè)禁止合同
- 老年人長期護理保險中對于慢病包括慢腎病的分層次管理體系探索與實踐
- 中小企業(yè)勞動合同標準格式參考
- 自動扶梯安裝過程記錄
- MOOC 材料科學(xué)基礎(chǔ)-西安交通大學(xué) 中國大學(xué)慕課答案
- 中國城市居民的健康意識和生活方式調(diào)研分析報告
- 復(fù)產(chǎn)復(fù)工試題含答案
- 售后服務(wù)經(jīng)理的競聘演講
- 慢加急性肝衰竭護理查房課件
- 文件丟失應(yīng)急預(yù)案
- 全球職等系統(tǒng)GGS職位評估手冊
- 專項法律意見書(私募基金管理人重大事項變更)-詳細版
- 深圳市社會保險參保證明
- 2023年國家護理質(zhì)量數(shù)據(jù)平臺
評論
0/150
提交評論