5 2軟體架構的歷史背景和目的

2021-10-06 04:39:21 字數 2043 閱讀 4959

title

date

comments

categories

br#軟體架構的歷史背景和目的

2020/3/9

true

軟體架構

架構

軟體

5.2

軟體架構的出現有其歷史必然性,計算機最開始使用的是機器指令進行程式設計,由於全是0和1組成的數字串,對程式設計人員十分的不友好,然後組合語言就應運而生。組合語言只是簡單的用注意詞替換機器指令,雖然只是簡單的替換,很簡陋但至少彙編的指令看起來比一長串的0和1好很多。而且可以有望文生義的功能,基本上可以看到指令,就知道是要做什麼操作。但是隨著軟體的流行軟體的規模開始變得越來越大,彙編指令寫出來的程式,其弊端就顯露出來了。最典型的就是ibm開發的作業系統360。這是乙個失敗的專案,專案負責人還因此寫了一本書,叫做《人月神話》。

這個時期,軟體開發難度太大造成了所謂的第1次軟體危機。為了解決這次危機,就有人提出了結構化程式設計的概念,也就是我們常說的面向過程程式設計。可到了20世紀80年代的時候,由於計算機的快速發展,軟體功能越來越強大,軟體的複雜度也越來越高,導致面向過程的程式設計方法已經不再適用軟體的更大規模的擴充套件,這時候就引出了物件導向的程式設計思想。

到了20世紀90年代,軟體架構這個說法開始流行,而且創造了元件這個概念。我們可以看到從模組到物件導向到元件,本質上都是對達到一定規模的軟體進行拆分,差別只是在於隨著軟體的複雜度不斷增加,拆分的力度越來越粗,拆分的層次越來越高。

卡內基梅隆大學的馬立肖和戴維嘉蘭對軟體架構做了很多研究,他們在2023年的一篇文章軟體架構介紹裡面寫道,隨著軟體系統規模的增加,計算相關的演算法資料結構不再構成主要的設計問題,但系統有許多部分組成時,整個系統的組織也就是所說的軟體架構導致了一系列新的設計問題。

比如說系統規模龐大,內部耦合嚴重,開發效率極低。

系統耦合嚴重,牽一發動全身後續修改和擴充套件困難。

系統邏輯複雜,容易出問題,出問題後很難排查和修復。

所以軟體架構的出現是勢在必然的,是軟體技術發展的內在需求。

由此我們也可以清楚地知道,軟體架構的目的就是為了解決軟體系統複雜度帶來的一系列問題

這個結論雖然很簡潔,但是卻是架構設計過程中需要時刻銘記在心的第1條準則,首先遵循這條準則的新手架構師能夠心中有數,而不是一頭的霧水。其次,遵循這條準則也能夠讓老鳥架構師有的放矢,而不是貪大求全。

簡單的複雜度分析案例

假如我們需要設立乙個大學的學生管理系統,其基本功能包括登入註冊,成績管理,課程管理等。

當我們對這樣乙個系統進行架構設計的時候,

首先應該識別其複雜度的複雜到底體現在**,效能方面,乙個學校的學生大約1~2萬人,學生管理系統的訪問頻率並不高,平均每天單個學生的訪問次數平均不到一次,因此效能這部分並不複雜,儲存用mexico完全能夠勝任,快取都可以不用那個伺服器用nginx綽綽有餘。

其次,在可擴充套件性方面,學生管理系統的功能比較穩定和擴充套件的空間並不大,因此可擴充套件性也並不複雜。

另外在高可用方面,學生管理系統及時檔期兩個小時,對學生管理工作影響也不大,因此可以不做負載均衡,更不用考慮異地多活這類複雜的方案了。但是如果學生的資料全部丟失,修復的過程是非常麻煩的,只能靠人工逐條修復,這個是不能接受的,因此需要考慮儲存的高可靠性,這裡就有點複雜了,我們需要考慮多種異常情況,比如說機器故障,機房故障,針對機器故障,我們需要設計馬賽克同機,房主備方案,針對機房故障,我們需要設計跨機房同步方案。

在乙個安全性方面,學生管理系統儲存的資訊有一定的私隱性,例如學生的家庭情況,學生的成績等,但並不是說和金融類資訊那樣的,也不包含強私隱性的資訊,因此安全性方面只要做到三個事情就基本可以了,即nginx提供acl控制,使用者賬號密碼管理,資料庫訪問許可權。

在成本方面由於系統很簡單,基本上幾台伺服器就能夠搞定,對一所大學來說完全不是問題,可以無需太多關注。

通過上面的分析,我們可以清楚的明白這個方案的複雜性主要體現在儲存的可靠性上,就是說保證系統異常的時候,不要丟失所有的資料即可。

學生管理系統非常簡單,但麻雀雖小,五臟俱全,基本上能涵蓋軟體系統複雜度分析的各個方面,而且絕大部分技術人員都曾經自己設計或者接觸過類似的系統,結合自己的程式設計經驗,分析之後能切實感覺到有不小的收穫。

Yarn產生的歷史背景

一 什麼是hadoop 二 hadoop中的主要專案 三 參考書籍 hadoop yarn權威指南 四 hadoop演進的四大階段 五 階段0 ad hoc集群時代 六 階段1 hadoop on demand 七 hadoop on demand的架構 八 hod的特點和優勢 九 hod的缺點 十...

數學歸納法產生的歷史背景

數學上證明與自然數n有關的命題的一種特殊方法,它主要用來研究與正整數有關的數學問題,在高中數學中常用來證明等式成立和數列通項公式成立。編輯本段 基本步驟 一 第一數學歸納法 一般地,證明乙個與正整數n有關的命題,有如下步驟 1 證明當n取第乙個值時命題成立 2 假設當n k k n的第乙個值,k為自...

MySql的架構和歷史

架構為如下 儲存引擎 負責資料的儲存和提取,供了幾十個api供服務層進行呼叫。各個儲存引擎之間不會進行互動,只是供服務層進行呼叫。事務控制和鎖的管理也是在儲存引擎裡面進行。服務層 乙個sql過來之後,會在服務層進行解析,建立解析樹,呼叫底層的儲存引擎得到各種開銷資訊和統計資訊,進行各種優化,決定表的...