導航:首頁 > 研究方法 > 分析用戶需求的方法是

分析用戶需求的方法是

發布時間:2022-07-20 05:13:44

A. 軟體工程中常用的需求分析的方法有哪些

一、過濾需求的方法
做後端系統,要學會的第一個技能就是砍需求。也就是過濾需求。

這不是一個貶義詞,反而是體現後端產品價值判斷的基礎。

過濾需求的方法,就是通過一定的手段判斷需求是否是偽需求,應該被過濾掉。

1. 用戶場景模擬法
後端產品的出發點就是幫助業務用戶,因此在調研需求的時候要模擬業務的場景,分析業務用戶提到的需求是否能解決他的問題。

如果不能幫助用戶,那麼這個需求就可能是偽需求。

以下面的案例說明:

背景:「貨到付款」類型的訂單會因為缺貨而無法發出,如果超過一定的時間,客服就會跟顧客溝通,幫顧客取消訂單。

需求:由於這種訂單的數量還是蠻多的,逐個取消太費時間,因此業務用戶要求在「缺貨訂單」列表頁增加「批量取消訂單」按鈕。

分析:調研到業務操作場景,是先找到該類缺貨訂單,然後和顧客溝通,顧客同意刪除,才進行刪除。也就是逐個溝通確認,再逐個取消訂單的,所以「批量取消訂單」無法被有效使用。

因此,該需求是個偽需求,應該被過濾掉。

2. 功能歸屬分析
專門的系統做專職功能,有助於合理的產品體系建設。

因此需求調研的時候,可以通過系統的定位,判斷需求是否應該在該系統完成。

如果不屬於該系統范疇,那麼直接說服需求方更換方案。以

下面的案例說明:

背景:CRM系統(顧客關系管理系統)有一個顧客標簽生成功能,就是根據顧客的消費行為數據,自動對應關聯上標簽,如優質顧客、高潛力顧客、欺詐顧客等。

需求:業務用戶提出需求,除了做上述的基礎標簽之外,還要做出英語版本的標簽(就是把標簽文案翻譯成英文),這樣歐美員工可以在英語版本的系統下使用。

分析:調研到翻譯之後的標簽不是在CRM系統使用的,而是給到SMS(客服系統)使用的。

所以應該由SMS根據CMS提供的基礎標簽數據,自己做二次的衍生。

之所以這樣,首先是為了避免未來更多語言版本的擴展需求或更多系統提出類似的需求;

其次,CRM系統已經完成了「接力賽」的第一棒,創造了基礎數據,那麼其他系統要特殊化使用,完全可以自行進行特殊化處理,無需耦合回CRM系統。

結論:案例的需求本身是真需求,並且實現上也沒難度,但是該功能的定位超出了本系統范疇,專門系統做專職功能,化衍生需求應該在下游執行。

否則,耦合性過高只會增加系統的復雜程度,難以維護和擴展。

二、拆分和聚合的方法
1. 拆分需求法
業務用戶提出一個需求,很可能只是短短的一段話。

但是不要高興太早,可能這一句話暗含了很多線索,因此要善於拆分:

先找他要解決的核心問題,再圍繞核心點,理清前、後、左、右、上、下的旁系需求點。

每個需求點再當做一個子需求進行調研,最後再聚合在一起。

以下面的案例說明:

背景:訂單業務的類型很多,訂單退貨之後需要創建售後單據,但是因為數量大,所以花費很多人力,且手動創建有出錯的風險。

需求:業務提出的需求是「增加退貨訂單自動創建售後單的功能」,這是個一句話需求。

該一句話需求,其實包含了多種具體的訂單類型和場景,那麼我們就要拆分調研,拆分的維度比如:

自營訂單、第三方訂單、貨到付款訂單、先款後貨訂單、部分退貨訂單、完全退貨訂單、服裝事業部訂單、電子事業部訂單等,其中每一個維度就相當於一個小需求。

這里不一一展開。

2. 聚合需求法
拆分法是對單個需求分解成若干小需求進行調研,聚合法相反,是找到許多個相互關聯的小需求的共性,然後統籌成一個大需求去完成。例如:

由於業務用戶分散在不同的部門,各自為政,於是張三、李四可能都對一個業務流程有相同的需求,或者對同一個功能有相同的優化期望,結果倆人分別提了需求過來。那麼產品經理就要找到二者背後的相關性和交叉區。

然後統籌規劃,聚合在一起當作一個需求來調研,最終輸出一個整體的需求調研結果。

三、利用輔助功能調研需求
調研產品現有功能,可以用來確認原有功能的邏輯,或者確定新需求方案是否可行。

比如業務用戶需要更新一個功能,為了避免更新出錯或遺漏,產品經理需要知道修改前和修改後是否會能正常運行。

最基礎的辦法就是自己設計一個測試用例,記錄操作方式、狀態變化、數據流向等。看看下面的例子:

背景:從銷售網站獲取到OMS系統(訂單管理系統)的訂單信息中帶著顧客的郵箱。顧客下完單,可能會在銷售網站修改郵箱,而此時已經獲取到OMS的歷史訂單中的郵箱是不變的。

需求:顧客若在銷售網站修改郵箱,要求已獲取到OMS的該顧客的訂單中的郵箱也要同步修改。

分析:需求是很明白的,也有它的意義,但有風險。

因為我們知道訂單信息貫穿於整個訂單流轉過程中,牽扯到訂單編輯、審核、取消、配貨、發貨等,而這些環節跳轉的觸發條件可能就是某個信息更新(這裡面就可能包括有郵箱更新)。

因此,更新郵箱是否會影響流程中的某些環節,一時間很難准確知道。

於是,我們可以採用預測試的方式,設計測試用例,在測試機運行一些訂單,觀察各個環節郵箱變更的影響,然後收集起來分析對策。

測試法就像是探雷一樣,主要用來解決未知風險點。這個方式的重點是記錄和分析操作前狀態、操作位點、操作後狀態、操作後觸發的連鎖反應、數據流向等。

四、「拔蘿卜帶出泥」的方式調研需求
調研需求時,產品經理要拔蘿卜帶出泥,挖掘用戶沒看到的需求點和價值。

舉例說明:

背景:公司入駐到銷售平台後,銷售平台會對入駐的店鋪的違規行為進行罰款。

需求:業務用戶提出需求,將銷售平台的罰款數據抓取到訂單系統,關聯訂單數據,以便進行人工分析。

分析:

第一步,先拆分需求,確定什麼是罰款數據,總共有哪些罰款種類,需要對接哪些罰款種類,罰款數據與訂單系統關聯方式是什麼,是否都能關聯到,關聯不到怎麼辦,銷售平台是否已經提供了公用的罰款介面,Token(請求許可權)如何獲取,抓取頻率怎麼樣,數據增長幅度多大,獲取之後做哪些展示和搜索,用戶許可權怎麼設置,需要和訂單系統做哪些交互,該需求的價值是什麼……

第二步,挖掘需求:是否需要作分析功能,分析功能的規則是什麼;是否需要做監控和預警,是否需要指派負責人;其他業務人員是否也有類似需求,其他平台是否也有類似需求……

通過「拔蘿卜帶出泥」的方式,連帶出更多需求點。將上述調研結果重新組裝起來,得到一個系統化的完整需求。

羅列出需求要點和對應的驗收目標,這樣使得需求具象化,同時又不會遺漏細節,內部充實,外部閉環,並且進行了價值挖掘,做成控制閾值、預警、責任人分派、趨勢分析、損失分析等高價值的功能,超出業務的預期。

B. 如何做好客戶的需求分析

和客戶進行溝通,了解客戶的需求點,是銷售人員必須要做好的一點。在面對客戶的時候,作為銷售人員,首先需要做到的一點就是先對客戶進行了解,只有了解了客戶之後,我們才能根據客戶的特點進行系統的分析,根據營銷計劃書範文制定出符合客戶的一些實用的銷售手段,通過這些銷售手段和客戶進行良好的溝通,確認客戶的市場需求。
因此,對於銷售人員來說,如何去確認客戶的市場需求就要求我們從實際出發,做到去迎合客戶的需求,而不是去拒絕客戶的需求。這里,為大家分享一些實用的方法。
1、學會傾聽
傾聽能夠有效的獲得客戶的好感,是擴展人際關系的一種有效手段。作為銷售人員,要學會去傾聽,在和客戶進行溝通時,認真的傾聽客戶所說的每一句話,學會站在客戶自身的角度去考慮客戶所說的每一句話,從客戶的利益點出發,為客戶解決煩惱,了解客戶的需求點。
2、學會觀察
做銷售,都是以從心裡征服客戶開始的,對於銷售人員來說,只有從心裡征服客戶,才能讓客戶第一時間去考慮到你,有意向的和你進行合作。因此,銷售人員要學會去觀察,觀察客戶的一言一行,對客戶進行性格方面等信息的分析,這樣,就能更好的了解客戶的需求點,從客戶的需求點去征服客戶。
3、學會提問
提問是一種技巧,在提問中,我們要做到深思熟慮,不要出現未經大腦就脫口而出,這樣很大可能上會造成戳中客戶的痛處,使得原本好好的氣氛被破壞,造成客戶的流失。提問要做到根據的性格進行有效的提問,要避免出現一些客戶不喜歡的詞語,同時,要避免在客戶面前出現粗魯行為,切忌出現詆毀競爭對手的話語。通過有技巧的提問,對客戶進行分析,分析其性格特點,分析其市場需求。
當然了,有效的對客戶市場需求進行分析的方法不止上面三條,還有著更多的方法需要我們去開發,去發掘。這其中,任何方法都要因人而異,要做到不要出現冷場是必須的。

C. 獲取用戶需求的主要方法

需求獲取分四個階段:獲取需求、分析需求、撰寫需求文檔、驗證需求。需求獲取到之後要對需求進行分析,將合理的需求整理成文檔,最後再以文檔為基礎對需求進行評審、驗證。這個步驟可能需要幾次循環,不斷地優化需求。

獲取需求:也叫捕獲需求,需要人為主動地去捕捉。可以通過問卷調查、用戶訪談、競品分析、市場分析等方法獲取。

分析需求:將獲取到的需求進行過濾、分析、加工、整理,最後篩選出真正有價值的需求。在分析需求的過程會用到很多方法,例如使用SWOT分析法分析產品的優勢、劣勢、機會、威脅;使用長尾效應分析法分析產品邊界,分析核心需求、基本需求、滿意需求、期待需求、興奮需求,哪些需求是產品的頭部,哪些需求是產品的尾部,輻射到的用戶范圍有哪些;使用優先順序分析法將需求按重要度、緊急度、影響度進行劃分,區分出需求的優先順序,先開發哪些,再開發哪些。還有以競品對比、用戶偏好、商業價值等從各方面對需求進行分析,最終才能找出真正有價值的需求。

撰寫需求文檔:為了便於需求信息的傳遞和梳理,可以將分析後的需求以文檔的形式記錄下來,並形成規范,以便於與產品有關的人員之間的溝通。需求文檔中要有各模塊、頁面、功能的說明,各功能的輸入、加工和輸出信息,以及各種圖形內容,以便文檔信息更准確的傳遞。

驗證需求:此步驟是論證需求的過程,不是所有經過分析得到的需求都是正確的、合理的,需要通過評審論證以證實需求的正確性和合理性。驗證方式可能是會議評審方式,也可能是主要負責人逐條排查的方式。

如果進入下一個階段,發現有問題怎麼辦?在需求獲取的每個過程都是可逆的,當下一階段出現問題時,需求分析會回滾到上一階段。可以從用戶、網路、公司內部人員、競品、行業動態及內心感知等方面獲取用戶需求,具體介紹如下。

1.直接用戶

這是最直接的獲取用戶需求的方法,用戶會通過語言、情緒、動作、表情來表達自己的好惡,如果產品解決不了用戶的問題,他們就會用腳投票。用戶能明確說出來的都是用戶期望解決的需求,這些都屬於基本需求。有的需求是用戶表達不出的或者根本就沒有意識到的,而這種能夠引領市場、讓產品脫穎而出的需求才是高價值的需求。

2.行業動態

「與天斗,其樂無窮;與地斗,其樂無窮;與人斗,其樂無窮。」做產品要時刻關注行業動態信息,政策環境就屬於產品的「天」,市場環境就屬於產品的「地」,用戶就屬於產品的「人」,我們要隨時關注政策變化、市場環境變化,這樣才能夠保證產品的方向是正確的。這里說的「斗」是研究的意思,多研究產品的大環境,才能在第一時間抓住機遇、把控時機。

3.內部人員

一家公司往往只關注一個行業,公司內的同事都是這個行業的精英,對自己所從事的行業有著較深的感悟。例如運營人員大多關注產品與市場之間的關系,客服人員大多關注著產品與真實用戶之間的關系,業務人員大多關注產品與潛在客戶間的關系……公司內的每個人對產品都有不同的解讀和思考,從他們那裡可能會找到正確的答案。

4.競品分析

當我們剛進入一個行業時,最快速的了解產品的方式就是研究競品。除要研究競品的功能外,還要研究產品功能背後的邏輯和思想。為什麼要這樣做,根據什麼邏輯,能解決用戶什麼問題,用戶的反應是什麼。研究競品並不是要克隆競品,要了解市場、行業及用戶。我們最好能找到真實的數據,用數據來說話,找出哪些功能是用戶最迫切需要的。我們只有更好地了解競品,才能更好地解決問題,為客戶提供更優質的服務。

5.網路信息

調研和獲取需求不一定非要與用戶面對面地溝通,實際上有很多種方式都可以收集到用戶需求,如網站的留言,企業的公眾號、微信、微博等,這些窗口都可以作為與用戶溝通的渠道。

6.內心感知

「樹欲靜而風不止」,用戶的需求是不斷變化的,會因時間、地點、人物角色的不同而不同,每個人看問題的角度都不同,每個人的思想和成長經歷也不同。

同樣的產品在不同時期對用戶的價值也不同,如「大哥大」、BB機在20年前風靡全國,而如今它們已經被淘汰在歷史的長河中。據說,喬布斯是從不做市場調研的,他只是看鏡子中的自己,用心去領悟產品。世上的功夫有很多種,長拳、八仙拳、天羅拳、地煞拳、六星拳等,但我認為最高境界的功夫應該沒有招式,即以無招勝有招,套路是固定的,但現實的變化是無窮的,用有招數的套路去應對無窮的變化一定會失敗。所以最好的需求獲取方式就是用心去領悟,把自己真正融入產品的世界中。

D. 需求分析的主要方法是什麼

1.1 需求的背景

需求的背景指的是動機,這一項實質上是換位思考,它能夠幫助我們從業務方的角度,從使用場景、用戶心理去理解需求。

在實際工作中,我們所接收到的「需求」常常是表述不清晰的、不完整的,甚至是具有欺騙性的。

一個問題會對應許多的解決方案,找到真正的需求,也正是我們的職責。

1.2 需求的受眾

需求的受眾需要注意的問題有兩點:

誰是真正的受眾;
受眾人群是否具有代表性。
需求的來源很多,可能是用戶、業務方等。我們需要分清楚誰才是真正的受眾。

在一個需求里不同的角色認知和訴求是不同的,當信息帶上了主觀判斷也就被污染了。

其次,則是覆蓋度的問題。對於頻次不夠高或者人群不夠有代表性的需求,投入產出比會是一個大大的問號。辨清受眾,在評估需求的優先順序和制定解決方案時,迷惑性會大大降低。

1.3 需求的目的

需求的目的指需要做什麼,很多時候我們接到的「需求」其實是業務方過濾後的「解決方案」。

以「口渴」為例,此時業務方提出的需求是要製作一台飲水機,然而飲水機並不能解決問題。如果我們挖掘到背後的動機是「口渴」,那麼我們可以從補充水分和減少水分的流失來著手提供解決方案。

1.4 需求的目標

在漢語辭典里的解釋,目的是期望,而目標是成果。

目標更為具象,並且能夠用數據指標來衡量,後續也能夠指導需求的改進。

需求的本質是為了創造價值,而創造價值最直白的則是開源和節流。具象到目標,可以用創造的收益,提升的效率以及節省的資源等方面進行量化。

2. 因果關系分析法
、需求優先順序的評定
最後一個環節是需求優先順序的評定,我常用的方法是選取影響優先順序的因素並設定比例,經過加權計算出優先順序,分數越高優先順序越高。

其公式如下:

優先順序=因素1比例*因素1分值+因素2比例*因素2分值+….

表1-需求評估加權表

這張表,影響的因素主要有兩項:投入產出比以及重要程度。

投入產出比個人認為是必選的,而重要程度中的維度可以根據實際情況去增加、減少。同理,加權中比例的設置也是如此。

E. 如何了解和分析客戶需求

在實踐中,通常可以通過以下方法來了解客戶的需求:

1.利用提問來了解客戶的需求 要了解客戶的需求,提問題是最直接、最簡便有效的方式。

通過提問可以准確而有效地了解到客戶的真正需求,為客戶提供他們所需要的服務,在實際運用中有以下幾種提問方式可以供我們靈活選擇運用:

(1)提問式問題。單刀直入、觀點明確的提問能使客戶詳述你所不知道的情況。

(2)封閉式問題。封閉式的問題即讓客戶回答「是」或「否」,目的是確認某種事實、客戶的觀點、希望或反映的情況。

(3)了解對方身份的問題。在與客戶剛開始談話時,可以問一些了解客戶身份的問題,例如對方姓名、賬號、電話號碼等。目的是獲得解決問題所需要的信息。

(4)描述性問題。讓客戶描述情況,談談他的觀點,這有利於了解客戶的興趣和問題所在。

(5)澄清性問題。在適當的時候詢問、澄清客戶所說的問題,也可以了解到客戶的需求。

(6)有針對性的問題。例如要問客戶對所提供的服務是否滿意,這有助於提醒客戶再次惠顧。

(7)詢問其他要求的問題。與客戶交流的最後,你還可以問他還需要哪些服務。

2、通過傾聽客戶談話來了解客戶的需求 在與客戶進行溝通時,必須集中精力,認真傾聽客戶的回答,站在對方的角度盡力去理解對方所說的內容,了解對方在想些什麼,對方的需要是什麼,要盡可能多地了解對方的情況,以便為客戶提供滿意的服務。

3.通過觀察來了解客戶的需求 要想說服客戶,就必須了解他當前的需要,然後著重從這一層次的需要出發,動之以情,曉之以理。在與客戶溝通的過程中,你可以通過觀察客戶的非語言行為了解他的需要、慾望、觀點和想法。

總而言之,通過適當地問問題,認真傾聽,以及觀察他們的非語言行為,可以了解客戶的需求和想法,更好地為他們服務

F. UI設計怎麼做用戶需求分析方法有哪些

1. 用戶目標

這里有一些我們要試著回答的問題.這些問題幫助我們理清自己的思路,根據這個思路我們會得到一些答案,這些答案會讓我們知道有什麼需要填補的知識空白?這些都會指導設計過程中每一個細節

2. 我們的設想

我們自己或者我們的團隊首先會有一個自己的目標與事先這一目標的設想,這些是我們相信我們已經知道的。我們團隊的設想是什麼?我們是怎麼理解我們的用戶的?包括他們的行為和對他們需求的潛在解決方案。

3. 具體方法

這些方法告訴我們怎樣去填補知識空白。基於有限時間和有限的用戶,我們該選擇什麼方法?

一旦你回答了上面的問題,整理一份單頁研究計劃給你的領導,你可以從選擇的調研方法中開始收集你需要的知識:

4. 開始動手

通過我們已選擇的方法收集數據。

5. 綜合起來

解決我們用研的問題,證實或推翻我們的假設。解釋我們收集到的數據來發現存在哪些設計可以努力的機會和深藏的點

用戶目標

假定你正處於為一款幫助人們在餓了的時候能立馬有個人送來可口的飯菜這一產品時。你的團隊正在討論是否為送來的菜品拍照促進他們在社交網路中分享該軟體,連同他們的評論一起分享。

「分享外賣美食」團隊某些成員會這么稱呼它並連連點頭「這聽起來很酷,哇塞,好棒棒哦,終於能在朋友圈秀宅男的幸福生活了」 但是你不能明確知道這個功能的適用人群,為什麼用戶想用它。

放下線框製作和代碼編寫,和你團隊成員一起坐下,快速討論你們已經知道和了解的產品目標。為促進這次討論,讓你的團隊成員准備一系列設定的問題來幫助他們辨別他們所需要填補的知識空白。他們最好把這些問題寫在便利貼上,一個問題一個條兒,這樣比較容易管理和討論。

這些設定問題是5個「W」(WHAT、WHEN等等)和1個「H」(HOW)開頭的結構的問句,類似於一個記者寫一篇新聞報道時需要回答的一些問題:

例如:

態度相關設想

「使用外賣軟體的用戶喜歡聽取他們朋友的評論。」

行為相關設想

「外賣用戶只願意分享他們吃的新奇事物,美味事物。」

方法

一旦你確定了研究目標和一堆設計設想,你也需要考慮哪種研究方法適合達到你的目標。通常,為了達到調研目標,我會在以下分類中選擇不止一種方法,把它們結合起來進行調研。

1:實景觀察法

你花時間到用戶生活和工作的地方去,能幫助你建立一個關於他們居住環境和潛在未滿足需求的基本理解。

2:紙質原型

這個領域的方法包括日常研究,卡片分類,紙面原型和其他一些參與式的設計活動。一旦我很好的理解了我的用戶的專業知識和信仰,我就可以開始深層次探究迎合他們需求的內容,功能和產品。這些可以在與研究參與者密切合作中產生潛在設計解決方法時完成,當然也可以在設計設想初期接受他們的真實反饋。

開始動手

當調查結果跟你原來的設想有差異時,不要試圖改變用戶想法,而是站在中立態度上試著詢問原因,了解這是否是用戶的真實想法。

針對調研的問題,進行解決方案設計(此時你最初的設想會大面積瓦解)

需求來源可以大致已經搜集完了,其中產品數據、用研是從產品側提出,更有老大(老闆)敏銳的眼光則是「人為」思考的結果。這個每個老大不同我就不好說了嘛

通過不同渠道收集到一堆需求之後,不可能全部都能做,需要按照一定規則和流程,篩選出來最有價值的需求,將有限的投入產出最大化。這里有個方法就是「關鍵詞檢索」,無論是功能方面的,用戶屬性方面,場景方面,找出簡短的詞或者語句表現出來,能想到的全部寫在便簽條上不要限制自己的思維,貼在黑板上,之後對便簽條上的內容進行分類整合,然後篩選出大家公認最應該留下的。除了後來的用研資料,你一開始的設想如果同隊對用戶的反饋後大致吻合也寫到上面,不吻合的就果斷推翻掉,一定要了解用戶最真實的需求,了解用戶目標,了解用戶的使用場景,了解用戶的使用習慣,這些資料就為我們要設計的產品定位提供了一半的依據。

今天給大家簡單的介紹了用戶需求的內容,和一些比較使用的用戶需求分析方法,了解工作項目中了解用戶的需求是非常重要的,當然這個用戶可能是直接使用你產品的人,也可能是你的老闆。只有了解他們內心的真實想法才能讓你的事情做的更漂亮,得到認可。當然如果你是創業者,需要自己去面對各種個樣的客戶那麼今天所講內容,對你更有意義。

G. 如何正確的理解和分析用戶需求

3、兩種需求分析方法
1.HMW:how might we=我們可以如何=怎麼辦(Designhackthon)
流程
問題:明確用戶場景問題(問題需要聚焦及開放)
例1:公司想要沖刺業績/清理庫存,如何促銷?
例2:用戶購後評價率低於8%應該怎麼辦?
手段:HMW方法分解問題
拆解問題
積極:如何讓用戶自發資源的解決問題?
轉移:怎樣讓其他人幫助解決這個問題?
腦洞:怎樣想些腦洞大開,平常不敢想的方案?
分解:把大的問題分解成幾個小的步驟?
否定:想什麼辦法能讓用戶放棄這個想法?
方案:腦暴
全部都要想要解決的方案,全部窮舉
優先順序:分類排序
MVP:流程與原型設計
分析需求
步驟
澄清問題
原始需求是什麼層次?(方案級還是問題級?)
想要解決誰的、什麼問題?
用戶遇到現在的問題會採取什麼樣的解決方案?
這個問題中有需要進一步細化和明確的概念嗎?
了解背景
場景(功能)
該需求誰使用?什麼時候使用?具體怎麼做?
術語(數據)
有需要澄清的業務術語嗎?它們的格式是什麼?
環境(質量)
不做誰生氣?多久生氣一次?為什麼?多久用一次?
建議並確定解決方案
要解決這個問題有哪些可行的解決方案
這些方案的實現成本分別有多少?
你覺得哪種最合適?(解決問題/成本合適)
該解決方案對用戶而言有什麼優缺點?
有其他需要挖掘的需求嗎?

H. 如何進行用戶需求分析

1.概念
需求的定義包括從用戶角度(系統的外部行為),以及從開發者角度(一些內部特性)來闡述需求.
關鍵的問題是一定要編寫需求文檔.我曾經目睹過一個項目中途更換了所有的開發者,客戶被迫與新的需求分析者坐到一起.系統的分析人員說:"我們想與你談談你的需求."客戶的第一反應便是:"我已經將我的要求都告訴你們前任了,現在我要的就是給我編一個系統".
百事通
而實際上,UGGs,需求並未編寫成文檔,因此新的分析人員不得不從頭做起.所以如果只有一堆郵件、會談記錄或一些零碎的未整理的對話,你就確信你已明白用戶的需求,那完全是自欺欺人.
需求的另外一種定義認為需求是"用戶所需要的並能觸發一個程序或系統開發工作的說明".有些需求分析專家拓展了這個概念:"從系統外部能發現系統所具有的滿足於用戶的特點、功能及屬性等".這些定義強調的是產品是什麼樣的,而並非產品是怎樣設計、構造的.而下面的定義則從用戶需要進一步轉移到了系統特性:
需求是指明必須實現什麼的規格說明.它描述了系統的行為、特性或屬性,是在開發過程中對系統的約束.
從上面這些不同形式的定義不難發現:並沒有一個清晰、毫無二義性的"需求"術語存在,真正的"需求"實際上在人們的腦海中,這個人們主要是指客戶,但一般情況下,用戶並不能描述自己的需要,只就需要系統分析人員根據用戶的自己語言的描述整理出相關的需要再進一步和客戶核對.系統分析員和客戶需要確保所有項目風險承擔者在描述需求的那些名詞的理解上務必達成共識.
任何文檔形式的需求(例如如下將要描述的需求規格說明書)僅是一個模型,一種描述.
2.需求分析的任務
開發軟體系統最為困難的部分就是准確說明開發什麼.最為困難的概念性工作便是編寫出詳細技術需求,這包括所有面向用戶、面向機器和其它軟體系統的介面.同時這也是一旦做錯,將最終會給系統帶來極大損害的部分,並且以後再對它進行修改也極為困難.
目前,國內產品的龐雜,一家企業可能有幾個系統並立運行,它們之間介面是系統開發人員最頭痛的問題.
對於商業最終用戶應用程序,企業信息系統和軟體作為一個大系統的一部分的產品是顯而易見的.但是對於我們開發人員來說,並沒有編寫出客戶認可的需求文檔,我們如何知道項目於何時結束?而如果我們不知道什麼對客戶來說是重要的,那我們又如何能使客戶感到滿意呢?
然而,即便並非出於商業目的的軟體需求也是必須的.例如庫、組件和工具這些供開發小組內部使用的軟體.當然你可能偶爾勿需文檔說明就能與其他人意見較為一致,但更常見的是出現重復返工這種不可避免的後果,而重新編制代碼的代價遠遠超過重寫一份需求文檔的代價,這些血的教訓正在國內的軟體開發者身上發生.
近來,我遇到一個開發小組開發包括代碼編輯器在內的一套內部使用的計算機輔助軟體.不幸的是,當他們開發完這個工具後,發現這個工具不能列印出源代碼文件,使用者當然希望有這個功能.結果這個小組只好手工抄寫源代碼文檔以供代碼檢查.這說明那怕需求明確無誤並構思准確,如果我們沒有編寫文檔,軟體達不到期望目標也只能是咎由自取了.
相反的情況,我曾見一個要集成到"錯誤跟蹤系統"中的簡單界面寫了一頁需求說明.而操作系統系統管理員在為處理腳本時發現簡單的一張需求清單竟是如此有用.他們依據需求對系統進行測試時,此系統不僅非常清晰地實現了所有必需功能,而且未發現任何錯誤.
事實上,需求文檔在開發過程中一直起指導作用.
3.需求分析過程
可把整個軟體需求工程研究領域劃分為需求開發和需求管理兩部分更合適,如圖4-1所示:
圖4-1 需求工程域的層次分解示意圖
需求開發可進一步分為:問題獲取、分析、編寫規格說明和驗證四個階段.這些子項包括軟體類產品中需求收集、評價、編寫文檔等所有活動.需求開發活動包括以下幾個方面:
確定產品所期望的用戶類別.
獲取每個用戶類的需求.
了解實際用戶任務和目標以及這些任務所支持的業務需求.
分析源於用戶的信息以區別用戶任務需求、功能需求、業務規則、質量屬性、建議解決方法和附加信息.
將系統級的需求分為幾個子系統,並將需求中的一部份分配給軟體組件.
了解相關質量屬性的重要性.
商討實施優先順序的劃分.
將所收集的用戶需求編寫成文檔和模型.
評審需求規格說明,確保對用戶需求達到共同的理解與認識,並在整個開發小組接受說明之前將問題都弄清楚.
需求管理需要"建立並維護在軟體工程中同客戶達成的合同" .這種合同都包含在編寫的需求文檔與模型中.客戶的接受僅是需求成功的一半,開發人員也必須能夠接受他們,並真正把需求應用到產品中.通常的需求管理活動包括:
定義需求基線(迅速制定需求文檔的主體).
評審提出的需求變更、評估每項變更的可能影響從而決定是否實施它.
以一種可控制的方式將需求變更融入到項目中.
使當前的項目計劃與需求一致.
估計變更需求所產生影響並在此基礎上協商新的承諾,這種承諾具體體現在項目解決方案上.
讓每項需求都能與其對應的設計、源代碼和測試用例聯系起來以實現跟蹤.
在整個項目過程中跟蹤需求狀態及其變更情況.
以上幾點說明是我總結了成功實施項目後系統分析人員的經驗,同時也根據國內外的其他系統實施的相關成功經驗,進行了總結.
4.需求的類型
下面這些定義是需求工程領域中常見術語的定義.
軟體需求包括三個不同的層次:業務需求、用戶需求和功能需求(也包括非功能需求).
1.業務需求(business requirement)反映了組織機構或客戶對系統、產品高層次的目標要求,它們在項目視圖與范圍文檔中予以說明.
2.用戶需求(user requirement) 文檔描述了用戶使用產品必須要完成的任務,這在使用實例(use case)文檔或方案腳本說明中予以說明.
3.功能需求(functional requirement)定義了開發人員必須實現的軟體功能,使得用戶能完成他們的任務,從而滿足了業務需求.
在軟體需求規格說明書 (SRS)中說明的功能需求充分描述了軟體系統所應具有的外部行為.軟體需求規格說明在開發、測試、質量保證、項目管理以及相關項目功能中都起了重要的作用.對一個大型系統來說,軟體功能需求也許只是系統需求的一個子集,因為另外一些可能屬於子系統(或軟體部件).
作為功能需求的補充,軟體需求規格說明還應包括非功能需求,它描述了系統展現給用戶的行為和執行的操作等.它包括產品必須遵從的標准、規范和合約;外部界面的具體細節;性能要求;設計或實現的約束條件及質量屬性.所謂約束是指對開發人員在軟體產品設計和構造上的限制.質量屬性是通過多種角度對產品的特點進行描述,從而反映產品功能.多角度描述產品對用戶和開發人員都極為重要.
下面以一個字處理程序為例來說明需求的不同種類.業務需求可能是:"用戶能有效地糾正文檔中的拼寫錯誤",該產品的包裝盒封面上可能會標明這是個滿足業務需求的拼寫檢查器.而對應的用戶需求可能是"找出文檔中的拼寫錯誤並通過一個提供的替換項列表來供選擇替換拼錯的詞".同時,該拼寫檢查器還有許多功能需求,如找到並高亮度提示錯詞的操作;顯示提供替換詞的對話框以及實現整個文檔范圍的替換.
從以上定義可以發現,需求並未包括設計細節、實現細節、項目計劃信息或測試信息.需求與這些沒有關系,它關注的是充分說明你究竟想開發什麼.項目也有其它方面的需求,如開發環境需求或發布產品及移植到支撐環境的需求.盡管這些需求對項目成功也至關重要,但它們並非本書所要討論的.
5.需求分析的原則
不重視需求過程的項目隊伍將自食其果.需求工程中的缺陷將給項目成功帶來極大風險,這里的"成功"是指推出的產品能以合理的價格、及時地在功能、質量上完全滿足用戶的期望.下面將討論一些需求風險.
不適當的需求過程所引起的一些風險:
1. 無足夠用戶參與
客戶經常不明白為什麼收集需求和確保需求質量需花費那麼多功夫,開發人員可能也不重視用戶的參與.究其原因:一是因為開發人員感覺與用戶合作不如編寫代碼有意思;二是因為開發人員覺得已經明白用戶的需求了.在某些情況下,與實際使用產品的用戶直接接觸很困難,而客戶也不太明白自己的真正需求.但還是應讓具有代表性的用戶在項目早期直接參與到開發隊伍中,並一同經歷整個開發過程.
系統人員在實踐過程中,也有些感覺,在實施一家公司的項目時,若無足夠的用戶參與,系統人員獲得的需求是片面的,不完整的,這樣系統在需求之初就埋下風險.
2. 用戶需求的不斷增加
在開發中若不斷地補充需求,項目就越變越龐大以致超過其計劃及預算范圍.計劃並不總是與項目需求規模與復雜性、風險、開發生產率及需求變更實際情況相一致,這使得問題更難解決.實際上,問題根源在於用戶需求的改變和開發者對新需求所作的修改.
要想把需求變更范圍控制到最小,必須一開始就對項目視圖、范圍、目標、約束限制和成功標准給予明確說明,並將此說明作為評價需求變更和新特性的參照框架.說明中包括了對每種變更進行變更影響因素分析的變更控制過程,有助於所有風險承擔者明白業務決策的合理性,即為何進行某些變更,相應消耗的時間、資源或特性上的折中.
產品開發中不斷延續的變更會使其整體結構日漸紊亂,補丁代碼也使得整個程序難以理解和維護.插入補丁代碼使模塊違背強內聚、松耦合的設計原則,特別是如果項目配置管理工作不完善的話,收回變更和刪除特性會帶來問題.如果你盡早地區別這些可能帶來變更的特性,你就能開發一個更為健壯的結構,並能更好地適應它.這樣設計階段需求變更不會直接導致補丁代碼,同時也有利於減少因變更導致質量的下降.
3. 模稜兩可的需求
模稜兩可是需求規格說明中最為可怕的問題.它的一層含義是指諸多讀者對需求說明產生了不同的理解;另一層含義是指單個讀者能用不止一個方式來解釋某個需求說明.
模稜兩可的需求會使不同的風險承擔者產生不同的期望,它會使開發人員為錯誤問題而浪費時間,並且使測試者與開發者所期望的不一致.一位系統測試人員曾告訴我,她所在的測試組經常對需求理解有誤,以致不得不重寫許多測試用例並重做許多測試.
處理模稜兩可需求的一種方法是組織好負責從不同角度審查需求的隊伍.僅僅簡單瀏覽一下需求文檔是不能解決模稜兩可問題的.如果不同的評審者從不同的角度對需求說明給予解釋,但每個評審人員都真正了解需求文檔,這樣二義性就不會直到項目後期才被發現,那時再發現的話會使得更正代價很大.
4. 不必要的特性
"畫蛇添足"是指開發人員力圖增加一些"用戶欣賞"但需求規格說明中並未涉及的新功能.經常發生的情況是用戶並不認為這些功能性很有用,以致在其上耗費的努力"白搭"了.開發人員應當為客戶構思方案並為他們提供一些具有創新意識的思路,具體提供哪些功能要在客戶所需與開發人員在允許時限內的技術可行性之間求得平衡,開發人員應努力使功能簡單易用,而不要未經客戶同意,擅自脫離客戶要求,自作主張.
同樣,客戶有時也可能要求一些看上去很"酷",但缺乏實用價值的功能,而實現這些功能只能徒耗時間和成本.為了將"畫蛇添足"的危害盡量減小,應確信:你明白為什麼要包括這些功能,以及這些功能的"來龍去脈",這樣使得需求分析過程始終是注重那些能使用戶完成他們業務任務的核心功能.
5. 過於精簡的規格說明
有時,客戶並不明白需求分析有如此重要,於是只作一份簡略之至的規格說明,僅涉及了產品概念上的內容,然後讓開發人員在項目進展中去完善,結果很可能出現的是開發人員先建立產品的結構之後再完成需求說明.這種方法可能適合於尖端研究性的產品或需求本身就十分靈活的情況.但在大多數情況下,這會給開發人員帶來挫折(使他們在不正確的假設前提和極其有限的指導下工作),也會給客戶帶來煩惱(他們無法得到他們所設想的產品).
6. 忽略了用戶分類
大多數產品是由不同的人使用其不同的特性,使用頻繁程度也有所差異,使用者受教育程度和經驗水平也不盡相同.如果你不能在項目早期就針對所有這些主要用戶進行分類的話,必然導致有的用戶對產品感到失望.例如,菜單驅動操作對高級用戶太低效了,但含義不清的命令和快捷鍵又會使不熟練的用戶感到困難.
7. 不準確的計劃
據統計,導致需求過程中軟體成本估計極不準確的原因主要有以下五點:頻繁的需求變更、遺漏的需求、與用戶交流不夠、質量低下的需求規格說明和不完善的需求分析.
對不準確的要求所提問題的正確響應是"等我真正明白你的需求時,我就會來告訴你".基於不充分信息和未經深思的對需求不成熟的估計很容易為一些因素左右.要作出估計時,最好還是給出一個范圍.未經准備的估計通常是作為一種猜測給出的,聽者卻認為是一種承諾.因此我們要盡力給出可達到的目標並堅持完成它.
6.需求分析人員和用戶的合作關系
優秀的軟體產品是建立在優秀的需求基礎之上的.而高質量的需求來源於客戶與開發人員之間有效的交流與合作.通常,開發人員與客戶或客戶代理人,如市場人員間的關系反而會成為一種對立關系.雙方的管理者都只想自己的利益而擱置用戶提供的需求從而產生摩擦,在這種情況下,不會給雙方帶來一點益處.
只有當雙方參與者都明白要成功自己需要什麼,同時也應知道要成功合作方需要什麼時,才能建立起一種合作關系.由於項目壓力與日漸增,所有風險承擔者有著一個共同的目標這一點容易被遺忘.其實大家都想開發出一個既能實現商業價值,又能滿足用戶需要,還能使開發者感到滿足的優秀軟體產品.
軟體客戶需求權利書列出了十條關於客戶在項目需求工程實施中與分析人員、開發人員交流時的合法要求.每一項權利都對應著軟體開發人員、分析人員的義務.而軟體客戶需求義務書也列出了十條關於客戶在需求過程中應承擔的義務.如果願意,可以將其作為開發人員的權利書.
客戶有如下權利:
1:要求分析人員使用符合客戶語言習慣的表達
需求討論應集中於業務需要和任務,故要使用業務術語,你應將其教給分析人員,而你 不一定要懂得計算機的行業術語.
2:要求分析人員了解客戶的業務及目標
通過與用戶交流來獲取用戶需求、分析人員才能更好地了解你的業務任務和怎樣才能使產品更好地滿足你的需要.這將有助於開發人員設計出真正滿足你的需要並達到你期望的優秀軟體.為幫助開發人員和分析人員,可以考慮邀請他們觀察你或你的同事是怎樣工作的.如果新開發系統是用來替代已有的系統,那麼開發人員應使用一下目前的系統,這將有利於他們明白目前系統是怎樣工作的,其工作流程的情況,以及可供改進之處.
3:要求分析人員編寫軟體需求規格說明
分析人員要把從你和其他客戶那裡獲得的所有信息進行整理,以區分開業務需求及規范、功能需求、質量目標、解決方法和其它信息.通過這些分析就能得到一份軟體需求規格說明.而這份軟體需求規格說明便在開發人員和客戶之間針對要開發的產品內容達成了協議.軟體需求規格說明書可以用一種你認為易於翻閱和理解的方式組織編寫.要評審編寫出的規格說明以確保它們准確而完整地表達了你的需求.一份高質量的軟體需求規格說明能有助於開發人員開發出真正需要的產品.
4:要求得到需求工作結果的解釋說明
分析人員可能採用了多種圖表作為文字性軟體需求規格說明的補充.因為如工作流程圖那樣的圖表能很清楚地描述出系統行為的某些方面.所以需求說明中的各種圖表有著極高的價值.雖然它們不太難於理解,但是你很可能對此並不熟悉.因此可以要求分析人員解釋說明每張圖表的作用或其它的需求開發工作結果和符號的意義,及怎樣檢查圖表有無錯誤及不一致等.
5:要求開發人員尊重你的意見
如果用戶與開發人員之間不能相互理解,那關於需求的討論將會有障礙,共同合作能使大家"兼聽則明".參與需求開發過程的客戶有權要求開發人員尊重他們並珍惜他們為項目成功所付出的時間.同樣,客戶也應對開發人員為項目成功這一共同目標所作出的努力表示尊重與感激.
6:要求開發人員對需求及產品實施提供建議,拿出主意
通常,客戶所說的"需求"已是一種實際可能的實施解決方案,分析人員將盡力從這些解決方法中了解真正的業務及其需求,同時還應找出已有系統不適合當前業務之處,以確保產品不會無效或低效.在徹底弄清業務領域內的事情後,分析人員有時就能提出相當好的改進方法.有經驗且富有創造力的分析人員還能提出增加一些用戶並未發現的很有價值的系統特性.
7:描述產品易使用的特性
你可以要求分析人員在實現功能需求的同時還要注重軟體的易用性.因為這些易用特性或質量屬性能使你更准確、高效地完成任務.例如,客戶有時要求產品要"用戶友好"或"健壯"或"高效率",但這對於開發人員來說,太主觀了並無實用價值.正確的應是:分析人員通過詢問和調查了解客戶所要的友好、健壯、高效所包含的具體特性.
8:調整需求,允許重用已有的軟體組件
需求通常要有一定的靈活性.分析人員可能發現已有的某個軟體組件與你描述的需求很相符.在這種情況下,分析人員應提供一些修改需求的選擇以便開發人員能夠在新系統開發中重用一些已有的軟體.如果有可重用的機會出現,同時你又能調整你的需求說明,那就能降低成本和節省時間,而不必嚴格按原有的需求說明開發.所以說,如果想在產品中使用一些已有的商業常用組件,而它們並不完全適合你所需的特性,這時一定程度上的需求靈活性就顯得極為重要了.
9:獲得滿足客戶功能和質量要求的系統
每個人都希望項目獲得成功.但這不僅要求你要清晰地告知開發人員關於系統"做什麼"所需的所有信息,而且還要求開發人員能通過交流了解清楚取捨與限制.一定要明確說明你的假設和潛在的期望.否則,開發人員開發出的產品很可能無法讓你滿意.
客戶有下列義務:
1:給分析人員講解你的業務
分析人員要依靠你給他們講解的業務概念及術語.但你不能指望分析人員會成為該領域的專家,而只能讓他們真正明白你的問題和目標.不要期望分析人員能把握你們業務的細微與潛在之處,他們很可能並不知道那些對於你和你的同事來說理所當然的"常識".
2:抽出時間清楚地說明並完善需求
客戶很忙,經常在最忙的時候還得參與需求開發.但無論如何,你有義務抽出時間參與"頭腦風暴"會議的討論,接受采訪或其它獲取需求的活動.有時分析人員可能先以為明白了你的觀點,而過後發現還需要你的講解.這時,請耐心一些對待需求和需求的精化工作過程中的反復,因為它是人們交流中的很自然的現象,何況這對軟體產品的成功極為重要.
3:准確而詳細地說明需求
編寫一份清晰、准確的需求文檔是很困難的.由於處理細節問題不但煩人而且又耗時,故很容易留下模糊不清的需求.但是,在開發過程中,必須得解決這種模糊性和不準確性.而你恰是為解決這些問題作出決定的最佳人選.不然的話,你就只好靠開發人員去正確猜測了.在需求規格說明中暫時加上待定(to be determined, TBD也可採用漢語拼音略寫"DQD:待確定")的標志是個不錯的辦法.用該標志可指明了哪些需要進一步探討、分析或增加信息的地方.不過,有時也可能因為某個特殊需求難以解決或沒有人願意處理它而註上TBD標志.盡量將每項需求的內容都闡述清楚,以便分析人員能准確的將其寫進軟體需求規格說明中.如果你一時不能准確表述,那就得允許獲取必要的准確信息這樣一個過程.通常使用所謂的原型技術.通過開發的原型,你可以同開發人員一起反復修改,不斷完善需求定義.
4:及時地作出決定
正如一位建築師為你修建房屋,分析人員將要求你做出一些選擇和決定.這些決定包括來自多個用戶提出的處理方法或在質量特性沖突和信息准確度中選擇折衷方案等.有權做出決定的客戶必須積極地對待這一切,盡快做處理、做決定.因為開發人員通常只有等你做出了決定才能行動,而這種等待會延誤項目的進展.
5:尊重開發人員的需求可行性及成本評估
所有的軟體功能都有其成本價格,開發人員最適合預算這些成本(盡管許多開發人員並不擅長評估預測).你所希望的某些產品特性可能在技術上行不通,或者實現它要付出極為高昂的代價.而某些需求試圖在操作環境中要求不可能達到的性能或試圖得到一些根本得不到的數據,開發人員會對此作出負面的評價意見,你應該尊重他們的意見.有時,你可以重新給出一個在技術上可行、實現上便宜的需求,例如,要求某個行為在"瞬間"發生是不可行的,但換種更具體的時間需求說法("在50ms以內",但若沒有準確的技術分析不能輕易下結論),這就可以實現了.
6: 劃分需求優先順序別
大多數項目沒有足夠的時間或資源來實現功能性的每個細節.決定哪些特性是必要的,哪些是重要的,哪些是好的,是需求開發的主要部分.只能由你來負責設定需求優先順序,因為開發者並不可能按你的觀點決定需求優先順序.開發者將為你確定優先順序提供有關每個需求的花費和風險的信息.當你設定優先順序時,你幫助開發者確保在適當的時間內用最小的開支取得最好的效果.在時間和資源限制下,關於所需特性能否完成或完成多少應該尊重開發人員的意見.盡管沒有人願意看到自己所希望的需求在項目中未被實現,但畢竟是要面對這種現實的.業務決策有時不得不依據優先順序來縮小項目范圍或延長工期,或增加資源,或在質量上尋找折衷.
7:評審需求文檔和原型
正如我們將在第1 4章討論的,無論是正式的還是非正式的方式,對需求文檔進行評審都會對軟體質量提高有所幫助.讓客戶參與評審才能真正鑒別需求文檔是否的確完整、正確說明了期望的必要特性.評審也給客戶代表提供一個機會,給需求分析人員帶來反饋信息以改進他們的工作.如果你認為編寫的需求文檔不夠准確,就有義務盡早告訴分析人員並為改進提供建議.通過閱讀需求規格說明,很難想像實際的軟體是什麼樣子的.更好的方法是先為產品開發一個原型.這樣你就能提供更有價值的反饋信息給開發人員,幫助他們更好地理解你的需求.必須認識到:原型並非是一個實際產品,但開發人員能將其轉變、擴充成功能齊全的系統.
8:需求出現變更要馬上聯系
不斷的需求變更會給在預定計劃內完成高質量產品帶來嚴重的負面影響.變更是不可避免的,但在開發周期中變更越在晚期出現,其影響越大.變更不僅會導致代價極高的返工,而且工期也會被迫延誤,特別是在大體結構已完成後又需要增加新特性時.所以一旦你發現需要變更需求時,請一定立即通知分析人員.
9:應遵照開發組織處理需求變更的過程
為了將變更帶來的負面影響減少到最低限度,所有的參與者必須遵照項目的變更控制過程.這要求不放棄所有提出的變更,對每項要求的變更進行分析、綜合考慮,最後作出合適的決策以確定將某些變更引入項目中.
10:尊重開發人員採用的需求工程過程
軟體開發中最具挑戰性的莫過於收集需求並確定其正確性.分析人員採用的方法有其合理性.也許你認為需求過程不太劃算,但請相信花在需求開發上的時間是"很有價值"的.如果你理解並支持分析人員為收集、編寫需求文檔和確保其質量所採用的技術,那麼整個過程將會更為順利.盡管去詢問分析人員為什麼他們要收集某些信息,或參與與需求有關的活動.
系統分析人員在開發過程中可能會遇到以下問題,一些很忙的客戶可能不願意積極參與需求過程,而缺少客戶參與將很可能導致不理想的產品.故一定要確保需求開發中的主要參與者都了解並接受他們的義務.如果遇到分歧,通過協商以達成對各自義務的相互理解,這樣能減少今後的摩擦.
7.需求文檔
需求開發的最終成果是:客戶和開發小組對將要開發的產品達成一致協議.協議綜合了業務需求、用戶需求和軟體功能需求.就像我們早先所看到的,項目視圖和范圍文檔包含了業務需求,而使用實例文檔則包含了用戶需求.你必須編寫從使用實例派生出的功能需求文檔,還要編寫產品的非功能需求文檔,包括質量屬性和外部介面需求.只有以結構化和可讀性方式編寫這些文檔,並由項目的風險承擔者評審通過後,各方面人員才能確信他們所贊同的需求是可靠的.
你可以使用以下三種方法編寫軟體需求規格說明:
用好的結構化和自然語言編寫文本型文檔.
建立圖形化模型,這些模型可以描繪轉換過程、系統狀態和它們之間的變化、數據關系、邏輯流或對象類和它們的關系.
編寫形式化規格說明,這可以通過使用數學上精確的形式化邏輯語言來定義需求.
由於形式化規格說明具有很強的嚴密性和精確度,因此,所使用的形式化語言只有極少數軟體開發人員才熟悉,更不用說客戶了.雖然結構化的自然語言具有許多缺點,但在大多數軟體工程中,它仍是編寫需求文檔最現實的方法.包含了功能和非功能需求的基於文本的軟體需求規格說明已經為大多數項目所接受.圖形化分析模型通過提供另一種需求視圖,增強了軟體需求規格說明.

I. 需求分析的主要方法是

目前,軟體需求的分析與設計方法較多,一些大同小異,而有的則基本思路相差很大。從開發過程及特點出發,軟體開發一般採用軟體生存周期的開發方法,有時採用開發原型以幫助了解用戶需求。在軟體分析與設計時,自上而下由全局出發全面規劃分析,然後逐步設計實現。
從系統分析出發,可將需求分析方法大致分為功能分解方法、結構化分析方法、信息建模法和面向對象的分析方法。
(1)功能分解方法。
將新系統作為多功能模塊的組合。各功能義可分解為若乾子功能及介面,子功能再繼續分解。便可得到系統的雛形,即功能分解——功能、子功能、功能介面。
(2)結構化分析方法。
結構化分析方法是一種從問題空間到某種表示的映射方法,是結構化方法中重要且被普遍接受的表示系統,由數據流圖和數據詞典構成並表示。此分析法又稱為數據流法。其基本策略是跟蹤數據流,即研究問題域中數據流動方式及在各個環節上所進行的處理,從而發現數據流和加工。結構化分析可定義為數據流、數據處理或加工、數據存儲、端點、處理說明和數據字典。
(3)信息建模方法。
它從數據角度對現實世界建立模型。大型軟體較復雜;很難直接對其分析和設計,常藉助模型。模型是開發中常用工具,系統包括數據處理、事務管理和決策支持。實質上,也可看成由一系列有序模型構成,其有序模型通常為功能模型、信息模型、數據模型、控制模型和決策模型。有序是指這些模型是分別在系統的不同開發階段及開發層次一同建立的。建立系統常用的基本工具是E—R圖。經過改進後稱為信息建模法,後來又發展為語義數據建模方法,並引入了許多面向對象的特點。
信息建模可定義為實體或對象、屬性、關系、父類型/子類型和關聯對象。此方法的核心概念是實體和關系,基本工具是E-R圖,其基本要素由實體、屬性和聯系構成。該方法的基本策略是從現實中找出實體,然後再用屬性進行描述。
(4)面向對象的分析方法。
面向對象的分析方法的關鍵是識別問題域內的對象,分析它們之間的關系,並建立三類模型,即對象模型、動態模型和功能模型。面向對象主要考慮類或對象、結構與連接、繼承和封裝、消息通信,只表示面向對象的分析中幾項最重要特徵。類的對象是對問題域中事物的完整映射,包括事物的數據特徵(即屬性)和行為特徵(即服務)

J. 網站用戶需求分析的方法是什麼意思

網站需求分析分為兩部分:

閱讀全文

與分析用戶需求的方法是相關的資料

熱點內容
手機合成足球形狀的圖片方法 瀏覽:22
香梨鑒別方法 瀏覽:296
噴槍噴漆槍的使用方法 瀏覽:597
檢測水泥的含泥量的方法 瀏覽:351
餐廳排長隊的技巧和方法 瀏覽:534
節稅十種方法和技巧 瀏覽:492
土方計算方法的適用范圍和條件 瀏覽:33
名人有哪些讀書方法 瀏覽:569
茶室泡茶的方法步驟 瀏覽:938
清洗消毒後病毒的檢測方法 瀏覽:24
緩解女性衰老有哪些方法 瀏覽:632
種植罌粟的方法 瀏覽:541
華為手機抖音全部分類操作方法 瀏覽:950
藍寶石簡單辨別方法 瀏覽:769
鍛煉身體的正確方法是用力吐氣嗎 瀏覽:169
如何提升考研成績的方法 瀏覽:256
牛疝氣圖片大全治療方法 瀏覽:138
圓形吸頂燈安裝方法有哪些 瀏覽:538
測試用例分析方法 瀏覽:678
各種花的用量計算方法 瀏覽:254