軟件設計的基礎知識

軟件設計是一個過程轉換用戶需求變成一些合適的形式,這助於程序設計者軟件編碼與實現.

爲評估用戶的需求,軟件需求規格說明文檔被創建,可是需要更具體的術語爲編碼與實施軟件. 這個過程的輸出可直接用來爲實施編程語言.

在設計軟件生命週期軟件設計是第一步把會轉道從問題域到解決方案域. 它指定如何滿足軟件規格需求.

軟件設計水平

軟件設計產生三個層面的結果:

  • 建築設計 - 建築設計是系統最高抽象的版本。它確定了軟件與許多組件相互交互的系統。在這個層面上,設計師得到建議的解決方案領域的想法.

  • 高層次的設計 - 高層次的設計打破了建築設計的「單一實體的多個組件的概念融入子系統和模塊的不太抽象視圖表示彼此間的互動。高層次設計的重點是如何在系統連同其所有的零部件都可以在模塊的形式實現。它識別每個子系統的模塊化結構和它們之間的相互關係和相互作用.

  • 詳細設計 - 詳細設計是前兩個設計的子系統而且實施過程的一部分. 它是更詳細關於軟件模塊和實施過程. 它描述了每個模塊的邏輯結構並接口通信與其他的模塊.

模塊化

軟件模塊化是一種技術爲軟件系統分成多個離散和獨立的模塊,其預期能夠執行任務的)獨立地. 這些模塊可以工作好像整個軟件的基本結構. 設計者傾向於設計模塊以這樣的方式,它可以單獨地執行或獨立地編制.

模塊化設計遵循的規則分治的解決問題的策略,這是因爲軟件模塊化設計有許多其他好處.

模塊化的利用:

  • 較小的元件更易於維護
  • 程序可以分開按照功能性方面
  • 所需的抽象水平可以帶來在程序
  • 具有高內聚的組件可以再次重複使用
  • 併發執行是可能的
  • 從安全性方面的期望

併發

所有的軟件的目的是按順序執行的. 在任何特定時間的編碼指令將被執行了一個又一個使用程序只有一個部分. 軟件有多個模塊但只有一個模塊可以發現活躍在執行任何時間.

在軟件設計過程中併發進程通過把軟件分成多個獨立的執行單元來實現, 像模塊和並行執行. 換句話說,併發性提供能力軟件同時執行的代碼的多個部分.

程序員和設計師必須認識那些模塊需要平行執行.

比如

在文字處理器拼寫檢查功能 是一種軟件模塊,它本身運行在旁邊的文字處理器.

耦合和內聚

當一個軟件程序模塊化,其任務是根據某些特徵劃分爲若干模塊。正如我們知道模塊的設置放在一起實現一些任務的說明。有許多方法來測量模塊設計質量和模塊之間的接口. 這些措施被稱爲耦合和內聚.

凝聚

凝聚是定義幀內可靠性的模塊的程度的量度. 更大的凝聚力是程序設計更好.

有七種類型的凝聚力–

  • 巧合凝聚力 - 這是意外的和隨機的凝聚,這可能是破程序分成較小的模塊,爲了模塊化的結果。 因爲是計劃外的,它可能會成爲混亂的程序員,一般不接受的.

  • 邏輯內聚 - 當把邏輯上劃分的元素組合成一個模塊,它被稱爲邏輯內聚.

  • 顳凝聚力 - 當模塊的元素組成,使得它們在差不多同一時刻處理的,它被稱爲顳凝聚力.

  • 程序上的凝聚力 - 當模塊的元素分組在一起,這依次以執行一個任務執行時,它被稱爲程序性凝聚.

  • 交際凝聚力 - 當模塊的元素分組在一起,這依次與工作於相同的數據(信息)執行時,它被稱爲交際凝聚力.

  • 順序內聚 - 當模塊的元素進行分組,因爲一個元件的輸出作爲輸入到另一個等等,它被稱爲連續的凝聚力.

  • 凝聚功能 - 它被認爲是最高程度的凝聚力,並且被高度期望。在功能內聚模塊的元素進行分組,因爲它們都以一個良好定義的函數貢獻。它也可以被重複使用.

耦合

耦合是定義的跨可靠性的程序模塊之間的電平的測量。它告訴在什麼水平的模塊干擾和相互影響。如果耦合是低,該程序是更好.

有五個級別的耦合 -

  • 內容耦合 - 當一個模塊可以直接訪問或修改,或參考其他模塊的內容,它被稱爲含量水平耦合.

  • 公共耦合 - 當多個模塊具有讀取和寫入訪問一些全局數據,它被稱爲通用或全局耦合.

  • 控制耦合 - 兩個模塊被稱爲控制耦合,如果其中的一個判定其他模塊的功能,或改變其執行流程.

  • 郵票耦合 - 當多個模塊共享公共數據結構,並在它的不同部分工作,它被稱爲時間戳耦合.

  • 數據耦合 - 數據耦合是當兩個模塊通過傳遞數據(作爲參數)來彼此交互。如果一個模塊傳遞數據的結構參數,然後接收模塊應該使用它的所有組件.

理想情況下,無耦合被認爲是最好的.

設計驗證

軟件設計過程的輸出是設計文檔,僞代碼,詳細邏輯圖,過程圖和所有功能或非功能性要求的詳細描述.

取決於上述所有輸出,下一階段是軟件的實現

這是必要在進行到下一個階段之前驗證輸出。 最好是在早期階段檢測任何錯誤,否則它可能無法檢測到開始測試軟件。 如果設計階段的輸出是正規表示法的形式,應該用於驗證相關的工具,否則全面的設計審查,可用於驗證和確認.

通過結構化的驗證方法,評審可以檢測到可能受俯瞰某些情況下造成的缺陷。一個好的設計評論是針對優秀的軟件設計,精度和質量很重要.