在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍和定義時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。 在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。在軟件工程的歷史中,很長時間里人們一直認為需求分析是整個軟件工程中最簡單的一個步驟,但在過去十年中越來越多的人認識到它是整個過程中最關鍵的一個過程。假如在需求分析時分析者們未能正確地認識到顧客的需要的話,那么最后的軟件實際上不可能達到顧客的需要,或者軟件無法在規(guī)定的時間里完工。
目錄
1 挑戰(zhàn)
1.1 主要困難
1.2 持有關鍵信息的人
1.3 軟件開發(fā)者
1.4 解決方法
2 主要技術
2.1 采訪持重要信息的人
2.2 需求工作會
2.3 將需求列成合同式的文件
2.4 原型(Prototype)
2.5 用例(Use Case)
2.6 確認持關鍵信息者
目錄
1 挑戰(zhàn)
1.1 主要困難
1.2 持有關鍵信息的人
1.3 軟件開發(fā)者
1.4 解決方法
2 主要技術
2.1 采訪持重要信息的人
2.2 需求工作會
2.3 將需求列成合同式的文件
2.4 原型(Prototype)
2.5 用例(Use Case)
2.6 確認持關鍵信息者
挑戰(zhàn)
順利地完成需求分析是一個艱巨的挑戰(zhàn)。首先要確認所有持有關鍵信息的人本身就不容易,然后還要從這些人獲得可用的信息,把這些信息轉(zhuǎn)化為清晰的和完整的形式。同時分析者還要考慮到可能的限制。
除此之外他們還要考慮一個項目的·軟件工程師與他們的顧客往往使用不同的詞匯。有時他們以為互相之間完全達成協(xié)議,但是在展示最終結果時卻發(fā)現(xiàn)并非如此。開發(fā)者有義務克服這個困難,他們拿了顧客的錢,因此有這個義務。
·軟件開發(fā)者往往喜歡將顧客的需要改變得能使它們符合一個已存在的系統(tǒng)或模式,而不愿按照顧客的需要來發(fā)展一個新的系統(tǒng)。
·需求分析往往是由程序員完成的,而不是由作業(yè)分析員完成的。程序員往往缺乏理解實際事物的運行過程和商業(yè)過程的技巧。
解決方法
解決這些困難的一個方法是使用專業(yè)的作業(yè)或系統(tǒng)分析員,這些專業(yè)人員通過專門訓練來填補商業(yè)和電腦世界之間的鴻溝的。這個方法可以達到一定的效果,但從顧客方面來說要找到相應的有類似技巧的人就相當困難了。此外今天為需求分析所使用的方法依然還有很大的缺陷,它們還不夠有效。
1990年代以來新的技術有制作原型、統(tǒng)一建模語言、用例和敏捷軟件開發(fā)等方法。
主要技術
需求分析有可能在一個項目中成為一個漫長、艱巨的工作。需求分析專家與他們的顧客交談、記錄他們的交談結果、分析他們收集的信息,從中提取互相矛盾的地方,總結出一個總體觀念,然后再與顧客交談他們發(fā)現(xiàn)的問題。這個過程可以不斷重復,在有些項目中這個過程可以伴隨著整個在有些項目中這個過程可以伴隨著整個生命周期。
新系統(tǒng)很可能改變?nèi)酥g的關系和人的工作環(huán)境,因此認定誰是重要的信息持有者是非常重要得。只有這樣在需求分析的過程中才能夠?qū)㈩櫩退械男枰技o錄下來,只有這樣才能保證他們認識到新的系統(tǒng)對他們來說帶來怎樣的變化。出于下述原因這個要求往往達不到:
·與顧客的交談不夠多和不夠徹底,一些重要的需求被忽視;
·顧客的反應不說明問題,顧客對新系統(tǒng)的特征不滿。
·為了使所有這些討論有條理、有組織和有效地被記錄下來,這些討論的過程和其內(nèi)容的演化也必須被記錄下來。
分析員可以使用不同的技術來從顧客手中獲得需求。比較老的方式有采訪顧客,或者與顧客一起開座談會,列舉顧客的需求。比較新的技術有建立模型和使用用例。在最佳狀態(tài)下在采納了不同的技術后他們可以完全理解顧客的需要和與持重要信息的人建立了必要的聯(lián)系。
采訪持重要信息的人
采訪持重要信息的人是需求分析中一個必不可少的過程。但在一個大的系統(tǒng)中許多人必須被采訪,這需要許多時間和金錢,但最重要的是這個過程最可能顯示現(xiàn)有的業(yè)務流程與新系統(tǒng)中的業(yè)務流程之間的差別。不同的顧客有可能有不同的或甚至相對的需求,在這種情況下分析員必須協(xié)調(diào)各方的需要。
需求工作會
出于上述原因一般假如一個系統(tǒng)非常復雜的話需求分析最常用的方法是召開需求工作會,在需求工作會上分析員和持重要信息的人一起分析系統(tǒng)的需要和發(fā)展解決方案。
這樣的工作會最好不要再采訪對象的工作場進行,這樣采訪對象不會被打擾。工作會有一個負責人來保持會議的進程,一個記錄員來記錄會議的討論,投影儀和相應的軟件是常用的工具。一般需要進行多次會議后才能得到最終結果。
一般認為需求工作會可以節(jié)省不少時間,因此是一個非常有用的工具,但是往往很難同時將所有的持重要信息的人聚集到一起。
一個常見的缺陷是一些持重要信息者在這樣的會議上不十分積極,因此他們的需求沒有獲得必要的重視。這樣得到的解決方案必然有限。此外需求工作會是一個很好的分析現(xiàn)有系統(tǒng)的工具,但用它來尋求解決方案就不是十分有用了。
將需求列成合同式的文件
最常見的紀錄需求分析的方式是將顧客需求列入一個合同式的表。一個復雜的系統(tǒng)的文件可以數(shù)百頁長?,F(xiàn)代的分析員不愿使用這樣的列表,因為它們被證明相當無用,但它們依然相當常見。
優(yōu)點:
·提供一份需求的清單。
·提供一份顧客和開發(fā)者間的合同。
·對一個大的系統(tǒng)來說它提供了一份高級的描寫。
缺點:
·這些列表可以長達上百頁,實際上沒有人能夠完整地閱讀這樣的文件來獲得一個完整的系統(tǒng)理解。
·列表中的需求一般都很抽象和缺乏列出的需求互相之間的關聯(lián)
·這樣的列表一般表示不出列出的需求之間怎樣組成一個整體。
·從列表中很難看出哪些需求更重要。
·抽象后的列表為讀者提供了許多理解的余地,因此不同的讀者對文件的理解可能不同。一個項目越大,讀者越多,理解的方式就越多。
·從抽象后的列表中很難看出它是否完全。它們往往忽視了許多細節(jié)。
·顧客和開發(fā)者對這個列表的理解往往完全不同。
·這樣的合同式的列表給顧客一個錯誤的安全的感覺,好像他們的要求都已列入了。但是由于這些列表本身對細節(jié)問題不能細述因此許多關鍵的細節(jié)問題實際上并未列出和解決。這些問題一直到后來軟件開發(fā)時才被發(fā)現(xiàn)。那時開發(fā)者一般要與顧客再次討論這些問題并試圖按他們的意愿和條件來解決這些問題。
·這個列表對此后的系統(tǒng)設計不提供任何幫助,它們的結構無法直接進入新軟件。
原型(Prototype)
從1980年代中開始,越來越多的人將作原型看作是解決需求分析的困難的辦法。原型模擬最終軟件的屏幕顯示,這樣用戶可以看到最終軟件將是什么樣,而實際上在這些屏幕顯示的背后還一切都空著呢。這樣顧客可以在系統(tǒng)還沒有建立之前就做出設計決定。當原型首次被使用的時候它們的效果被視為非常驚人。引入原型往往提高顧客與開發(fā)者之間的信息交換。原型的屏幕顯示后來往往很少被改變,因此可以大大地降低費用。
但此后十多年的實際應用證明雖然原型是一種有用的技術,但它也有它的缺陷:
·經(jīng)理人員在看到原型后往往不理解為什么到還要一段時間后最終設計才能完成。
·設計師往往將拼湊在一起的原型碼用到后來真正的系統(tǒng)中,因為他們怕在再次編碼時“浪費時間”。
·原型幫助解決設計決定和用戶界面的設計,但是它們并不提供任何關于需求的信息。
·設計師和顧客有可能花費太多的時間和精力來設計用戶界面,而忽視對作業(yè)過程的關心。
用例(Use Case)
用例是一種紀錄新系統(tǒng)或軟件更換時的需求的技術。每個用例包含一個系統(tǒng)在作業(yè)時與用戶或與其它系統(tǒng)之間交換信息的場景。一般用例避免使用術語,而盡量使用顧客、用戶或他們的專家的語言。一般用例由軟件開發(fā)者和顧客一起寫成。
在1990年代中用例很快地成為了紀錄需求分析的最主要的方式。尤其在它的發(fā)源地,在面向?qū)ο蟮某绦蛟O計中它的普及性非常高。但用例不僅可以用在面向?qū)ο蟮某绦蛟O計系統(tǒng)中,實際上用例本身并非面向?qū)ο蟮摹?/p>
每個用例集中于描寫如何來完成一個作業(yè)目標或任務。對傳統(tǒng)的軟件工程來說每個用例描寫系統(tǒng)的一個特點。對大多數(shù)軟件項目來說一個新的系統(tǒng)有多個(往往十幾個)用例。不同的軟件項目的格式或項目的進展都可能影響用例的細節(jié)性。
用例描述系統(tǒng)在運行時與外部執(zhí)行者之間的信息交換。外部執(zhí)行者是任何系統(tǒng)外的、與系統(tǒng)交換信息的物件或人物。它們可以是用戶、用戶的角色或其它系統(tǒng)。
用例將系統(tǒng)當作一個“黑匣子”,它從外部來看與系統(tǒng)之間的信息交換(包括系統(tǒng)的回答)。這樣它簡化對系統(tǒng)的需求的描寫而且防止對系統(tǒng)的工作方式作任何過早的假設。
每個用例應該符合下述條件:
·描寫完成作業(yè)目標的作業(yè)任務
·不包含任何編程碼
·有一定的細致性
·足夠短,一個程序員應該可以在一個版本的工作中獨立完成這個用例所描寫的作業(yè)過程。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權威部門公布的內(nèi)容為準!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學生提供專業(yè)、高質(zhì)量的課程和服務,解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學員考試保駕護航。面授、直播&錄播,多種班型靈活學習,滿足不同學員考證需求,降低課程學習難度,使學習效果事半功倍。
發(fā)表評論 查看完整評論 | |
关于我们 ┊ 付款方式 ┊ 联系我们 ┊ 加入我们 ┊ 网站声明 ┊ QQ学习群 ┊ 网站地图 ┊ 最近更新 |
客服热线:400-880-6318 QQ:800184589 微信:270019001 文章或图片如有侵权,请第一时间联系删除 |
Copyright ©2010-2022 信息化项目管理专业网站 - 信管网 All Rights Reserved 湘ICP备15005302号-9 湘公网安备 43010402000418号 |
![]() |