- 軟體工程教程
- 軟體工程首頁
- 軟體工程概述
- 軟體開發生命週期
- 軟體專案管理
- 軟體需求
- 軟體設計基礎
- 分析與設計工具
- 軟體設計策略
- 軟體使用者介面設計
- 軟體設計複雜性
- 軟體實現
- 軟體測試概述
- 軟體維護
- CASE工具概述
- 軟體 - 考試題及答案
- 軟體工程 - 考試題及答案
軟體分析與設計工具
軟體分析和設計包括所有有助於將需求規格轉換為實現的活動。需求規格說明指定了軟體的所有功能和非功能期望。這些需求規格以人類可讀和可理解的文件形式出現,計算機對此一無所知。
軟體分析和設計是中間階段,它有助於將人類可讀的需求轉換為實際程式碼。
讓我們看看軟體設計師使用的一些分析和設計工具
資料流圖
資料流圖是資訊系統中資料流的圖形表示。它能夠描繪傳入資料流、傳出資料流和儲存資料。DFD沒有提及資料如何在系統中流動。
DFD和流程圖之間存在顯著差異。流程圖描繪程式模組中的控制流。DFD描繪系統中不同層次的資料流。DFD不包含任何控制或分支元素。
DFD的型別
資料流圖可以是邏輯的或物理的。
- 邏輯DFD - 此型別的DFD專注於系統過程和系統中的資料流。例如,在銀行軟體系統中,資料如何在不同實體之間移動。
- 物理DFD - 此型別的DFD顯示資料流在系統中的實際實現方式。它更具體,更接近於實現。
DFD元件
DFD可以使用以下元件集來表示資料來源、目標、儲存和流 -
- 實體 - 實體是資訊資料的源和目標。實體用帶有各自名稱的矩形表示。
- 過程 - 對資料執行的活動和操作用圓形或圓角矩形表示。
- 資料儲存 - 資料儲存有兩種變體 - 它可以表示為缺少兩側的矩形,也可以表示為只有一側缺失的開口矩形。
- 資料流 - 資料移動用帶尖的箭頭表示。資料移動從箭頭的底部(其源)指向箭頭的頭部(其目標)。
DFD的層次
- 0級 - 抽象級別最高的DFD稱為0級DFD,它將整個資訊系統描繪成一個圖,隱藏所有底層細節。0級DFD也稱為上下文級DFD。
- 1級 - 0級DFD被分解成更具體的1級DFD。1級DFD描述了系統中的基本模組以及各個模組之間的資料流。1級DFD還提到了基本流程和資訊來源。
2級 - 在此級別,DFD顯示資料如何在1級中提到的模組內部流動。
高階DFD可以轉換為更具體的低階DFD,並具有更深入的理解級別,直到達到所需的規範級別。
結構圖
結構圖是從資料流圖派生的圖表。它比DFD更詳細地表示系統。它將整個系統分解成最低的功能模組,比DFD更詳細地描述了系統每個模組的功能和子功能。
結構圖表示模組的層次結構。在每一層執行特定的任務。
以下是結構圖中使用的符號 -
- 模組 - 它表示過程或子程式或任務。控制模組分支到多個子模組。庫模組是可重用的,可以從任何模組呼叫。

- 條件 - 它用模組底部的菱形表示。它表明控制模組可以根據某些條件選擇任何子例程。

- 跳轉 - 顯示指向模組內部的箭頭,表示控制將跳轉到子模組的中間。

- 迴圈 - 曲線箭頭表示模組中的迴圈。迴圈覆蓋的所有子模組都重複執行模組。

- 資料流 - 末端帶有空心圓的定向箭頭表示資料流。

- 控制流 - 末端帶有實心圓的定向箭頭表示控制流。

HIPO圖
HIPO(層次輸入過程輸出)圖是兩種組織方法的組合,用於分析系統並提供文件手段。HIPO模型由IBM於1970年開發。
HIPO圖表示軟體系統中模組的層次結構。分析師使用HIPO圖來獲取系統功能的高階檢視。它以分層方式將功能分解成子功能。它描述了系統執行的功能。
HIPO圖非常適合文件目的。它們的圖形表示使設計人員和管理人員更容易獲得系統結構的圖示。
與描繪模組中控制流和資料流的IPO(輸入過程輸出)圖相反,HIPO不提供任何有關資料流或控制流的資訊。
示例
HIPO圖的兩個部分,層次表示和IPO圖表,都用於軟體程式的結構設計以及同一程式的文件。
結構化英語
大多數程式設計師沒有意識到軟體的大局,因此他們只依賴於他們的經理告訴他們做什麼。高階軟體管理人員有責任向程式設計師提供準確的資訊,以開發準確且快速的程式碼。
其他使用圖形或圖表的方法有時會被不同的人以不同的方式解釋。
因此,軟體的分析師和設計師提出了諸如結構化英語之類的工具。它只不過是對需要編碼的內容以及如何編碼的描述。結構化英語幫助程式設計師編寫無錯誤的程式碼。
其他使用圖形或圖表的方法有時會被不同的人以不同的方式解釋。在這裡,結構化英語和虛擬碼都試圖縮小這種理解差距。
結構化英語是它在結構化程式設計正規化中使用簡單的英語單詞。它不是最終程式碼,而是一種描述需要編碼的內容以及如何編碼的內容。以下是結構化程式設計的一些標記。
IF-THEN-ELSE, DO-WHILE-UNTIL
分析師使用儲存在資料字典中的相同變數和資料名稱,這使得編寫和理解程式碼變得更加簡單。
示例
我們以線上購物環境中的客戶身份驗證為例。此客戶身份驗證過程可以用結構化英語編寫為
Enter Customer_Name SEEK Customer_Name in Customer_Name_DB file IF Customer_Name found THEN Call procedure USER_PASSWORD_AUTHENTICATE() ELSE PRINT error message Call procedure NEW_CUSTOMER_REQUEST() ENDIF
用結構化英語編寫的程式碼更像是日常口語。它不能直接作為軟體程式碼實現。結構化英語獨立於程式語言。
虛擬碼
虛擬碼更接近程式語言。它可以被認為是增強的程式語言,充滿了註釋和描述。
虛擬碼避免變數宣告,但它們使用一些實際程式語言的結構編寫,例如C、Fortran、Pascal等。
虛擬碼包含比結構化英語更多的程式設計細節。它提供了一種執行任務的方法,就像計算機正在執行程式碼一樣。
示例
列印斐波那契數列前n個數的程式。
void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
if a greater than b
{
Increase b by a;
Print b;
}
else if b greater than a
{
increase a by b;
print a;
}
}
決策表
決策表以結構化的表格格式表示條件以及為解決這些條件而採取的相應操作。
它是一個強大的工具,可以除錯和防止錯誤。它有助於將相似的資訊組合到一個表中,然後透過組合表,它可以提供簡單方便的決策。
建立決策表
要建立決策表,開發人員必須遵循基本的四個步驟
- 確定需要解決的所有可能的條件
- 確定所有已識別條件的操作
- 建立最大可能的規則
- 為每條規則定義操作
決策表應由終端使用者驗證,並且可以透過消除重複規則和操作來簡化。
示例
讓我們以我們網際網路連線的日常問題的簡單示例為例。我們首先確定啟動網際網路時可能出現的所有問題及其各自可能的解決方案。
我們在“條件”列下列出所有可能的問題,在“操作”列下列出預期的操作。
| 條件/操作 | 規則 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 條件 | 顯示已連線 | 否 | 否 | 否 | 否 | 是 | 是 | 是 | 是 |
| Ping正常工作 | 否 | 否 | 是 | 是 | 否 | 否 | 是 | 是 | |
| 開啟網站 | 是 | 否 | 是 | 否 | 是 | 否 | 是 | 否 | |
| 操作 | 檢查網路電纜 | X | |||||||
| 檢查網際網路路由器 | X | X | X | X | |||||
| 重新啟動Web瀏覽器 | X | ||||||||
| 聯絡服務提供商 | X | X | X | X | X | X | |||
| 不執行任何操作 | |||||||||
實體關係模型
實體-關係模型是一種資料庫模型,它基於現實世界實體及其之間關係的概念。我們可以將現實世界場景對映到ER資料庫模型上。ER模型建立一組實體及其屬性、一組約束以及它們之間的關係。
ER模型最適合用於資料庫的概念設計。ER模型可以表示如下
實體 - ER模型中的實體是現實世界中的存在,它具有一些稱為屬性的特性。每個屬性都由其對應的值集定義,稱為域。
例如,考慮一個學校資料庫。這裡,學生是一個實體。學生具有各種屬性,例如姓名、ID、年齡和班級等。
關係 - 實體之間的邏輯關聯稱為關係。關係以各種方式與實體對映。對映基數定義了兩個實體之間的關聯數量。
對映基數
- 一對一
- 一對多
- 多對一
- 多對多
資料字典
資料字典是關於資料的集中式資訊集合。它儲存資料的含義和來源、它與其他資料的關聯、資料格式以供使用等。資料字典對所有名稱都有嚴格的定義,以方便使用者和軟體設計人員。
資料字典通常被稱為元資料(關於資料的資料)儲存庫。它與軟體程式的DFD(資料流圖)模型一起建立,並且在DFD更改或更新時應更新。
資料字典的需求
在設計和實現軟體時,透過資料字典引用資料。資料字典消除了任何歧義的可能性。它有助於在程式中使用相同的物件引用時保持程式設計師和設計人員的工作同步。
資料字典提供了一種在一個地方記錄整個資料庫系統的方法。使用資料字典進行DFD的驗證。
內容
資料字典應包含以下資訊
- 資料流
- 資料結構
- 資料元素
- 資料儲存
- 資料處理
資料流透過前面學習過的DFD來描述,並以描述的代數形式表示。
| = | 組成 |
|---|---|
| {} | 重複 |
| () | 可選 |
| + | 和 |
| [ / ] | 或 |
示例
地址 = 門牌號 + (街道/區域) + 城市 + 省份
課程ID = 課程編號 + 課程名稱 + 課程級別 + 課程成績
資料元素
資料元素包括資料和控制項、內部或外部資料儲存等的名稱和描述,以及以下詳細資訊
- 主名稱
- 輔助名稱(別名)
- 用例(如何以及在何處使用)
- 內容描述(符號等)
- 補充資訊(預設值、約束等)
資料儲存
它儲存資料從系統進入和退出系統的資訊。資料儲存可能包括 -
- 檔案
- 軟體內部。
- 軟體外部但在同一臺機器上。
- 軟體和系統外部,位於不同的機器上。
- 表格
- 命名約定
- 索引屬性
資料處理
資料處理有兩種型別
- 邏輯:使用者看到的
- 物理:軟體看到的