架構(gòu)漫談(五):什么是軟件

前面通過四篇文章嫂拴,把什么是架構(gòu),如何做好架構(gòu)等必要的概念澄清了一下贮喧。這些概念對于在各種不同的領(lǐng)域都應(yīng)該也是有用的筒狠,需要讀者自行思考,并應(yīng)用到自己所在的領(lǐng)域中箱沦。在這篇文章開始窟蓝,我們用同樣的思考,來看看軟件是怎么回事饱普,以及如何運(yùn)用架構(gòu)思維凸舵,更好的設(shè)計(jì)和實(shí)現(xiàn)軟件惹苗。
  馮諾依曼結(jié)構(gòu)蔓涧,圖靈機(jī)惶凝,以模擬人為目標(biāo)
  軟件的歷史,實(shí)際上可以說是用機(jī)器模擬人的歷史冯袍。不管大家(包括在這個(gè)歷史過程中的參與者)有沒有意識到匈挖,我們都有意無意的在計(jì)算機(jī)上模仿人類的行為碾牌。從馮諾依曼結(jié)構(gòu)開始,程序邏輯開始脫離硬件儡循,采用二進(jìn)制編碼舶吗。加上存儲,配合輸入輸出择膝,一個(gè)簡化的大腦就出現(xiàn)了誓琼。圖靈機(jī)則是模擬大腦的計(jì)算,用數(shù)學(xué)的方式把計(jì)算的過程定義了出來肴捉,著名的邱奇-圖靈論題:一切直覺上能行可計(jì)算的函數(shù)都可用圖靈機(jī)計(jì)算腹侣,反之亦然。軟硬件兩者一結(jié)合齿穗,一個(gè)可編程的大腦出現(xiàn)了傲隶,這也是現(xiàn)在為什么我們把計(jì)算機(jī)叫做電腦。在硬件上編寫出的程序窃页,就是軟件跺株,是用來控制硬件的行為的。
  成本為王
  在初期脖卖,軟件使用二進(jìn)制編寫的乒省,從硬件到軟件,成本都非常的高胚嘲。隨著半導(dǎo)體技術(shù)的進(jìn)步作儿,硬件的成本越來越低洛二,性能越來越高馋劈,甚至出現(xiàn)了摩爾定律:當(dāng)價(jià)格不變時(shí),集成電路上可容納的元器件數(shù)目晾嘶,約每隔18-24個(gè)月增加一倍妓雾,性能提升一倍。軟件方面垒迂,為了簡化難度械姻,開始采用匯編,進(jìn)一步出現(xiàn)了類似于人類的語言的高級語言机断,比如C/C++/Java等楷拳,這使得人類可以用類似于人的語言來和計(jì)算機(jī)溝通。軟件工程師慢慢越來越多吏奸,開發(fā)軟件的成本也越來越低欢揖。計(jì)算機(jī)就好像是一個(gè)只需要電,不需要休息的人奋蔚,可以無休無止的工作她混。
  人們越來越愿意把原來只有人才能做的事情烈钞,交給計(jì)算機(jī)來做。結(jié)果就導(dǎo)致軟件越來越豐富坤按,能夠做的事情也越來越多毯欣,成本也越來越低〕襞В可以這么說酗钞,成本是我們?yōu)槭裁床捎密浖闹饕獎(jiǎng)恿Γ梢怨?jié)省大量的人員培訓(xùn)谢鹊,減少雇員的數(shù)目算吩。隨著互聯(lián)網(wǎng)的發(fā)展,人類社會也開始軟件化了佃扼。原來必須實(shí)體店來進(jìn)行售賣的偎巢,搬到互聯(lián)網(wǎng)上,開店成本更低兼耀,并且能夠接觸到更多的人压昼。想象一下,一個(gè)門店每天的人流達(dá)到百萬級別是很恐怖的瘤运,由實(shí)體空間大小來決定窍霞。但是在互聯(lián)網(wǎng)上,訪問量千萬級別都不算什么拯坟。最終的結(jié)果就變成但金,每個(gè)人能夠負(fù)擔(dān)的工作越來越多,成本越來越低郁季。這也是為什么軟件這么熱的原因冷溃。
  軟件扮演的角色
  隨著軟件的規(guī)模的變大,做好一個(gè)軟件也變得越來越難了梦裂。早期的程序員寫程序似枕,主要是為了幫助自己研究課題。這些程序員熟練了之后年柠,提高了自己的生產(chǎn)力凿歼,并發(fā)現(xiàn)還可以幫助別人寫程序,慢慢軟件就變成了一個(gè)獨(dú)立的行業(yè)冗恨。程序從早期由一個(gè)人完成答憔,也逐漸變成了由很多不同角色的人共同合作來完成。以下討論的前提掀抹,都是基于幫助別人寫程序虐拓,多人合作的基礎(chǔ)上的。結(jié)論對于單人為自己寫程序也適用渴丸。
  在沒有軟件之前侯嘀,每個(gè)人干自己的工作另凌,自行保存自己的工作結(jié)果。人們面對面或者通過電話等溝通戒幔,如下圖所示吠谢。

24634-20160316185324834-965304553.png

  有了軟件之后,實(shí)際上诗茎,我們是把我們?nèi)粘I钪兴龅氖虑楣し唬ㄎ覀冏约罕救硕家黄鹛摂M化到了計(jì)算機(jī)中。而人則演化成了敢订,通過計(jì)算機(jī)的輸入輸出設(shè)備王污,控制計(jì)算機(jī)中的自己,來完成日常的工作楚午,以及與其他人的溝通昭齐。也就是說,軟件一直以來的動力矾柜,始終都是來模擬人和這個(gè)社會的阱驾。比如模擬大氣運(yùn)動(天氣預(yù)報(bào)),模擬人類社會(互聯(lián)網(wǎng)社交)怪蔑,模擬交易里覆,包括現(xiàn)在正在流行的VR,人工智能等等缆瓣。模擬的對象越來越高級喧枷,難度越來越大。
  不管如何發(fā)展弓坞,模擬人的所有行為都是一個(gè)大的趨勢隧甚。也就是說,軟件的主要目的昼丑,還是把人類的生活模擬化呻逆,提供更低成本夸赫,高效率的新的生活菩帝。從這個(gè)角度來看,軟件主要依賴的還是人類的生活知識茬腿。軟件更多的是扮演一個(gè)cost center呼奢,這也是為什么會出現(xiàn)很多的軟件代工。


24634-20160316185324662-575248877.jpg

  軟件開發(fā)的架構(gòu)演變
  軟件工程師是實(shí)現(xiàn)這個(gè)模擬過程的關(guān)鍵人物切平,他必須先理解人是怎么在日常生活中完成工作的握础,才能夠很好的把這些工作在計(jì)算機(jī)中模擬出來°财罚可是軟件工程師需要學(xué)習(xí)大量的計(jì)算機(jī)語言和計(jì)算機(jī)知識禀综,還需要學(xué)習(xí)各行各業(yè)的專業(yè)知識简烘。軟件工程師本身的培養(yǎng)就比較難,同時(shí)行業(yè)知識也要靠時(shí)間的積累定枷,這樣就遠(yuǎn)遠(yuǎn)超出了軟件工程師的能力了孤澎。所以軟件開發(fā)就開始有分工了,行業(yè)知識和業(yè)務(wù)的識別欠窒,會交給BA覆旭,系統(tǒng)的設(shè)計(jì)會交給架構(gòu)師,設(shè)計(jì)的實(shí)現(xiàn)交給架構(gòu)師岖妄,實(shí)現(xiàn)的檢驗(yàn)交給測試型将,還有很多其他角色的配合。為了組織這些角色的工作荐虐,還有項(xiàng)目經(jīng)理七兜。這就把原來一個(gè)人的連續(xù)工作,拆分成了不同角色的人的連續(xù)配合福扬,演化成了不同的軟件開發(fā)的模式惊搏。然后慢慢演變出專門為別人開發(fā)軟件的軟件公司。
  軟件架構(gòu)的出現(xiàn)
  如同前面描述的架構(gòu)的定義忧换,軟件架構(gòu)的出現(xiàn)也是同樣的恬惯。一開始是懵懵懂懂的去寫軟件,后來慢慢的就有意識的去切分亚茬,演變成了不同的架構(gòu)酪耳。這個(gè)背后的動力也是一樣的,就是提升參與的人的利益刹缝,降低成本碗暗。導(dǎo)火索也是軟件工程師的任務(wù)太重,我們需要把很多工作拆分出來梢夯。拆分的原則也是一樣的言疗,如何讓權(quán)責(zé)一致。同樣颂砸,這個(gè)拆分也是需要組織架構(gòu)的調(diào)整噪奄,來保證架構(gòu)的落地。具體如何分拆人乓,如何調(diào)整勤篮,我們將在另外一篇中著重討論。
  以上通過簡單的描述計(jì)算機(jī)和軟件的發(fā)展歷史色罚,闡明軟件的本質(zhì)碰缔,其實(shí)就是通過把人類的日常工作生活虛擬化,減少成本戳护,提升單個(gè)人員的生產(chǎn)力金抡,提升人類自己的利益瀑焦。軟件工程師的職責(zé)在這個(gè)浪潮中,不堪重負(fù)梗肝,自然而然就分拆為不同的角色蝠猬,形成了一個(gè)獨(dú)特的架構(gòu)體系。這一切的背后统捶,仍然是為了提升人類自己的利益榆芦,解決人類自己的問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喘鸟,一起剝皮案震驚了整個(gè)濱河市匆绣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌什黑,老刑警劉巖崎淳,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愕把,居然都是意外死亡拣凹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門恨豁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚣镜,“玉大人,你說我怎么就攤上這事橘蜜【漳洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵计福,是天一觀的道長跌捆。 經(jīng)常有香客問我,道長象颖,這世上最難降的妖魔是什么佩厚? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮说订,結(jié)果婚禮上抄瓦,老公的妹妹穿的比我還像新娘。我一直安慰自己克蚂,他們只是感情好闺鲸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布筋讨。 她就那樣靜靜地躺著埃叭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悉罕。 梳的紋絲不亂的頭發(fā)上赤屋,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天立镶,我揣著相機(jī)與錄音,去河邊找鬼类早。 笑死媚媒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涩僻。 我是一名探鬼主播缭召,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逆日!你這毒婦竟也來了嵌巷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤室抽,失蹤者是張志新(化名)和其女友劉穎搪哪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坪圾,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晓折,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兽泄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漓概。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖病梢,靈堂內(nèi)的尸體忽然破棺而出垛耳,到底是詐尸還是另有隱情,我是刑警寧澤飘千,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布堂鲜,位于F島的核電站,受9級特大地震影響护奈,放射性物質(zhì)發(fā)生泄漏缔莲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一霉旗、第九天 我趴在偏房一處隱蔽的房頂上張望痴奏。 院中可真熱鬧,春花似錦厌秒、人聲如沸读拆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檐晕。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辟灰,已是汗流浹背个榕。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芥喇,地道東北人西采。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像继控,于是被迫代替她去往敵國和親械馆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容