對于需求和需求變更的理解
軟件需求是整個軟件項目的最關鍵的一個輸入,和傳統(tǒng)的生產(chǎn)企業(yè)相比較,軟件的需求具有模糊性、不確定性、變化性和主觀性的特點,它不像生產(chǎn)汽車、電腦等硬件的需求,是有形的、客觀的、可描述的、可檢測的。軟件需求是軟件項目最難把握的問題,同時又是關系項目成敗的關鍵因素,因此對于需求分析和需求變更的處理十分重要。
軟件需求變更會給項目帶來巨大的風險,會導致項目的成本費用增加、開發(fā)周期延長、產(chǎn)品質量下降及團隊工作效率下降等不良后果,因而需求變更在軟件開發(fā)項目中應該盡量避免。然而由于政府對特定軟件的相關要求、用戶部門市場戰(zhàn)略的調(diào)整、工業(yè)界的發(fā)展等因素都可能帶來需求的變更,而這些因素往往不可避免。在軟件開發(fā)過程中如果只有一條真理的話,那一定是:需求的變化是永恒的,需求不可能是完備的。因而,對于需求變更應該正確的對待,盡量將其負面影響降低到最低。
減少需求變更
正如前文所說,需求變更往往是不可避免的。通常是項目負責人員花費了大量的氣力避免需求變更,可最后需求變更總是會出現(xiàn)。但是這并不意味著項目開發(fā)人員不應該做這方面的工作,項目開發(fā)人員對于需求變更的正確態(tài)度應該和軟件測試的態(tài)度一樣,在需求并更發(fā)生之前盡量減少需求變更,以將需求變更帶來的風險降低到最低。項目開發(fā)人員切忌在項目設計之前試圖消除需求變更,這樣做往往費力不討好。
相比于需求開發(fā)人員而言,客戶可能對需求變更認識不足,認為他們出錢,程序員或軟件開發(fā)公司就要為它服務,因此客戶對需求變更往往將需求變更視為兒戲,隨個人喜好隨意變更需求。因此,在需求人員同用戶代表或用戶部門主管人員接觸時,就應該向他們挑明態(tài)度,和他們協(xié)商好,特別是應該讓他們清楚軟件的定價應該與軟件的功能相關,以及需求隨意變更所帶來的風險的承擔者應該由客戶和項目開發(fā)者共同承擔。通過這樣做,讓客戶在需求分析之前就盡量對他們所需要的功能有個整體的了解和確定的思路,而不是等到程序員開始編碼了,才提出以前原本在需求分析時就可以提出的需求。
讓客戶明白減少需求變更的重要性后,需求分析人員應該采取合適的方法同客戶交流,幫助他們明確他們的需求。需求分析人員和客戶的關系不應該僅僅是記錄人員和需求提供者,他們的關系應該更多的是戰(zhàn)略合作伙伴關系。雖然需求分析人員和客戶存在著服務商和顧客的關系,但是他們有著一個共同的目標:開發(fā)出適合客戶需求的軟件,因此需求分析人員除了記錄客戶提出的需求以外,還應和用戶討論,提出一些建議,使用合適的工具幫助客戶提出需求。在需求分析時,盡量多的召集需求研討會,邀請開發(fā)人員和客戶共同協(xié)商探討,在研討會上允許任意的提出需求,并將這些需求整理成檔后由客戶代表和需求分析人員共同商議可選的功能,這樣能夠盡量使得需求完備。在需求開發(fā)時,開發(fā)人員采用原型的方法啟發(fā)客戶思考功能需求也不失為一個好辦法。
雖然需求不可能是完備的,但是在項目開始設計時盡量使得需求完備還是應該的,也是值得的。
規(guī)范文檔
需求文檔作為客戶和開發(fā)人員的接口在整個項目開發(fā)過程中起著舉足輕重的作用。需求文檔應該按照一定的格式和規(guī)范書寫,而且應該具備完整性、一致性、基線控制、歷史記錄等特性。文檔書寫完畢以后應該交給客戶審閱,在客戶滿意的基礎上確定基線。一個完整規(guī)范的需求文檔不僅能夠有助于設計人員和編碼人員完成項目開發(fā),更重要的是它作為一個階段性的成果可以供軟件需求變更時參考。
需求變更發(fā)生后,也應該生成相應的文檔,并且這些文檔的書寫也應該采用規(guī)范的形式書寫。需求變更文檔也應該包含基線以供下一次修改參考,還應包含歷史記錄以供開發(fā)人員和客戶清楚