軟體設計是一個過程概念化的軟體需求轉化為軟體實現。軟體設計以使用者的需求和挑戰,並試圖尋找最佳的解決方案。軟體被概念化尋找最佳的設計實現預期的解決方案.
有軟體設計的多個變體。讓我們簡單地讀那些:
結構化設計是一個概念化的問題到解決方案的幾個組織良好的元素。它基本上是涉及該解決方案的設計。結構化設計的好處是把它提供更深入的了解這個問題正在得到解決。結構化的設計也使設計師更準確地集中在這一問題變得更為簡單.
結構化的設計主要是基於“分而治之”的策略,其中一個問題分成幾個小問題,每個小問題單獨解決,直到整個問題就解決了.
通過解決方案模組解決了小塊的問題。結構化的設計重點這些模組很好組織為了實現精確解.
在層次結構中排列這些模組。它與對方溝通。一個好的結構化的設計即始終遵循一些規則的多個模組之間的通訊 -
凝聚力 - 所有的功能相關的元素進行分組.
耦合 - 不同模組之間的通訊.
一個好的結構化設計具有高內聚低耦合的安排.
在面向功能的設計中,該系統由許多較小的子系統稱為函式組成。這些函式是能夠在系統中執行的重大任務。該系統被認為是頂檢視的所有功能.
功能導向設計繼承了一些效能的結構化的設計分而治之的方法使用.
這種設計機制將整個系統分成更小的函式,通過隱瞞的資訊和他們的操作提供抽象的方法。這些功能模組可以共用資訊相互之間通過資訊的傳遞與全球範圍內使用可用的資訊.
函式的另一個特點是程式的當一個程式呼叫一個函式,該函式更改,有時是程式的不能接受由其他模組的狀態。功能導向設計作品好在哪裡並不重要的系統狀態和程式/功能工作的輸入,而不是一種狀態.
物件導向設計作品周圍的實體和其特性而不是在軟體系統中涉及到的功能。這種設計戰略重點實體和其特點。軟體解決方案的整個概念是圍繞經營實體.
讓我們看看物件導向設計的重要概念:
物件 - 解決方案設計中涉及的所有實體被都稱為物件。例如,人、 銀行、 公司和客戶都視為物件。每個實體都有一些與之關聯的屬性並有一些方法要在屬性上執行.
類 - 一類是物件的普遍描述。物件是類的範例。類定義了所有的屬性,這些屬性的物件可以具有與方法,它定義了物件的功能.在該解決方案的設計,屬性被儲存為變數和功能都通過的方法或程式來定義.
封裝 - 在物件導向的設計,(資料變數) 的屬性和方法 (資料操作)捆綁在一起被稱為封裝。封裝不僅捆綁物件的重要資訊,而且還會限制存取的資料和方法從外面的世界。這就被所謂的資訊隱藏.
繼承 - 物件導向的設計允許在層次結構的方式堆積越低類似類或子類可以匯入、 執行和重新使用允許的變數和方法從他們眼前的超級類。物件導向設計的這種性質被稱為繼承。這使得它更容易來定義特定的類,從具體建立廣義的類.
多型性 - 物件導向設計語言提供一種機制在哪裡執行類似任務的但在引數中,會發生變化的方法可以分配相同的名稱。這被稱為多型性,它允許一個單一的介面執行任務的不同型別。取決於如何來呼叫該函式,獲取執行各自部分的程式碼.
軟體設計過程可以看作一系列定義良好的步驟。雖然設計方法不同而有所不同 (面向功能或物件導向的但它可能有涉及的下列步驟:
這裡有兩個通用的方法進行軟體的設計:
我們知道一個系統由多個子系統組成,它包含多個元件。此外,這些子系統和部件可能有其發病的子系統和元件和系統中建立的層次結構.
自頂向下設計需要整個軟體系統作為一個實體,然後將其分解,以實現一個以上的子系統或部件的基礎上的一些特徵。每個子系統或部件然後當作一個系統,並進一步分解。這個過程不斷執行,直到系統中的自頂向下的層次結構的最低階別的實現.
自頂向下的設計開始,系統的通用模型,並不斷定義它的更具體的部分。當所有的元件組成,整個系統開始存在.
自上而下的設計更適合當軟體解決方案需要從頭開始設計和具體細節是未知的.
自下而上的設計模式從最具體的和基本的組成部分。它繼續與使用基本或更低階別的元件組成成分較高水平。它不斷創造更高層次的元件,直到所需的系統沒有演變為一個單一的組成部分。與每個台階,抽象的量增加.
自下而上的策略是更合適的系統需要從一些現有的系統,其中所述基本圖元可以在新的系統中使用時建立.
無論是自上而下和自下而上的方法是不實際的個別。相反,兩者很好地結合起來使用.