五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

6. 軟件工程背后的思想是如何影響編程的

2023-07-09 23:24 作者:王小c的c  | 我要投稿

  • 引入:軟件系統(tǒng)的特點在于其的復(fù)雜性,這里的復(fù)雜性并不是說軟件開發(fā)和解決問題的難度,而是一種內(nèi)在的屬性,對著系統(tǒng)規(guī)模的增加,想要達成相同程度效能的增加,需要追加的投入是冪律增加的。
  • 不像其他工程領(lǐng)域的管理,一個人花一個月完成的項目,想要縮短到半月,只需要在加一個人就行了,但軟件領(lǐng)域卻不是這樣,越多的人反而可能會帶來更多的問題。
  • 并且這種復(fù)雜性是無法解決的;“軟件工程沒有銀彈”。
  • 擴展 《人月神話》
  • 為什么軟件工程如此復(fù)雜?根源在于三重耦合 人與人 功能與功能 過去與未來
  • 人與人的耦合,溝通成本冪率增加。軟件世界中所有都是人造的,所以當出問題之后,比如調(diào)用接口出問題,就需要去確定是接口方的問題還是自己的問題,首先就要去進行溝通(扯皮)。
  • 比較:而物理世界中的工程師則不一樣,當出問題的時候,都要先反省是否是自己的問題,而不會去懷疑物理定律。
  • 過去與未來的耦合。軟件開發(fā)極強的路徑依賴問題,迭代 版本號 向下兼容 這是只有軟件開發(fā)領(lǐng)域才有的事情(硬件也會出現(xiàn),比如芯片)
  • 擴展《程序者窘境》
  • 功能與功能的耦合。軟件工程中,如何去切割和劃分子系統(tǒng),也是人要考慮的,而人去開發(fā)開發(fā)/設(shè)計不好就會導(dǎo)致大量的耦合。
  • 比較:而真實世界中很多事情則天然已經(jīng)有了模塊和層次的劃分,并且耦合較小,比如原子分子蛋白質(zhì)
  • 這三重耦合還都不是孤立的,它們互相之間也會有影響,也會有耦合,最后呈現(xiàn)出來就是一個異常復(fù)雜的創(chuàng)造活動。

  • 如何解決呢?解耦(解決復(fù)雜性問題的通用手段)
  • 解決復(fù)雜性問題的通用手段:解耦。但是解耦也是有成本的。解耦的本質(zhì)在于在不損功能性的前提下,用性能去交換更低的復(fù)雜度?。更高的開發(fā)效率和更高的性能兩者必須取舍,找到平衡點。軟件工程就是要培養(yǎng)這種取舍與找平衡點的能力。(交通網(wǎng)案例)
  • 如何解耦?解耦的三種工具(三個維度)
  • 模塊化:比如函數(shù)/包的封裝(設(shè)計到變量作用域),微服務(wù)也算。指導(dǎo)思想(高內(nèi)聚,低耦合),第一要考慮的是如何模塊功能單一,功能和功能之間進行解耦,是技術(shù)驅(qū)動的
  • 分層化:比如操作系統(tǒng),三層架構(gòu),TCP/IP協(xié)議,前后端,瀑布開發(fā)模型。分層化的第一優(yōu)先級是每層功能的完備性,重點是對每層的需求分析和了解,驅(qū)動分層的不是技術(shù)更可能是業(yè)務(wù),將需求到實現(xiàn)的過程進行解耦,使得開發(fā)人員只需要了解這一層的結(jié)構(gòu)。也相當于是人與人之間進行解耦
  • 模式化:設(shè)計模式(23種、MVC),編程語言基本范式(面向?qū)ο?,過程式,函數(shù)式),編程原則(solid,crud),歷史和未來之間進行解耦。由高手總結(jié)出來的一些套路,新手能做的只是可以把功能實現(xiàn)出來,而是讓代碼質(zhì)量更高,耦合更小,面對不確定的未來,可以更少的修改,更少的產(chǎn)生bug,就需要用這些模式套路進行兜底了。
  • 編程范式,之前有課
  • 缺點舉例:每種解耦方式也是有代價的。模塊化需要犧牲性能,分層化需要花精力熟悉業(yè)務(wù),模塊化則會產(chǎn)生路徑依賴。
  • 軟件工程的三個方向(對稱破缺)
  • 領(lǐng)域驅(qū)動設(shè)計:用業(yè)務(wù)領(lǐng)域驅(qū)動的設(shè)計,把穩(wěn)定不變的核心業(yè)務(wù)提取出來(中臺),例子 淘寶、京東、美團這樣的超大型的軟件系統(tǒng),就會使用領(lǐng)域驅(qū)動設(shè)計。
  • 敏捷開發(fā):(瀑布模型的反動)小步快跑,及時反饋,快速試錯;為了適應(yīng)未來的變化,放棄了需求到實現(xiàn)的解耦,使得開發(fā)變得更高效。
  • 開源:最成功的的項目Linux內(nèi)核。內(nèi)核這種開發(fā)是效率優(yōu)先,為此犧牲解耦,別說什么分層和模塊化了,只要能提高效率,用goto都在所不惜,用復(fù)雜性換性能;開源就是在用一整個生態(tài)系統(tǒng)的多樣性去對抗復(fù)雜性。
  • 對稱破缺:從萬事皆有可能,變成咬定青山不放松
  • 復(fù)雜性科學(xué)相關(guān):面對復(fù)雜性問題是,唯一的工具就是解耦,解耦是有代價的

-------------------------------------------------

這個視頻很好,已整合進了個人知識體系

???????

詳細 請看個人小站 http://wangc.site/cbrain/share?nodeid=8b5deebbab3c9a00



6. 軟件工程背后的思想是如何影響編程的的評論 (共 條)

分享到微博請遵守國家法律
利津县| 南溪县| 阜阳市| 池州市| 乐至县| 金塔县| 乌鲁木齐市| 恩施市| 衡山县| 嘉祥县| 金山区| 白山市| 邛崃市| 平江县| 云龙县| 东方市| 恩施市| 台北县| 峨眉山市| 武冈市| 尼勒克县| 昌都县| 潜江市| 调兵山市| 界首市| 凤城市| 乐平市| 连州市| 和静县| 余姚市| 金川县| 贺州市| 长汀县| 萨迦县| 赣榆县| 浠水县| 旺苍县| 承德市| 临武县| 库伦旗| 二连浩特市|