1. 程式人生 > >《軟體工程》-面向過程的軟體設計方法

《軟體工程》-面向過程的軟體設計方法

【前言】
軟體設計的目標和任務
軟體設計基礎
模組獨立性
結構化設計方法
資料設計和檔案設計、過程設計
【內容】
1.軟體設計的目標和任務
根據用資訊域表示的軟體需求,以及功能和效能需求,進行
資料設計:資料結構定義
系統結構設計:軟體的系統各主要成分之間的關係
過程設計:結構成分轉換為軟體過程性描述。
2.軟體設計任務分類
(1)從工程管理的角度來看,軟體設計分兩步完成:
概要設計:總體設計,將軟體的需求轉換為資料結構和軟體的系統結構
詳細設計:過程設計,過程細化,得到軟體的詳細的資料結構和演算法。
(2)從管理觀點的角度來看,軟體設計分兩步完成:概要設計、詳細設計
(3)從技術觀點的角度來看,軟體設計分三步完成:資料設計、系統結構設計、過程設計
3.軟體設計過程


制定規範
軟體系統結構的總體設計
處理方式設計
資料結構設計
可靠性設計
編寫概要設計階段的文件
概要設計評審
4.軟體設計基礎
(1)自頂向下,逐步細化
將軟體的體系結構按自頂向下方式,對各個層次的過程細節和資料細節逐層細化。
(2)軟體結構
軟體結構包括兩部分:程式的模組結構和資料的結構
(3)程式結構
在這裡插入圖片描述
(4)結構圖(S-C圖)
結構圖反映程式中模組之間的層次呼叫關係和聯絡。
a.模組
在這裡插入圖片描述
b.模組的呼叫關係和介面
在這裡插入圖片描述
c.模組之間的資訊傳遞
d.表示模組A有條件地呼叫另一個模組B。

在這裡插入圖片描述
菱形:A有條件呼叫B,弧形:A迴圈呼叫C和D。
(5)模組化
能夠把一個大而複雜的軟體系統劃分成易於理解的比較單純的模組結構。
(6)抽象化


a.模組抽象
軟體系統進行模組設計時,可有不同的抽象層次。
抽象層次1:用問題所處環境的術語來描述這個軟體;
抽象層次2:任務需求的描述;
抽象層次3:程式過程的表示。以2-D(二維)繪圖生成任務為例。
b.資料抽象
在不同層次上描述資料物件的細節,定義與該資料物件相關的操作。
(7)資訊隱蔽
是指劃分模組或定義層次時,若模組內的資料發生變化,要儘量不影響到其他模組或是少影響。
5.模組獨立性
劃分模組的獨立性
是指軟體系統中每個模組只涉及軟體要求的具體的子功能。
模組一般具有如下三個基本屬性:
功能:描述該模組實現什麼功能
邏輯:描述模組內部怎麼做
狀態:該模組使用時的環境和條件
模組獨立性一般採用兩個準則度量模組獨立性。
即模組間耦合和模組內聚.

(1)模組間耦合
在這裡插入圖片描述
a.非直接耦合(Nondirect Coupling)
如果兩個模組之間沒有直接關係,這就是非直接耦合。
b.資料耦合(Data Coupling)
如果一個模組訪問另一個模組時,彼此之間是通過簡單資料引數(不是控制引數、公共資料結構或外部變數)來交換輸入、輸出資訊的,則稱這種耦合為資料耦合。
c.標記耦合(Stamp Coupling)
如果一組模組通過引數表傳遞記錄資訊,就是標記耦合。
d.控制耦合(Control Coupling)
如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。
e.外部耦合(External Coupling)
一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過引數表傳遞該全域性變數的資訊,則稱之為外部耦合。
f.公共耦合(Common Coupling)
若一組模組都訪問同一個公共資料環境,則它們之間的耦合就稱為公共耦合。
其中公共耦合有兩種情況:鬆散公共耦合和緊密公共耦合。
在這裡插入圖片描述
g.內容耦合(Content Coupling)
在這裡插入圖片描述
(2)模組內聚
在這裡插入圖片描述
a.功能內聚(Functional Cohesion)
一個模組中各個部分都是完成某一具體功能必不可少的組成部分,是不可分割的。
b.資訊內聚(Informational Cohesion)
這種模組完成多個功能,各個功能都在同一資料結構上操作,每一項功能有一個唯一的入口點。
c.通訊內聚(Communication Cohesion)
如果一個模組內各功能部分都使用了相同的輸入資料,或產生了相同的輸出資料,則稱之為通訊內聚模組。
在這裡插入圖片描述
d.過程內聚(Procedural Cohesion)
使用流程圖作為工具設計程式時,把流程圖的某一部分劃出組成模組,就得到過程內聚模組。
e.時間內聚(Classical Cohesion)
時間內聚模組的各個功能的執行與時間有關,通常要求所有功能必須在同一時間段內執行。
f.邏輯內聚(Logical Cohesion)
這種模組把幾種相關的功能組合在一起。
g.巧合內聚(Coincidental Cohesion)
巧合內聚模組內各部分之間沒有聯絡,或者即使有聯絡,這種聯絡也很鬆散。
6.結構化設計方法
首先研究、分析和審查資料流圖。
然後根據資料流圖決定問題的型別。資料處理問題典型的型別有兩種:變換型和事務型。
針對兩種不同的型別進行分析處理。
變換型系統結構圖:
變換型資料處理問題的工作過程大致分為三步,即取得資料,變換資料和給出資料。
在這裡插入圖片描述
在這裡插入圖片描述
事務型系統結構圖:
它接受一項事務,根據事務處理的特點和性質,選擇分派一個適當的處理單元,然後給出結果。
在這裡插入圖片描述
7.分析
即變換分析和事務分析
(1)變換分析方法由以下四步組成:
重畫資料流圖;
區分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;
進行一級分解,設計上層,模組;
進行二級分解,設計輸入、輸出和中心變換部分的中、下層模組。
注意:
(1)在選擇模組設計的次序時,必須對一個模組的全部直接下屬模組都設計完成。
(2)在設計下層模組時,應考慮模組的耦合和內聚問題。
(3)使用“黑箱”技:在設計當前模組時,先把這個模組的所有下層模組定義成“黑箱”。
(4)在模組劃分時,一個模組的直接下屬模組一般在5個左右。
(5)如果出現了以下情況,就停止模組的功能分解:
a.當模組不能再細分為明顯的子任務時;
b.當分解成使用者提供的模組或程式庫的子程式時;
c.當模組的介面是輸入/輸出裝置傳送的資訊時;
d.當模組不宜再分解的過小時。
(2)事務分析:
與變換分析一樣,事務分析也是從分析資料流圖開始,自頂向下,逐步分解,建立系統到結構圖。
在這裡插入圖片描述
8.事務分析過程
(1)識別事務源;
(2)規定適當的事務型結構;
(3)識別各種事務和它們定義的操作;
(4)注意利用公用模組;
(5)對每一事務,或對聯絡密切的一組事務,建立一個事務處理模組;
(6)對事務處理模組規定它們全部的下層操作模組;
(7)對操作模組規定它們的全部細節模組。
9.軟體模組結構的改進
(1)模組功能的完善化
一個完整的模組應當有以下幾部分:
a.執行規定的功能的部分;
b.出錯處理的部分;
c.給它的呼叫者返回一個結束狀態標誌。
(2)消除重複功能,改善軟體結構:
a.完全相似
b.區域性相似
(3)模組的作用範圍應在控制範圍之內
a.模組的控制範圍包括它本身及其所有鄂從屬模組;
b.模組的作用範圍是指模組內一個判定表的作用範圍,凡是受這個判定影響的所有模組都屬於這個判定的作用範圍。
(4)儘可能減少高扇出結構,隨著深度增大扇入
(5)避免或減少使用病態聯接:
應限制使用如下三種病態聯接:
a.直接病態聯接;
b.公共資料域病態聯接;
c.通訊模組聯接。
(6)模組的大小要適中
通常規定其語句行數在50-100左右,保持在一頁紙之內,最多不超過500行。
(6)設計功能可預測的模組,但要避免過分受限制的模組。
(7)軟體包應滿足設計約束和可移植性。

10.資料設計及檔案設計
(1)資料設計的原則
1)用於軟體的系統化方法也適用於資料
2)確定所有的資料結構和在每種資料結構上施加的操作
3)應當建立一個數據詞典並用它來定義資料和軟體的設計
4)低層資料設計的決策應推遲到設計過程的後期進行
5)資料結構的表示只限於那些必須直接使用該資料結構內資料的模組才能知道。
6)應當建立一個存放有效資料結構及相關操作的庫。
7)軟體設計和程式設計語言應當支援抽象資料型別的定義和實現。
以上原則適用於軟體工程的定義階段和開發階段。
2.檔案設計
檔案設計的過程,主要分兩個階段。第一階段是檔案的邏輯設計,主要在概要設計階段實施。第二階段是物理設計,用於總體設計實施。
檔案處理注意:
(1)整理必須的資料元素;
(2)分析資料間的關係;
(3)確定檔案的邏輯設計;
(4)理解檔案的特性;
(5)確定檔案的組織方式:順序檔案、直接存取檔案、索引順序檔案、分割槽檔案、虛擬儲存檔案、倒排檔案;
(6)確定檔案的儲存介質;
(7)確定檔案的記錄格式;
(8)估算存取時間和儲存容量。
11.過程設計(詳細設計)
從軟體開發的工程化觀點來看,在使用程式設計語言編制程式以前,需要對所採用演算法的邏輯關係進行分析,設計出全部必要的過程細節,並給予清晰的表達。
在過程設計階段,要決定各個模組的實現演算法,並精確地表達這些演算法,表達過程規格說明的工具叫做詳細設計工具,它可以分為以下三類:
圖形工具、表格工具、語言工具
12.程式流程圖
也稱為程式框圖,程式流程圖使用五種基本控制結構是:
在這裡插入圖片描述
N-S圖
也叫做盒圖。五種基本控制結構由五種圖形構件表示:
在這裡插入圖片描述
問題分析圖(PAD)
在這裡插入圖片描述
判定表
用於表示程式的靜態邏輯。在判定表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應的處理。
要求將程式流程圖中的多分支判斷都改成兩分支判斷:
在這裡插入圖片描述
PDL
PDL是一種用於描述功能模組的演算法設計和加工細節的語言。稱為設計程式用語言。它是一種偽碼。
PDL具有嚴格的關鍵字外語法,用於定義控制結構和資料結構,同時它的表示實際操作和條件的內語法又是靈活自由的,可使用自然語言的詞彙。
13.概要設計說明書
1.引言
1.1編寫目的
1.2專案背景
1.3定義
1.4參考資料
2.任務描述
2.1目標
2.2執行環境
2.3需求概述
2.4條件與限制
3.總體設計
3.1處理流程
3.2總體結構和模組外部設計
3.3功能分配
4.介面設計
4.1外部介面
4.2內部介面
5.資料結構設計
5.1邏輯結構設計
5.2物理結構設計
5.3資料結構與程式的關係
6.執行設計
6.1執行模組的組合
6.2執行控制
6.3執行時間
7.出錯處理設計
7.1出錯輸出資訊
7.2出錯處理對策
8.安全保密設計
9.維護設計
14.詳細設計說明書
1.引言
1.1編寫目的
1.2專案背景
1.3定義
1.4參考資料
2.總體設計
2.1需求概述
2.2軟體結構
3.程式描述
3.1功能
3.2效能
3.3輸入專案
3.4輸出專案
3.5演算法
3.6程式邏輯
3.7介面
3.8儲存分配
3.9限制條件
3.10測試要點