1、軟件設計簡介web
定義:爲軟件系統的架構,組件,接口和其它特性的定義過程及該過程的結果,解決「如何作」How的問題。數據庫
軟件設計方法包括:編程
軟件設計包括如下活動:設計模式
軟件質量能夠用質量屬性來描述。FURPS質量屬性:瀏覽器
2、設計技術服務器
抽象:數據結構
側重於解決特定問題的細節,忽略不相關的底層細節。架構
設計開始時應提升軟件的抽象層次,按抽象級別從高到低進行軟件設計。框架
細化:數據庫設計
與抽象相對的概念,從軟件定義到實現,每進展一步均可以當作是對軟件設計方案的抽象化過程的一次細化。
自頂向下,逐步細化:
設計模式:
模塊化:
如何衡量模塊化設計水平?模塊化設計標準:
信息隱藏:
模塊內的信息不能夠被不須要這些信息的其它模塊訪問。
功能獨立:
功能獨立的兩個定性衡量標準:
獨立性強的模塊:高內聚,低耦合
耦合的7種類型:
內聚的7種類型:
重構:
不改變組件功能的條件下,簡化組件設計。
3、設計模型
體系結構設計:
將模式(即,針對特定問題的解決方案)劃分紅三類:
架構風格分類:
另外一種分類方法:
兩層C/S架構:
三層C/S架構:
增長了應用服務器。
將系統分爲:數據層,應用邏輯層,表示層
B/S架構(是三層體系架構):
瀏覽器——web服務器——數據庫服務器
相對靈活,但響應速度和動態交互性不如C/S
接口設計中的重要部分:
用戶界面設計:三個準則:
數據設計:
組件級別的數據設計,即設計供軟件組件直接訪問的數據結構。
低層的數據設計應推遲到後期進行。
注意信息的隱藏和耦合。
組件設計:
是接近代碼層次的軟件抽象描述。
部署設計:
包含了整個解決方案的邏輯架構和服務質量(QoS)需求。
項目審批發生在部署設計階段,估計軟件部署的成本,提交審批。
是一種高層架構,描述了邏輯環境到物理環境的映射。
4、結構化設計方法SD(Structured Design)
結構化設計中,軟件的結構元素是模塊,所以也稱爲模塊設計。
接口設計:
SD數據設計的歸納:將ER圖轉換爲數據庫表。
軟件的結構分爲:模塊結構+數據結構。通常採用功能劃分的方法進行軟件結構設計,對整個問題進行分割,每一部分用一個或幾個模塊來完成。
模塊的表示:
模塊的分類(實際系統中的模塊屬於如下任意一種,或某幾種的組合):
模塊的結構:
用結構圖表示模塊結構:
菱形表示條件調用,圓弧表示循環調用。
理解深度,寬度(下圖寬度爲7),扇入,扇出:
數據結構:
基於數據流的設計方法是:過程驅動的設計方法。
數據流的類型:(通常都是以變換型爲主,事務型爲輔)
變換型系統結構圖以下:
事務型系統結果圖(簡化):
變換型映射方法:將具備變換流特色的數據流圖映射成軟件結構:
自頂向下,設計下層模塊的順序是任意的。但通常先設計輸入模塊的下層模塊。
一層一層往下分解。
事務型映射方法:將具備事務流特色的數據流圖映射成軟件結構:
變換型和事務型混合結構的例子:
模塊的完善化:
模塊徹底類似,可能只是在數據類型上不一致。能夠徹底合併。
局部類似時,則不能將二者合併爲一。通常的處理方法是將類似的部分分離出去。
模塊的做用範圍和控制範圍:
模塊的控制範圍是指它自己和全部的從屬模塊。
模塊的做用範圍是指收模塊內一個斷定影響的範圍。
模塊的做用範圍應該在模塊的控制範圍之內。
扇入和扇出:
適當的扇出數爲2~5,最好不要超過9。扇出數太小會使結構圖的深度增長,扇出數過大會使結構圖的寬度增長。
一個好的軟件模塊設計,一般是:上層扇出較高,中層扇出較少,底層公用模塊的扇入較高。
數據庫設計:
數據庫分爲多種,其中關係數據庫最成熟。多對多關係的映射須要引入關聯表。
結構化程序設計用到的工具:
5、面向對象的設計方法OOD(Object-Oriented Design)
OOA和OOD,分析和設計聯繫緊密,沒有明顯界限。
整個設計階段的核心任務:建立包含操做的設計類圖
從分析類到設計類:導出實體類,增長邊界類,控制類
在OOD中,類和接口是程序的基本組成單元。
繼承(子類對象繼承父類的全部特徵,又能夠覆蓋父類的方法)依賴性:
面向接口編程,而不是面向實現編程:接口依賴性又分爲使用依賴性和實現依賴性。
在包之間增長新包,能夠消除循環依賴性。
構件:比類更高級,包含一個或一組類,或者其它部署單元,完成一個或多個功能的特定服務。隱藏了具體的實現,只用接口對外提供服務。
從軟件複用的角度,構件是指開發過程當中能夠複用的軟件元素。具備獨立性,不可拆分。
構件被實現爲大粒度的單元,只能由一個實例。
OOD:系統劃分爲子系統。
封閉體系結構:每一層只能訪問與其相鄰的下一層。
開放體系結構:每一層能夠訪問比其下一層更低的層次。
典型的面向對象系統的分層結構:數據庫層,業務邏輯層,用戶界面層。
面向對象的設計順序:業務邏輯層(問題域部分)M——人機交互部分V——C任務管理部分——數據管理部分。
數據管理部分:關聯關係的映射: