【細品架構5/100】什麼是軟件架構

本文主要是繼續研讀了資深架構師王概凱Kevin執筆的《架構漫談》系列的《架構漫談(五):什麼是軟件》的心得感覺。王概凱Kevin結合本身多年的架構經驗,經過不一樣的視角,從新審視架構的本質,從而產生一力做《架構漫談》系列,做者但願可以拋出本身從實踐中得出的一些觀點,並引起你們的一些思考,歡迎你們溝通討論。編程

如須要閱讀原文,請關注公衆號「聊聊架構」,從歷史文章中獲取《架構漫談》系列。架構

本文內容結構圖:函數

什麼是軟件架構

 

  1.  

前幾篇重點講述了,架構產生過程當中的三個階段:Why-How-What。簡單給你們回溯下這三個階段,這樣接下來再將這3W階段的思考,用到軟件當中,纔會有更深入的體會。post

Why:爲什麼會產生架構學習

架構本質其實就是解決人的問題,從而知足人不斷更高的需求,產生架構的必須動機測試

1. 必須由人執行的工做;
2. 每一個人的能力有限;
3. 每一個人的時間有限;
4. 人對目標系統有更高的要求;
5. 目標系統的複雜性使得我的獨自沒法完成這個系統;
複製代碼

How:架構中關鍵步驟編碼

概念認知:概念是認識溝通這個世界的基礎,天然對概念的認知是很是重要的。設計

1. 概念其實表明其背後解決人的問題而來,不一樣的概念表明不一樣的功能,不一樣的功能解決的問題也不一樣;
2. 同一事物在不一樣場景下,解決的問題不一樣,所表明的功能也不一樣,從而概念也不一樣;
複製代碼

問題識別:當找到真正問題時,問題就已解決了80%。code

1. 肯定問題主體,誰的問題;
2. 肯定問題邊界,真正的問題是什麼; 
複製代碼

架構切分:其實就是相關人的利益調整,這就是原動力;開發

1. 背後的動力,就是每一個人本身的利益,這是切分過程當中必需要考慮到人的利益;
2. 架構切分最終會反應到組織架構上,造成組織樹狀;
複製代碼

What:架構的本質

架構實際上就是指人們根據本身對世界的認識,爲解決某個問題,主動地、有目的地去識別問題,總結得出概念,經過概念做爲認識溝通的橋樑,對相關事物進行分解、合併,如:人、利益、問題、組織架構等等,解決這個問題的實踐活動。

  1.  

什麼是軟件

軟件的歷史,實際上能夠說是用機器模擬人的歷史。無論你們(包括在這個歷史過程當中的參與者)有沒有意識到,咱們都有意無心的在計算機上模仿人類的行爲。從馮諾依曼結構開始,程序邏輯開始脫離硬件,採用二進制編碼。加上存儲,配合輸入輸出,一個簡化的大腦就出現了。圖靈機則是模擬大腦的計算,用數學的方式把計算的過程定義了出來,著名的邱奇-圖靈論題:一切直覺上能行可計算的函數均可用圖靈機計算,反之亦然。軟硬件二者一結合,一個可編程的大腦出現了,這也是如今爲何咱們把計算機叫作電腦。在硬件上編寫出的程序,就是軟件,是用來控制硬件的行爲的。

人們愈來愈願意把原來只有人才能作的事情,交給計算機來作。結果就致使軟件愈來愈豐富,可以作的事情也愈來愈多,成本也愈來愈低。能夠這麼說,成本是咱們爲何採用軟件的主要動力,能夠節省大量的人員培訓,減小僱員的數目。隨着互聯網的發展,人類社會也開始軟件化了。原來必須實體店來進行售賣的,搬到互聯網上,開店成本更低,而且可以接觸到更多的人。想象一下,一個門店天天的人流達到百萬級別是很恐怖的,由實體空間大小來決定。可是在互聯網上,訪問量千萬級別都不算什麼。最終的結果就變成,每一個人可以負擔的工做愈來愈多,成本愈來愈低。這也是爲何軟件這麼熱的緣由。

有了軟件以後,實際上,咱們是把咱們平常生活中所作的事情,包括咱們本身本人都一塊兒虛擬化到了計算機中。而人則演化成了,經過計算機的輸入輸出設備,控制計算機中的本身,來完成平常的工做,以及與其餘人的溝通。也就是說,軟件一直以來的動力,始終都是來模擬人和這個社會的

無論如何發展,模擬人的全部行爲都是一個大的趨勢。也就是說,軟件的主要目的,仍是把人類的生活模擬化,提供更低成本,高效率的新的生活。從這個角度來看,軟件主要依賴的仍是人類的生活知識。軟件更多的是扮演一個cost center,這也是爲何會出現不少的軟件代工。

  1.  

軟件架構出現

軟件工程師是實現這個模擬過程的關鍵人物,他必須先理解人是怎麼在平常生活中完成工做的,纔可以很好的把這些工做在計算機中模擬出來。但是軟件工程師須要學習大量的計算機語言和計算機知識,還須要學習各行各業的專業知識。軟件工程師自己的培養就比較難,同時行業知識也要靠時間的積累,這樣就遠遠超出了軟件工程師的能力了。因此軟件開發就開始有分工了,行業知識和業務的識別,會交給BA,系統的設計會交給架構師,設計的實現交給架構師,實現的檢驗交給測試,還有不少其餘角色的配合。爲了組織這些角色的工做,還有項目經理。這就把原來一我的的連續工做,拆分紅了不一樣角色的人的連續配合,演化成了不一樣的軟件開發的模式。而後慢慢演變出專門爲別人開發軟件的軟件公司。

一開始是懵懵懂懂的去寫軟件,後來慢慢的就有意識的去切分,演變成了不一樣的架構。這個背後的動力也是同樣的,就是提高參與的人的利益,下降成本。導火索也是軟件工程師的任務過重,咱們須要把不少工做拆分出來。拆分的原則也是同樣的,如何讓權責一致。一樣,這個拆分也是須要組織架構的調整,來保證架構的落地。

  1.  

總結一下

以上經過簡單的描述計算機和軟件的發展歷史,闡明軟件的本質,其實就是經過把人類的平常工做生活虛擬化,減小成本,提高單我的員的生產力,提高人類本身的利益。軟件工程師的職責在這個浪潮中,不堪重負,天然而然就分拆爲不一樣的角色,造成了一個獨特的架構體系。這一切的背後,仍然是爲了提高人類本身的利益,解決人類本身的問題。

做者:猿碼道 連接:https://juejin.im/post/5b36ed2af265da597f1c8afe 來源:掘金 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索