軟件工程4軟件設計.ppt_第1頁
軟件工程4軟件設計.ppt_第2頁
軟件工程4軟件設計.ppt_第3頁
軟件工程4軟件設計.ppt_第4頁
軟件工程4軟件設計.ppt_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章 軟件設計,掌握:概要設計的方法、詳細設計的方法、軟件設計說明書的規(guī)范化編寫。,4.1 軟件設計概述,4.1.1 軟件設計的任務,軟件設計的基本目的就是回答“系統(tǒng)應該如何實現?”這個問題。軟件設計的任務,就是把分析階段產生的軟件需求說明轉換為用適當手段表示的軟件設計文檔。,1系統(tǒng)結構設計 系統(tǒng)結構設計用于定義軟件主要結構性元素之間的關系。系統(tǒng)結構設計表示(即基于計算機的系統(tǒng)的框架)可以從系統(tǒng)規(guī)約、分析模型以及分析模型中所定義的子系統(tǒng)的交互中導出。 2數據設計 數據設計用于將分析階段創(chuàng)建的信息模型,如數據字典、數據流圖等,轉變?yōu)閷崿F軟件所需的數據結構。部分數據設計可能和軟件系統(tǒng)結構的設計同時發(fā)生,但更詳細的數據設計活動則會發(fā)生在設計每個具體軟件構件(或模塊)的時候。,3接口設計 接口設計描述軟件內部模塊之間以及軟件與人之間是如何通信的(包括數據流和控制流)。一個接口意味著特定的信息流(如數據流或控制流)以及行為類型,因此,數據和控制流圖提供了接口設計所需的信息。 4構件設計 從工程管理的角度來看,傳統(tǒng)的軟件設計任務通常分兩個階段完成,即概要設計和詳細設計。,4.1.2 模塊與模塊化,在軟件系統(tǒng)設計中,模塊是一個明確定義的輸入、輸出和特性的程序實體,通常程序中單獨命名且可通過名字訪問的過程函數、子程序或宏調用都可看作模塊。一般模塊具有以下幾種特征: (1)接口:模塊的輸入/輸出。 (2)功能:模塊實現什么功能,有什么作用。 (3)邏輯:描述模塊內部如何實現需求及所需數據。 (4)狀態(tài):模塊的運行環(huán)境,模塊間調用與被調用關系。,軟件設計應當遵循“模塊化”的原則。所謂“模塊化”,就是將程序劃分成若干個獨立的模塊的過程,其中,每個模塊完成一個特定子功能,每個模塊既相對獨立,又相互聯系,它們共同完成系統(tǒng)指定的各項功能。,4.1.3 抽象與細化,抽象是指從一些事物中抽取其本質的共同的特性,而忽略其非本質細節(jié)的差異。 細化是一種先總體、后局部的思維原則,也就是一種逐層分解、分而治之的方法。 模塊的“粒度”是指模塊的規(guī)模。如果模塊的規(guī)模過大,會使得模塊的可重用性差,同時,修改、維護也比較困難。在模塊設計中,“細化”與“抽象”的思想極為重要。通過細化,可以將一個大模塊分解成若干個小模塊;通過抽象,可以將多個模塊中的公共部分概括出來,用單獨的模塊表示,從而降低了模塊的粒度。,4.1.4 信息隱蔽,信息隱蔽是在設計和確定模塊時,使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說是不能訪問的。它通過定義一組獨立的模塊來實現有效的模塊化。信息隱蔽作為一種設計準則用于模塊化系統(tǒng),在測試與維護期間會為軟件修改帶來極大的好處。,4.1.5 模塊的獨立性,模塊的獨立性是指軟件系統(tǒng)中的每個模塊只涉及軟件要求的具體的子功能,應與軟件系統(tǒng)中其他模塊的接口保持簡單化,即模塊間的聯系不要太多。例如,若一個模塊只具有單一的功能,且與其他模塊沒有太多的聯系,那么稱此模塊具有模塊獨立性。,1. 耦合,耦合是模塊之間的相對獨立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯系越多,耦合性就越高,而其模塊獨立性就越弱。 1)非直接耦合 非直接耦合是指兩個模塊之間無直接關系,它們之間的聯系完全是通過主程序的控制和調用來實現的。非直接耦合的模塊間耦合程度最低,即模塊獨立性最強。,2)數據耦合 數據耦合指的是模塊間的通信參數都是數據項。數據是模塊間進行信息交流的一種必不可少的聯系形式。在模塊之間傳輸的數據項越少,產生的不利影響越少。,圖4-1 數據耦合,3)標記耦合 如果兩個模塊通過參數表傳遞記錄信息,而這個記錄是某一數據結構的子結構(如字符串),而不是簡單變量 4)控制耦合 控制耦合是指一個模塊向另一個模塊傳送的信息控制了另一個模塊的執(zhí)行。,圖4-2 控制耦合,圖4-3 控制耦合的修改,5)外部耦合 如果一組模塊通過同個全局簡單變量相互作用,那么它們之間的耦合稱為外部耦合。 6)公共耦合 公共耦合就是一組模塊都訪問同一全局數據結構。 7)內容耦合 內容耦合是指一個模塊直接訪問另一模塊的內容。,圖4-4 7種耦合的耦合性及數據獨立性,2. 內聚,內聚是模塊功能強度(一個模塊內部各個元素彼此結合的緊密程度)的度量。一個模塊內部各個元素之間的聯系越緊密,則它的內聚性就越高,相對地,它與其他模塊之間的耦合性就會減低,而模塊獨立性也就越強。 1)偶然內聚 如果一個模塊的各個部分之間沒有聯系,或者即使有聯系,這種聯系也是很松散的,就稱為偶然內聚。 2)邏輯內聚 如果把幾個邏輯上相關的功能放在同一個模塊中,則模塊每次被調用時,根據傳送給該模塊的判定參數來確定模塊應執(zhí)行的功能,就稱為邏輯內聚。,3)時間內聚 時間內聚是指一個模塊的各個組成部分的處理動作和時間有關。 4)通信內聚 通信內聚是指一個模塊內各個組成部分的處理動作都使用相同的輸入數據或產生相同的輸出數據。 5)順序內聚 順序內聚是指一個模塊內部的各個組成部分執(zhí)行的幾個處理動作有這樣的特征:前一處理動作所產生的輸出數據是下一個處理動作的輸入數據。 6)功能內聚 功能內聚是指一個模塊內部的各個組成部分的處理動作全部都為執(zhí)行同一個功能而存在,并且只執(zhí)行一個功能。,圖4-5 6種耦合的耦合性及數據獨立,4.1.6 自底向上與自頂向下設計策略,采用自頂向下的策略,首先將整個系統(tǒng)分解成子系統(tǒng),再將子系統(tǒng)分解成更小的子系統(tǒng),直至分解為能夠直接實現的軟件模塊。 采用自底向上的策略則首先考慮最基本的系統(tǒng)構件和系統(tǒng)的內部函數,然后逐步將這些構件聚合成更大的軟件模塊、子系統(tǒng),最終形成整個系統(tǒng)。,4.1.7 結構化設計原則,(1)設計過程應該能夠預測和評估。 (2)設計對于分析模型應該是可跟蹤的。 (3)設計應該重視資源重用。 (4)設計應該使最終軟件盡可能和現實世界中的問題“相似”,也就是說,軟件設計的結構應該盡可能地模擬問題域的結構。 (5)設計應該表現出一致性和集成性。 (6)設計應該適應擴展和變更。 (7)設計應該考慮軟件的容錯性和處理錯誤、異常的能力。 (8)設計不是編碼,編碼也不是設計。 (9)在創(chuàng)建設計時就應該能夠評估質量,而不是在事情完成之后評估。 (10)應該評審設計,以減少概念性(語義性)錯誤。,4.2 概要設計,4.2.1 概要設計的基本任務,1. 制定規(guī)范,如規(guī)定代碼體系、接口規(guī)約、命名規(guī)則等。,2. 總體結構設計,(1)將軟件功能轉換成模塊,規(guī)定每個功能用哪些模塊實現,保證每個功能都有相應的模塊來實現。 (2)決定模塊層次結構和模塊間的調用關系。 (3)模塊間的接口設計決定模塊間傳遞的信息及結構。 (4)用戶界面設計。 (5)詳細的數據結構設計,如表、索引、文件等。 (6)與算法相關的邏輯數據結構及操作。 (7)其他性能方面的設計。,4.2.2 概要設計的步驟,1. 結構化軟件設計方法,結構化軟件概要設計的步驟如下: (1)詳細閱讀需求規(guī)格說明書,理解系統(tǒng)建設目標、業(yè)務現狀、現有系統(tǒng)、用戶需求的各功能說明。 (2)分析數據流圖,弄清數據流加工的過程。 (3)根據數據流圖來決定數據處理問題的類型,一般分為變換型、事務型。 (4)推導出系統(tǒng)的初始結構圖。 一般遵循以下步驟: 找出系統(tǒng)底層邏輯輸入、主加工和邏輯輸出; 設計頂層模塊和第一層模塊; 對輸入、變換、輸出模塊逐個分解,便可得到初始結構圖,(5)對初始結構圖進行改進完善:所有的加工都要能對應到相應模塊(模塊的完整性在于它們完成了需求中的所有加工),消除完全相似或局部相似的重復功能,理清模塊間的層次、控制關系,平衡模塊大小。 (6)由數據字典導出邏輯數據結構、每種數據結構上的操作,操作應當屬于某個模塊。 (7)確定系統(tǒng)包含哪些應用服務子系統(tǒng)、客戶端、數據庫管理子系統(tǒng)。 (8)對每個篩選后的模塊進行列表說明。 (9)對邏輯數據結構進行列表說明。 (10)編寫概要設計說明書。,2. 面向對象的軟件設計方法,使用面向對象的設計方法,首先需要構建軟件的體系結構,其過程是:先將系統(tǒng)劃分為子系統(tǒng)(可以使用包來描述子系統(tǒng)),根據子系統(tǒng)提供的操作定義它們的接口,然后設計子系統(tǒng)的概念模型。對復雜的子系統(tǒng),可以繼續(xù)將其分解,得到更簡單的子系統(tǒng)。,3. 結構化軟件設計方法和面向對象的軟件設計方法之間的比較,(1)從概念方面看,結構化軟件是功能的集合,通過模塊以及模塊和模塊之間的分層調用關系實現;面向對象軟件是事物的集合,通過對象以及對象和對象之間的通訊聯系實現。 (2)從構成方面看,結構化軟件過程數據,以過程為中心;面向對象軟件(數據相應操作)的封裝,以數據為中心。 (3)從運行控制方面看,結構化軟件采用順序處理方式,由過程驅動控制;面向對象軟件采用交互式、并行處理方式,由消息驅動控制。,(4)從開發(fā)方面看,結構化方法的工作重點是設計;面向對象方法的工作重點是分析。但是,在結構化方法中,分析階段和設計階段采用了不相吻合的表達方式,需要把在分析階段采用的具有網絡特征的數據流圖轉換為設計階段采用的具有分層特征的結構圖,而在面向對象方法中則不存在這一問題。 (5)從應用方面看,相對而言,結構化方法和面向對象的方法均適合數據處理、事務處理軟件的開發(fā),但相對而言,結構化方法更適合數據類型比較簡單的數值計算軟件的開發(fā),面向對象方法則更適合大型復雜軟件的開發(fā)。,4.2.3 軟件結構圖,圖4-6 成績管理系統(tǒng)的軟件結構圖,4.2.4 數據流圖,數據流圖簡稱DFD,是采用圖形方式來表達系統(tǒng)的邏輯功能、數據在系統(tǒng)內部的邏輯流向和邏輯變換過程,是結構化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。,4.3 詳細設計,4.3.1 詳細設計的基本任務,(1)對每個模塊進行詳細的算法設計。用某種圖形、表格、語言工具將每個模塊處理過程的詳細算法描述出來。 (2)對模塊內的數據結構進行設計。對需求分析、概要設計確定的概念性的數據類型進行確切的定義。 (3)對數據結構進行物理設計,即確定數據庫的物理結構。物理結構主要指數據庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數據庫系統(tǒng)。 (4)其他設計:為了提高數據的輸入、分類、存儲、檢索等操作的效率,節(jié)約內存空間,對數據庫中的某些數據項的值要進行代碼設計。為了規(guī)范系統(tǒng)的輸入和輸出,還需要進行輸入/輸出格式設計。對于一個實時系統(tǒng),用戶與計算機頻繁對話,因此要進行對話方式、內容、格式的具體設計。 (5)編寫詳細設計說明書。 (6)評審。對處理過程的算法和數據庫的物理結構都要評審。,4.3.2 程序流程圖,表4-1 程序流程圖的符號說明,圖4-7 程序流程圖的一個簡單例子,4.3.3 盒圖,圖4-8 盒圖的順序結構,圖4-9 盒圖的條件結構,圖4-10 盒圖的While循環(huán)結構,圖4-11 盒圖的Until循環(huán)結構,圖4-12 盒圖的選擇結構,圖4-13 盒圖的端點表示,圖4-14 盒圖的模塊調用,圖4-15 盒圖表示的一個簡單例子,4.3.4 詳細設計中的IPO圖,IPO圖既是需求分析的工具,也是詳細設計的工具。它的優(yōu)點是輸入、輸出明顯,容易被人理解,適合于進行自頂向下設計,有一定的靈活性。另外,使用IPO圖開發(fā)軟件還可以便于人員分工,具有易于測試、糾錯等優(yōu)點。它的缺點是:制作量較大,修改較困難。,4.3.5 PAD圖,圖4-16 PAD圖的常見結構,4.3.6 偽代碼,偽代碼是一種算法描述語言,它介于自然語言與實際的編程語言之間。相比實際的編程語言而言,偽代碼的代碼簡單、可讀性好,但它不可以在實際的編程環(huán)境中編譯運行。相比自然語言而言,偽代碼更容易被轉換為實際的程序。一般來說,在軟件設計中,一些復雜的算法可以用偽代碼來表示。,4.4 軟件設計說明書與案例分析,4.4.1 軟件設計說明書,1. 概要設計說明書,1引言 1.1編寫目的 1.2背景 1.3定義 1.4參考資料 2總體設計 2.1需求規(guī)定 2.2運行環(huán)境 2.3基本設計概念和處理流程 2.4結構 2.5功能需求與程序的關系 2.6人工處理過程 2.7尚未問決的問題,3接口設計 3.1用戶接口 3.2外部接口 3.3內部接口 4運行設計 4.1運行模塊組合 4.2運行控制 4.3運行時間 5系統(tǒng)數據結構設計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論