2017.12.8 軟件工程-----第五章 總體設計(復習)


軟件工程-----第五章 總體設計(復習)

(1)概要

經過需求分析階段的工作,系統必須“做什么”已經很清楚了,現在是決定“怎樣做”的時候了。總體設計的基本目的是系統應該如何實現。他最重要的一項工作是設計軟件結構。因此,總體設計又稱為概要設計或初步設計。通過這個階段的工作確定划分出組成系統的物理元素-----程序、文件、數據庫、人工過程和文檔。

(2)設計過程

總體設計過程通常是有兩個主要階段組成:系統設計階段,確定系統的具體實現方案;結構設計階段,確定軟件結構。
需求分析階段得出的數據流圖是總體設計的極好出發點。
典型的總體設計包括一下九個過程:

1.設想供選擇的方案
2.選取合理的方案
3.推薦最佳方案
4.功能分解
5.設計軟件結構
6.設計數據庫
7.制定測試計划
8.書寫文檔
9.審查和復審

(3)設計原理

模塊化
模塊化就是把程序划分為獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶需求.
模塊是由邊界元素限定的相鄰程序元素的序列,而且總有一個總體標識符代表它。
模塊化可以能夠提高軟件的可修改性;模塊化有助於軟件開發工程的組織管理。
抽象
在現實世界中一定事物、狀態或過程之間總存在着某些相似的方面,把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。或者說抽象就是抽出事物的本質特征而暫時不考慮他們的細節。

處理復雜的系統系統唯一的有效的方法就是用層次的方式構造和分析它
逐步求精
為了能集中精力解決主要問題而盡量推遲對問題細節的考慮。逐步求精之所以如此重要,是因為人類的認知過程遵守Miller法則:一個人在任何時候都只能把注意力集中在7+-2 知識塊上。
信息隱藏和局部化
信息隱藏原理指出:應該這樣設計和確定模塊使得一個模塊包含的信息過程和數據對於不需要這些信息的模塊來說是不能訪問的。應該隱藏的不是有關模塊的一切信息而是模塊的實現的細節。
模塊獨立
模塊獨立的概念是模塊化、抽象、信息和隱藏局部化概念的直接結果。模塊的獨立程度主要是內聚和耦合來衡量。耦合是模塊與模塊之間彼此相連;內聚是衡量一個模塊內部元素的彼此結合緊密程度。

耦合:(低耦合,數據耦合)

1.耦合(影響軟件復雜程度的一個重要因素)
	耦合是對一個軟件結構內不同模塊之間鏈接程度的度量。模塊間的耦合程度強烈影響這系統的可理解性、可測試性、可靠性、可維護性。
	耦合的分類:
		如果兩個模塊之間彼此通過參數交換信息,而且交換的僅僅是數據,這種耦合稱為數據耦合。
		在上面的基礎上,如果傳遞參數之中有控制信息則就是控制耦合。
		數據耦合是低耦合,系統中必須存在這種耦合,因為只有當某些模塊的輸出數據作為另一些模塊的輸入數據時,系統才會完成有價值的功能。
		內容耦合:一個模塊訪問另一個模塊的內部數據;一個模塊不通過正常入口而轉到另一個模塊的內部;兩個模塊有一部分程序代碼重疊;一個模塊有多個入口。

內聚:(高內聚用功能內聚)

內聚標志這一個模塊內各個元素彼此結合的緊密程度,他是信息隱藏和局部化概念的自然擴展。簡單地說理想內聚的模塊只做一件事。
	設計時應該做到高內聚
	內聚的分類:低內聚、中內聚、高內聚
		低內聚:
		如果一個模塊完成一組任務,這些任務彼此間即使有關系,關系也是松散的就叫做偶然內聚。
		如果一個模塊完成的任務是在邏輯上屬於相同或者類似就叫做邏輯內聚;
		如果一個模塊包含的任務必須在同一時間段內執行,就叫做時間內聚。
		中內聚:
		如果一個模塊內的處理元素是相關的,而且必須以特定次序執行,稱為過程內聚。
		如果模塊間所有元素都使用同一個輸入數據或產生同一個輸出數據則成為通信內聚。
		高內聚:
		如果一個模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執行(通常一個處理元素的輸出數據就是下一個處理元素的輸入數據則成為順序內聚
		如果模塊內處理元素所有屬於統一整體,完成一個單一功能,則稱為功能內聚,功能內聚是最高程度的內聚。

(4)啟發規則

1.改進軟件結構提高模塊獨立性

通過模塊分解或合並,力求降低耦合提高內聚。

2.模塊規模應該適中


3.深度、寬度、扇出和扇入都應該適中

深度指的是軟件結構中控制的層數,
寬度是軟件結構內同一個層次上的模塊總數的最大值,一般說來,寬度越大系統越復雜。對寬度影響最大的因素是模塊的扇出

4.模塊的作用域應該在控制域之內
5.力爭降低模塊接口的復雜程度
6.設計單入口單出口的模塊

警示我們不要使用模塊間出現內容耦合

7.模塊功能應該可以預測

(5)描繪軟件結構的圖形工具

層次圖和HIPO圖

層次圖是用來描繪軟件的層次結構;適用於自頂向下設計軟件的過程和使用,方框之間的連線表示調用關系而不是層次方框圖那樣表示是組成關系。
HIPO是層次圖加輸入/處理/輸出的英文縮寫

結構圖

方框之間的箭頭是表示模塊的調用關系
尾部是圓表示表示傳遞的是數據,實心圓表示傳遞的是控制信息

(6)面向數據流的設計方法

面向數據流的設計方法是把信息流映射成軟件結構,信息流的類型決定了映射的方法

信息流包括兩種:
	變換流:信息沿輸入通道路進入系統,同時由外部形勢變換成內部形式,進入系統的信息通過變換中心,經加工處理后在沿輸出通道變換成外部形式離開軟件系統。這種信息流叫做變換流
	事務流:這些數據流是“以事務為中心的”也就是說數據沿輸入通路到達一個處理T,這個處理根據輸入數據的類型在若干動作序列中選出一個來執行。它完成下述任務:
		接受輸入數據(輸入數據又稱為事務)
		分析每件事務以確定它的類型
		根據事務類型選取一條活動通路

軟件結構化設計方法是基於數據流的設計方法

(7)本章小結

總體設計階段的基本目的是用比較抽象概括的方式確定系統如何完成預定的任務,也就是說說確定系統的物理方案並且確定組成系統的每個程序的結構。總體設計總體分為兩個部分小階段:首先需要進行系統設計從數據流圖出發設想完成系統功能的若干中合理的物理方案,分析員應該仔細分析比較這些方案。
在進行軟件設計時應該遵循的最主要的原理是模塊獨立原理,也就是說軟件應該由一組完成相對獨立的自功能的模塊。
自頂向下求精是進行軟件結構設計的常用途徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM