軟體設計的基礎知識


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

為評估使用者的需求,軟體需求規格說明文件被建立,可是需要更具體的術語為編碼與實施軟體. 這個過程的輸出可直接用來為實施程式設計語言.

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

軟體設計水平

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

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

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

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

模組化

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

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

模組化的利用:

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

並行

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

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

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

比如

在文書處理器拼寫檢查功能 是一種軟體模組,它本身執行在旁邊的文書處理器.

耦合和內聚

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

凝聚

凝聚是定義影格內可靠性的模組的程度的量度. 更大的凝聚力是程式設計更好.

有七種型別的凝聚力–

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

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

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

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

  • 交際凝聚力 - 當模組的元素分組在一起,這依次與工作於相同的資料(資訊)執行時,它被稱為交際凝聚力.

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

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

耦合

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

有五個級別的耦合 -

  • 內容耦合 - 當一個模組可以直接存取或修改,或參考其他模組的內容,它被稱為含量水平耦合.

  • 公共耦合 - 當多個模組具有讀取和寫入存取一些全域性資料,它被稱為通用或全域性耦合.

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

  • 郵票耦合 - 當多個模組共用公共資料結構,並在它的不同部分工作,它被稱為時間戳耦合.

  • 資料耦合 - 資料耦合是當兩個模組通過傳遞資料(作為引數)來彼此互動。如果一個模組傳遞資料的結構引數,然後接收模組應該使用它的所有元件.

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

設計驗證

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

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

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

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