系列索引: 《軟件工程與實踐》第三版 軟件工程課程知識梳理
目錄
本章重難點:
● 掌握軟件設計的概念、目標和過程
● 熟悉軟件總體及詳細設計的任務和原則
● 掌握數據庫設計、網絡設計和界面設計要點及方法
● 掌握軟件設計工具使用及設計文檔編寫格式和方法
4.1 軟件設計概述
4.1.1 軟件設計的概念和目標
軟件設計分爲兩個階段:總體設計和詳細設計。
總體設計主要確定總體架構、總體設計文檔和方案。詳細設計是具體細化,確定組成模塊及聯繫、處理過程、數據庫及網絡、界面設計、軟件設計文檔(含具體方案)等。
4.1.2 軟件設計的過程
軟件設計先要進行總體設計即概要設計,從總體上進行宏觀概要架構設計,將軟件需求轉化爲軟件的系統結構和數據結構。對經過“複審”可接受的總體設計方案,進入“詳細設計”,進一步進行“模塊描述”,最後還要經過“複審”,完成“設計文檔”。
軟件設計過程中的信息流:
4.2 軟件總體設計
4.2.1 軟件總體設計的任務
軟件總體設計的任務主要包括:
4.2.2 總體設計的原則和過程
總體設計的總原則及過程是:
由宏觀到微觀、逐步求精的原則,定性定量分析相結合、分解與協調相結合和模型化方法,並要兼顧系統的通用性、關聯性、整體性和層次性。根據系統的總體結構、功能、任務和目標的要求分解系統,使各子系統之間互相協調配合,實現系統的整體優化。
軟件設計基本原則: 模塊化,抽象,內聚和耦合,子系統及模塊劃分,信息隱蔽等
1. 軟件工程模塊化
模塊是構成程序的基本構件,主要由數據說明、執行語句等程序對象構成。模塊化(Modular)是將複雜軟件劃分爲功能相對獨立且易於處理的模塊的過程。
2. 抽象和逐步求精
3.模塊的內聚和耦合
內聚對內,耦合對外,最大程度的追求高內聚低耦合。
4. 子系統及模塊的劃分
結構圖(Structure Chart,SC)是準確描述表達軟件結構的圖形表示方法,可反映模塊之間的層次調用關係和聯繫。
打印報告的模塊結構圖。其調用次序爲上層調用下層,同層按照數據傳遞關係確定,一般從左到右執行。執行過程即按照數據流向進行。
好的軟件結構準則: 頂部寬度小,中部寬度大,底部寬度次之。
5. 信息隱藏
信息隱蔽主要是指模塊所包含的“過程及數據”信息,對於其它模塊需要隱蔽。模塊規定和設計應遵從:使包含在模塊中的“過程或數據”信息,對於其它不需要這些信息的模塊,不能訪問或“不可見”。
4.2.3 軟件總體設計的方法
軟件設計方法可以分爲三大類:
一是面向數據流的設計(結構化設計方法)也稱爲過程驅動設計;
二是面向數據結構設計,也稱爲數據驅動的設計;
三是面向對象設計。
1. 結構化設計方法
結構化設計方法概述
SD法分爲總體設計和詳細設計兩個階段:
(1)總體設計。總體設計過程要解決系統的模塊結構,確定系統模塊的層次結構。SD法的總體設計步驟是:
① 從 DFD 圖(數據流圖或數據流程圖)導出初始的模塊結構圖。 ② 改進初始的模塊結構圖。
(2)詳細設計。詳細設計階段的任務是: 對模塊圖中每個模塊的過程進行描述.常用描述方式:流程圖、N-S(結構流程)圖、PAD圖等。
結構化設計方法的設計過程
結構化設計方法的目標是確定設計軟件結構的一個系統化的途徑。
SD法總體設計過程需要從DFD 圖導出初始模塊結構圖, 首先要分析DFD 圖的類型, 對不同類型的DFD圖,採用不同的技術將其轉換爲初始的模塊結構圖(SC 圖).
一般將 DFD 圖分爲兩種典型類型: 中心變換型和事務處理型 。
中心變換型的數據流圖基本上呈線性形狀,可以比較明顯地分爲 輸入、變換(或加工)、輸出三部分,其中變換部分是系統的主要工作
此類系統的數據流圖常呈輻射狀,一個加工(事務中心)將它的輸入分離成若干種發散的數據流,從而形成若干條活動的路徑,然後根據輸入值選擇其中的一條路徑處理,
在中型以上DFD中,常用變換流爲主,事務流爲輔的方法
結構化設計設計步驟
2. 面向數據結構的設計方法
Jackson 開發方法是一種典型的面向數據結構的分析與設計方法。適合於數據處理類方法。
3.原型法
利用初步設計某一相對直觀易於理解的原型,經過徵求意見逐步改進完善的設計方法。
適合於軟件規模大、要求複雜、系統服務不清晰的情況。特別是當性能要求較高時,需要對軟件設計原型先做一些試驗。
原型法在整個軟件開發策略或設計階段均可使用, 目的是爲了不斷取得反饋並進行改進。
4.3 軟件詳細設計
4.3.1 詳細設計的任務和原則
詳細設計主要完成對軟件模塊的內部過程具體設計和描述,解決“具體怎麼做(現實)”的問題。
主要包括:模塊設計、過程設計、界面設計等
1. 詳細設計的任務
2. 詳細設計的原則
4.3.2 詳細設計的方法和工具
1. 詳細設計方法的選擇
選擇設計方法原則是:過程描述便於理解、複審和維護,可自然地轉換成代碼,並保證代碼與詳細設計完全一致。
三種基本控制結構: 順序、選擇和循環
詳細設計使用的結構化程序設計是一種設計程序技術,採用自頂向下、 逐步求精的設計方法和單入口單出口的控制結構。
*2. 詳細設計的工具(有的在需求分析中介紹)
詳細設計常用工具包括以下三種: 圖形、表格、語言.
圖形工具是將過程細節用圖形進行表示, 如流程圖、盒圖、問題分析圖(PAD)等。
4.4 數據庫設計概述
4.4.1 數據庫設計任務及步驟
4.4.2 概念數據模型設計
在軟件分析階段利用E-R圖進行系統描述
4.4.3 邏輯結構及物理結構設計
(1)邏輯結構設計需要將E-R圖轉換爲關係模式
(2)物理結構設計是根據數據模型及處理要求,設計出數據庫的物理數據模型。
(3)數據庫物理設計的方法是:選擇存儲結構和存取方法,以求獲得最佳的存取效率。
4.4.4 爲什麼數據要規範化
規範化 --- 將數據的邏輯結構歸結爲滿足一定條件的二維表(關係)。
通常用“範式(Normal Forms)”定義消除數據冗餘的程度。第一範式(1 NF)數據冗餘程度最大,第五範式(5 NF)數據冗餘程度最小。
從實用角度看來,在大多數場合選用第三範式都比較恰當。
4.5 網絡系統設計概述
網絡技術的選擇
網絡的分層設計
從軟件系統體系結構上,主要考慮網絡系統體系結構具體實際需求。
4.6 用戶界面設計
4.7 軟件設計文檔
4.8 本章小結