系統工程和產品定義討論之一 如何定義一個好的系統
把大象放到冰箱裡需要幾個步驟?答案是三步,第一步把冰箱門把開,第二步把大象塞進去,第三步把冰箱門關上。
把一個系統作好需要幾個步驟?答案是兩步。第一步是保證作正確的事,do the right thing,即保證系統的定義是正確的。第二步是把事情作對,do the thing right,即把定義好的系統正確地實現出來。
如何才能保證系統定義是正確的?如何才能保證定義好的系統可以正確地被實現出來?
這裡面起關鍵作用的是系統工程, system engineering。
什麼是一個系統?
這裡的系統可以是一個專案,可以是一個產品。每個系統都可以進一步分解為更小的系統,這些小系統之間相互關聯。
比如一個智慧家居系統,這個系統可以是一個由很多智慧裝置組成的智慧家居平臺,如監控裝置,智慧音箱,智慧家電等等。每一個智慧裝置也是一個系統,其中包括硬體系統和軟體系統。其硬體系統可能包括處理器和外設以及相對應的驅動程式和韌體。處理器更是一個系統,一般來講處理器是標準的片上系統,SoC,System on chip,包擴處器本身,記憶體以及必要的外設等等。
我們這裡定義系統是一個人產品。
如何正確地定義一個系統?
人工智慧這幾年真的很火,火到你如果不用人工智慧就什麼也幹不了似的。和很多要創業的朋友聊天,經常聽到的一句話是我們要作人工智慧,我們要用人工智慧來賦能這個,我們要用人工智慧來改造那個。
每次我聽到這句話的時候都會想到一句至理名言,“手裡有一把榔頭的時候,看什麼東西都是釘子”。可惜這個世界是多種多樣的。
人工智慧是一種工具,是一種實現方法。用不用人工智慧決定於系統需求,而不是反過來的。
如下圖給出瞭如何定位一個產品。這張圖有不同的版本,但是總的原則是一致的,即一個正確系統定義從客戶需求分析開始。

ValueProposition01.jpg
客戶需求有三種,或者說有三個不同的層次。最低層的是對功能的需求。以手機為例,是個手機必須能滿足使用者打電話,上網,拍照的要求。這些要求是基本要求,如果滿足不了那產品一定賣不出去。這一層次的客戶需求對應了產品的基本功能,即feature。以手機為例,基本功能包括支援哪些空口標準,支援哪些外設,支援什麼作業系統等。
在這些基本需求之上的客戶需求是能解決客戶擔心的問題,比可靠性,安全性,防水,防摔。對這些使用者需求滿足地越好,產品的檔次最高,受歡迎程度更高。這些需求產品定義提出了更高的要求,要求產品中必須加入更多的功能模組來提升系統可靠性,安全性,必須採用更堅固的材料來保證手機螢幕更堅固,更防劃傷等。
在解決使用者擔心的問題之上的客戶需求是對使用者體驗的提升。對這一層客戶需求的更好滿足決定了iPhone為什麼可以以不到兩成的市場佔有率而攫取了八成的市場利潤。這一層的使用者需求對產品定義的影響是巨大的,包括外觀設計,使用者介面設計,品牌定位,營銷定位等等。
系統工程指導系統定義
斯蒂芬柯維提出的著名的高效能人士的七個習慣,7 habits,中第二個習慣是“以始為終,begin with the end in mind ”。
這個習慣的核心是開始作一件事的時候必須保證這件事是正確的,就好像爬一架梯子。如果梯子放在一個錯誤的牆上,越努力離最終的目標越遠。中國成語南轅北轍就是這個道理。如果方向錯了,越努力越糟糕。
下圖給出了系統工程如何指揮產品定義。

systemengineering01.png
本文關注這個V模型左半邊,如何定位一個好的系統。右半邊講如何正確實現這個系統,我會在以後的文章中和大家進行討論。
定義一個系統從最高層次的使用者需求開始,規劃系統的使用用例。從系統用例開始抽取系統需求,即系統要實現哪些功能。
系統需求定義好了之後我們才開始定義系統架構。回到前面人工智慧的討論。是不是採用人工智慧是系統架構的研究,是從屬於系統需求分析的結果。如果一個產品從人工智慧開始,那是很危險的一件事。
系統架構定義好的之後要進行模組劃分,並定義好每個模組的需求。
基於模組需求,我們再定義模組架構。
對於複雜的系統,我們可能需要重複幾次這兩步驟,直到模組已經足夠小,足夠清晰。
本文討論了系統工程如何幫助定義一個好的系統。下文將討論系統工程如何幫助實現定義好的系統。