討論一下研發策略
原題:
某公司研發了一種機器,市場效果很好,用戶也比較滿意。這個公司又要
研發第二代產品。第二代產品是在第一代產品的基礎上做了一些改進。例
如,綜合放大器是這種機器的硬件模塊。第二代產品的綜合放大器保留了
第一代的部分功能,修改了另一部分功能。
綜合放大器有個軟件控制模塊,叫做A。
在開始研發第二代產品的時候,有人提議將第一代綜合放大器控制模塊A分
成兩個模塊A1和B。其中B控制第一代第二代綜合放大器中共同的部分功能。
再研發A2控制第二代綜合放大器中修改了的部分功能。這樣A1和B控制第一
代綜合放大器,A2和B控制第二代綜合放大器。理由是在研發第二代產品的
過程中,如果改正了B的錯誤,也同時改正了第一代產品的錯誤。
也有人持反對意見,如果這樣做,耗費資源。如果改正了B的錯誤,既要在
第二代機器上測試,也要在第一代機器上測試。公司正在醞釀第三代產品,
第三代產品離第二代產品近離第一代產品遠,劃分模塊很困難。還是A控制
第一代綜合放大器,再做A2’(等同A2和B的功能)控制第二代綜合放大器為
好。
雙方都沒有列出他們的全部理由。你作為一個研發策略決策人,你的觀點
是什麼?理由?
討論:
其實這些策略都來源於歷史上的Divide-Conquer思想。也就是問題很大或
很複雜的時候,把大的問題或複雜的問題劃分成很多小問題或簡單問題,再
一個個地解決這些小問題或簡單問題。這樣總問題就會得到解決。我們之所
以這麼做是因為人們不善於在段時間內精確地處理大量的信息。Divide-
Conquer思想就解決了這個問題。在把大問題劃分成小問題時,沒有處理大量
的信息。在解決一個小問題時也沒有處理大量的信息。這就要求每個小問題
相對獨立,在我集中力量解決這個問題時,可以暫時不考慮和少考慮其他問題。
所以要把大問題劃分成子問題時,要注意子問題的相對獨立性。
今天的模塊研發思想就是Divide-Conquer思想的延伸。在把大系統劃分成小
模塊時,沒有處理大量的信息。在研發一個小模塊時也沒有處理大量的信息,
只專注於這模塊的設計,對其他模塊只了解接口信息就夠了。模塊的劃分也要
求每個模塊的相對獨立性。也就是對系統的功能做小的改動時,只修改一個或
幾個模塊,而不是牽一髮動全身。
現在看看放大器問題。第一代放大器控制模塊是A。如果把A分成A1和B,讓B控
制第一代第二代放大器中共同的部分功能,讓A2和B控制第二代放大器,我們來
討論一下利弊。如果B非常獨立,問題不大。假設B就是一個積分算法。B在第二
代改得越正確,對第一代也越正確,幾乎不需要在第一代上測試。可是如果B是
主要控制硬件的,那麼第二代修改了B,不能保證對第一代是正確的,要在第一
代機器上測試。這就有點牽一髮動全身的味道。
把A改成(A1,B),把A2改成(A2,B),類似代數中的提取共因式。如果共因式B
非常獨立,可以。如果共因式B不很獨立,提取共因式就違背了Divide-Conquer
思想。
|