軟件設計是將軟件需求概念化為軟件實現(xiàn)的過程。軟件設計以用戶需求為挑戰(zhàn),試圖找到最佳的解決方案。在對軟件進行概念化的同事,還制定了一個計劃,以找到實現(xiàn)預期解決方案的最佳設計。
軟件設計有多種辯題,讓我們簡要地研究它們:
結構化設計是將問題概念化為幾個組織良好的解決方案元素。它基本上與解決方案設計有關。結構化設計的好處是,它可以更好地了解問題是如何解決的。結構化設計也讓設計師更容易更準確地專注于問題。
結構化設計主要基于“分而治之”的策略,其中一個問題分成幾個小問題,每個小問題單獨解決,直到整個問題被解決了。
小問題通過解決方案模塊解決。結構化設計強調將這些模塊組織得井井有條,以實現(xiàn)精確的解決方案。
這些模塊按層次排列,相互交流。一個好的結構化設計總是遵循一些規(guī)則來進行多個模塊之間的通信,即:
一個好的結構化設計具有高內聚、低耦合的安排。
在面向功能設計中,系統(tǒng)由許多稱為功能的較小子系統(tǒng)組成。這些功能能夠執(zhí)行系統(tǒng)中的重要任務。該系統(tǒng)被視為所有功能的俯視圖。
面向功能設計繼承了結構化設計的一些特性,其中使用了分而治之的方法。
這種設計機制將整個系統(tǒng)分成更小的功能,通過隱藏信息及其操作提供抽象的手段。這些功能模塊之間可以通過信息傳遞和使用全球可用的信息來共享信息。
函數(shù)的另一個特點是當程序調用一個函數(shù),該函數(shù)更改了程序的狀態(tài),這有時是其他模塊所不能接受的。面向功能的設計是在系統(tǒng)無關緊要并且程序/功能針對輸入而不是針對狀態(tài)工作的情況下效果很好。
面向對象設計(OOD,Object Oriented Design)圍繞實體及其特性而不是軟件系統(tǒng)中所涉及的功能工作。這種設計策略側重于實體及其特征。軟件解決方案的整個概念圍繞著參與的實體展開。
讓我們看看面向對象設計的重要概念:
軟件設計過程可以看作一系列明確定義的步驟。雖然它因設計方法(面向功能或面向對象)而異,但它可能涉及以下步驟:
以下是軟件設計的兩種通用方法:
我們知道一個系統(tǒng)由多個子系統(tǒng)組成,它包含多個組件。此外,這些子系統(tǒng)和組件可以具有它們的子系統(tǒng)和組件的集合并且在系統(tǒng)中創(chuàng)建層次結構。
自頂向下設計將整個軟件系統(tǒng)作為一個實體,然后根據(jù)一些特性將其分解為多個子系統(tǒng)或組件。然后將每個子系統(tǒng)或組件視為一個系統(tǒng)并進一步分解。這個過程一直運行,直到達到自上而下層次結構中最低級別的系統(tǒng)。
自頂向下設計從系統(tǒng)的廣義模型開始,并不斷定義其中更具體的部分。當所有組件組成時,整個系統(tǒng)就存在了。
當軟件解決方案需要從頭開始設計并且具體細節(jié)未知時,自頂向下設計更合適。
自底向上設計模型從最具體和基本的組件開始。它繼續(xù)通過使用基本或較低級別的組件來組合更高級別的組件。它不斷創(chuàng)建更高級別的組件,直到所需的系統(tǒng)沒有演變?yōu)橐粋€單一的組件。隨著級別的提高,抽象的數(shù)量也會增加。
當需要從一些現(xiàn)有系統(tǒng)創(chuàng)建系統(tǒng)時,自底向上策略更適合,其中基本原語可以在較新的系統(tǒng)中使用。
自頂向下和自底向上的方法單獨使用都不實用。相反,將兩者結合在一起使用,是個不錯的方法。
更多建議: