【本篇爲《如何有效實現軟件的需求管理》第二篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)】
什麼是軟件需求呢?爲什麼它需要管理呢?
軟件需求完全嚴格來解釋就是:
(1) 用戶解決問題或達到目標所需條件或權能(Capability)。
(2) 系統或系統部件要滿足合同、標準、規範或其它正式規定文檔所需具有的條件或權能。
(3) 一種反映上面(1)或(2)所述條件或權能的文檔說明
也許看起來有點深奧,其實簡單來說,軟件需求就是一個軟件要實現的功能,當然這裏所謂的“功能”可能分爲兩種情況,一種是有形的,一種是無形的:
- “有形”的應該很好理解,你實際可以用到的功能,比如在Word文檔裏能把字加粗。
- “無形”的其實也好理解,雖然你平常用不到,但是還是能感受到的,比如說軟件的運行速度,穩定性,還有比如這個軟件要達到什麼目的(比如Word的目的是可以讓你處理文字信息)。
當然,其實最終所有“無形”的需求還是需要靠一個個的“有形”的需求來實現,只是有些“有形“的需求即使實現了客戶也無法直接看到,只有設計、開發與測試才能看到它們。
那爲什麼要對需求進行管理呢?
軟件需求是隨着計算機的發展而發展的,在計算機發展早期,軟件規模很小,所以當時大家關注的是編碼,而對於需求並不怎麼關注,後來隨着“軟件危機”的出現,誕生了軟件工程,而需求階段就是其第一階段,至此,軟件需求(也稱之爲需求分析)階段開始慢慢被關注。
大家都知道,“軟件危機”的原因是落後的軟件生產方式無法滿足迅速增長的計算機軟件需求,軟件系統的規模越來越大,複雜程度越來越高,軟件可靠性問題也越來越突出,原來的個人設計、個人使用的方式不再能滿足要求,迫切需要改變軟件生產方式,提高軟件生產率,軟件危機開始爆發。
而軟件需求分析階段作爲軟件工程的第一階段,需要爲一個軟件的開發搭好最初的框架並且還要考慮好後面可能的修改,所以對於軟件可靠性、易用性、可擴展性和可維護性來說,需求分析階段是及其重要的,直接關係到一個軟件是否能夠成功。
如果一個產品在需求分析階段沒有被設計好的話,在以後的各個階段,開發與維護的成本就會非常高,導致最後失敗的可能性就會非常大,著名的例子比如微軟的Vista,設計初期沒有考慮好兼容性與硬件,導致發佈以後發現與其他軟件的兼容性很差,而且硬件要求又很高,很多客戶不買他們的賬,所以最後匆匆收場,趕緊推出Windows 7來,要知道Vista的開發成本估計要接近百億美金了,都還沒怎麼賺錢就趕緊推出另外一個產品,足見其失敗了。
所以軟件需求分析階段對於軟件工程而言,已經成爲至關重要的階段,其實按照我的理解,它已經成爲軟件工程最重要的階段,記住,不是之一。(當然,我這裏說的需求分析階段是包含軟件的設計階段的)
一個軟件的成功與否,在需求分析與設計階段已經可以基本上預見了,因爲需求分析與設計階段從概念上其實已經把這個產品做出來了,而之後的編碼階段只是去實現它,讓產品能真正可以去用。那這個“實現”階段其實相對來說就不會那麼重要了,所以現在很多跨國公司只在總部保留設計部門,研發部門都外包出去,就是這個原因。 “蘋果”就是這樣一個公司,把需求分析與設計工作做好,讓臺灣人去把產品做出來,最後得到一個完美的產品。
既然軟件需求階段已經變成如此重要,那對它的管理也就相應的變得特別重要了,只有把需求設計做好了,產品纔有可能成功,所以我們就需要對這個階段進行有效的管理,而且是非常有效的管理!
(未完待續)