從實踐者的角度看軟件架構的歷史

不管什麼東西,套用宋丹丹的話,就是都有它的過去、如今和將(jiǎng)來。所以學習同樣東西,若是能多學一點它的歷史,會讓咱們對其爲什麼有如此現狀少一些糾結,同時纔有可能對其將來趨勢有靠譜一點點的洞見。昨夜窗外雨聲稀疏,難以入眠,忽然想到軟件架構的發展史是怎樣的,因而今晨起來網上逛一圈,邂逅到這篇論文《The History of Software Architecture – In the Eye of the Practitioner》,所以,這是一篇譯文。安全

小弟不才,沒有能力本身去梳理這麼龐大的論題,所以只能翻譯了。不過我並無翻譯這篇論文的所有內容,好比附錄就沒有翻譯。在翻譯的過程當中,一度以爲這論文的英文及其拗口,跟我閱讀過的其它英文書比實在是難讀。開弓沒有回頭箭,我仍是把要譯的部分譯完了,不免有詞不達意之處,還望海涵。服務器

如下是譯文:架構

 

1. 目標和動機

那些權威論文把軟件架構看成獨立的學科,一些科技期刊也把架構視角、架構描述語言、架構進化做爲他們研究和實踐的基石,從這些角度來看的話,軟件架構正好迎來了它的25週年慶。機器學習

隨着基於雲交付的普及,分佈式系統的各個部分須要動態集成,商業和社會數字化的曲線愈來愈陡,使得一個合理的設計決策包含了更大和更復雜的問題空間。軟件架構的重要性史無前例,開展重要項目的組織離不開相應架構實踐的支撐。然而,這25年來,軟件架構的實踐是如何進化的呢?將來又將面臨哪些挑戰?分佈式

對軟件架構研究和實踐現狀的總結,曾有過各類不一樣的嘗試,然而都缺乏了從實踐者的角度來看待上面的兩個問題。微服務

爲了填補這個空缺,咱們首先從5622篇科技論文中抽出10大主題,如圖3。而後咱們根據這些主題設計一個在線問卷調查,並由擁有5到20年不等經驗的57位軟件架構實踐者填寫了這份問卷調查。性能

 

2. 實踐者對過去25年軟件架構及將來之路的見解

這篇論文中,咱們的調查聚焦於,在過去25年裏,軟件架構方面最突出的話題有哪些,以及在當下和不久的未來,軟件架構方面的哪些話題會具備最深遠的影響力。學習

調查問卷包含的問題有:區塊鏈

a) 參與者的背景、經驗和其它一些統計信息;大數據

b) 目前他們供職的機構,過去幾年接手的項目類型;

c) 過去25年在軟件架構方面的實踐;

d) 最有影響力並且是目前軟件架構趨勢的話題(包括近兩年新興的);

e) 將來工業界可能在軟件架構方向的實踐(將來5年);

基於參與者的回答,咱們精編獲得如下結果。

過去:圖1.PAST 總結了實踐者們認爲的過去25年最有影響力的10個軟件架構話題。咱們能夠看到:

1.最有影響力的話題屬於「軟件開發流程」、「面向服務的架構(SOA)」、「架構風格」、「物聯網(IoT)」。這些總共佔了38%的比重。

2.SOA就像圖中展現的那樣了,其它的話題則包含更多特定的子話題:「軟件開發流程」包含了敏捷開發、持續交付集成、DevOps、領域驅動設計、需求角色、遺留(系統/代碼)、風險和質量管理、溝通技能。「架構風格」包含隨着時間而演變的各類不一樣風格,從C-S和分佈式架構,到生產線架構、MVC、多層架構等等。最後,「IoT」包括數字化、Web、互聯網、工業4.0和移動優先。

圖1.PAST 標紅的數字表示它是否出如今圖3中(科學文獻中前10的話題)。一樣的,咱們能夠看到:

1.工業界前4個話題一樣出如今學術界的前10個話題中,但影響力有些差異:「軟件開發流程」在工業界排第1,但在學術界只排第7,「SOA」在工業界和學術界都排第2,還有很明顯的,「架構風格」在工業界的影響力被認爲是大得多,排在第3,而在學術界排第6。

2.真正有大分歧的話題是「架構描述&語言」,這在學術機構排第1,而在實踐者眼中只排到第8。不過這並不奇怪,符號和語言經常做爲學術界深愛的研究課題,但工業界真正採用的並很少。不過也好,這正能夠做爲一個讓研究者和實踐者進行更好描述和高效溝通的契機。

還有一些話題,被實踐者們說起,可是卻不入專業研究者的法眼。最突出的好比:

1.軟件質量(第5):很顯然,質量成爲軟件架構的屬性是過去25年的一個重要成果。「質量」有時候又被稱爲質量符合性、性能、可擴展性、可維護性等等。

2.雲計算(第6)和微服務(第7):它們被認爲很是(每樣14票)的有影響力。做爲SOA的衍生品,它們被認爲是同屬一個話題—這樣就一共得到42票,變成了過去25年最有影響力的話題。

如今:圖1.PRESENT 使用一樣的分析方法獲得現今軟件架構最有影響力的話題。這個結果中,「架構風格」排在第10(緊挨着「SOA」和「架構設計決策」)。另外一方面:

1.「SOA」被「雲」和「微服務」替代:咱們認爲這是正常的技術進化,做爲一種廣泛的架構風格,SOA曾被應用到到各個應用領域。

2.「軟件開發流程」仍然保持穩定(第1)。相較於對過去25年的回答,今天「一切都是敏捷」:敏捷以後呢,是DevOps、持續架構(continuous-architecting)。咱們注意到,在敏捷開發中,架構扮演更重要角色的意識正在加強。

3.一樣的,「IoT」保持穩定(第4)。然而相比過去,它被認爲是有更大的影響力,關注點也從移動應用轉變到基於IoT的架構。這也和Gartner關於2018年重大技術策略趨勢的預測相符,預測中提到的「智能物件(intelligent things)」,就是將AI與IoT融合。

4.明顯的,「軟件質量」(第6)和「安全性(第7)」的影響力在降低。這或許是架構師們都知道了如何應對這些問題,又或許他們以爲有更重要的話題要關注。

總的來講,現今最有影響力的話題總共佔據了70%的答案。其中,流程、面向服務(雲和微服務)、IoT三者共佔了62%。

並且,在現今的前10個話題中,有一些新名詞引發了咱們的注意:

1.「大數據」(第5):稱爲大數據,或者AI、機器學習、機器分析。

2.「第三方軟件集成」(第8):在過去25年的部分曾被說起,但排在第14,不過都分別獲得了5票。不過從答案中,能夠看到軟件架構正從封閉走向開放。

將來:圖 1.FUTURE,咱們從調查反饋中看到比較高的不肯定性。即便實踐者們認爲前4個話題在將來5年仍保持主流,但它們佔據總票數的52%,比現今的影響力要小10%。

圖1.FUTURE 展現了:

1.「軟件開發流程」、「大數據」、「微服務」和「雲計算」會繼續扮演很是重要的角色,然而:

2.對於「軟件開發流程」,實踐者們更關注如何管理不斷增長的複雜性,多是跨組織的,並將注意力放到了更高的自動化上。

3.對於「大數據」,提到了AI將扮演的角色和大數據在咱們平常生活中進行的各類預測。

4.「微服務」將成熟,新的「雲」將關注點放在基於雲架構的風格/模式,以及如何經過軟件架構來實現XaaS商業模型。

5.「自適應系統」(第5),在過去的幾年裏火熱於學術界,被認爲在工業界也變得愈來愈重要。

6.在新的話題當中,「區塊鏈」也位於前10(不過反應平平,可能出乎你的意料)。

7.其它冒出的新鮮話題、不在前10名單中的有機器人、數字化轉型、智能互聯、綠色軟件、倫理學。

 

3. 反思與收穫

除了以前呈現的結果之外,咱們還要求實踐者們根據自身經歷反饋哪些架構話題在他們過去的25年裏產生過最重大的影響,以每5年爲一個週期,以下圖:

圖2 展現了過去(好比client-server架構,從1992-2001年)佔據主流的話題如何被新話題(好比「架構設計決策」、「架構知識體系」,從2002-2011年)超越的,以及最新的一些話題(「信息物理系統cyber-physical systems」和IoT,從2012-2017年)是如何涌現的。這讓咱們獲得至少如下的認知:

認知1. 在軟件架構的歷史中,架構的概念從先前的一系列系統結構,變成了處於大型的、複雜的、不斷進化的環境中的軟件系統。然而在這樣的環境中,不僅是關乎技術,還包括人員、社交、組織生態和整個社會。軟件架構的實踐者關注的面比研究者們要普遍,軟件架構實踐者同時追隨其它學科,從AI、IoT、自適應加強,到能源和倫理學。

認知2. 「軟件開發流程」贏了。不管是過去,如今仍是將來,軟件架構始終關注如何更敏捷的進行開發,怎樣的人員技能能夠有助於開發。房間裏的大象(明顯存在的問題)能夠用來形容軟件架構溝通和形式化之間存在的窘境:「架構模型」和「架構設計」經常用來彌補「軟件開發流程」,但卻歷來沒法達到預期—將架構代碼化,使得架構可重用而且可靠。

認知3. 對於軟件架構這個話題,不存在革命性的新東西,只有在舊的東西之上默默地演化。好比「軟件開發流程」演化成各類形式的敏捷開發,「架構風格」從「SOA」演化到「微服務」和「雲」,「信息物理系統」進化融合到「IoT」和「自適應系統」。總的來講,咱們討論的是軟件架構的全局趨勢,通向更便捷性的,可管理更多複雜性。

認知4. 軟件架構的研究和實踐始終保持一致。當咱們對比圖3中的前10個研究課題和圖2中工業界的主流話題,咱們看到好比「客戶端-服務器」和「架構風格」在研究和實踐方面有很是相似的趨勢。「軟件架構設計」和「架構設計決策」雖然研究和實踐方面有不一樣的趨勢,但都保持着重要的地位。最明顯的就是「架構描述&語言」,在研究領域煊赫一時,而實踐中少得多。

最後,咱們但願從歷史角度看到的軟件架構演化史能給讀者帶來進一步的思考和靈感。

 

文章最初發表於:從實踐者的角度看軟件架構的歷史

相關文章
相關標籤/搜索