軟件項(xiàng)目需求管理是指一個(gè)為系統(tǒng)的需求進(jìn)行啟發(fā)、組織、建檔的系統(tǒng)方法,一個(gè)建立和維護(hù)客戶(hù)和項(xiàng)目團(tuán)隊(duì)之間關(guān)于變更系統(tǒng)需求所達(dá)成的一致性的過(guò)程。軟件需求分析就是把軟件計(jì)劃期間建立的軟件可行性分析求精和細(xì)化,分析各種可能的解法,并且分配給各個(gè)軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統(tǒng)必須完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。那么,在實(shí)際管理工作中,會(huì)有哪些疑問(wèn)呢?
1.需求工作涉及到哪些內(nèi)容
首先需求包括了產(chǎn)品需求,用戶(hù)需求,軟件需求。產(chǎn)品需求關(guān)注的是產(chǎn)品的標(biāo)準(zhǔn)化和通用化,會(huì)對(duì)收集到的用戶(hù)需求進(jìn)行分類(lèi)和優(yōu)化,結(jié)合業(yè)界標(biāo)準(zhǔn)系統(tǒng)模型進(jìn)行抽象并通用化。用戶(hù)需求反映的是用戶(hù)面臨的問(wèn)題域,根據(jù)問(wèn)題域用戶(hù)期望的能夠達(dá)到的解決效果;而對(duì)于軟件需求則是用軟件工程的語(yǔ)言結(jié)構(gòu)化和文檔化的對(duì)用戶(hù)需求和產(chǎn)品需求的描述。
需求工作涉及到需求開(kāi)發(fā)和需求管理。需求開(kāi)發(fā)涉及到需求調(diào)研,需求收集,需求分析,需求開(kāi)發(fā)等工作,其中的重點(diǎn)有業(yè)務(wù)流程,數(shù)據(jù)字典,業(yè)務(wù)規(guī)則,界面原型。對(duì)于基于面向?qū)ο蟮拈_(kāi)發(fā)方法則涉及到業(yè)務(wù)用例,系統(tǒng)用例(涉眾,基本流,擴(kuò)展流,業(yè)務(wù)規(guī)則,界面,操作)等諸多內(nèi)容。需求管理工作涉及到需求的狀態(tài)管理,變更管理,需求的跟蹤,需求的驗(yàn)證和確認(rèn)等重要內(nèi)容。
在我們需求分析和開(kāi)發(fā)中,最容易忽視的主要有兩點(diǎn),一個(gè)就是缺乏需求分析和開(kāi)發(fā)的過(guò)程,把用戶(hù)需求直接作為了軟件需求,沒(méi)有需求建模和抽象的過(guò)程。另外一點(diǎn)就是對(duì)于性能,安全,易用性,可維護(hù)性和擴(kuò)展性等非功能性需求沒(méi)有考慮,導(dǎo)致開(kāi)發(fā)出來(lái)的系統(tǒng)是一個(gè)不好用的半成品。CMMI把需求管理放到2級(jí),需求開(kāi)發(fā)放到3級(jí),實(shí)際上真正的提高需求人員的需求分析和開(kāi)發(fā)能力才是解決需求問(wèn)題之道。需求分析開(kāi)發(fā)做不好,需求變更或追蹤管的再好也沒(méi)有用處,在這點(diǎn)上一定不能本末倒置。
2.做好需求分析需要具備哪些知識(shí)
需求分析崗位主要承擔(dān)的是系統(tǒng)分析員的工作,做需求分析的人員要有軟件工程基礎(chǔ)知識(shí)的積累,而且最好有一定的軟件開(kāi)發(fā)經(jīng)驗(yàn)積累。自己做過(guò)設(shè)計(jì)開(kāi)發(fā)工作的才能夠體會(huì)到如何才能夠把系統(tǒng)做好,如何更好的把軟件需求和后續(xù)實(shí)現(xiàn)更好的銜接起來(lái)。有一本《軟件需求》的書(shū)講的很系統(tǒng),從事需求工作的都值得仔細(xì)閱讀。對(duì)于采用面向?qū)ο蟮男枨箝_(kāi)發(fā)和分析方法的,一定要熟悉RUP統(tǒng)一過(guò)程和用例分析和建模。
對(duì)于管理軟件都離不開(kāi)其涉及到的業(yè)務(wù)領(lǐng)域,因此要做好需求分析工作必須要熟悉管理軟件所涉及到的業(yè)務(wù)領(lǐng)域,對(duì)業(yè)務(wù)領(lǐng)域相關(guān)的標(biāo)準(zhǔn)模型進(jìn)行分析和研究,對(duì)業(yè)界的一些標(biāo)準(zhǔn)和最佳實(shí)踐進(jìn)行熟悉。比如做供應(yīng)鏈管理系統(tǒng)和軟件應(yīng)該熟悉業(yè)界標(biāo)準(zhǔn)的SCOR模型,做ERP的應(yīng)該結(jié)合現(xiàn)在的業(yè)界比較大的廠商的ERP產(chǎn)品進(jìn)行學(xué)習(xí),對(duì)于研發(fā)管理系統(tǒng)可以結(jié)合PACE和IPD等等。只有熟悉了業(yè)務(wù)領(lǐng)域才可能在需求調(diào)研和分析的時(shí)候提供很多有建設(shè)性的意見(jiàn),或者說(shuō)需求分析人員不是被用戶(hù)牽著走,而是真正的可以引導(dǎo)用戶(hù)。
3.項(xiàng)目需求分析的步驟和輸出有哪些
開(kāi)始首先是需求的收集,需求收集可以通過(guò)調(diào)查表,訪談,業(yè)界標(biāo)準(zhǔn),會(huì)議討論溝通等多種方式進(jìn)行。需求收集第一是要能夠很好的描述現(xiàn)狀,第二是要搞清楚用戶(hù)的期望。同時(shí)一定要弱化用戶(hù)期望系統(tǒng)怎么做,因?yàn)橛脩?hù)并不熟悉系統(tǒng)實(shí)現(xiàn)和內(nèi)部原理,我們的軟件需求不僅僅考慮的是功能的實(shí)現(xiàn),還需要考慮需求復(fù)用,業(yè)務(wù)抽象,可擴(kuò)展和配置等多方面的問(wèn)題。
收集回來(lái)的需求就需要開(kāi)始進(jìn)行分析工作,分析包括了動(dòng)態(tài)行為分析和靜態(tài)數(shù)據(jù)分析。動(dòng)態(tài)行為分析涉及到用例分析,業(yè)務(wù)流程和活動(dòng)輸入輸出的分析,數(shù)據(jù)流分析,業(yè)務(wù)操作規(guī)則分析。靜態(tài)數(shù)據(jù)分析設(shè)計(jì)到業(yè)務(wù)對(duì)象建模,數(shù)據(jù)字典,組織結(jié)構(gòu),權(quán)限等分析。在這一個(gè)階段的重點(diǎn)就是需求的系統(tǒng)化和結(jié)構(gòu)化,最好要體現(xiàn)到規(guī)范的文檔中。在軟件開(kāi)發(fā)過(guò)程中我們最強(qiáng)調(diào)的需要文檔化的輸出就是需求文檔和總體設(shè)計(jì)方案文檔。
需求分析階段還有一個(gè)重點(diǎn)的產(chǎn)出就是原型和DEMO,為了更好的和用戶(hù)溝通并挖掘需求,我們需要將我們理解后的想法更加形象的講述給用戶(hù),所以原型就顯得額外重要。不管是否是拋棄的原型,都需要客戶(hù)看到的原型和最終實(shí)現(xiàn)的系統(tǒng)基本一致,因此原型開(kāi)發(fā)需要投入一定的時(shí)間,并根據(jù)客戶(hù)反饋的信息不斷修正。在原型中多投入些時(shí)間,就會(huì)多減少一份后期需求變更引起的返工時(shí)間。軟件原型是降低需求變更風(fēng)險(xiǎn)的有效方法。