軟件開發(fā)中不能忽視的規(guī)律

說到軟件工程很多人都會想到瀑布模型、敏捷開發(fā)、領(lǐng)域驅(qū)動优炬。雖然這些名詞大家耳熟能詳颁井,但如果你去聽大牛們的講座或者查閱相關(guān)資料會發(fā)現(xiàn)每個人陳述的都不大一樣。這讓聽的人很迷惑蠢护,為什么大家講的不一樣但是又都很有道理雅宾?

軟件工程這門學科發(fā)展不過幾十年,很多概念還在不斷演化糊余,定義也比較模糊秀又。在項目中使用這些方法非常的靈活单寂,比如引入SOA架構(gòu)贬芥,如果完全按照SOA的規(guī)范來做不一定適合自己的項目,但是不按規(guī)范來做又容易遭到質(zhì)疑宣决。于是基于SOA修修改改蘸劈,如果項目結(jié)果豐碩,還可以說自己用的是微服務(wù)架構(gòu)尊沸。雖然在不同項目中推進軟件工程方法的過程不同威沫,但最終的結(jié)果大多是好的。

隨著互聯(lián)網(wǎng)的發(fā)展洼专,新的軟件工程方法論會層出不窮棒掠,未來會出現(xiàn)更多新詞,但唯一不變的是思維屁商。無論是SOA架構(gòu)還是微服務(wù)架構(gòu)烟很,都是為了解決軟件工程的根本問題『溝通』,下面聊聊軟件開發(fā)中一些有意思的規(guī)律蜡镶。

一. 溝通成本 = n(n-1)/2

記得在《軟件工程》中有一節(jié)專門講了 “軟件危機”雾袱,說的是軟件開發(fā)從小作坊式的開發(fā)模式轉(zhuǎn)向大團隊打造大型項目的過程中暴露出了許多從前沒有注意過的問題,而其中最有代表性的就是著名的“OS/360”項目官还,這個項目被比作一個焦油坑芹橡,整個開發(fā)團隊像一只巨獸在焦油坑中拼命掙扎,然而自己反而越陷越深望伦,無法掙脫林说。

在這個項目艱難的完成后,負責人Brooks將其中的經(jīng)驗總結(jié)下來寫出了巨著《人月神話》屯伞,盡管距離成書的時間已經(jīng)四五十年腿箩,書中熠熠閃光的智慧依然在給我們啟迪,『溝通成本 = n(n-1)/2』公式就是其中之一愕掏。

假設(shè)計劃做一件事兩個人溝通需要10分鐘度秘,5個人就需要100分鐘。15個人需要1050分鐘,2天左右剑梳。50個人需要12250分鐘唆貌,25天。隨著公司項目參與的人越來越多垢乙,公司如果不引入工程化的方法進行溝通架構(gòu)改進锨咙,單單溝通成本就會拖垮公司。

二. 系統(tǒng)架構(gòu)等同于組織之內(nèi)的溝通結(jié)構(gòu)

熟悉微服務(wù)的人對『康威定律』肯定不陌生追逮,作為微服務(wù)架構(gòu)的理論基礎(chǔ)酪刀,康偉定律在最近幾年被推上了神壇。其中最出名的定律就是『系統(tǒng)架構(gòu)等同于組織之內(nèi)的溝通結(jié)構(gòu)』钮孵。

用過微信和QQ的人能感受到這是一家公司做出來的產(chǎn)品嗎骂倘?這兩款產(chǎn)品的功能雖然相近但是體驗感受差異巨大。用過天貓和淘寶的人會覺得這兩款A(yù)pp有差異嗎巴席?這兩款產(chǎn)品提供的服務(wù)并不一樣历涝,但用起來體驗感受都差不多。從這幾款A(yù)pp的設(shè)計就能看出騰訊和阿里是以一種什么樣的組織架構(gòu)在運行漾唉。比如騰訊是各BG自負盈虧荧库,微信和QQ像是兩個完全獨立的公司在運營,更注重細節(jié)打磨和產(chǎn)品盈利赵刑,所以騰訊的2C業(yè)務(wù)獨占鰲頭分衫。阿里各BG之間聯(lián)系緊密,合伙人都需要輪崗般此,更注重溝通效率和公共服務(wù)建設(shè)蚪战,所以阿里的2B業(yè)務(wù)做的非常好。

利用康威定律很容易從公司的產(chǎn)品架構(gòu)分析出系統(tǒng)架構(gòu)恤煞,但康威定律的作用并不是分析公司屎勘,而是告訴管理者-要改變系統(tǒng)架構(gòu),必須要改變組織的溝通結(jié)構(gòu)居扒。

之前有人做過實驗概漱,同樣一個研發(fā)團隊,當辦公位置在一起時寫的代碼會更耦合喜喂,沒有明顯的邊界瓤摧。當辦公位置分散時寫的代碼耦合度更低,并且有明顯的邊界和文檔玉吁。物理上的距離會增加溝通成本照弥,研發(fā)人員為了減少溝通成本無意識的就會更多的使用文檔和接口。合理的利用康威定律进副,能幫助我們改善代碼这揣。

三. 軟件的錯誤是無法避免的

Eric Hollnagel是敏捷開發(fā)社區(qū)的泰斗之一悔常,對于一個巨復雜的系統(tǒng),我們永遠無法考慮周全给赞,他的解決辦法是“破罐子破摔”机打。Eric曾經(jīng)被一家航空公司請去做安全咨詢顧問,復雜保證飛機飛行系統(tǒng)的穩(wěn)定性和安全性片迅。Eric認為做到安全有兩種方式:

  1. 常規(guī)的安全指的是盡可能多的發(fā)現(xiàn)并消除錯誤的部分残邀,達到絕對安全,這是理想柑蛇。
  2. 彈性安全芥挣,即使發(fā)生錯誤,只要及時恢復耻台,也能正常工作空免,這是現(xiàn)實。

對于飛機這樣的復雜系統(tǒng)粘我,再厲害的人也無法考慮到漏洞的方方面面鼓蜒,所以Eric建議放棄打造完美系統(tǒng)的想法,而是通過不斷的試飛征字,發(fā)現(xiàn)問題,確保問題發(fā)生時娇豫,系統(tǒng)能自動復原即可匙姜,而不追求飛行系統(tǒng)的絕對正確和安全。這不就是持續(xù)集成和敏捷開發(fā)嗎冯痢?

微服務(wù)架構(gòu)中最難處理的問題就是"容錯"(下一篇文章會講微服務(wù)中最重要的容錯設(shè)計)氮昧,大家對待錯誤的態(tài)度已經(jīng)從不能忍變成了默許。

四. 程序運行時出問題的規(guī)律符合墨菲定律

如果聽到 "用戶絕對不會那樣操作"浦楣,"這種概率非常低" 往往上線就會出問題袖肥。當時阿波羅登月的程序就有個已知的問題"如果宇航員不小心啟動了P01的預(yù)運行程序,會導致原本還在飛行狀態(tài)的模擬器瞬間崩潰"振劳。但當時所有人都覺得宇航員受過嚴格訓練椎组,操作是完美的,“絕對不可能出錯”历恐。但可怕的事情還是發(fā)生了寸癌,宇航員Jim Lovell不小心按下了P01程序,導致導航系統(tǒng)崩潰弱贼,如果不能修復飛船將無法返航蒸苇,人類登月的歷史也將被改寫。最后MIT的一群程序員連夜奮戰(zhàn)9個小時才挽救這個bug吮旅。

我們無法揣測用戶的想法溪烤,也無法對隨機事件做出準確的預(yù)判,所以遇到『發(fā)生概率極低』的問題也一定要及時修復。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檬嘀,一起剝皮案震驚了整個濱河市莺葫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枪眉,老刑警劉巖捺檬,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贸铜,居然都是意外死亡堡纬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門蒿秦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烤镐,“玉大人,你說我怎么就攤上這事棍鳖∨谝叮” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵渡处,是天一觀的道長镜悉。 經(jīng)常有香客問我,道長医瘫,這世上最難降的妖魔是什么侣肄? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮醇份,結(jié)果婚禮上稼锅,老公的妹妹穿的比我還像新娘。我一直安慰自己僚纷,他們只是感情好矩距,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怖竭,像睡著了一般锥债。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侵状,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天赞弥,我揣著相機與錄音,去河邊找鬼趣兄。 笑死绽左,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的艇潭。 我是一名探鬼主播拼窥,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼戏蔑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鲁纠?” 一聲冷哼從身側(cè)響起总棵,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎改含,沒想到半個月后情龄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡捍壤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年骤视,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹃觉。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡专酗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盗扇,到底是詐尸還是另有隱情祷肯,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布疗隶,位于F島的核電站佑笋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抽减。R本人自食惡果不足惜允青,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卵沉。 院中可真熱鬧,春花似錦法牲、人聲如沸史汗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽停撞。三九已至,卻和暖如春悼瓮,著一層夾襖步出監(jiān)牢的瞬間戈毒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工横堡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留埋市,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓命贴,卻偏偏與公主長得像道宅,于是被迫代替她去往敵國和親食听。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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