3 如何做好需求工作
需求分析是軟件項目開發中最困難的一項工作,它不僅要求分析人員具有豐富的需求分析經驗和良好的專業素質,還要求分析人員具有良好的學習能力、公關能力、語言能力和組織能力。在實際工作中分析人員要面對不同的單位、不同的部門、不同的人員、不同的文化、不同的關系、不同的管理水平等等不同的情況,面對如此紛繁復雜的環境,如何做好需求分析工作?首先需要建立一個有效的工作機制,只有建立了工作機制,才能保證需求工作按照既定方案執行,需求開發和管理的參與者才會在一種有序的狀態下工作。其次才是充分運用工作機制和個人能力去獲取問題、分析問題、編寫需求文檔和進行需求管理。
3.1 建立需求分析工作機制需考慮的幾個因素
(1)抓住決策者最迫切和最關心的問題,引起重視。用戶方決策者對項目的關心重視程度是項目能否順利開展的關鍵,決策者的真實意圖也是用戶方的最終需求,因此,在開發過程中要利用一切機會了解決策者關心的問題,同時也要讓他們了解項目的情況。在諸如談判、專題匯報、協調會議、領導視察、階段性成果演示等過程中用簡短明確的語言或文字抓住領導最關心的問題,引導他們了解和重視項目的開發,當決策者認識到項目的重要性時,需求分析工作在人力、物力、時間上就有了保障。
(2)建立組織保障,明確的責任分工。項目開發一般都會成立相應的項目組或工程組,目前,常見的組織形式是:產品管理組、質量與測試組、程序開發組、用戶代表組和后勤保障組,各組的主要分工是:產品管理組負責確定和設置項目目標,根據需求的優先級確定功能規范,向相關人員通報項目進展。程序管理組負責系統分析,根據軟件開發標準協調日常開發工作確保及時交付開發任務,控制項目進度。程序開發組負責按照功能規范要求交付軟件系統。質量與測試組負責保證系統符合功能規范的要求,測試工作與開發工作是獨立并行的。用戶代表組負責代表用戶方提出需求,負責軟件的用戶方測試。后勤保障組負責確保項目順利進行的后勤保障工作。
(3)建立良好的溝通環境和氛圍。分析人員與用戶溝通的程度關系到需求分析的質量,因此建立一個良好的溝通氛圍、處理好分析人員與用戶之間的關系顯得尤其重要,一般情況,用戶作為投資方會有一些心理優勢,希望他們的意見得到足夠的重視,分析人員應該充分的認識到這一點,做好心理準備,盡量避免與他們發生爭執,因為我們的目的是幫助用戶說出他們的最終需要。在溝通時分析人員應注意以下幾個方面:1)態度上要尊重對方,但不謙恭。謙恭可能會讓用戶一時感到滿意,但對長期合作并沒有好處,尤其是在發生沖突的時候,用戶會習慣性地感到自己的優勢,而忽略分析人員地意見。2)分析人員要努力適應不同用戶的語言表達方式。每個人都有自己的表達方式,所以優秀的分析人員應該是一個優秀的“傾聽者”,他們能很快的適應用戶的語言風格,理解他們的意思。3)善于表達自己,善于提問。分析人員在開口前應該先讓對方充分表達他的意思,在領會了后,自己再說,盡量不要搶話。4)工作外的交流有助于增進理解,加強溝通。
(4)需求質量控制要制度化需求的變化是軟件項目不可避免的事實,因此需求質量控制是一項艱苦的工作,要保證該項工作的順利實施,就必須有制度保證,這個制度可以在項目質量控制方案中制定,該方案主要是具體化、定量化的描述用戶要求,形成全面、一致、規范的軟件需求分析規格說明書,明確需求分析規格說明書的工作程序和要素,規范開發活動,為后續軟件設計、實現、測試、評審及驗收提供依據。在方案中要明確項目組各部門關于需求質量控制的職責,制定需求分析的工作程序,包括編制需求分析工作計劃、編制《需求分析說明書》、《需求分析規格說明書》的評審和確認、《需求分析規格說明書》修改控制、確定需求質量控制的質量記錄文檔規范等內容。
3.2 需求開發與管理的一些方法
需求開發是一項復雜的工作,使用的方法也很多,不同的開發方式有不同的方法,這里簡單介紹一些相關的方法:
(1)繪制關聯圖:繪制系統關聯圖是用于定義系統與系統外部實體間的界限和接口的簡單模型。
(2)可行性分析:在允許的成本、性能要求下,分析每項需求實施的可行性,提出需求實現相關風險,包括與其它需求的沖突,對外界因素的依賴和技術障礙。
(3)需求優先級:確定使用實例、產品特性或單項需求實現的優先級別。以優先級為基礎確定產品版本將包括哪些特性或哪類需求。
(4)系統原型:當用戶自身對有的需求不十分清楚時,我們可以建立一個系統原型,用戶通過評價原型更好地理解所要解決的問題。。
(5)圖形分析模型:繪制圖形分析模型是編制軟件需求規格說明重要手段。它們能幫助分析人員理清數據、業務模式、工作流程以及他們之間的關系,找出遺漏、冗余和不一致的需求。這樣的模型包括數據流圖、實體關系圖、狀態變換圖、對話框圖、對象類及交互作用圖。
(6)數據字典:數據字典是對系統用到的所有數據項和結構的定義,以確保開發人員使用統一的數據定義。在需求階段,數據字典至少應定義客戶數據項,確?蛻襞c開發小組是使用一致的定義和術語。
(7)質量功能調配:質量功能調配是一種高級系統技術,它將產品特性、屬性與對客戶的重要性聯系起來。該技術提供了一種分析方法以明確哪些是客戶最為關注的特性。它將需求分為三類:期望需求、普通需求、興奮需求。
需求管理的目的就是要控制和維持需求事先約定,保證項目開發過程的一致性,使用戶得到他們最終想要得產品。需求管理的方法主要包括以下一些方面:
1)確定需求變更控制過程。制定一個選擇、分析和決策需求變更的過程,所有的需求變更都需遵循此過程。
2)進行需求變更影響分析。評估每項需求變更,以確定它對項目計劃安排和其它需求的影響,明確與變更相關的任務并評估完成這些任務需要的工作量。通過這些分析將有助于需求變更控制部門做出更好的決策。
3)建立需求基準版本和需求控制版本文檔。確定需求基準,這是項目各方對需求達成一致認識時刻的一個快照,之后的需求變更遵循變更控制過程即可。每個版本的需求規格說明都必須是獨立說明,以避免將底稿和基準或新舊版本相混淆。
4)維護需求變更的歷史記錄。將需求變更情況寫成文檔,記錄變更日期、原因、負責人、版本號等內容,及時通知到項目開發所涉及的人員。為了盡量減少困惑、沖突、誤傳,應指定專人來負責更新需求。
5)跟蹤每項需求的狀態?梢园衙恳豁椥枨蟮臓顟B屬性(如已推薦的,已通過的,已實施的,或已驗證的)保存在數據庫中,這樣可以在任何時候得到每個狀態類的需求數量。
6)衡量需求穩定性?梢远ㄆ诎研枨髷盗亢托枨笞兏ㄌ砑、修改、刪除)數量進行比較。過多的需求變更"是一個報警信號",意味著問題并未真正弄清楚。
4 需求分析評價標準
如何判斷需求規格說明的好壞,不同的軟件工程規范都有自己的一套標準,這里向大家介紹一個比較常見的NASA SEL推薦方法,它是由美國國家航空和航天局軟件工程實驗室開發的五大常用國際軟件工程規范之一,它對軟件需求過程的評價標準是:清晰、完整、一致、可測試。
(1)清晰:目前大多數的需求分析采用的仍然是自然語言,自然語言對需求分析最大的弊病就是它的二義性,所以開發人員需要對需求分析中采用的語言做某些限制。例如盡量采用主語+動作的簡單表達方式。需求分析中的描述一定要簡單,千萬不要采用疑問句、修飾這些復雜的表達方式。 除了語言的二義性之外,注意不要使用行話,就是計算機術語。需求分析最重要的是和用戶溝通,可是用戶多半不是計算機的專業人士,如果在需求分析中使用了行話,就會造成用戶理解上的困難。
(2)完整:需求的完整性是非常重要的,如果有遺漏需求,則不得不返工,在軟件開發過程中,最糟糕的事情莫過于在軟件開發接近完成時發現遺漏了一項需求。但實際情況是,需求的遺漏是常發生的事情,這不僅僅是開發人員的問題,更多發生在用戶那里。要做到需求的完整性是很艱難的一件事情,它涉及到需求分析過程的各個方面,貫穿整個過程,從最初的需求計劃制定到最后的需求評審。
(3)一致:一致性是指用戶需求必須和業務需求一致,功能需求必須和用戶需求一致。在需求過程中,開發人員需要把一致性關系進行細化,比如用戶需求不能超出預前指定的范圍。嚴格的遵守不同層次間的一致性關系,就可以保證最后開發出來的軟件系統不會偏離最初的實現目標。
(4)可測試:一個項目的測試從什么時候開始呢?有人說是從編碼完成后開始,有人說是編碼的時候同時進行單元測試,編碼完成后進行系統測試,這些結論都不完全正確。實際上,測試是從需求分析過程就開始了,因為需求是測試計劃的輸入和參照。這就要求需求分析是可測試的,只有系統的所有需求都是可以被測試的,才能夠保證軟件始終圍繞著用戶的需要,保證軟件系統是成功的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/