1. 程式人生 > >軟體工程 之 總體設計

軟體工程 之 總體設計

需求分析確定了系統的開發目標,下一步工作就是軟體設計。軟體設計可以進一步地分為兩個階段:總體設計和詳細設計。其中,總體設計又稱概要設計,即確定系統的具體實現方案、給出軟體的模組結構、編寫總體設計說明書。

下面就重點給大家講解一下模組獨立性和系統結構圖:

模組獨立性

    模組獨立性指每個模組只完成系統要求的獨立的子功能,並且與其他模組的聯絡最少且介面簡單.
    模組獨立性是指模組內部各部分及模組間的關係的一種衡量標準,由內聚和耦合來度量。



一、耦合

1) 非直接耦合
    如果兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和呼叫實現的,這就是非直接耦合。這種耦合的模組獨立性最強。但是,在一個軟體系統中不可能所有的模組之間都無任何連線。



2) 資料耦合
    如果兩個模組彼此間通過資料引數(不是控制引數、公共資料結構或外部變數)交換資訊,這種耦合稱為資料耦合。由於限制了只通過引數表傳遞資料,所以按資料耦合開發的程式介面簡單、安全可靠。資料耦合是鬆散的耦合,模組之間的獨立性比較強,在系統中必須有這類耦合。


3) 標記耦合
    如果模組之間通過引數表傳遞記錄資訊,就是標記耦合。由於模組傳遞的不是簡單變數,而是某一資料結構的子結構,所以在設計中應避免這種耦合。


4) 控制耦合
    如果模組傳遞的資訊中有控制資訊,就稱作控制耦合。這種耦合的實質是在單一介面上選擇多功能模組中的某項功能。因此,對被控制模組的任何修改,都會影響控制模組。控制耦合屬於中等程度的耦合,它增加了系統的複雜程度。



5) 公共耦合
    如果一組模組通過同一個公共資料環境相互作用,則它們之間的耦合稱為公共耦合。公共的資料環境可以是全域性資料結構、共享的通訊區、記憶體的公共覆蓋區、任何儲存介質上的檔案、物理裝置等。
    公共耦合常引發的問題:
    1.公共資料環境內某個資料的修改將會影響到所有訪問該公共環境的其他模組。
    2.無法控制各個模組對公共資料的存取,嚴重影響軟體模組的可靠性和適應性。
    3.公共資料名的使用,降低了程式的可讀性。



6) 內容耦合

    如果發生下列情形之一,兩個模組之間就發生了內容耦合。

    1.一個模組直接訪問另一個模組的內部資料。
    2.一個模組不能通過正常入口轉到另一模組的內部。
    3.兩個模組有一部分程式程式碼重疊(只可能出現在組合語言中)。
    4.一個模組有多個入口。



7) 外部耦合
    如果一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過引數表傳遞該全域性變數的資訊,則稱為外部耦合。




二、內聚
     內聚是一個模組內部各個元素彼此結合的緊密程度的度量。一個內聚程度高的模組應當完成軟體過程中的單一任務。它是資訊隱蔽概念的一種自然擴充套件。一般模組的內聚性也有7 種類型。


1) 偶然內聚
    如果一個模組各部分之間沒有關係,或者即使有關係,這種關係也是很鬆散的,則稱作偶然內聚。它是內聚程度最低的模組。例如,一些不同的模組中可能存在同一組語句,程式設計師為了節省空間,把它們抽出來組成一個新模組,這就出現了偶然內聚的模組。很明顯,這種模組不易修改和維護,通常情況下應避免構造這種模組。


2) 邏輯內聚
    如果一個模組中包含多個邏輯上相關的功能,每次被呼叫時,根據傳遞給該模組的判定引數來確定模組應執行的功能,稱作邏輯內聚。它屬於單入口多功能模組。例如,錯誤處理模組根據收到的出錯訊號顯示出不同的出錯資訊等。邏輯模組的修改也比較困難,有時對區域性功能的改動也會影響到全域性。


3) 時間內聚
    如果一個模組所包含的任務必須在同一時間內執行,稱作時間內聚,如初始化模組和終止模組。時間內聚比邏輯內聚好一些,它在一定程度上反映了程式的某些實質,但由於它把許多功能、任務組合在一起,給維護和修改帶來了困難。


4) 過程內聚
    如果一個模組內的處理是相關的,而且必須以特定次序執行,則稱為過程內聚。使用程式流程圖作為工具設計程式時,常常通過流程圖來確定模組的劃分,這樣得到的就是過程內聚模組。它相對時間內聚的程度更強一些,但由於僅僅為完整功能的一部分,所以內聚程度仍比較低。


5) 通訊內聚
    如果一個模組各功能部分都使用了相同的輸入資料,或產生了相同的輸出資料,則稱為通訊內聚。通常,通訊內聚模組是通過資料流圖來定義的。因為此模組中包含了許多獨立的功能,所以它的內聚程度高於過程內聚。但由於各功能部分使用了相同的I/O 緩衝區,從而降低了整個系統的效率。


6) 資訊內聚
    如果一個模組能夠完成多個功能,各個功能都在同一資料結構上操作,每一項功能有唯一的入口點,稱作資訊內聚。它可以看作是多個功能內聚模組的組合,並能達到資訊的隱蔽,增強了各模組的獨立性。


7) 功能內聚
    如果一個模組內各個部分都是完成某一具體功能必不可少的組成部分,稱作功能內聚。此模組間功能明確、耦合簡單,是最高程式的內聚。






SC圖(Structure Chart,結構圖)
系統結構圖(SC 圖)是SD(Structured Design,結構化設計方法)方法使
用的主要描述工具,用來顯示軟體的組成模組及其呼叫關係。

1.SC圖的組成符號
    SD 方法約定,用矩形框表示模組,用帶箭頭的連線表示模組之間的呼叫關係,在呼叫線的兩旁應標出傳入和傳出模組的資料流。下圖顯示了SC圖的6種模組。




2.SC圖中的模組呼叫

1) 簡單呼叫
    在 SC圖中,呼叫線的箭頭指向被呼叫模組。下圖中,允許模組A呼叫模組B和模組C,而不能相反。呼叫B 時,A 向它傳送資料流X 與Y,B向A返回資料流Z。呼叫C時,A 向C 傳送資料流Z。顯而易見,B 屬於變換模組,C 屬於漏模組。圖(b)是圖(a)的一種替代畫法。用附表列出在模組間傳送的資料流,以代替直接在呼叫線的兩側作標註。當SC 圖包含的資料流太多、畫面擁擠時,採用這種畫法可以減少錯讀和漏注。




2) 選擇呼叫
    如下圖所示,圖中用菱形符號表示選擇。左方菱形的含義是,模組A 根據其內部的判斷,來決定是否要呼叫模組B。右方的菱形則表示,A 按照另一判定的結果,選擇呼叫模組C 或者模組D。




3) 迴圈呼叫
    迴圈用疊加在呼叫線始端的環形箭頭表示。下圖含義是,模組A 將根據其內在的迴圈重複呼叫B、C 等模組,直至在A 模組內部出現滿足迴圈終止的條件為止。