軟件工程(五)軟件分析和軟件設計

軟件分析

用戶和開發者都會關心軟件的需求,都希望通過需求分析弄清楚 “需要軟件做什麼”,但他們理解問題的角度卻各不相同。一般來說,用戶只注重軟件的外在表現,即軟件需求。開發者更加關注軟件的內部邏輯,稱爲軟件分析。前者從軟件使用者角度出發,而後者則是從軟件開發者的角度出發

這裏首先介紹以下軟件分析這一過程,具體採用什麼方式實現這一過程,在之後的文章會給出答案


軟件設計

軟件設計的任務是將分析階段建立的分析模型轉變爲軟件設計模型。這一過程需要細化解決方案的可視化設計模型,確保設計模型最終能平滑過渡到程序代碼。分析模型強調軟件應該做什麼,設計模型回答該怎麼做的問題

特點

  1. 模塊與構件

    模塊是一個擁有明確輸入、輸出和特性的程序實體。如果模塊的所有輸入都是實現功能必不可少的,所有輸出都有動作產生,即成爲定義明確的模塊。對象也是一種模塊,由於對象自我封閉的特點,因而更容易在軟件設計中被重複使用,這種可重複使用的軟件組件稱爲軟件構件

  2. 抽象與細化

    抽象是控制複雜性的基本策略之一。抽象是分層次的,在軟件的抽象層次中,最高層抽象程度最高,若需要系統某部分細節,可移向較低層次的抽象
    軟件設計其實就是在不同抽象級別考慮和處理問題的過程。首先在最高級抽象級別上,概括問題解的形式;然後不斷具體化,降低抽象級別;最後在最低的抽象級別上給出實現問題的解,即源代碼。在由高級抽象到低級抽象轉換的過程中,要進行一系列過程抽象和數據抽象,這就是細化
    過程抽象是把完成一個特定功能的動作序列抽象爲一個過程名和參數表,然後通過指定過程名和實際參數調用此過程;數據抽象把一個數據對象的定義抽象爲一個數據類型名,用此類型名可定義多個具有相同性質的數據對象
    細化的實質就是分解。在逐步細化中,特別強調這種分解的 “逐步” 性質,即每一步分解僅較其前一步增加少量的細節

  3. 信息隱藏

    模塊內部的數據和過程,對不需瞭解的數據和操作進行隱藏。只允許爲了完成軟件總體功能而必須在模塊間交換的信息進行傳遞

  4. 軟件複用

階段

傳統的設計任務通常分兩個階段完成。第一個階段是概要設計,包括結構設計和接口設計,並編寫概要設計文檔;第二個階段是詳細設計,確定各個軟件部件的數據結構和操作,產生描述各軟件部件的詳細設計文檔。每個階段完成的文檔都必須經過複審

  1. 數據設計

    將分析階段創建的信息模型轉變爲軟件所需數據結構

  2. 體系結構設計

    定義軟件主要組成部件之間的關係

  3. 接口設計

    描述軟件內部、軟件和接口系統之間以及軟件與人之間如何通信

  4. 過程設計

    將軟件體系結構的組成部件轉變爲對軟件組件的過程性描述

模塊化設計

模塊化設計的目的是按照規定原則把大型軟件劃分爲一個個較小的,相對獨立但相互關聯的模塊。分解和模塊獨立性是實現模塊設計的重要指導思想

  1. 分解

    將系統分解成它的組成部分,成爲模塊、對象或構件

  2. 模塊獨立性

    獨立性可以從兩個方面來度量,即模塊本身的內聚和模塊之間的耦合。前者指模塊內部各個成分之間的聯繫,所以也稱塊內聯繫或模塊強度;後者指一個模塊與其他模塊間的聯繫,所以又稱塊間聯繫。模塊獨立性越好,內聚越強,耦合越弱

    1. 內聚

      內聚是從功能角度對模塊內部聚合能力的量度。按照從弱到強可分爲七類

      低內聚包括左側三類模塊:偶然性模塊、邏輯性模塊和時間性模塊。偶然性模塊,塊內各組成成分在功能上互不相關。邏輯性模塊,由若干個邏輯功能相似的成分組成。時間性模塊,這類模塊所包含的成分,是由相同的執行時間而聯結在一起的

      中內聚包括第四、第五類模塊:過程性模塊和通信性模塊。當一個模塊中包含的一組任務必須按照某一特定的次序執行時,就稱爲過程性模塊。通信性模塊,這類模塊的標誌是,模塊內部的各個成分都使用同一種輸入數據,或者產生同一個輸出數據,它們靠公用數據而聯繫在一起

      高內聚模塊包括最右端的兩類:順序性模塊和功能性模塊。順序性模塊,這類模塊中的各個組成部分是順序執行的,在通常情況下,上一個處理框的輸出就是下一個處理框的輸入;功能性模塊,在這類模塊中,所有的成分結合在一起,用於完成一個單一的功能

    2. 耦合

      耦合是對軟件內部塊間聯繫的度量。同樣按照從弱到強可分爲七類

      弱耦合包括左側三種情況。如圖所示,模塊1與2爲同級模塊,相互之間沒有信息傳遞,屬於非直接耦合。模塊3、4都是模塊1的下屬模塊。模塊1調用它們時,可通過參數表與它們交換數據。如果交換的都是簡單變量,便構成數據耦合;如果交換的是數據結構,便構成特徵耦合

      控制耦合是中等強度的耦合。此時在模塊間傳遞的信息不是一般的數據,而是用過控制信號的開關值或標誌量。因此,控制模塊必須知道被控模塊的內部邏輯,從而增強模塊間的相互依賴

較強耦合外部耦合、公共耦合兩類,若允許一組模塊訪問同一個全局變量,可稱它們爲外部耦合;若允許一組模塊訪問同一個全局性的數據結構,則稱之爲公共耦合

最強的一類耦合是內容耦合。如果一個模塊可以直接調用另一模塊中的數據,或者允許一個模塊直接轉移到另一個模塊中去,就稱它們間的耦合爲內容耦合

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章