需求分析中的問題總結
閱讀完林銳《軟體工程與專案管理解析》中關於需求分析章節,弄明白了以前自己做需求的時候很多問題,這些問題的存在讓我覺得需求分析這個階段就像是攔路虎,很壓抑。
1、需求階段不明
需求分析到底包含幾個階段呢?這是我一直很不理解的地方。為了弄清楚這個問題,還是得先弄明白需求的本質是什麼。
”寬泛的講,需求來源於使用者的一些‘需要’,這些‘需要’被分析、確認後形成完整的文件,該文件詳細的說明了產品‘必須或應當’做什麼。“
由此可見,”需求“就是使用者的需要,這一階段的任務就是要搞清楚使用者的需要。文件這些都是輔助手段,而且是必要的。
明白了這個道理,那如何才能做到?
整個需求工程分為:需求開發和需求管理兩部分,各部分又有幾個階段:
需求開發:
需求調查——〉得到《使用者需求說明書》
需求分析——〉使用”問答分析法“或“建模分析法”對各種需求資訊進行分析,消除錯誤、刻畫細節。
需求定義——〉根據以上的結果,定義準確無誤的產品續期,產生《產品需求規格說明書》。
需求管理:需求確認——〉需求跟蹤——〉需求變更控制
“
《使用者需求說明書》與《產品需求規格說明書》的主要區別與聯絡:
(1)前者主要採用自然語言(和應用域術語)來表達使用者需求,其內容相對於後者而言比較粗略,不夠詳細;
(2)後者是前者的細化,更多地採用計算機語言和圖形符號來刻畫需求,產品需求是軟體系統設計的直接依據;
(3)兩者之間可能並不存在一一對映關係,因為軟體開發商會根據產品發展戰略、企業當前狀況適當的調整產品需求,例如使用者需求可能被分配到軟體的數個版本中,軟體開發人員應當依據《產品需求規格說明書》來開發當前產品。
”
兩者的模板都包含了產品的功能性需求,內容為:
功能類別 | 功能名稱、標誌符 | 描述 |
---|---|---|
FeatureA | FunctionA.1 | |
... | ||
FeatureB | FunctionB.1 | |
... | ||
FeatureC | FunctionC.1 | |
... |
也都包含了非功能性的需求:
需求類別 | 需求名稱、識別符號 | 描述 |
使用者介面需求 | ||
軟硬體需求 | ||
質量需求 |
從模板上來看,後者多了對前者的功能的喜歡,每個功能點都寫明瞭:
名稱、識別符號 |
優先順序 |
功能描述 |
資料及解析 |
輸入、輸出、操作系列等 |
其他說明 |
參考示例 |
自己之前做的工作就是真是太粗糙了,需求調查往往就是大家聊聊,記錄一下他們的想法,然後再自己想想怎麼實現,也沒有評審,就這樣就定了,開發。太兒戲了。。。難怪總是不能達到對方的要求。沒有一個完整的方法論做支撐,管理一片混亂,難怪老是要吃苦果。。。。
我應該如何做?
在做需求調查的時候,根據一定的模板,記錄下使用者的原始需求;
按照一定的格式整理成《使用者需求說明書》;
對每個功能進行細化,得到《產品需求規格說明書》。
因為面對的是內部使用者,且對開發一竅不通,往往使用者今天提了個想法,明天就問做完了沒有,想想實在很吐血。也是由於自己對這方面的思路不清晰,導致很被動,需要改變這種做法了,不管使用者如何,這個過程自己一定要遵守,按照一定的規則辦事,這樣才能把這件事做好,否則到時候就變得不可收拾。其實這個過程不僅是對我這邊的訓練,也是對使用者那邊的訓練。
需求評審這個過程不能省略,雖然不用籤合同,但是讓大家都對將要開發的功能都有全盤的認識,這個很有必要。
2、需求相關的知識不足
1)需求跟蹤,以前一直沒搞清楚,這個是幹嗎用的,網上也沒有得到特別明確的答案。這個工作目前來說是空白的。
需求跟蹤的目的是建立與維護”需求——設計——程式設計——測試“之間的一致性,簡單的來說,可以有個excel表,記錄下面的資訊:
需求規格說明書(版本日期) 設計文件(版本,日期) 程式碼(版本,日期) 測試用例(版本,日期)
這樣,對於每個需求的功能都能找到後續的對應制品,這就可以跟蹤了。那麼只要檢查一下產品規格需求說明書裡的各個需求,是否都實現了,就知道功能需求是否都完成了。
2)需求分析方法
結構化分析方法,我只是關注了”資料流圖”,實際上,整個方法涉及的部分確實有:
實體-關係圖 〈——〉 資料字典 〈——〉 資料流圖
^
|
v
狀態-變遷圖
同時由於我沒有《使用者需求說明書》和《產品需求規格說明書》的概念,把東西都混淆在一起進行表達了,感覺很混亂。
3)時間分配問題
由於專案小,往往要負責需求,設計,開發,由於對需求的重視不足,在這方面的付出不夠,也就做的夠爛。書上也說了,要能給企業帶來利益。這也就是我的專案的價值。那麼只有開發出來的產品,對公司業務部門有節省成本、提高效率、擴充套件市場,才能叫做有價值。如果一味的閉門造車,或者對使用者的需求僅僅是做了粗略記錄,卻沒有深刻分析,然後把時間都投入到開發上,這樣,會帶來很嚴重的後果:需求不對路,開發出來的東西使用者不滿意,或者根本不是使用者要的,白乾了。其實技術不是唯一(指的是這種應用型的)的,滿足使用者需求的技術才是最好的。總之,一定要認識到需求的重要性,花功夫去做細它。