- 代碼的藝術:用工程思維驅動軟件開發
- 章淼
- 715字
- 2022-05-05 21:55:56
2.5.1 如何描述需求
在描述需求時,我們要考慮的是:如何用寥寥數語勾勒出一個系統的功能。
以GFS(Google File System,Google文件系統)為例,其需求可以被描述為:
GFS is designed to provide efficient, reliable access to data using large clusters of commodity hardware.
(GFS的設計目的是,基于商用硬件組成的大型集群,為其提供有效和可靠的數據訪問機制。)
從上面這句話中我們可以得到如下幾個要點。
(1)GFS是用來保存數據的。
(2)GFS用于很大的集群(Large Cluster)。
(3)GFS用于標準的商用硬件(Commodity Hardware),而不是專用的硬件。
(4)GFS提供有效的(Efficient)、可靠的(Reliable)數據訪問機制。
在獲得這些需求信息后,是不是就可以開始做系統設計了?并不是,我們還需要更加詳細的信息,例如:
(1)這個系統可以存儲的文件數量是幾百萬、幾千萬個,還是幾十億個?
(2)這個系統存儲的文件的大小是如何分布的,是都為相同大小,還是分布在一個很大的范圍內?是幾十KB,還是幾百MB、幾百GB?
(3)這個系統的總存儲容量,是幾百GB,還是幾百TB,或是幾百PB?
(4)這個系統的讀寫能力是怎樣的,包括每秒讀寫文件的次數、數據傳輸速率、讀寫延遲等參數。
(5)這個系統的容錯能力是怎樣的,計劃在哪些錯誤場景下可以繼續工作。是幾臺存儲服務器發生故障,還是單/多個機房發生故障?
(6)這個系統在一致性方面的定位是什么樣的,是強一致、弱一致,還是最終一致?
(7)這個系統對外的接口是什么樣的,是通用的文件讀寫接口,還是特殊的接口?
……
類似這樣的需求描述,還需要列出很多條才能對GFS這樣的存儲系統的需求做出完整和準確的刻畫。其中,任何一點變化,都可能使系統的設計發生很大變化。
而且在需求描述中,需要使用精確的數字來刻畫需求。對于很多指標來說,量變會導致質變。例如,總存儲量從幾百TB改變為幾百PB,會導致設計發生重大變化。