結構化方法
結構化分析
結構化方法是一種特定的軟件開發方法學。
結構化方法就軟件需求分析而言,即:系統化地使用問題域術語,給出該問題的模型(即“系統必須做什么”的一個估算)。從問題域映射(分析)到需求,得到該系統的概念模型或稱系統的需求規約
需求分析的目標
對需求陳述進行分析,解決其中的歧義、不一致等問題,以系統化的形式表達用戶的需求,即給出問題的形式化或半形式化的描述(稱為系統的概念模型,或系統的需求規約或需求規格說明)。作為開發人員和客戶間技術契約的基礎,并作為而后開發活動的一個基本輸入。
實現軟件需求分析的目標對方法學的需求
結構化分析模型 數據流圖
數據流圖(Data Flow Diagram):簡稱DFD,是表達系統功能模型的工具。它是一種描述數據變換的圖形工具,從數據傳遞和加工角度,以圖形方式來表達系統的邏輯功能、數據在系統內部的邏輯流向和邏輯變換過程,是結構化系統分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。它包含的元素可以是數據流、數據存儲、加工、數據源和數據潭等。它標志了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換邏輯輸出所需的加工處理。
數據流圖也稱為氣泡圖。DFD是系統設計自上而下方法中使用的一種設計工具。
一個抽象層是由一組確定的術語定義的,為支持需求分析中有關要使用的那些信息的表達,結構化分析方法給出了以下五個術語/符號:
其中:
用于定義數據流和數據存儲的結構,并給出構成所給出的數據流和數據存儲的各數據項的基本數據類型。
數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明,使用數據字典為簡單的建模項目。簡而言之,數據字典是描述數據的信息集合,是對系統中使用的所有數據元素的定義的集合。
數據字典(Data )是一種用戶可以訪問的記錄數據庫和應用程序元數據的目錄。主動數據字典是指在對數據庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。
邏輯操作符
操作符含義描述
等價于(定義為)
與(順序結構)
{}
重復(循環結構)
[|]
或(選擇結構)
()
任選
m…n
界域
判定表或判定樹
定義加工小說明,描述加工“做什么”,即加工邏輯,也包括其它- -些與加工
有關的信息,如執行條件、優先級、執行頻率、出錯處理
等。
結構化分析過程 建立系統的功能模型——使用的工具為數據流圖DFD
首先:建立系統環境圖(頂層數據流圖),確定系統邊界
繼而:自頂向下,逐步求精,建立系統的層次數據流圖建立數據字典——使用的工具為結構符:+、|、{ }等
定義數據流
定義數據存儲
定義數據項給出加工小說明:集中描述一個加工,“做什么”,即加工邏輯,也包括其它一-些與加工有關的信息,如執行條件、優先級、執行頻率、出錯處理等。
描述一個加工,一般遵循如下模版:
建模中應注意的問題
結構化分析方法是一-種半形式化的規約方法,給出了一組特定的術語表和標準化的表達格式-數據流圖,在表達,上均必須遵循一些約定,即應以一種準確和一致方式使用之。
例如:
模型平衡
信息組織復雜性控制
需求規格說明書
XXX系統需求規格說明書
1.引言

1.1編寫目的
說明編寫本需求規格說明書的目的
1.2背景說明
(1)給出待開發的軟件產品的名稱;
(2)說明本項目的提出者、開發者及用戶;
(3)說明該軟件產品將做什么,如有必要,說明不做什么
1.3術語定義
1.4參考文獻
2.概述
2.1功能概述,
敘述待開發軟件產品將完成的主要功能。
2.2約束
敘述對系統設計產生影響的限制條件,并對下一節中所述的某些特殊需求提供理由,如管理模式、硬件限制、安全等。
3.數據流圖與數據字典及加工說明
3.1數據流圖
3.1.1數據流圖1
(1)畫出該數據流圖
(2)加工說明
(3)數據流說明
3.2數據字典
3.2.1文件說明
3.2.2數據項說明
4.接口
4.1用戶接口
4.2硬件接口
4.3軟件接口
5.性能需求
5.1精度
逐項說明對各項輸入數據和輸出數據達到的精度
5.2時間特征
定量說明本軟件的時間特征,如響應時間更新處理時間、
5.3靈活性
說明本軟件所具有的靈活性,即當用戶需求有某些變化時(如操作方式、運行環境、時間特征等),本軟件的適應能力。
6.屬性
6.1可使用性
規定某些需求,如檢驗點、恢復方式和重啟動性,以確保軟件可使用。
6.2保密性
規定保護軟件的要素
6.3可維護性
6.4可移植性
7.其他需求
7.1數據庫
7.2操作
7.3故障及處理
需求驗證
有關SRS ( )內容方面:
正確性:指的是SRS中陳述的每個需求都表達了將要構造的系統的某個要求。無二義性:指的是SRS中陳述的每個需求都只有一種解釋。完整性:若一個SRS具有以下三個特性,則它是完整的:
未來系統所做的任何事情都包含在SRS的陳述中;
未來系統響應所有可能的輸入(包括有效和無效);
SRS中沒有被標識為“待定”的內容。可驗證性:SRS中陳述的每個需求都是可驗證的一即當且僅當存在一一個有限代價的過程(人工或機器可以檢查構造的軟件產品是否符合用戶的需求。
任何二義性必然導致不可驗證性
任何不可度量的量,如“通常”或“時常”等
任何等同于停機問題的需求是不能被驗證的,如“程序將不
進入一個無限循環”等同于停機問題,因而是不可驗證的。一致性:SRS中陳述的需求沒有與以前的文檔發生沖突;SRS中陳述的各個需求之,間沒有發生沖突。可理解性:有關SRS格式與風格方面可修改性:指的是SRS的結構和風格使任何對需求的必要修改都易于完整、一致的進行。可被跟蹤性:指的是SRS中的每個需求的出處都是清楚的,這意味著SRS中包含對前期支持文檔的引用表。可跟蹤性:指的是SRS的書寫方式有助于對其中陳述的每個
需求進行引用。設計無關性:指的是SRS不暗示特定的軟件結構和算法。注釋:向開發機構提供了每個需求是否重要的指導意見。
如: E ()、D ()或0 (Opti onal)。 結構化設計
定義:一種軟件開發活動,定義實現需求規約所需的軟件結構
結構化軟件設計是一種面向數據流的方法
目標是建立系統軟件模型、建立軟件體系結構和詳細處理算法、產生設計規格說明書
設計目標:依據需求規約,在一個抽象層上建立系統軟件模型,包括軟件體系結構(數據和程序結構),以及詳細的處理算法,產生設計規格說明書.
即:要回答如何解決問題一給出軟件解決方案
結構化設計分為:
啟發規則是軟件結構設計優化準則,軟件概要設計的任務就是軟件結構的設計,為了提高設計的質量,必須根據軟件設計原理設計軟件,利用啟發規則優化軟件結構。
改進軟件結構提高模塊獨立性模塊規模適中適當控制深度、寬度、扇出、扇入模塊的作用域應該在控制域之內力爭降低模塊接口的復雜程度設計單入口單出口的模塊7.模塊功能可預測 總體設計
實現軟件設計的目標對結構化設計方法的需求
(1)提供可體現“原理/原則”的一組術語(符號),形成一個特定的抽象層,用于表達設計中所使用的部件。
(2)依據術語所形成的“空間”,給出表達軟件模型工具。
(3)給出設計的過程指導。
體系結構設計
定義軟件模塊及其之間的關系,從分析模型(如數據流圖)導出。
模塊: 一種可獨立標識的軟件成分。
調用: 模塊間的一種關系,某一模塊依賴其他模塊實現其功能
模塊化基本原則:高內聚,低耦合
模塊結構圖(MSD):表達軟件系統的靜態結構。
總體設計分為三個階段:
變換設計:復審并精化需求模型;確定輸入、變換、輸出三部分的邊界;系統模塊結構圖;自頂向下,逐步求精。
接口設計
包括外部接口設計和內部接口設計:
接口設計
模塊或軟件構件間的接口設計;軟件與其他軟硬件系統之間的接口設計;軟件與人(用戶)之間的交互設計。
系統的接口設計(包括用戶界面設計及與其他系統的接口設計)是由穿過系統邊界的數據流定義的。在最終的系統中,數據流將成為用戶界面中的表單、報表或與其他系統進行交互的文件或通信。
數據設計
根據數據字典來確定軟件涉及的文件系統的結構及數據庫的表結構
確定使用的數據庫:關系型;非關系型。
確定數據結構
詳細設計
定義每一個模塊,確定數據結構和操作,產生詳細設計文檔
詳細設計工具
偽代碼
程序流程圖
PAD圖
N-S圖
判定表和判定樹
軟件設計規約
軟件設計規約對軟件的組織或其組成部分的內部結構的描述,滿足系統需求規約所指定的全部功能及性能要求。
1.引信
1.1編寫目的
說明編寫本軟件設計說明書的目的。
1.2背景說明
(1)給出待開發的軟件產品的名稱;
(2)說明本項目的提出者、開發者及用戶;
(3)說明該軟件產品將做什么,如有必要,說明不做什么。,
1.3術語定義
列出本文檔中所用的專門術語的定義和外文首字母組詞的原詞組。.
1.4參考資料
列出本文檔中所引用的全部資料,包括標題、文檔編號、版本號、出版日期及出版單位等,必要時注明資料來源。
2.總體設計
2.1需求規定
說明對本軟件的主要輸入、輸出、處理的功能及性能要求。
2.2運行環境
簡要說明對本軟件運行的軟件、硬件環境和支持環境的要求。
2.3處理流程
說明本軟件的處理流程,盡量使用圖、文、表的形式。
2.4軟件結構
在DFD圖的基礎_上,用模塊結構圖來說明各層模塊的劃分及其相互關系,劃分原則上應細到程序級(即程序單元),每個單元必須執行單獨一個功能(即單元不能再分了)。
3.運行設計
3.1運行模塊的組合
說明對系統施加不同的外界運行控制時所引起的各種不同的運行模塊的組合,說明每種運行所經歷的內部模塊和支持軟件。
3.2運行控制
說明各運行控制方式、方法和具體的操作步驟。
4.系統出錯處理,
4.1出錯信息
簡要說明每種可能的出錯或故障情況出現時,系統輸出信息的格式和含義。
4.2出錯處理方法及補救措施
說明故障出現后可采取的措施,包括:
(1) 后備技術。當原始系統數據萬一失時啟用的副本的建立和啟動的技術,如周期性的信息轉儲;
(2)性能降級。使用另一個效率稍低的系統或方法(如手工操作、數據的人工記錄等),以求得到所需結果的某些部分;
(3)恢復和再啟動。用建立恢復點等技術,使軟件再開始運行。
5.模塊設計說明
以填寫模塊說明表的形式,對每個模塊給出下述內容:
(1)模塊的一般說明,包括名稱、編號、設計者、所在文件、所在庫、調用本模塊的模塊名和本模塊調用的其他模塊名;
(2)功能概述;
(3)處理描述,使用偽碼描述本模塊的算法、計算公式及步驟;
(4)引用格式;
(5)返回值;
(6)內部接口,說明本軟件內部各模塊間的接口關系
(7)外部接口
(8)用戶接口
附:模塊說明表