需求術(shù)語的概覽
什么是需求?什么是需求分析?什么是需求跟蹤?什么是需求獲取?什么是需求規(guī)格?什么是需求驗證?什么是需求變更?……一堆關(guān)于需求的問題,一堆關(guān)于需求和需求管理的惱人問題,需求真的很重要嗎?那為什么如此難以把握?為什么在軟件工程中如此難以應(yīng)用呢?
您作為從事項目開發(fā),尤其是軟件項目開發(fā)的負責人,需求分析師,系統(tǒng)架構(gòu)師,程序員,測試人員,維護人員,項目的使用者,只要您是項目開發(fā)和應(yīng)用中的一位成員,您一定思考過上述的問題,或許您曾為此問題曾經(jīng)與人激烈討論過,或許您已經(jīng)疲于爭論已經(jīng)在實際的項目中應(yīng)用您的認識和體會了。
上述這些話,在 IBM 或者軟件行業(yè)協(xié)會舉辦的需求管理講座上,我以 IBM Rational 產(chǎn)品講師的身份曾經(jīng)多次詢問過客戶和聽眾,他們每每給予我的回應(yīng)除了無奈的笑之,就是帶著期許的眼光等待著我給出回答。
什么是需求
對于第一個問題:什么是需求?很多需求專家和權(quán)威機構(gòu)已經(jīng)給出了他們的描述,為什么是描述而不是定義呢?“因為軟件產(chǎn)業(yè)存在的一個問題就是缺乏統(tǒng)一定義的名詞術(shù)語來描述我們的工作。客戶所定義的“需求”對于開發(fā)者似乎是一個較高層次的產(chǎn)品概念。而開發(fā)人員所說的“需求”對用戶來說又象是詳細設(shè)計了。實際上,軟件需求包含著多個層次,不同層次需求從不同角度與不同程度反映著細節(jié)問題:
---IEEE 軟件工程標準詞匯表(1997)中需求為:
(1)用戶解決問題或達到目標所需的條件或能力
(2)系統(tǒng)或系統(tǒng)部件要滿足合同、標準、規(guī)范或其它正式規(guī)定文檔所需具有的條件或能力
(3)一種反映上面(1)或(2)所描述的條件或能力的文檔說明?!?BR>---Jones 認為“需求是用戶所需要的并能觸發(fā)一個程序或系統(tǒng)開發(fā)工作的說明 ----(Jones 1994)”
---Alan 認為“從系統(tǒng)外部能夠發(fā)現(xiàn)系統(tǒng)所具有的滿足于用戶的特點、功能及屬性等 ----(Alan Davis 1993)”
---S&S 認為“需求是指明必須實現(xiàn)什么的規(guī)格說明。它描述了系統(tǒng)的行為、特性或?qū)傩?,是在開發(fā)過程中對系統(tǒng)的約束 ----(Sommerville and Sawyer 1997)”
所以引出上述這些描述,是因為我們仔細閱讀上述權(quán)威機構(gòu)和專家的描述,可以發(fā)現(xiàn),他們分別從用戶,從系統(tǒng),從系統(tǒng)部件,從作用,從實現(xiàn)等不同方面對需求進行了闡述,至少通過上述的描述我們可以知道,需求基于不同的立場和角度是可以有不同的理解的,這也是為什么總是會有人針對什么是需求喋喋不休的爭論,而最終誰也無法說服誰的場景在軟件開發(fā)過程中層出不窮的原因。那么誰會對需求有不同的立場和角度呢?干系人,同項目或者系統(tǒng)有關(guān)的干系人(Stakeholder),前文我們提到的軟件項目開發(fā)的負責人,需求分析師,系統(tǒng)架構(gòu)師,程序員,測試人員,維護人員,項目的使用者等等,這些都是需求的干系人,因為有干系人的存在,就會有基于不同立場和角度的需求認識,這樣就會形成不同類型的需求,因此當我們在探討什么是需求時,我建議大家不要忘了思考我們正在針對何種類型的需求在進行探討,探討的目的是什么。
至此如果我們接受了從需求分類的角度考慮什么是需求。那么什么是需求分析?什么是需求跟蹤?什么是需求獲?。渴裁词切枨笠?guī)格?什么是需求驗證?什么是需求變更?……也就是我們該如何理解并組織這些需求活動和術(shù)語呢?
需求術(shù)語的組織結(jié)構(gòu)
對于第二個問題,如何理解和組織眾多需求術(shù)語和活動。本文借鑒需求管理專家 Wiegers 在《Software Requirements》一書中對于這些需求活動和概念的描述與分類, 需求工程:需求開發(fā)和管理的過程。它包括了需求開發(fā)和需
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html