您的位置: 首頁 > 新聞中心

    系統架構師之——軟件架構設計

    作者:威海網絡公司 日期:2020-01-14 點擊:137

    一 架構是什么

    架構是什么?

    IEEE 1471的定義是“一個系統的組織來實現特定的功能或一組功能組件的集合。術語“系統”包括單個應用程序,傳統意義上的系統,子系統,系統系統,產品線,產品系列,整個企業以及其他感興趣的集合”。

    一個系統的誕生是一個軟件過程,即將需求轉換成實現的過程,是軟件的生命周期。而軟件生命周期的模型,稱之為軟件過程模型。如:

    • -瀑布模型
    • -增量模型
    • -演化模型
    • -噴泉模型
    • -基于架構的開發模型
    • -形式化方法模型
    • 而,軟件過程= 計算過程+架構設計,如下圖
    系統架構師之——軟件架構設計

    對于構件的組織與結構對于架構的描述有架構描述語言(ADL)描述。各種組織開發了不同的ADL,例如UML。常見的ADL元素是連接器,組件和配置。

    例如:

    架構定義描述組件結構:


    系統架構師之——軟件架構設計


    架構定義描述行為:


    系統架構師之——軟件架構設計


    工作、學習中我們經常會碰到“系統架構”“軟件架構”這兩個詞,很多人認為他們是一樣的,其實不然!系統=多個組件+子系統。

    系統架構師之——軟件架構設計

    本文適用人群:

    • -經常與信息化系統打交道的同學
    • -需要經常寫方案的同學
    • -項目管理,系統架構
    • -做二次開發的程序員等
    • -即將成為不想被技術忽悠的企業高管、老板等
    • -軟考高級系統架構師
    • -開發入門小白,編程開發初學者
    • 更多資訊請關注公眾號:freo-studio

    二架構原則與風格

    1-架構風格/架構模式是什么?

    軟件架構風格也稱之為軟件架構模式(有人認為架構模式與架構風格有區別,其實目的是一致的,一般不分開),是用于組織組件、結構構成的原理,依據結構組織定義了抽象框架。

    軟件架構模式負責的功能就是:

    • 組件與連接器的清單及組合規則
    • 針對常見問題提供解決方案,完善分區塊與重構
    • 描述組件與連接器的接口方式
    • 組件要定義要:通用接口、可重構、可替換、低耦合、模塊化
    • 連接器定義要:通用性、低耦合、健壯性

    總而言之,架構風格定義描述了系統,并給定約束和清單列表(component+connector)。

    基本上一個軟件系統都是基于多種架構風格模式組合而成,而每一種架構風格都是針對不同的系統需求目錄而實現的。這些常見的系統架構目錄需要包含以下內容:

    • 一組組件component需要進行系統函數調用請求
    • 一組連接器connector需要支持不同組件之間的通信、調用、同步、異步操作
    • ADL描述需要包含如何集成組件以形成系統
    • 運行時所有關系組件component的拓撲分布描述圖

    2-常用架構設計方法有哪些?

    通常針對不同的場景區域有不同的架構設計,參考如下:


    系統架構師之——軟件架構設計


    2-常用架構風格有哪些分類?

    • 數據流風格:批處理序列、管道/過濾器
    • 調用/返回風格:主程序/子程序、面向對象風格、層次結構
    • 獨立構件風格:進程通信、事件系統
    • 虛擬機風格:解析器、規則系統
    • 倉庫風格:數據庫系統、超文本系統、黑白系統

    而根據企業架構分類分有:

    • 業務架構
    • 應用軟件架構
    • 信息架構:數據-存儲,資源管理
    • 信息技術架構:軟硬件塊組織,涵蓋企業全部信息化

    經典架構風格

    • 管道/過濾器:數據流的方式,如UnixShell程序、傳統編譯器

    系統架構師之——軟件架構設計


    特點優點:

    -使得構件具有良好的隱蔽性、高內聚、低耦合

    -運行設計將IO行為看成多個過濾器行為的合成

    -支持軟件重用

    -系統維護簡單

    -允許對吞吐量、死鎖等屬性進行分析

    -支持并行執行

    缺點缺陷:

    -進程形成批處理結構,增量式處理數據

    -不適合處理交互應用

    -數據傳輸沒有通用標準,導致每一個過濾器解析合成數據導致系統性能下降,且導致過濾器復雜。

    • 面向對象風格:數據的表示與行為封裝在抽象類型/對象中

    特點優點:

    -對象隱藏其數據、行為表示,操作方便,互不影響

    -設計可以將數據存取問題分割成為交互的代理程序集合

    缺點缺陷:

    -對象更新導致的連鎖問題,多次調用導致更新問題

    • 基于事件的隱式調用:廣播、訂閱、注冊中心

    特點優點:

    -軟件重構方便

    -系統迭代、更新方便

    缺點缺陷:

    -放棄了對系統計算的控制,下游調用的不可控、不確定是否對其他構件的影響,需要增加接口發布版本控制來保證

    -數據交互問題,全局性資源調用數據交互不便

    -過程依賴于被觸發事件的上下文

    • 分層系統:下層服務層、下層客戶層
    • 倉庫系統及知識庫:黑板系統
    • C2組件連接器風格:一條繩上多個螞蚱
    • C/S客戶機服務器風格
    • B/S瀏覽器服務器風格
    • 多層架構風格:三層架構MVC模型
    • 富互聯網應用風格:RIA/Flex/Silverlight等
    • 正交軟件架構風格Orthogonal
    • 層次消息總線架構Hierarchy Message Bus ,HMB
    • 特定領域軟件架構DSSA:垂直域、水平域

    3-架構設計的整體過程?

    主要過程是對系統進行分解成為一個個組件及其交互,以滿足非功能、功能性需求。架構設計一般是三部分:硬件架構、軟件架構、系統架構,整體過程如下:


    系統架構師之——軟件架構設計


    大致需要經歷以下幾個步驟:

    Step 1 業務需求及問題的理解及分析

    • 關鍵性的一步,影響到后續的軟件質量
    • 沒有理解關鍵性問題,不可能提出有效的解決方案
    • 項目失敗的關鍵問題所在于此

    Step 2 確定設計元素和彼此的關系

    • 為系統邊界、上下文定義好基線baseline
    • 根據需求進行分解組件

    Step3 評估架構設計

    • 列好系統質量相關屬性的要求,確定評估方向,方便評估
    • 如果沒有做質量屬性評估,架構設計工作可能會被推翻重來

    Step4 轉換實現架構設計

    • 架構評估后進行,進行優化、分解、轉換成ADL
    • 關注于設計解決方案
    • 利用運算符、應用設計描述符來標識,如分解、復用、壓縮、抽象
    • 反復遞歸評估設計

    4-架構設計一般要遵守什么原則?

    針對架構設計好壞的標準,我們需要遵守一定的設計原則,這樣設計出來的系統架構才能更友好、更優雅,才是好架構。原則一般分兩部分:架構原則+設計原則。

    架構原則主要是針對宏觀的,整體項目的把控原則,為保證項目交付;設計原則是針對軟件設計部分的原則,對整體編碼程序的把控原則,為保證程序交付。

    主要架構原則有:

    • 用得久不如用的好:不要想著設計架構使得一個系統能很久很多年,要想著設計一個架構能使得系統更容易適應業務變化而變化;
    • 需要風險評估、模型分析:利用可視化設計工具如UML進行需求分析與決策設計、矛盾沖突分析
    • 利用模型、視圖作為交流協作的工具:理解關鍵的技術塊和區域是最容易出差
    • 使用增量、迭代開發模型(方法)

    主要設計原則有:

    • 關注聯系分離,將系統劃分為各個組件,避免重疊沖突。高內聚、低耦合,避免組件之間過依賴高
    • 功能單一性原則,每一個模塊提供特定功能。方便模塊之間整合、用戶使用
    • 透明性原則,組件之間、模塊之間應該透明,減少依賴
    • 大量設計前需要細化
    • 避免功能重復交叉
    • 重構時,盡量組合,而不是繼承
    • 邏輯層組件做好組件的區分
    • 做好各個層次之間的通信協議、數據格式
    • 系統服務組件應該抽象化
    • 做好錯誤異常處理機制
    • 做好日志審計跟蹤機制
    • 命名規則規范化

    三 架構模型

    1-架構模型種類

    傳統分類如下:

    • 結構模型
    • 框架模型
    • 動態模型
    • 過程模型
    • 功能模型

    各有優缺點,集合其優點一哥們Kruchten提出“4+1”視圖模型。也就是我們現在常用的架構模型。其模型圖如下:


    系統架構師之——軟件架構設計


    邏輯視圖如:


    系統架構師之——軟件架構設計


    開發視圖如:


    系統架構師之——軟件架構設計


    進程視圖如:


    系統架構師之——軟件架構設計


    物理視圖如:


    系統架構師之——軟件架構設計


    而隨著云技術云服務的發展,傳統的架構理念已經無法滿足我們系統需求。而根據Mark Richards《軟件架構模式》最新的架構模型分類為:

    • 分層架構
    • 微內核架構
    • 微服務架構模型
    • 事件驅動架構
    • 基于空間的架構
    系統架構師之——軟件架構設計


    3-如何根據實際情況選擇適合自己的架構模型?

    軟件架構的模型涉及到影響系統的質量、性能、可維護性和整體性、安全性等,針對側重點進行取舍。不考慮常見問題和長期后果可能會使您的系統面臨風險,通常采用多樣式的組合構成整個系統。

    本文由威海網絡公司半島科技轉載整理2020.01.14

    分享到:

    上一條:企業級軟件系統開發為何這么貴?

    下一條:MES制造執行系統數字化車間的核心

    安徽十一选五开下载 麻将胡牌公式图解 北京快中彩和值走势 香港精选四肖期期准 浙江11选五技巧 在家赚钱的可靠方法 白城手机打麻将 同花顺炒股软件 河南快赢481的app 博彩开户 街机捕鱼单机版下载