二級公共基礎知識教程第3章下

字號:

3.3 結構化設計方法
    一、軟件設計的基本概念
    1、 軟件設計的基礎
    軟件設計是軟件工程的重要階段,是一個把軟件需求轉換為軟件表示的過程。軟件設計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預定的任務,即軟件設計是確定系統(tǒng)的物理模型。
    軟件設計的重要性和地位概括為以下幾點:
    ① 軟件開發(fā)階段(設計、編碼、測試)占據(jù)軟件項目開發(fā)總成本絕大部分,是在軟件開發(fā)中形成質量的關鍵五一節(jié);
    ② 軟件設計是開發(fā)階段最重要的步驟,是將需求準確地轉化為完整的軟件產(chǎn)品或系統(tǒng)的惟一途徑;
    ③ 軟件設計作出的決策,最終影響軟件實現(xiàn)的成?。?BR>    ④ 設計是軟件工程和軟件維護的基礎。
    從技術觀點來看,軟件設計包括軟件結構設計、數(shù)據(jù)設計、接口設計、過程設計。其中,結構設計是定義軟件系統(tǒng)各主要部件之間的關系;數(shù)據(jù)設計是將分析時創(chuàng)建的模型轉化為數(shù)據(jù)結構的定義;接口設計是描述軟件內部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信;過程設計則是把系統(tǒng)結構部件轉換成軟件的過程性描述。
    從工程管理角度來看,軟件設計分兩步完成:概要設計和詳細設計。概要設計(又稱結構設計)將軟件需求轉化為軟件體系結構、確定系統(tǒng)級接口、全局數(shù)據(jù)結構或數(shù)據(jù)庫模式;詳細設計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結構,用適當方法表示算法和數(shù)據(jù)結構的細節(jié)。
    軟件設計的一般過程是:軟件設計是一個迭代的過程;先進行高層次的結構設計;后進行低層次的過程設計;穿插進行數(shù)據(jù)設計和接口設計。
    2、 軟件設計的基本原理
    軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念。
    (1)抽象
    抽象是一種思維工具,就是把事物本質的共同特性提取出來而不考慮其他細節(jié)。軟件設計中考慮模塊化解決方案時,可以定出多個抽象級別。抽象的層次從概要設計到詳細設計逐步聊低。在軟件概要設計中的模塊分層也是由抽象到具體逐步分析和構造出來的。
    (2)模塊化
    模塊化是指把一個待開發(fā)的軟件分解成若干個小的簡單的部分。如高級語言中的過程、函數(shù)、子程序等。每個模塊可以完成一個特定的子功能,各個模塊可以按一定的方法組裝起來成為一個整體,從而實現(xiàn)整個系統(tǒng)的功能 .模塊化是指解決一個復雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。
    為了解決復雜的問題,在軟件設計中必須把整個問題進行分解來降低復雜性,這樣就可以減少開發(fā)工作量并降低開發(fā)成本和提高軟件生產(chǎn)率。但是劃分模塊并不是越多越好,因為這會增加模塊之間接口的工作量,所以劃分模塊層次和數(shù)量應該避免過多或過少。
    (3)信息隱蔽
    信息隱蔽是指,在一個模塊內包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。
    (4)模塊獨立性
    模塊獨立性是指,每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。是評價設計好壞的重要度量標準。衡量軟件的模塊獨立性作用耦合性和內聚性兩個定性的度量標準
    ○1內聚性:內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。內聚是從功能角度來度量模塊內的聯(lián)系。
    內聚有如下的種類,它們之間的內聚性由弱到強排列為:
    偶然內聚 邏輯內聚 時間內聚 過程 通信內聚 順序內聚 功能內聚
    內聚性是信息隱蔽和局部化概念的自然擴展。一個模塊的內聚性越強則該模塊的模塊獨立性越強。作為軟件結構設計的設計原則,要求生一個模塊的內部都具有很強的內聚性,它的各個組成部分彼此都密切相關。
    ○2耦合性:耦合性是模塊間互相連接的緊密程度的度量。
    耦合性取決于各個模塊之間接口的復雜度、調用方式以及哪些信息通過接口。耦合可以分為下列幾種,它們之間的耦合度由高到低排列為:
    內容耦合:如一個模塊直接訪問另一模塊的內容,則這兩個模塊稱為內容耦合。
    公共耦合:若一組模塊都有訪問同一全局數(shù)據(jù)結構,則它之間的耦合稱之為公共耦合。
    外部耦合:一組模塊都訪問同一全局簡單變量(而不是同一全局數(shù)據(jù)結構),且不通過參數(shù)表傳遞該全局變量的信息,則稱為外部耦合。
    控制耦合:若一模塊明顯地把開頭量、名字等信息送入另一模塊,控制另一模塊的功能,則為控制耦合。
    標記耦合:若兩個以上的模塊都需要其余某一數(shù)據(jù)結構子結構時,不使用其余全局變量的方式而是用記錄傳遞的方式,即兩模塊間通過數(shù)據(jù)結構變換信息,這樣的耦合稱為標記耦合。
    數(shù)據(jù)耦合:若一個模塊訪問另一個模塊,被訪問模塊的輸入和輸出都數(shù)據(jù)項參數(shù),即兩模塊間通過數(shù)據(jù)參數(shù)交換信息,則這兩個模塊為數(shù)據(jù)耦合。
    非直接耦合:若兩個模塊沒有直接關系,它們之間的聯(lián)系完全是通過主模塊的控制和調用來實現(xiàn)的,則稱這兩個模塊為非直接耦合。非直接耦合獨立性。