天天看點

1511_人月神話閱讀筆記_沒有銀彈上篇

全部學習彙總: ​​GitHub - GreyZhang/The_Mythical_Man_Month: My reading notes of The Mythical Man-Month.​​

接下來整理的一個章節内容比較多,我将會分成兩次來整理我的學習筆記。這個章節的名字叫做沒有銀彈,後面來看看這個題目大概的由來。

1511_人月神話閱讀筆記_沒有銀彈上篇
1511_人月神話閱讀筆記_沒有銀彈上篇
1511_人月神話閱讀筆記_沒有銀彈上篇

其實,銀彈是來自于人狼故事傳說的。人狼是非常可怕的,可以變換成各種可怕的怪物。但是,銀彈是人狼的克星。我們軟體開發中也會遇到各種各樣的問題,如同一個個怪物,是否我們也能夠找到一個威力強大的武器來解決各種各樣的問題呢?

1511_人月神話閱讀筆記_沒有銀彈上篇

其實,之前内容梳理的時候其實就看到了這一點差異。銀彈其實是被翻譯成了多種不同的叫法,這樣雖然沒有對整體的了解造成太大的影響,但是還是給讀者一種不連貫的感覺。

1511_人月神話閱讀筆記_沒有銀彈上篇

軟體的開發工作很多時候來自于硬體的更新,之後,軟體需要不斷進行更新疊代。典型的例子是現在的作業系統的開發,有很多新的處理器的比對還得保證一系列裝置的相容性。在我所接觸的嵌入式領域,這種現象不是很明顯,但是現在越來越多的換主晶片其實帶來的工作影響與此十分相似了。

在所有的工作中,明确即将設計的産品是什麼,什麼樣子其實是最重要的。相比之下,如何去實作反倒是次要一些。

1511_人月神話閱讀筆記_沒有銀彈上篇

軟體本身是複雜的,而且随着硬體更新以及客戶需求的更新,軟體如果是一個持續維護的産品,它将會更加複雜龐大。而一系列的複雜堆疊下,各種産品的問題瑕疵也會層出不窮。

1511_人月神話閱讀筆記_沒有銀彈上篇

很多的軟體複雜度來自于保持接口的一緻性,其實這部分項目經理有時候很難意識到。這其實還真是其中的一點,現在我看到的很多難以解決的狀态時喜中憂。什麼叫做喜中憂呢?那就是,我們原本的基礎可能已經比較标準化了,但是我們現在又要做保持接口一緻性的工作。而這個接口一緻性的工作,通常是跟客戶的一個非标準接口保持一緻,這樣的工作難度就會大而複雜了。

1511_人月神話閱讀筆記_沒有銀彈上篇

這樣的問題其實并不是所有的軟體中的共性,也有一些例外。我所接觸的嵌入式軟體開發,其實開發的思路以及方法相當成熟。但是挑戰點在于什麼呢?其實是驅動的設計,因為我們需要用開發的方法來實作對各種各樣的晶片本身的描述,而這是一個很大的集合。

1511_人月神話閱讀筆記_沒有銀彈上篇

我接觸了一些網際網路、桌面用到的各種軟體,了解了一下發現他們的開發模式的确是友好很多。開發的效率也非常高,因為現在的計算機的資源一般不是什麼限制。相比之下,嵌入式軟體開發并沒有那麼幸運。其實,這麼多年以來,嵌入式軟體開發的整體模式我個人覺得并沒有太大的革新。當然,純粹的邏輯設計部分往模型化方向發展,算是一個很好的進步。