軟體設計策略



軟體設計是一個將軟體需求概念化到軟體實現的過程。軟體設計將使用者需求視為挑戰,並試圖找到最佳解決方案。在軟體概念化的過程中,會制定一個計劃來找到實現預期解決方案的最佳設計。

軟體設計有多種變體。讓我們簡要學習一下它們。

結構化設計

結構化設計是將問題概念化為幾個組織良好的解決方案元素。它主要關注解決方案設計。結構化設計的優勢在於,它可以更好地理解如何解決問題。結構化設計還可以使設計人員更準確地專注於問題。

結構化設計主要基於“分而治之”的策略,即將一個問題分解成幾個較小的問題,然後分別解決每個小問題,直到解決整個問題。

小問題的解決是透過解決方案模組來實現的。結構化設計強調這些模組應該組織良好,以實現精確的解決方案。

這些模組按層次排列。它們相互通訊。良好的結構化設計總是遵循一些模組間通訊規則,即:

內聚性 - 將所有功能相關的元素分組。

耦合性 - 不同模組之間的通訊。

良好的結構化設計具有高內聚性和低耦合性。

面向函式的設計

在面向函式的設計中,系統由許多稱為函式的較小的子系統組成。這些函式能夠在系統中執行重要任務。系統被認為是所有函式的頂層檢視。

面向函式的設計繼承了結構化設計的一些特性,其中使用了分而治之的方法。

這種設計機制將整個系統劃分為較小的函式,透過隱藏資訊及其操作來提供抽象手段。這些功能模組可以透過傳遞資訊和使用全域性可用資訊來共享資訊。

函式的另一個特性是,當程式呼叫一個函式時,函式會改變程式的狀態,這有時是其他模組無法接受的。面向函式的設計在系統狀態無關緊要且程式/函式基於輸入而不是狀態的情況下效果很好。

設計過程

  • 整個系統被視為資料如何透過資料流圖在系統中流動。
  • DFD描述了函式如何改變整個系統的資料和狀態。
  • 整個系統根據其在系統中的操作在邏輯上被分解成較小的單元,稱為函式。
  • 然後詳細描述每個函式。

面向物件的設計

面向物件的設計圍繞軟體系統中涉及的實體及其特性而不是函式進行工作。這種設計策略側重於實體及其特性。整個軟體解決方案的概念圍繞參與的實體展開。

讓我們看看面向物件設計的重要概念

  • 物件 - 參與解決方案設計的所有實體都稱為物件。例如,人、銀行、公司和客戶都被視為物件。每個實體都有一些與其相關的屬性,並有一些方法可以對屬性進行操作。
  • 類 - 類是對物件的概括性描述。物件是類的一個例項。類定義了物件可以具有的所有屬性以及定義物件功能的方法。

    在解決方案設計中,屬性儲存為變數,功能透過方法或過程定義。

  • 封裝 - 在OOD中,將屬性(資料變數)和方法(對資料的操作)捆綁在一起稱為封裝。封裝不僅將物件的重要的資訊捆綁在一起,而且還限制了外部世界對資料和方法的訪問。這稱為資訊隱藏。
  • 繼承 - OOD允許類似的類以層次結構的方式堆疊起來,其中下級或子類可以匯入、實現和重用其直接父類的允許變數和方法。OOD的此屬性稱為繼承。這使得定義特定類和從特定類建立泛化類更容易。
  • 多型性 - OOD語言提供了一種機制,其中執行類似任務但引數不同的方法可以分配相同的名稱。這稱為多型性,它允許單個介面為不同型別執行任務。根據函式的呼叫方式,程式碼的相應部分將被執行。

設計過程

軟體設計過程可以被視為一系列明確定義的步驟。雖然它根據設計方法(面向函式或面向物件)而有所不同,但它可能涉及以下步驟:

  • 根據需求或先前使用的系統和/或系統序列圖建立解決方案設計。
  • 根據屬性特徵的相似性識別物件並將其分組到類中。
  • 定義類層次結構及其之間的關係。
  • 定義應用程式框架。

軟體設計方法

以下是兩種通用的軟體設計方法

自頂向下設計

我們知道,一個系統由多個子系統組成,它包含許多元件。此外,這些子系統和元件可能擁有自己的子系統和元件集,並在系統中建立層次結構。

自頂向下設計將整個軟體系統作為一個實體,然後根據某些特徵將其分解為多個子系統或元件。然後將每個子系統或元件視為一個系統,並進一步分解。這個過程持續進行,直到達到自頂向下層次結構中的系統最低級別。

自頂向下設計從系統的通用模型開始,並不斷定義其更具體的方面。當所有元件組合在一起時,整個系統就產生了。

當軟體解決方案需要從頭開始設計並且具體的細節未知時,自頂向下設計更合適。

自底向上設計

自底向上設計模型從最具體和最基本的元件開始。它透過使用基本或較低級別的元件來構建更高級別的元件。它不斷建立更高級別的元件,直到期望的系統不作為單個元件演變。隨著每個更高級別,抽象的量增加。

當需要從一些現有系統建立系統時,自底向上策略更合適,其中基本原語可以在新系統中使用。

自頂向下和自底向上方法單獨使用都不實用。相反,兩者良好的組合被使用。

廣告