型、統(tǒng)一建模語言、用例和敏捷軟件開發(fā)等方法。
主要技術(shù)
需求分析有可能在一個項(xiàng)目中成為一個漫長、艱巨的工作。需求分析專家與他們的顧客交談、記錄他們的交談結(jié)果、分析他們收集的信息,從中提取互相矛盾的地方,總結(jié)出一個總體觀念,然后再與顧客交談他們發(fā)現(xiàn)的問題。這個過程可以不斷重復(fù),在有些項(xiàng)目中這個過程可以伴隨著整個在有些項(xiàng)目中這個過程可以伴隨著整個生命周期。
新系統(tǒng)很可能改變?nèi)酥g的關(guān)系和人的工作環(huán)境,因此認(rèn)定誰是重要的信息持有者是非常重要得。只有這樣在需求分析的過程中才能夠?qū)㈩櫩退械男枰技o(jì)錄下來,只有這樣才能保證他們認(rèn)識到新的系統(tǒng)對他們來說帶來怎樣的變化。出于下述原因這個要求往往達(dá)不到:
·與顧客的交談不夠多和不夠徹底,一些重要的需求被忽視;
·顧客的反應(yīng)不說明問題,顧客對新系統(tǒng)的特征不滿。
·為了使所有這些討論有條理、有組織和有效地被記錄下來,這些討論的過程和其內(nèi)容的演化也必須被記錄下來。
分析員可以使用不同的技術(shù)來從顧客手中獲得需求。比較老的方式有采訪顧客,或者與顧客一起開座談會,列舉顧客的需求。比較新的技術(shù)有建立模型和使用用例。在最佳狀態(tài)下在采納了不同的技術(shù)后他們可以完全理解顧客的需要和與持重要信息的人建立了必要的聯(lián)系。
采訪持重要信息的人
采訪持重要信息的人是需求分析中一個必不可少的過程。但在一個大的系統(tǒng)中許多人必須被采訪,這需要許多時間和金錢,但最重要的是這個過程最可能顯示現(xiàn)有的業(yè)務(wù)流程與新系統(tǒng)中的業(yè)務(wù)流程之間的差別。不同的顧客有可能有不同的或甚至相對的需求,在這種情況下分析員必須協(xié)調(diào)各方的需要。
需求工作會
出于上述原因一般假如一個系統(tǒng)非常復(fù)雜的話需求分析最常用的方法是召開需求工作會,在需求工作會上分析員和持重要信息的人一起分析系統(tǒng)的需要和發(fā)展解決方案。
這樣的工作會最好不要再采訪對象的工作場進(jìn)行,這樣采訪對象不會被打擾。工作會有一個負(fù)責(zé)人來保持會議的進(jìn)程,一個記錄員來記錄會議的討論,投影儀和相應(yīng)的軟件是常用的工具。一般需要進(jìn)行多次會議后才能得到最終結(jié)果。
一般認(rèn)為需求工作會可以節(jié)省不少時間,因此是一個非常有用的工具,但是往往很難同時將所有的持重要信息的人聚集到一起。
一個常見的缺陷是一些持重要信息者在這樣的會議上不十分積極,因此他們的需求沒有獲得必要的重視。這樣得到的解決方案必然有限。此外需求工作會是一個很好的分析現(xiàn)有系統(tǒng)的工具,但用它來尋求解決方案就不是十分有用了。
將需求列成合同式的文件
最常見的紀(jì)錄需求分析的方式是將顧客需求列入一個合同式的表。一個復(fù)雜的系統(tǒng)的文件可以數(shù)百頁長。現(xiàn)代的分析員不愿使用這樣的列表,因?yàn)樗鼈儽蛔C明相當(dāng)無用,但它們依然相當(dāng)常見。
優(yōu)點(diǎn):
·提供一份需求的清單。
·提供一份顧客和開發(fā)者間的合同。
·對一個大的系統(tǒng)來說它提供了一份高級的描寫。
缺點(diǎn):
·這些列表可以長達(dá)上百頁,實(shí)際上沒有人能夠完整地閱讀這樣的文件來獲得一個完整的系統(tǒng)理解。
·列表中的需求一般都很抽象和缺乏列出的需求互相之間的關(guān)聯(lián)
·這樣的列表一般表示不出列出的需求之間怎樣組成一個整體。
·從列表中很難看出哪些需求更重要。
·抽象后的列表為讀者提供了許多理解的余地,因此不同的讀者對文件的理解可能不同。一個項(xiàng)目越大,讀者越多,理解的方式就越多。
·從抽象后的列表中很難看出它是否完全。它們往往忽視了許多細(xì)節(jié)。
·顧客和開發(fā)者對這個列表的理解往往完全不同。