『互聯(lián)網(wǎng)架構(gòu)』軟件架構(gòu)-軟件系統(tǒng)設(shè)計(jì)(一)

原創(chuàng)文章贮庞,歡迎轉(zhuǎn)載试幽。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝隐轩!
原文鏈接地址:『互聯(lián)網(wǎng)架構(gòu)』軟件架構(gòu)-軟件系統(tǒng)設(shè)計(jì)(一)

按照正常的互聯(lián)網(wǎng)玩法饺饭,產(chǎn)品經(jīng)理原型畫(huà)好進(jìn)行需求評(píng)審,評(píng)審?fù)旰笾俺担枰研枨髞G給技術(shù)經(jīng)理瘫俊,或者技術(shù)負(fù)責(zé)人,進(jìn)行一整套的概要設(shè)計(jì)悴灵,然后針對(duì)概要設(shè)計(jì)評(píng)審扛芽,概要評(píng)審后進(jìn)行開(kāi)發(fā)。這次咱們一起說(shuō)說(shuō)概要設(shè)計(jì)的體系結(jié)構(gòu)称勋。了解下套路胸哥。

軟件系統(tǒng)設(shè)計(jì)

軟件系統(tǒng)設(shè)計(jì)在很多人眼里就是寫(xiě)文檔涯竟,寫(xiě)文檔是一種負(fù)擔(dān)赡鲜,其實(shí)系統(tǒng)設(shè)計(jì)頭腦風(fēng)暴,是一種非常開(kāi)心的事情庐船。所以必須掌握什么是系統(tǒng)的設(shè)計(jì)银酬。它里面有哪些方法論,如何去做一些系統(tǒng)設(shè)計(jì)筐钟。

我們平常做開(kāi)發(fā)設(shè)計(jì)嗎揩瞪?

才畢業(yè)回鄭州那幾年,都是一句話就是需求篓冲,開(kāi)發(fā)完了河南本地連個(gè)測(cè)試人員都沒(méi)有李破,開(kāi)發(fā)人員說(shuō)開(kāi)發(fā)完了就開(kāi)發(fā)完了,直接拿給用戶進(jìn)行測(cè)試壹将。有的用戶直接罵娘嗤攻,有的用戶用的感覺(jué)很不爽哭的(工作沒(méi)做完),有的用戶直接摔東西的诽俯。聰明的一點(diǎn)的用戶都直接聯(lián)系開(kāi)發(fā)人員幫他來(lái)操作妇菱。直接測(cè)試都沒(méi)有,用戶就是測(cè)試人員暴区,說(shuō)實(shí)話7闯团,8年前的告訴用戶怎么用,他怎么用仙粱。他感覺(jué)很神秘房交,這幾年隨著互聯(lián)網(wǎng)產(chǎn)品越來(lái)越多,智能手機(jī)的普及伐割,大家對(duì)軟件的要求越來(lái)越嚴(yán)格了候味。很多之前的習(xí)慣的同事淹遵,現(xiàn)在都沒(méi)轉(zhuǎn)變過(guò)來(lái),真是土负溪,土的掉渣透揣。后來(lái)其實(shí)也沒(méi)太關(guān)注設(shè)計(jì),可能就是之畫(huà)個(gè)圖川抡。直到后來(lái)跟第三方系統(tǒng)進(jìn)行交互數(shù)據(jù)辐真,剛開(kāi)始草草的設(shè)計(jì)下,導(dǎo)致之后的2個(gè)月都沒(méi)好過(guò)崖堤。所以說(shuō)系統(tǒng)設(shè)計(jì)是一項(xiàng)非常重要的工作侍咱。而不是老鐵們經(jīng)常說(shuō)的就是寫(xiě)個(gè)文檔就行了。

  1. 拿這鍵盤(pán)直接干密幔。
  2. 深思熟慮楔脯,考慮到多方的問(wèn)題,在開(kāi)始我們的編碼胯甩。
  3. 需求里面是一句話昧廷,直接就是干,別墨跡偎箫。
  4. 做設(shè)計(jì)的時(shí)候木柬,開(kāi)發(fā)人員在考慮?還是技術(shù)經(jīng)理在考慮淹办?

用什么方法做眉枕?

瀑布流程(互聯(lián)網(wǎng)直接忽略)

需求確定的基礎(chǔ)上,系統(tǒng)設(shè)計(jì)的方方面面設(shè)計(jì)的都很全面怜森,把每個(gè)階段都有非常嚴(yán)格的驗(yàn)證條件速挑,在主流的大型軟件的開(kāi)發(fā)方式。

基于原型副硅,快速迭代(互聯(lián)網(wǎng)常用)

許多創(chuàng)業(yè)公司的老板真心喜歡姥宝,感覺(jué)業(yè)務(wù)可以進(jìn)行快速的開(kāi)發(fā),其實(shí)在里面還是有很多的坑在里面的想许。很少有人基于瀑布來(lái)開(kāi)發(fā)伶授。其實(shí)快速迭代也變成了很多老板讓各位老鐵趕項(xiàng)目的理由了。我?guī)讉€(gè)億的單子流纹,先讓用戶驗(yàn)證糜烹,讓用戶體驗(yàn)到,大家不能耽誤我們偉大的商業(yè)模式漱凝,就算是這種開(kāi)發(fā)模式也是需要有文檔的疮蹦,對(duì)設(shè)計(jì)不清楚的地方也會(huì)有很多,很多的坑在里面茸炒,包括后期的性能和擴(kuò)展也好愕乎,如果前期底子沒(méi)有搭建好的話阵苇,后期傷筋動(dòng)骨。隨隨便便改一個(gè)小功能可能要對(duì)程序進(jìn)行傷筋動(dòng)骨感论。但是這個(gè)時(shí)候老板是不會(huì)管你的绅项,測(cè)試人員更不會(huì)管你,產(chǎn)品也不會(huì)管你比肄,他們只知道我們滿足業(yè)務(wù)和需求快耿。

具體設(shè)計(jì)什么

具體到底需要設(shè)計(jì)什么?如果系統(tǒng)沒(méi)有做好一個(gè)設(shè)計(jì)芳绩,如果你還是基于所謂的原型掀亥,快速迭代敏捷開(kāi)發(fā)以這為借口的話,程序后期越來(lái)越大妥色,越來(lái)越大的時(shí)候真心很傷搪花,根本都不改你的系統(tǒng),就比如說(shuō):銀行嘹害,社保里面的代碼基本是10年前的代碼撮竿,里面的問(wèn)題一大堆,但是沒(méi)有人敢改吼拥,這也是設(shè)計(jì)部合理導(dǎo)致的一個(gè)毛病倚聚。

  • 體系結(jié)構(gòu)設(shè)計(jì)
    1.指明了一個(gè)系統(tǒng)是什么,它是整個(gè)軟件中最本質(zhì)的表現(xiàn)

開(kāi)發(fā)人員看文檔的時(shí)候凿可,首先就要看體系結(jié)構(gòu)。它是軟件系統(tǒng)最本質(zhì)的東西授账,主體的形態(tài)枯跑,人的骨架就是體系結(jié)構(gòu)。如果你設(shè)計(jì)的體系結(jié)構(gòu)是個(gè)大猩猩白热,后期不管如何進(jìn)化敛助,如何發(fā)展,它始終無(wú)法變成一個(gè)人屋确,只能是個(gè)猩猩纳击。比如蓋房子,可能蓋高層攻臀,可能蓋土房焕数,可能蓋平房,或者是窯洞刨啸,一開(kāi)始就想蓋高層堡赔,它需要的材料,地基深度什么都是不一樣的设联。所以體系結(jié)構(gòu)就需要了解軟件設(shè)計(jì)的本質(zhì)善已。也可以說(shuō)架構(gòu)灼捂。

2.應(yīng)當(dāng)設(shè)計(jì)的很穩(wěn)定

蓋到一半悉稠,要換地基是不是很悲催。開(kāi)發(fā)的設(shè)計(jì)的時(shí)候一定要三思而后行衰絮。

3.設(shè)計(jì)的原則

3.1 適應(yīng)性

????滿足用戶需求邓线,達(dá)成商業(yè)的目的骇陈。而不是開(kāi)發(fā)人員自己歪歪器联,高水平的設(shè)計(jì)人員就是設(shè)計(jì)出來(lái)剛剛滿足用戶需要的軟件,而不是不惜一切代碼設(shè)計(jì)出來(lái)一個(gè)最先進(jìn)的軟件渣磷,沒(méi)有最好提完,只有最合適挡篓。打造閉環(huán)是最好的秽澳,對(duì)于很多互聯(lián)網(wǎng)項(xiàng)目,可能不是剛需需求,可能不是成熟的商業(yè)模式亥贸,如果非要進(jìn)行閉環(huán),試錯(cuò)的機(jī)會(huì)都不給,開(kāi)發(fā)的成本老板接受不了甚纲,老板無(wú)法快速推廣到市場(chǎng)里面。開(kāi)發(fā)的功能越多,功能越強(qiáng)大的話,一旦業(yè)務(wù)發(fā)生調(diào)整的話,軟件不好發(fā)生變動(dòng)。所以要分為很多個(gè)階段憨颠。開(kāi)發(fā)和產(chǎn)品經(jīng)理很多容易犯這個(gè)毛病,剛開(kāi)始就設(shè)計(jì)都喜歡大而全往核,精而細(xì)硫痰。 產(chǎn)品經(jīng)理經(jīng)常愛(ài)說(shuō):『別人的系統(tǒng)都有這個(gè)功能非春,你為什么做不了!』鳍悠,其實(shí)可以這么懟過(guò)去税娜,給他上一課:『這樣的產(chǎn)品設(shè)計(jì)根本就不能滿足現(xiàn)階段產(chǎn)品設(shè)計(jì)的適應(yīng)性!』

3.2 結(jié)構(gòu)穩(wěn)定性

????我們?cè)O(shè)計(jì)的要相對(duì)的穩(wěn)定性藏研,一定確定一定要相對(duì)的穩(wěn)定性敬矩,如果經(jīng)常變動(dòng),就相對(duì)于房子的地基蠢挡,你看到那個(gè)房子蓋好后的地基經(jīng)常發(fā)生變動(dòng)弧岳。如果軟件經(jīng)常發(fā)生,太悲劇了业踏。體系結(jié)構(gòu)設(shè)計(jì)的不穩(wěn)定禽炬,范圍不清楚,如果一個(gè)系統(tǒng)剛開(kāi)始是B2C勤家,突然要變成B2B腹尖,表結(jié)構(gòu),系統(tǒng)模塊伐脖,界面热幔,全部都要發(fā)生比較大的改變。整個(gè)項(xiàng)目變的很輪亂讼庇,需求不停的變動(dòng)導(dǎo)致系統(tǒng)很混亂绎巨。導(dǎo)致開(kāi)發(fā)人員不敢動(dòng)代碼(牽一發(fā)動(dòng)全身),都是復(fù)制一份 代碼蠕啄。最后維護(hù)多份代碼场勤。對(duì)于高水平的設(shè)計(jì)師都是有一定經(jīng)驗(yàn)的,可以預(yù)先知道那些需求是基本不變的,那些需求是可變的和媳。
必須導(dǎo)出:可變需求和可變需求格遭。
????舉個(gè)例子:之前項(xiàng)目中針對(duì)消息中心的設(shè)計(jì),消息中心:對(duì)于用戶來(lái)說(shuō)會(huì)有很多種類(lèi)的消息窗价。消息除了pc端如庭,移動(dòng)端也有很多的消息,物流消息撼港,營(yíng)銷(xiāo)消息坪它,通知消息。當(dāng)時(shí)就有一個(gè)問(wèn)題帝牡, 實(shí)際的消息中心往毡,就是接收到各種渠道的消息,然后分發(fā)到各個(gè)平臺(tái)(郵件靶溜,短信开瞭,推送,系統(tǒng)消息信息)罩息。之前沒(méi)有消息中心嗤详,都是業(yè)務(wù)方自己各自來(lái)完成的。為了滿足原子性瓷炮,原子是不可變的葱色,消息中心需要做的就是按照業(yè)務(wù)方的需求把消息發(fā)送出去,發(fā)送到對(duì)應(yīng)的渠道娘香,短信苍狰。但是消息中心是在業(yè)務(wù)平臺(tái)之后設(shè)計(jì)的,業(yè)務(wù)平臺(tái)不可能因?yàn)榘l(fā)送消息修改自身的業(yè)務(wù)代碼烘绽。在消息中心專(zhuān)門(mén)設(shè)計(jì)了一個(gè)監(jiān)聽(tīng)模塊淋昭,監(jiān)聽(tīng)業(yè)務(wù)方的一個(gè)動(dòng)作,這個(gè)模塊跟業(yè)務(wù)平臺(tái)是緊耦合的安接,事件監(jiān)聽(tīng)模塊隨著業(yè)務(wù)而變動(dòng)翔忽,消息中心的核心功能不會(huì)發(fā)生變動(dòng)的,因?yàn)楣δ芎芗兇饩褪前l(fā)消息盏檐,收消息呀打,推送消息。這就是當(dāng)時(shí)如何保證穩(wěn)定性的問(wèn)題糯笙。在模塊上進(jìn)行劃分。如果之后在需要拆分的話撩银,直接把模塊進(jìn)行拆分给涕。監(jiān)聽(tīng)模塊,按照業(yè)務(wù)的變更進(jìn)行變更。
???? 穩(wěn)定性够庙,就不會(huì)被業(yè)務(wù)需求方趕著走恭应,項(xiàng)目是可控的。天天不用擔(dān)心老板又有新需求耘眨。

3.3 擴(kuò)展性

????軟件在擴(kuò)展新功能的難易程度昼榛。擴(kuò)展性越好,適應(yīng)變化的能力越強(qiáng)剔难,尤其是敏捷開(kāi)發(fā)胆屿,如果擴(kuò)展能力不強(qiáng)的話,很容易進(jìn)入一個(gè)死胡同里面去偶宫。區(qū)分可變動(dòng)和不可變動(dòng)非迹。軟件體量約小,擴(kuò)展能力越強(qiáng)纯趋,船小好調(diào)頭憎兽。為什么項(xiàng)目分階段,就是為了可擴(kuò)展吵冒。系統(tǒng)的體量肯定受限業(yè)務(wù)的纯命,越大的項(xiàng)目擴(kuò)展性越難,所以要進(jìn)行分布式(應(yīng)用層痹栖,中間業(yè)務(wù)層亿汞,原子服務(wù)層),分層(控制層结耀,服務(wù)層留夜,數(shù)據(jù)訪問(wèn)層),越是往下穩(wěn)定图甜。
????合理的業(yè)務(wù)模塊劃分碍粥,擴(kuò)展的時(shí)候根據(jù)模塊進(jìn)行拆分?jǐn)U展。業(yè)務(wù)的邊界劃分黑毅。

3.4 是不是所有的系統(tǒng)在設(shè)計(jì)的時(shí)候都要考慮擴(kuò)展性

????一次性項(xiàng)目嚼摩,只要完成現(xiàn)階段的功能就可以了,例如兩個(gè)單獨(dú)的公司的對(duì)接接口矿瘦,其實(shí)很多時(shí)候因?yàn)榭赡苁且淮涡缘恼砻妫瑳](méi)必要考慮擴(kuò)展性,如果考慮可能就變成了過(guò)度設(shè)計(jì)缚去。如果做開(kāi)放平臺(tái)的話潮秘,肯定要考慮擴(kuò)展性。

3.5 可復(fù)用性

????用一次還可以繼續(xù)在用易结,工具類(lèi)枕荞,公共的組件柜候。工具類(lèi)一定設(shè)計(jì)的純粹(對(duì)使用環(huán)境沒(méi)有假設(shè),少配置零配置躏精,沒(méi)有依賴)

  • 表結(jié)構(gòu)設(shè)計(jì)
  1. 方法論
  2. 表結(jié)構(gòu)設(shè)計(jì)
  3. 性能擴(kuò)展性考慮
  • 系統(tǒng)的模塊設(shè)計(jì)

  • 原型界面設(shè)計(jì)

  • 設(shè)計(jì)模式

  • 數(shù)據(jù)結(jié)構(gòu)和算法

PS:在之前也是不做設(shè)計(jì)的渣刷,但是做過(guò)設(shè)計(jì)的后明顯是跟不做設(shè)計(jì)有很大的區(qū)別的。很多提前設(shè)計(jì)的好矗烛,做設(shè)計(jì)很容易可控辅柴。不管大家對(duì)設(shè)計(jì)的理論有多少,設(shè)計(jì)是必須的瞭吃。凡事預(yù)則立不預(yù)則廢碌嘀。設(shè)計(jì)是為了讓開(kāi)發(fā),測(cè)試人員虱而,產(chǎn)品經(jīng)理(設(shè)計(jì)沒(méi)有偏差)筏餐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市牡拇,隨后出現(xiàn)的幾起案子魁瞪,更是在濱河造成了極大的恐慌,老刑警劉巖惠呼,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件导俘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剔蹋,警方通過(guò)查閱死者的電腦和手機(jī)旅薄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泣崩,“玉大人少梁,你說(shuō)我怎么就攤上這事〗酶叮” “怎么了凯沪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)买优。 經(jīng)常有香客問(wèn)我妨马,道長(zhǎng),這世上最難降的妖魔是什么杀赢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任烘跺,我火速辦了婚禮,結(jié)果婚禮上脂崔,老公的妹妹穿的比我還像新娘滤淳。我一直安慰自己,他們只是感情好砌左,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布娇钱。 她就那樣靜靜地躺著伤柄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪文搂。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天秤朗,我揣著相機(jī)與錄音煤蹭,去河邊找鬼。 笑死取视,一個(gè)胖子當(dāng)著我的面吹牛硝皂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播作谭,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼稽物,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了折欠?” 一聲冷哼從身側(cè)響起贝或,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锐秦,沒(méi)想到半個(gè)月后咪奖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酱床,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年羊赵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扇谣。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昧捷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罐寨,到底是詐尸還是另有隱情靡挥,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布衩茸,位于F島的核電站芹血,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏楞慈。R本人自食惡果不足惜幔烛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望囊蓝。 院中可真熱鬧饿悬,春花似錦、人聲如沸聚霜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弟劲,卻和暖如春祷安,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兔乞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工汇鞭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庸追。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓霍骄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親淡溯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子读整,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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