在我們的軟件項目中,需求工作是項目成敗的關鍵。由于需求是銜接用戶方與開發(fā)方的橋梁,所以,要求需求人員既能同時理解用戶方的需求與開發(fā)方的問題,又能從項目整體角度把握、控制項目的需求,做到既能滿足用戶的要求而又不能無休止的擴大需求,以避免項目陷入泥潭。從此可以看出,軟件項目對需求人員的要求有多高。
在我們的各個軟件項目中,出現(xiàn)的大部分問題都是和需求有關??梢院敛豢鋸埖恼f,把需求工作做好,一個軟件項目就成功了80%。
一、 需求中的問題
需求工作涉及到客戶方、開發(fā)方,雙方的人員需要進行溝通、討論、分析、確認。由此可見,需求工作唯有在雙方人員的共同努力之下才能做好。
我們在需求工作中會遇到各種各樣的問題,總結、歸納起來,有如下幾種:
1. 客戶方人員忙,沒有足夠的精力參與需求工作。這個問題表現(xiàn)出了需求過程中缺乏用戶的參與,這樣的需求必定是會出問題的。
2. 客戶看到系統(tǒng)后說不是他們想要的。這個問題對于開發(fā)方是否真正了解了客戶的需求提出了疑問。
3. 客戶的需求又變了。這個問題對于如何確保客戶不能輕易改變需求提出了挑戰(zhàn)。
4. ……
由此,我們可以看出,這其中關系到需求工作中的幾個問題:What -> How -> Why。我們往往能做到What,但很少能做到How、甚至Why。
二、 重新認識需求
1. 需求的層次理論
軟件的需求是分層次的。按照軟件工程理論
在此需求的層次中,分為三層:
業(yè)務需求:描述項目的目標與范圍;
用戶需求:通過用例、場景、事件來描述用戶希望通過軟件實現(xiàn)的內容;
功能需求:描述軟件為用戶提供的一系列功能,以滿足用戶的業(yè)務需要。
通過對于業(yè)務需求、用戶需求、功能需求的獲取、分析、整理和確認工作,并加入系統(tǒng)的非功能需求及相關的約束條件,最終形成系統(tǒng)的軟件需求規(guī)格說明文檔。該文檔在項目中具有重要的意義,將為設計、開發(fā)、測試、驗收起到指導性的作用。
2. 需求工作貫穿于軟件項目生命周期
需求是貫穿于整個項目生命全周期的工作
在項目的前期準備階段,我們需要了解客戶方的業(yè)務需求;
在項目啟動后的需求工作中,要進行用戶需求的獲取、整理工作;
在獲得用戶需求后,我們要進行分析、討論、確認,并形成最終的軟件需求文檔;
在項目的設計、開發(fā)階段,需求對于設計起到定義、指導的作用;
在系統(tǒng)的測試、驗收工作中,需求文檔又起到標準、規(guī)范的作用。
由此可見,在整個軟件項目的生命周期中,需求工作是貫穿項目始終的。需求工作的重要性及我們應當對于需求工作重視的必要性可見一斑。
3. 需求工程理論
隨著軟件工程理論的不斷發(fā)展及在實踐中的應用和豐富,軟件的需求工作已經(jīng)采用工程化的思想來進行開展。具體來講,需求工程分為兩大部分:需求開發(fā)和需求管理。
需求開發(fā)在項目前期是整個項目中最為重要的工作;
需求管理則是在需求定下基線后重要的項目管理內容,它為確保項目的穩(wěn)步進行、順利開展起到重要的作用。
我們在軟件項目的需求工作中,一定要充分應用需求工程理論,充分做好需求,以保證軟件項目的順利進行。
三、 需求工作方法論
針對我們在需求工作中遇到的問題,我們在上面已經(jīng)進行了總結與歸納。為解決在需求工作中遇到的問題,更好的做好軟件項目的需求工作,我們總結的方法有:
1. 提升業(yè)務經(jīng)驗
在我們與客戶的交流過程中,我們如果對于客戶方的