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