第三章 軟體設計規格書
軟體設計規格書(Software Design Description, SDD)文件亦被稱為「軟體設計說明書」,而有時更將「軟體設計規格書」分為「軟體設計需求書」與「軟體產品規格書」兩份文件。
軟體設計規格書主要在說明如何逐步設計軟體的型態項目,意即如何將軟體需求規格書中的需求,轉換並設計成為軟體組件及軟體元件。
(一)文件大綱
1、前言
(1)文件目的 (2)名詞解釋與縮寫符號(B、C) (3)參考文件資料(B、C) 2、軟體設計規劃 (1)設計方法與工具 (2)軟體組織架構 (3)系統流程圖 (4)軟體元件設計 (5)使用者介面設計 (6)資料結構設計 (7)資料庫設計 (8)例外處理 3、規格追溯表(B、C) 4、附錄
(二)分項說明
1、前言
(1)文件目的
摘要描述本文件之目的與內容。
(2)名詞解釋與縮寫符號(B、C)
描述在本文件中所使用到的特殊名詞、縮寫符號與簡稱。定義用字需解釋清楚、縮寫符號則需說明全文及其意義,並以英文字母順序表列。
(3)參考文件資料(B、C)
參考資料項目為一般國際標準文件所必需,記載並說明此軟體設計規格書中所參考引用之文獻及範例,軟體專案之文件,組織及作業手冊之編號、標題、改訂版、與日期,及其他相關的文件等。
2、軟體設計規劃
(1)設計方法與工具
說明系統設計將採用的方法,例如:分散式、主從式(Client-Server)、即時(Real-Time)架構或物件導向,及系統設計的細節,例如:由下而上(Bottom-up)、由上而下(Top-down)、瀑布式(Waterfall)或重復式(Iteration),以及所使用的工具,如Rational-Rose, Visio
2002等。圖4.4.1為由下而上的發展方式,即從低階的元件開始向上逐步整合之設計方式。
圖4.4.2為由上而下的發展方式,即從主程式開始向下做細緻化之設計方式:
(2)軟體組織架構
可再分為下列幾個項目敘述:
A.物件模式
B.利用物件模式(Object Models)圖說明軟體組織架構中有那些物件,內含那些功能,及物件之間的關係。圖4.4.3為某一銷售系統局部物件模式之例子,其中Customer、Payment、Invoice及Receipt等為物件,其間的關係則以有向之虛線表示。
C.控制模式
利用控制模式(Control Models)說明程式運作中各模組之間呼叫和回復的關係,例如:圖4.4.4中Routine 1呼叫Routine 1.1時傳遞x參數給Routine 1.1,而Routine 1.1執行完後回傳參數y給Routine 1。
(3)系統流程圖
一般可再分為下列幾種項目表示:
A.循序圖
利用循序圖(Sequence Diagram)說明程式/模組之間呼叫和回復的秩序關係,例如,圖4.4.5為一多重代理伺服器系統之循序圖,其中第一模組(Browser)呼叫第二模組(Output-buffer)後,它又繼續呼叫第三模組(Check-the-fast-proxy)等。
B.狀態圖
利用狀態圖(State Diagram)說明程式執行中狀態的變化,例如:圖4.4.6為一天氣預報系統之狀態圖,其中程式在Startup( )後從Shutdown狀態進入Waiting狀態,除了Clock能觸發使狀態再次變化到Collecting以外,也可以在分別收到Calibrate( )、Test( )、reporWeather( )、Shutdown( )等四個指令之後,讓系統分別進入另外四個不同的狀態。
C.流程圖
以流程圖(Data Flow Diagram, DFD)說明程式執行中,各軟體元件/模組之間資料流關係,圖4.4.7為一個飛機訂票及check-in之資料流程圖的例子。
(4)軟體元件設計
可再分為下列幾個項目說明:
A.元件之功能
描述軟體各元件之功能,例如:A元件若輸入參數x,執行時則會在螢幕上顯示x*x之值。
B.元件之輸入
描述軟體各元件輸入的資料型態、範圍(例如,1~150)及角色/意義(例如,要求Process Sleep之時間)等相關資料。
C.元件之輸出
描述軟體各元件輸出的資料型態、範圍及用途(例如,當作下一次呼叫時之輸入參數值,假設該功能為遞迴函式;另一個例子是輸出等於0代表輸入之參數正確,否則為不正確)等相關資料。
D.演算法
介紹有助於瞭解程式及其處理過程之重要演算法,例如,快速排序或二元搜尋等演算法。
(5)使用者介面設計
說明使用者各項介面的特徵,例如,以文字模式或圖形為介面,從檔案或鍵盤輸入,而輸出形式是螢幕或檔案;此外,並需說明各使用者介面之特色,例如,介面有那些選單(Menu),有那些按鈕,浮動選單(按滑鼠右鍵產生之選單),樹狀目錄,使用者可否做拖曳動作等。
(6)資料結構設計
介紹有助於瞭解程式,或本軟體使用到的重要資料結構,例如:Hash,Stack,Link-list及一些程式設計人員自定的資料結構等。
(7)資料庫設計
說明將採用那一種概念模式(Conceptual Model)來表示資料庫如ER模式,未來將採用那一種資料模式之資料庫,例如:物件導向、關聯式、階層式或網路式,及那一個廠牌、型號及版本之資料庫管理系統,如利用Oracle 9i來建立資料庫。
(8)例外處理
透過文字、程式碼及流程圖說明在軟體程式中所採用的例外處理設計,例如,當程式中遇到分母為零、陣列索引值為負值、I/O中斷、檔案不正常結束、記憶體不足、找不到檔案、錯誤的數字格式或URL(Uniform Resource Locator),會有那些考量或設計處理方式。例如,可以產生一個新的畫面顯示錯誤訊息,並讓系統回覆到發生例外處理前之狀態,圖4.4.8為一處理例外(分母為零)的案例。
3、規格追溯表(B、C)
規格追溯表係對應於系統規格及軟體需求之規格表,在軟體設計文件中表示規格設計之對照表,以顯示系統之需求規格實際對應
到整個軟體發展項目中,再對應到軟體組件與軟體元件,而軟體元件也可以之反向追溯至原始軟體需求規格中。表4.4.1為和平公園售票系統之規格追溯表的一部份。
表4.4.1和平公園售票系統之規格追溯表的一部份
項目編號 需求項目 設計模組名稱 是否符合需求項目
1 售票、票價提示及交班功能 Sell Ticket ╳
1.1 提供門票及遊艇票之售票、退票及印票功能,以利售票人員進行售票作業 Ticket Support ╳
1.2 需能自動顯示門票及遊艇票總價金額,以提示遊客 自動顯示門票及遊艇票總價金額 ○
1.3 需提供交班之功能,以利售票人員迅速交班 無 ╳
2 車輛偵測提示及管制功能 車輛偵測提示及管制功能 ○
2.1 需能自動偵測進入之車輛,並提示售票人員 無 ╳
2.2 需提供車輛攔阻及放行功能,以防止車輛硬闖之跳票行為 車輛攔阻及放行功能 ○
4、附錄
附錄通常是一個或多個比較完整的文件(例如:圖表、機密資料),用以輔助說明主體文件(此處是軟體設計規格書)。附件應以英文字母(A,B,….等)或國字(一,二,….等)順序排列,附件可以分開發行及分開存放,以便於文件之維護,且儘可能在文件的文體中參考到每一附件。