做者 | 雪山飛豬 html
來源 | cnblogs.com/chenqionghe/p/13158308.html面試
前言
welcome to chenqionghe's blog,架構能力其實更像是一種內功,須要咱們不斷地去學習,讓咱們用一張正能量的圖片開啓美好的學習生活,let's do it~
算法
1、軟件架構的定義
架構是一個系統的基本組織,涵蓋所包含的組件,組件之間的關係、組件與環境的關係,以及指導架構設計和演進的原則等內容編程
2、軟件架構與設計
軟件架構和軟件設計中都有「設計」的意思,但與後者相比,前者具備更高的抽象性和更廣的範圍
設計模式
軟件架構關注如何對系統中的結構和交互進行較高級別的描述,它關注的是那些與系統骨架相關的決策問題,例如:功能、組織 、技術、業務和質量標準等。安全
軟件設計關注構成系統的部件或組件,以及子系統是如何組織的,關注的問題一般更接近代碼或模塊自己,例如:微信
將代碼分紅哪些模塊?如何組織?多線程
給不一樣的功能分配哪些類(或模塊)?架構
對於類「C」應該使用哪一種設計模式?app
在運行時對象之間是如何交互的?傳遞什麼消息?如何實施交互?
3、軟件架構的幾個方面
系統
系統是以特定方式組織的組件集合,以實現特定的功能。
軟件系統是其軟件組件的集合。一個系統一般能夠劃分爲若干個子系統。
結構
結構是根據某個指導規則或原則來組成或組織在一塊兒的一組元素的集合,能夠是軟件或硬件系統。
軟件架構能夠根據觀察者的上下文展現各個層次的結構
環境
軟件系統所在的上下文或環境對其軟件架構有直接的影響。
這樣的上下因素能夠是技術、商業、專業、操做等
利益相關者
任何對某個系統及其成功與否感興趣或關心的個體或團體,都是利益相關者。
例如:架構師、開發團隊、客戶、項目經理和營銷團隊等
4、軟件架構的結構特徵
運行時結構
在運行時建立的對象及其之間的交互方式常常決定部署架構。
部署架構與可擴展性、性能、安全性和交互操做性等質量屬性密切相關
模塊結構
爲了分解任務,如何拆分代碼並把代碼組織到模塊和包中,這與系統的可維護性和可修改性密切相關,由於
在代碼組織過程當中考慮到可擴展性的話,一般會將父類放在單獨定義好的具備恰當文檔和配置的包中,這樣就能夠輕易地經過增長外部模塊進行擴展,而不須要處理太多的依賴關係
對於那些依賴於外部或第三方開發者(庫、框架等)的代碼,經過會根據提供的安裝或部署步驟,從外部源手動或自動地獲取並補丁所有各類依賴。此類代碼還提供多種文檔(例如README、INSTALL)等,它們清楚地記錄了這些步驟
5、軟件架構的質量屬性
質量屬性是系統的可度量和可測試的特性,可用於評估系統在其指定環境中的非功能性需求方面的達成狀況
可修改性
定義爲對系統進行修改的容易程度,以及系統對理髮進行調整的靈活性。
這是討論的修改不光是代碼的修改、部署的修改,而是任何層次上的修改。
通常架構師對可修改性的興趣點以下:
難點:對系統進行修改的難易程度
成本:進行修改須要的時間和資源
風險:任何與系統修改相關的風險
代碼可讀性越強,其可修改性就越強,代碼的可修改性與可讀性成正比
可測試性
指一個軟件系統支持經過測試來檢測故障的程度。
可測試性也能夠認爲是一個軟件系統向最終用戶和集成測試隱藏了多少bug
一個系統的可測試性越好,它能隱藏的bug就越少。
可擴展性
指系統可以適應不斷增加的負載需求,但同時要保證可接受的處理性能,通常分爲兩大類:
橫向(水平)擴展性。意味着經過向其中添加更多多的計算節點。
縱向(垂直)擴展性。涉及系統單個節點中資源的添加或移除
性能
指系統在給定的計算資源內完成的工做量,完成的工做量和計算資源的比例(work/unit)越高,性能越高。
計算資源的單位有如下幾種
響應時間。一個函數或執行單元運行所須要的時間。
延遲。某個系統被激活並提供響應所需的時間。
吞吐量。系統處理信息的某種比率。
可用性
指系統處於徹底可操做狀態的程度,以便在任什麼時候候得到調用請求時能夠執行的能力
可靠性
系統的可用性和可靠性密切相關,系統越可靠,可用性就越高。故障恢復能力
影響可用性的另外一個因素是從故障中恢復的能力,包括了故障檢測、故障恢復、故障預防數據一致性
CAP定理指出,系統的可用性與其數據一致性有密切聯繫。一致性和可用性通常膛會同時成立,由於可能通訊失敗,系統能夠在一致性或可用性之間進行選擇
安全性
避免被未通過身份驗證的訪問損害數據和邏輯,同時繼續向經過誰的其餘系統和角色提供服務的一種能力。
可部署性
指軟件從開發環境到產品運行環境移交的難易程度。
有如下相關因素:
模塊結構。
將系統劃分爲易於部署的一個個子單元,則部署會容易產品運行環境與開發環境。與
開發環境結構很是類似的產品運行環境會使部署開發生態系統支持。
爲系統提供成熟的工具鏈支持,容許各類依賴關係自動創建和驗證等配置項內容,從而提升可部署性。標準配置。
一個好的方式是開發者保持開發環境的配置結構和產品運行環境一致。標準化基礎設施。
將部署保持在一個標準化的基礎設施上,提升可部署性容器使用
隨着Docker容器技術的普及,能夠規範軟件,減小啓動/中止的開銷,從而使部署更容易。
6、其餘常見概念
內聚
一個模塊內相關聯程度的度量,描述的是模塊內的功能聯繫
若一個模塊之間各元素聯繫緊密,則內聚性就高(高內聚)
若是能作到將模塊作成一個功能類聚、獨立性強、內部緊密結合纔是一個理想的類聚模塊,這對初學都來講,很是不容易,不光是我的技術能力的挑戰,更是對某個領域業務水平的挑戰。
耦合
各模塊間相互聯繫緊密程度的一種度量。
模塊之間聯繫少,耦合性就越低,模塊之間的相對獨立性就越強。
企業架構
企業架構是一個定義企業結構和行爲的概念藍圖。它肯定了企業結構、流程、人員和信息流動如何與其核心目標相一致,以便有效地實現當前和將來的目標
系統架構
系統架構是系統的基本組織形式,由其結構和行爲視圖表示。該結構由兩部分肯定:構成系統的組件和組件的行爲。組件的行爲是指組件之間的交互,以及組件與外部系統之間的交互
以上內容由chenqionghe整理,參考《軟件架構-Python語言實現》,light weight baby~
![]()
文末福利
知乎上有一套 5000 頁的 Java 學習手冊,已經3萬讚了 !此手冊內容專一 Java技術,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,GitHub,Servlet,IDEA,多線程,集合,JVM,DeBug, Dubbo,Redis,算法,面試題等相關內容。 ![]()
下載方式
1. 首先掃描下方二維碼
2. 後臺回覆「555」便可獲取
註明:文章僅僅知識分享,切勿用於其它商業活動 。感謝全部技術分享者的付出。
點贊是最大的支持
本文分享自微信公衆號 - 武哥聊編程(eson_15)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。