軟件設計概念-指導原則|Aspects|設計元素

軟件設計概念

思考

爲什麼需要進行軟件設計?
在進行軟件設計之前,我們應該確定哪些信息?

數據、界面、算法、加工邏輯 ……

在解決問題的時候,確定哪些關鍵元素需要通過設計來解決,如何制定軟件設計的藍圖。

設計的兩個層次

  • 高層次抽象

類似於概要設計。
類似於建築設計的框架設計。

  • 對框架進行細化

對具體的門、框的設計


設計以需求爲先導
設計類以分析類爲基礎,數據設計與分析設計緊密相關。

軟件設計的目標

  • 實現所有的顯式的需求,爲後面的軟件實現打下基礎。
  • 提高可讀可理解的指南,提供給後續的工作人員。
  • 提供完整的系統藍圖 解決一系列實現過程中需要面對的問題。

排課系統爲例
設計解決數據存儲的問題(排課信息保存)、界面顯示問題(排課及結果顯示)、算法邏輯問題(排課算法)等。這三個問題對應着數據設計、接口設計、算法設計三個問題。

設計過程的任務集

分析過程中涉及了7個任務
設計過程中涉及了以下6個任務

  • 數據設計
  • 軟件的體系結構設計 (定義框架,缺乏對構件的定義和描述)
  • 類設計(針對面向對象應用系統)

分析類和設計類的區別
設計類比分析類更接近於實現。設計類的定義更加具體。

  • 接口設計(外部接口&人機交互)
  • 組件設計(構件的定義和描述)
  • 部署設計(軟件元素分佈到物理元素上)

軟件設計的指導原則

  • 設計原則
  • 設計優化原則

設計基本理念

設計基本理念——抽象

概要設計的核心:確定應用系統的結構

架構的關鍵內容:

  • 模塊、組件

面向對象基本的組件——類

  • 聯繫

模塊和模塊的調用,類和類的協作

  • 數據

軟件架構即是便是構件並確定構件的通信和聯繫

模塊化設計原則

通過模塊化把龐大的應用系統進行功能的劃分,降低開發實現的難度,控制成本。
簡單說就是:降低複雜度
模塊化是實現軟件體系結構的一張方法

信息隱藏原則

每個模塊對其他模塊隱藏自己的設計決策,已到達內容細節發生變化的時候,外部受到的影響最小。

有助於提供系統內部的獨立性。

全局變量共用,導致錯誤的擴展。

步進式的細化原則

每一步都是對前一步的逐漸細化。

功能獨立原則

應對特徵:

  • 功能獨立
  • 避免和其他模塊的過量的交互

具體的衡量指標:

  • 內聚性

模塊、組件內部的聯繫緊密度
只完成一件事兒的時候,內聚性最高。

  • 耦合性

模塊和模塊之前聯繫的緊密程度。
耦合性越低越好。

重構原則

不改變外部結構的情況下 對內部進行優化,成爲重構。
從使用者的角度看,前後沒有變化。

Aspects

面向方面的編程AOP

關鍵:找到橫切關注點

橫切關注點:業務處理的主要流程是核心關注點,而將封裝的類剖開,找出類中公共的行爲,並抽取出來進行封裝。封裝的這部分就稱爲橫切關注點。

AOP的核心思想

將應用程序中的商業邏輯同對其提供支持的通用服務進行分離。

設計元素

  • 數據元素
  • 架構元素
  • 接口元素
  • 構件元素
  • 部署元素

元素由設計任務產生,可以明顯的看出其對應關係。

數據元素

  • 數據結構
  • 數據庫架構

設計一種數據結構,便於根據用戶提供的搜索詞快速檢索出含有該詞的文檔。

倒排索引

將每個單詞關聯到包含該單詞的所有文檔列表。

架構元素

面向對象確定的架構VS 結構化方法確定的架構

  • 面向對象: 架構基礎爲 類 (協作關係)
  • 結構化: 架構基礎爲 模塊 (調用關係)

接口元素

接口存在於構件、模塊、子系統等元素外部可見的操作說明

分類:

  • 人機接口 (界面)
  • 外部接口 (與外部應用系統的交互)

    作用
    連接兩個系統,對傳遞的數據進行安全控制、信息轉換、檢查。
    接口像緩衝器,使得兩個系統足夠兼容

  • 內部接口 (協作和調用)

構件元素

什麼是構件?

構件是具備特定功能,可配置、可替換的程序部件,該部件封裝了實現並暴露一系統接口。

構件VS架構元素 :構件和架構元素的關係?

多個架構元素可能組成一個構件。構件的力度可大可小。

構件級設計

破開構件,看構件裏面的 數據結構、算法等內容。

程序流程圖 (構件級設計中會涉及到)

描述構件內容的算法邏輯,表達程序“怎麼做”的問題。

算法的本質: 解決問題的一種方法。

部署元素

目的:表示軟件的功能和系統是如何分佈到物理環境中的。



本博客內容到此結束,歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章