軟件項(xiàng)目需求分析與管理的十大疑問
發(fā)布時(shí)間:2016/7/22 9:33:00
軟件項(xiàng)目需求管理是指一個(gè)為系統(tǒng)的需求進(jìn)行啟發(fā)、組織、建檔的系統(tǒng)方法,一個(gè)建立和維護(hù)客戶和項(xiàng)目團(tuán)隊(duì)之間關(guān)于變更系統(tǒng)需求所達(dá)成的一致性的過程。
軟件項(xiàng)目需求管理是指一個(gè)為系統(tǒng)的需求進(jìn)行啟發(fā)、組織、建檔的系統(tǒng)方法,一個(gè)建立和維護(hù)客戶和項(xiàng)目團(tuán)隊(duì)之間關(guān)于變更系統(tǒng)需求所達(dá)成的一致性的過程。軟件需求分析就是把軟件計(jì)劃期間建立的軟件可行性分析求精和細(xì)化,分析各種可能的解法,并且分配給各個(gè)軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統(tǒng)必須完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。那么,在實(shí)際管理工作中,會(huì)有哪些疑問呢?
1.需求工作涉及到哪些內(nèi)容
首先需求包括了產(chǎn)品需求,用戶需求,軟件需求。產(chǎn)品需求關(guān)注的是產(chǎn)品的標(biāo)準(zhǔn)化和通用化,會(huì)對(duì)收集到的用戶需求進(jìn)行分類和優(yōu)化,結(jié)合業(yè)界標(biāo)準(zhǔn)系統(tǒng)模型進(jìn)行抽象并通用化。用戶需求反映的是用戶面臨的問題域,根據(jù)問題域用戶期望的能夠達(dá)到的解決效果;而對(duì)于軟件需求則是用軟件工程的語言結(jié)構(gòu)化和文檔化的對(duì)用戶需求和產(chǎn)品需求的描述。
需求工作涉及到需求開發(fā)和需求管理。需求開發(fā)涉及到需求調(diào)研,需求收集,需求分析,需求開發(fā)等工作,其中的重點(diǎn)有業(yè)務(wù)流程,數(shù)據(jù)字典,業(yè)務(wù)規(guī)則,界面原型。對(duì)于基于面向?qū)ο蟮拈_發(fā)方法則涉及到業(yè)務(wù)用例,系統(tǒng)用例(涉眾,基本流,擴(kuò)展流,業(yè)務(wù)規(guī)則,界面,操作)等諸多內(nèi)容。需求管理工作涉及到需求的狀態(tài)管理,變更管理,需求的跟蹤,需求的驗(yàn)證和確認(rèn)等重要內(nèi)容。
在我們需求分析和開發(fā)中,最容易忽視的主要有兩點(diǎn),一個(gè)就是缺乏需求分析和開發(fā)的過程,把用戶需求直接作為了軟件需求,沒有需求建模和抽象的過程。另外一點(diǎn)就是對(duì)于性能,安全,易用性,可維護(hù)性和擴(kuò)展性等非功能性需求沒有考慮,導(dǎo)致開發(fā)出來的系統(tǒng)是一個(gè)不好用的半成品。CMMI把需求管理放到2級(jí),需求開發(fā)放到3級(jí),實(shí)際上真正的提高需求人員的需求分析和開發(fā)能力才是解決需求問題之道。需求分析開發(fā)做不好,需求變更或追蹤管的再好也沒有用處,在這點(diǎn)上一定不能本末倒置。
2.做好需求分析需要具備哪些知識(shí)
需求分析崗位主要承擔(dān)的是系統(tǒng)分析員的工作,做需求分析的人員要有軟件工程基礎(chǔ)知識(shí)的積累,而且最好有一定的軟件開發(fā)經(jīng)驗(yàn)積累。自己做過設(shè)計(jì)開發(fā)工作的才能夠體會(huì)到如何才能夠把系統(tǒng)做好,如何更好的把軟件需求和后續(xù)實(shí)現(xiàn)更好的銜接起來。有一本《軟件需求》的書講的很系統(tǒng),從事需求工作的都值得仔細(xì)閱讀。對(duì)于采用面向?qū)ο蟮男枨箝_發(fā)和分析方法的,一定要熟悉RUP統(tǒng)一過程和用例分析和建模。
對(duì)于管理軟件都離不開其涉及到的業(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è)性的意見,或者說需求分析人員不是被用戶牽著走,而是真正的可以引導(dǎo)用戶。
3.項(xiàng)目需求分析的步驟和輸出有哪些
開始首先是需求的收集,需求收集可以通過調(diào)查表,訪談,業(yè)界標(biāo)準(zhǔn),會(huì)議討論溝通等多種方式進(jìn)行。需求收集第一是要能夠很好的描述現(xiàn)狀,第二是要搞清楚用戶的期望。同時(shí)一定要弱化用戶期望系統(tǒng)怎么做,因?yàn)橛脩舨⒉皇煜は到y(tǒng)實(shí)現(xiàn)和內(nèi)部原理,我們的軟件需求不僅僅考慮的是功能的實(shí)現(xiàn),還需要考慮需求復(fù)用,業(yè)務(wù)抽象,可擴(kuò)展和配置等多方面的問題。
收集回來的需求就需要開始進(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ī)范的文檔中。在軟件開發(fā)過程中我們最強(qiáng)調(diào)的需要文檔化的輸出就是需求文檔和總體設(shè)計(jì)方案文檔。
需求分析階段還有一個(gè)重點(diǎn)的產(chǎn)出就是原型和DEMO,為了更好的和用戶溝通并挖掘需求,我們需要將我們理解后的想法更加形象的講述給用戶,所以原型就顯得額外重要。不管是否是拋棄的原型,都需要客戶看到的原型和最終實(shí)現(xiàn)的系統(tǒng)基本一致,因此原型開發(fā)需要投入一定的時(shí)間,并根據(jù)客戶反饋的信息不斷修正。在原型中多投入些時(shí)間,就會(huì)多減少一份后期需求變更引起的返工時(shí)間。軟件原型是降低需求變更風(fēng)險(xiǎn)的有效方法。
4.需求的驗(yàn)證和確認(rèn)包括哪些事情
我們可以再簡單理解下驗(yàn)證和確認(rèn)的區(qū)別,對(duì)于判斷最終開發(fā)出來的系統(tǒng)是否和用戶想要的東西是一致的過程叫確認(rèn),對(duì)于你理解和描述的需求和我當(dāng)初的想法是否是一致的過程叫驗(yàn)證。需求的驗(yàn)證包括了很多的內(nèi)容,涉及到軟件開發(fā)中上下游相關(guān)人員的參與。首先你結(jié)構(gòu)和文檔化后的需求需要用戶來驗(yàn)證是否和他們的想法是一致的,是否把用戶的真實(shí)意圖描述清楚了,以保證需求本身的正確性。對(duì)于后續(xù)設(shè)計(jì)開發(fā)階段的人員也需要對(duì)需求進(jìn)行評(píng)審以保證需求的可實(shí)現(xiàn)性,確認(rèn)需求描述是否清楚,是否是可以實(shí)現(xiàn)的,對(duì)于業(yè)務(wù)對(duì)象,流程和規(guī)則是否存在不可實(shí)現(xiàn)的模糊描述詞語。對(duì)于測試人員,則主要是確認(rèn)需求是否是可測試的,是否在需求描述中引入了較多的易用,較好,應(yīng)該等不確定和不可測試的詞語。對(duì)于大型的軟件項(xiàng)目,如果有專門的產(chǎn)品化標(biāo)準(zhǔn)和UI組的話,還需要對(duì)需求的易用性和產(chǎn)品交互等方面進(jìn)行評(píng)估,以評(píng)價(jià)整個(gè)軟件系統(tǒng)的產(chǎn)品化。
確認(rèn)主要是軟件系統(tǒng)已經(jīng)開發(fā)完成后交付給用戶后驗(yàn)收的時(shí)候,用戶確認(rèn)系統(tǒng)是否實(shí)現(xiàn)了當(dāng)初的需求。為了保證確認(rèn)過程的順利,就必須重視需求驗(yàn)證的過程,需求驗(yàn)證不僅僅是需求階段對(duì)需求文檔的評(píng)審,還需要關(guān)注設(shè)計(jì),開發(fā)等各階段對(duì)需求的實(shí)現(xiàn)情況的驗(yàn)證。
5.需求的抽象和建模體現(xiàn)在哪些方面
首先要理解需求分析和設(shè)計(jì)的目的在于滿足現(xiàn)狀并適應(yīng)變化。要想適應(yīng)變化則業(yè)務(wù)建模和需求抽象就是必須的。當(dāng)我們了解到業(yè)務(wù)的組織結(jié)構(gòu)和流程經(jīng)常面臨變動(dòng)和調(diào)整的時(shí)候,我們就需要考慮引入標(biāo)準(zhǔn)的組織結(jié)構(gòu)模型,權(quán)限模型和工作流模型。這些模型的引入使業(yè)務(wù)和需求的變動(dòng)變化為通過系統(tǒng)的靈活配置來適應(yīng)。軟件系統(tǒng)要適應(yīng)變化不是從設(shè)計(jì)階段開始的,而是我們的軟件需求本身就需要適應(yīng)變化。
需求的抽象包括了對(duì)業(yè)務(wù)對(duì)象模型的抽象,對(duì)業(yè)務(wù)規(guī)則的抽象,對(duì)流程的抽象。其中最重要的就是由業(yè)務(wù)對(duì)象抽象形成的概念模型,由流程抽象形成的數(shù)據(jù)交互模型。對(duì)于一些快速軟件開發(fā)平臺(tái)理解到的對(duì)象建模,流程建模,組織結(jié)構(gòu)和權(quán)限建模,業(yè)務(wù)規(guī)則建模,BPEL業(yè)務(wù)流程編排恰好就是需求抽象的最主要內(nèi)容。
要做好需求抽象必須具備兩方面的知識(shí),第一是真正的對(duì)所涉及到的業(yè)務(wù)領(lǐng)域及其標(biāo)準(zhǔn)模型足夠理解,其二是對(duì)軟件系統(tǒng)分析和架構(gòu)設(shè)計(jì)有較多的經(jīng)驗(yàn)積累。只有同時(shí)具備這兩方面知識(shí)才能夠做好需求建模工作。
6.為什么要做需求管理,需求管理包括哪些工作
需求管理就是IT項(xiàng)目中的范圍管理,需求管理是整個(gè)IT項(xiàng)目的源頭,IT項(xiàng)目的估算,計(jì)劃,后續(xù)的跟蹤控制,驗(yàn)證和確認(rèn)等各項(xiàng)工作都是跟需求密切相關(guān)的。因此為了保證項(xiàng)目的進(jìn)度,質(zhì)量和成本的目標(biāo)的順利實(shí)現(xiàn),保證項(xiàng)目計(jì)劃的嚴(yán)肅性和可執(zhí)行性;為了保證軟件系統(tǒng)最終開發(fā)的產(chǎn)品正是客戶期望的產(chǎn)品,必須要做好需求管理工作。
需求管理工作應(yīng)該是需求全生命周期的管理,從用戶原始需求的提出,到最終形成軟件產(chǎn)品后用戶對(duì)需求實(shí)現(xiàn)情況的驗(yàn)證以形成閉環(huán)流程。因此我們需要跟蹤和了解到需求狀態(tài)的演變過程。大型的項(xiàng)目軟件生命周期模型較為復(fù)雜,一個(gè)需求的實(shí)現(xiàn)會(huì)經(jīng)過用戶需求,軟件需求,總體設(shè)計(jì),詳細(xì)設(shè)計(jì),開發(fā)和單元測試,集成測試,系統(tǒng)測試和驗(yàn)收測試多個(gè)環(huán)節(jié),在這個(gè)過程中需要建立需求追蹤以確認(rèn)需求和中間階段產(chǎn)生的工作產(chǎn)品的一致性。另外變更管理是需求管理的另外一個(gè)重點(diǎn),需求在經(jīng)過評(píng)審確認(rèn)后需要基線并受到控制,當(dāng)出現(xiàn)需求變更的時(shí)候必須進(jìn)行相應(yīng)的需求影響分析以確認(rèn)對(duì)需求變更的處理方式,當(dāng)變更工作量影響較大的時(shí)候還需要調(diào)整并重新基線項(xiàng)目計(jì)劃。
對(duì)于整個(gè)需求調(diào)研,分析和需求開發(fā),評(píng)審確認(rèn)的過程也需要進(jìn)行管理。在這個(gè)過程中的一個(gè)重點(diǎn)就是對(duì)需求輸出的文檔需要得到用戶,項(xiàng)目組設(shè)計(jì)開發(fā)人員的共同確認(rèn)和承諾。
7.需求變更管理重要性體現(xiàn)在哪里?有哪些具體的內(nèi)容
戶不斷的提交需求修改,項(xiàng)目進(jìn)度無任何保證不斷延期;由于一次需求的修改導(dǎo)致原來本來穩(wěn)定的系統(tǒng)出現(xiàn)各種原來沒有想到的錯(cuò)誤和異常;這些都是需求管理存在缺陷的表象。需求管理的重要性就體現(xiàn)到項(xiàng)目計(jì)劃的嚴(yán)肅性和可執(zhí)行性,以保證項(xiàng)目目標(biāo)的實(shí)現(xiàn)。通過引入了需求變更管理后,使軟件需求文檔成為一份大家都共同承諾和作為依據(jù)參考的文檔,這個(gè)文檔需要在設(shè)計(jì),開發(fā),測試等多種角色之間充分傳遞和共享。另外通過需求管理工作,使每個(gè)人意識(shí)到變更對(duì)項(xiàng)目的影響和變更的代價(jià),反向去促進(jìn)需求開發(fā)質(zhì)量的提高。
需求變更管理包括了變更請(qǐng)求的提出,CBB委員會(huì)對(duì)需求進(jìn)行影響分析確認(rèn)是否變更,設(shè)計(jì)開發(fā)負(fù)責(zé)人確認(rèn)需求變更將影響到的模塊和代碼和具體修改方法,開發(fā)人員對(duì)變更進(jìn)行修改和測試,最后再有變更請(qǐng)求人對(duì)需求變更滿足情況進(jìn)行驗(yàn)證。對(duì)于變更的影響分析一般需要項(xiàng)目組的開發(fā)負(fù)責(zé)人進(jìn)行,大型項(xiàng)目可以依靠需求管理中建立的需求追蹤進(jìn)行分析,但根據(jù)實(shí)踐需求追蹤在影響分析中的作用還不明顯。
8.需求是否必須要文檔化,其意義體現(xiàn)在哪里
做人員多方溝通的基礎(chǔ),使大家對(duì)需求有一致的理解并依據(jù)該文檔開展各項(xiàng)工作。即時(shí)是對(duì)于敏捷軟件開發(fā),我們也需要對(duì)用例場景描述,CRC卡片等文檔化下來以方便溝通。
再次強(qiáng)調(diào)溝通,特別是面對(duì)面的溝通是信息傳遞最高效方式,但是當(dāng)一個(gè)信息是需要在軟件開發(fā)整個(gè)生命周期的不同階段,由不同角色人員多次使用的時(shí)候,就必須文檔化。而需求文檔恰好屬于這種類型。
9.需求優(yōu)先級(jí)的作用,如何評(píng)估需求優(yōu)先級(jí)
需求優(yōu)先級(jí)的作用在于項(xiàng)目管理和用戶滿意度提升的需要。一個(gè)系統(tǒng)上線后經(jīng)常出現(xiàn)情況就是往往經(jīng)常使用的功能都集中在20%的功能上很多功能使用很少。需求優(yōu)先級(jí)讓我們更好的把握重點(diǎn)和分配資源,真正的把20%最重要的需求,經(jīng)常使用的需求做好做精,只有這樣才能夠真正的提高用戶滿意度和達(dá)到項(xiàng)目目標(biāo)。
需求優(yōu)先級(jí)對(duì)于用戶往往最有發(fā)言權(quán),但當(dāng)一個(gè)系統(tǒng)涉及到多個(gè)業(yè)務(wù)部門和組織結(jié)構(gòu)的時(shí)候,難免出現(xiàn)各個(gè)用戶都站在自己的立場來看待需求的優(yōu)先級(jí)和緊急程度的問題。但是一個(gè)需求究竟對(duì)效率提升,成本的減少,相關(guān)周期的縮短起到了多大的貢獻(xiàn)和作用卻沒有衡量。因此對(duì)需求優(yōu)先級(jí)的評(píng)估應(yīng)該考慮引入價(jià)值工程的概念,一個(gè)需求的優(yōu)先程度應(yīng)該體現(xiàn)在需求實(shí)現(xiàn)后能夠產(chǎn)生的價(jià)值和節(jié)約的成本。
10.中小型軟件開發(fā)項(xiàng)目團(tuán)隊(duì)需求開發(fā)和管理工作的重點(diǎn)在哪里
對(duì)于中小型的項(xiàng)目團(tuán)隊(duì)一定要使用輕量級(jí)的方法論和過程,過程是為了實(shí)現(xiàn)目標(biāo)服務(wù)的,過程的目的是為了解決現(xiàn)在的問題和可能的問題。不在這個(gè)范圍內(nèi)做的過程,規(guī)則或工作都不會(huì)產(chǎn)生價(jià)值和意義。
對(duì)于中小型團(tuán)隊(duì)首先是要意識(shí)到需求工作的重要性,制定需求文檔和DEMO界面規(guī)范,對(duì)需求進(jìn)行文檔化和結(jié)構(gòu)化。其次是對(duì)開發(fā)完成的需求需要得到用戶,實(shí)現(xiàn)人員,測試等多方的評(píng)審和認(rèn)可。最后是需求文檔化后該工件需要通過各種配置管理工具進(jìn)行管理,需求完成后及時(shí)歸檔和受控,需求的變更需要受到管理而不是隨意的。(項(xiàng)目管理者聯(lián)盟)
更多內(nèi)容詳細(xì)咨詢:http://cdforum.cn/