在軟件開發(fā)領(lǐng)域,人們越來越多地提到需求。和其他領(lǐng)域一樣,這里的需求源自用戶的“需要”,而不同則在于開發(fā)軟件系統(tǒng)最困難的部分就是準確說明開發(fā)什么,這就是軟件項目的需求。
為什么我們?nèi)绱硕嗟年P(guān)注需求?原因恰恰在于我們無法有效地獲取需求,我們無法準確地表述需求,而需求的變化對于整個項目的成本、周期影響極大,所謂“一石激起千層浪”。所以,想讓項目獲得成功,首先要做好需求分析。
什么是需求?
要了解需求的本質(zhì),首先需要明確需求是為誰負責(zé)的?是用戶還是開發(fā)人員?當然用戶是上帝,我們所做的一切工作對他們負責(zé),但是客戶的愿望并不全是需求,只有從業(yè)務(wù)要求開始,考慮開發(fā)實際情況,在此基礎(chǔ)上建立了開發(fā)承諾的才能稱之為需求。
1997年IEEE軟件工程標準詞匯表對軟件需求的定義為:
用戶解決問題或達到目標所需的條件或能力。
系統(tǒng)或系統(tǒng)部件要滿足合同、標準、規(guī)范或其它正式規(guī)定文檔所需具有的條件或能力。
一種反映上面1或2所描述的條件或權(quán)能的文檔說明。
請注意該定義中“條件或權(quán)能”、“合同和規(guī)范”這些詞,通俗地說,“需求”就是用戶的需要,包括用戶要解決的問題、達到的目標,以及實現(xiàn)這些目標所需要的條件,表現(xiàn)形式一般為文檔形式。
雖然需求工作被越來越多的提及,但是在項目開發(fā)工作中,很多人對需求的認識還遠遠不夠。小到幾十萬元,大到上億元的軟件項目,它們的需求都或多或少的存在各種問題,原因是多方面的:開發(fā)者的重視程度、技術(shù)原因、人員組織原因、溝通、機制等,都表明做好軟件需求開發(fā)是一項系統(tǒng)工作,而不是簡單的技術(shù)工作。
需求開發(fā)和管理
什么才是好的需求?裝修過房子的人應(yīng)該知道,裝修開始之前,設(shè)計師都會給出一份設(shè)計圖或者效果圖,客戶滿意了才開始動工。開發(fā)軟件和裝修房子一樣,一份好的需求就是在開發(fā)前做出交付時的效果。要做到這一點,這需要從業(yè)務(wù)、功能和系統(tǒng)三個層次分別進行分析和描述。
需求分析的過程包括了需求開發(fā)和需求管理兩個部分。需求開發(fā)是指從情況收集、分析和評價到編寫文檔、驗證等一系列產(chǎn)生需求的活動,分為四個階段:需求獲取、分析、制訂規(guī)格和驗證。這四個階段不一定是遵循線性順序的,它們是相互獨立和反復(fù)的。需求管理是軟件項目開發(fā)過程中控制和維持需求約定的活動,它包括變更控制、版本控制、需求跟蹤和狀態(tài)跟蹤等工作。
從工作流程上,需求分析過程從用戶愿望開始,獲取需求,分析需求,形成規(guī)格文檔;經(jīng)過迭代驗證,產(chǎn)生需求變更,形成新的規(guī)格文檔,并進行版本控制;反復(fù)進行該迭代驗證過程,直至雙方確認,形成建立開發(fā)承諾的需求文檔。
如何做好需求分析?
需求分析對分析人員提出更高要求,它不僅需要分析人員具有豐富的需求分析經(jīng)驗和良好的專業(yè)素質(zhì),還要求分析人員具有良好的學(xué)習(xí)能力、公關(guān)能力、語言能力和組織能力。在實際工作中分析人員要面對不同單位、不同部門的不同人員,他們可能有著不同文化、不同關(guān)系和不同的管理水平等,面對如此紛繁復(fù)雜的環(huán)境,如何做好需求分析工作呢?這里從需求開發(fā)和需求管理兩個方面介紹一些相關(guān)的方法。
首先,需求開發(fā)可采用的方法很多,不同的開發(fā)方式有著不同的分析方法:
繪制關(guān)聯(lián)圖:繪制系統(tǒng)關(guān)聯(lián)圖是用于定義系統(tǒng)與系統(tǒng)外部實體間的界限和接口的簡單模型。
可行性分析:在允許的成本、性能要求下,分析每項需求實施的可行性,提出需求實現(xiàn)相關(guān)風(fēng)險,包括與其它需求的沖突,對外界因素的依賴和技術(shù)障礙。
需求優(yōu)先級:確定使用實例、產(chǎn)品特性或單項需求實現(xiàn)的優(yōu)先級別。以優(yōu)先級為基礎(chǔ)確定產(chǎn)品版本將包括哪些特性或哪類需求。
系統(tǒng)原型:當用戶自身對
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html