軟件設計必要性的分析
一、 概述:
以軟件設計的目標與任務為主線逐步展開分析,說明軟件設計的方法、步驟及其相關的軟件工具,闡述軟件設計對於一個系統或項目的意義和必要性。
二、 軟件設計的定義:
1、 定義:
軟件設計是一個需求轉換為某種軟件表達方式的過程。基本目標是用比較抽象概括的方式確定目標系統如何完成預定的任務。
2、 圖解:
三、 軟件設計原則:
1、 可靠性:
用軟件系統規模越做越大越複雜,其可靠性越來越難保證。應用本身對系統運行的可靠性要求越來越高,軟件系統的可靠性也直接關係到設計自身的聲譽和生存發展競爭能力。意味著該軟件在測試運行過程中避免可能發生故障的能力,且一旦發生故障後,具有解脫和排除故障的能力。軟件可靠性和硬件可靠性本質區別在於:後者為物理機理的衰變和老化所致,而前者是由於設計和實現的錯誤所致。故軟件的可靠性必須在設計階段就確定,在生產和測試階段再考慮就困難了。
2、 健壯性:
健壯性又稱,是指軟件對於規範要求以外的輸入能夠判斷出這個輸入不符合規範要求,並能有合理的處理方式。軟件是一個比較模糊的概念,但是卻是非常重要的軟件外部量度標準。軟件設計的健壯與否直接反應了分析設計和編碼人員的水平。
3、 可修改性:
要求以科學的方法設計軟件,使之有良好的結構和完備的文檔,系統性能易於調整。
4、 容易理解:
軟件的可理解性是其可靠性和可修改性的前提。它並不僅僅是文檔清晰可讀的問題,更要求軟件本身具有簡單明瞭的結構。這在很大程度上取決於設計者的洞察力和創造性,以及對設計對象掌握得透徹程度,當然它還依賴於設計工具和方法的適當運用。
5、 程序簡便;
6、 可測試性:
可測試性就是設計一個適當的數據集合,用來測試所建立的系統,並保證系統得到全面的檢驗。
7、 效率性:
軟件的效率性一般用程序的執行時間和所佔用的內存容量來度量。在達到原理要求功能指標的前提下,程序運行所需時間愈短和佔用存儲容量愈小,則效率愈高。
8、 標準化原則:
在結構上實現開放,基於業界開放式標準,符合國家和信息產業部的規範。
9、 先進性:
滿足客戶需求,系統性能可靠,易於維護。
10、 可擴展性:
軟件設計完要留有升級接口和升級空間。對擴展開放,對修改關閉。
11、 安全性:
安全性要求系統能夠保持用戶信息、操作等多方面的安全要求,同時系統本身也要能夠及時修復、處理各種安全漏洞,以提升安全性能。
四、 軟件設計的分類:
1、 從工程管理的角度進行分類:
a) 概要設計(高層設計或者總體設計):
即將軟件需求轉化為數據結構和軟件體系結構的過程,同時還要確定系統級接口、全局數據結構或數據庫模式;
b) 詳細設計(低層設計):
確定每個模塊的實現算法、局部數據結構,用適當的方法表示算法和數據結構的細節。
2、 從技術管理的角度分類:
a) 數據設計:
數據設計側重於數據結構的定義;
b) 系統結構設計:
定義軟件系統各主要成份之間的關係;
c) 過程設計:
把結構成份轉換成為軟件的過程性描述。在編碼階段,根據這種過程性描述,生成源程序代碼,然後通過測試最終得到完整有效的軟件。
五、 軟件設計的工作任務:
1、 概要設計的工作任務:
a) 制定規範;
b) 完成軟件總體設計:將複雜系統按功能劃分為模塊的層次結構,然後確定模塊的功能,以及模塊間的調用關係和組成關係;
c) 處理方式設計:包括算法、性能、週轉時間、響應時間、吞吐量和精度等;
d) 數據結構設計;
e) 可靠性設計;
f) 編寫概要設計階段的文檔;
2、 詳細設計的工作任務:
a) 確定軟件各個組成部分內的算法以及各部分的內部數據組織;
b) 選定過程的表達形式來描述各種算法。可選用的過程表達形式有:流程圖、盒圖(N-S圖)、PAD圖等;
c) 編寫詳細設計說明書;
d) 制定單元測試計劃;
e) 進行詳細設計評審;
六、 軟件設計的具體說明:
1、 軟件設計的目標:
a) 軟件結構設計:開發一個模塊化的程序結構,並表示模塊間的控制關係。將程序結構和數據結構組合,定義數據在程序中流動的接口;
b)數據結構設計:將分析時創建的信息域模型變換成現實軟件所需的數據結構;
c)人機界面設計(接口設計);
d) 過程設計;
2、 人機界面設計(接口設計):
a) 定義:
描述軟件內部。軟件和協作系統之間,以及軟件與用戶之間如何通信。人機界面設計要實現的內容包括一般交互,信息顯示,數據輸入;
b) 設計內容:
i. 設計軟件模塊之間的接口;
ii. 設計模塊和其他非人的信息生產者和消費者之間的接口;
iii. 設計用戶和計算機間的接口;
3、 結構化設計:
a) 定義:
結構化設計包括架構設計,接口設計,數據設計和過程設計。它是一種面向數據流的設計方法。以結構化分析階段所產生的成果為基礎,進一步自頂而下,逐步求精和模塊化的過程。
b) 要求:
i. 抽象化;
ii. 自頂向下,逐步求精;
iii. 信息隱蔽:通常會將困難的抉擇、可能修改的決策、數據結構的內部鏈接,以及對它們所做的操作細節、內部特徵碼、與計算機硬件有關的細節隱蔽起來。信息隱蔽可以提高軟件的可修改性,可測試性,和可移植性;
iv. 模塊獨立:每個模塊完成一個相對獨立的特定子功能,並且與其他模塊之間的聯繫最簡單。設計的目標是"高內聚,低耦合";
4、 模塊化設計:
a) 注意事項:
i. 保持模塊的大小適中;
ii. 儘可能減少深度;
iii. 直接調用該模塊的次數應該儘量多,但調用其他模塊的次數則不宜過多;
iv. 保證模塊是單入口、單出口;
v. 模塊的作用域應該在模塊之內;
vi. 應該是可預測的;
b) 模塊的特性:
i. 模塊的內聚:
內聚性是一個模塊內部各個元素彼此結合的緊密程度的度量。模塊內聚按照模塊獨立性由高到低的順序敘述如圖。
ii. 模塊的耦合:
耦合性是模塊間相互連接的緊密程度的度量。它取決於各個模塊之間接口的複雜度、調用方式以及哪些信息通過接口。模塊間的耦合按照模塊獨立性由高到低的順序列舉如圖。
七、 常用軟件:
1、 普通軟件:
a) 說明:
i. Word:用於編寫概要和詳細設計文檔,以及其他文字較多的文檔;
ii. Excel:用於編寫功能點實現描述文檔、單元測試用例、數據導入導出模板等等;
iii. PPT:用於編寫設計評審或功能演示文檔等等演示類文檔;
iv. Visio:用於處理各種圖形的繪製;
v. Project:用於各種計劃的制訂與跟蹤;
b) 軟件截圖:
i. Visio:
ii. Project:
2、 專業軟件:
a) Axure:用於編寫頁面或UI的原型設計文檔;
b) Mindjet MindManager:用於繪製思維導圖、整理相關人員的思路(頭腦風暴)或制訂階段性工作計劃;
c) Power Designer:用於UML或數據庫建模、專用圖形的繪製(例如類圖、E-R圖、時序圖等等);