在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍和定義時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。
在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。在軟件工程的歷史中,很長時間里人們一直認為需求分析是整個軟件工程中最簡單的一個步驟,但在過去十年中越來越多的人認識到它是整個過程中最關鍵的一個過程。假如在需求分析時分析者們未能正確地認識到顧客的需要的話,那么最后的軟件實際上不可能達到顧客的需要,或者軟件無法在規(guī)定的時間里完工。
目錄
1 挑戰(zhàn)
1.1 主要困難
1.2 持有關鍵信息的人
1.3 軟件開發(fā)者
1.4 解決方法
2 主要技術(shù)
2.1 采訪持重要信息的人
2.2 需求工作會
2.3 將需求列成合同式的文件
2.4 原型(Prototype)
2.5 用例(Use Case)
2.6 確認持關鍵信息者
挑戰(zhàn)
順利地完成需求分析是一個艱巨的挑戰(zhàn)。首先要確認所有持有關鍵信息的人本身就不容易,然后還要從這些人獲得可用的信息,把這些信息轉(zhuǎn)化為清晰的和完整的形式。同時分析者還要考慮到可能的限制。
除此之外他們還要考慮一個項目的
·是否可行
·是否在規(guī)定的時間里可以完成
·價格上是否負擔得起
·是否合法
·是否符合道德
一個新項目開始的時候人們往往還非常興奮,往往試圖輕視需求分析的必要性。但對過去項目的分析證明一個徹底的和無情的需求分析可以降低一個項目的耗費和降低其技術(shù)風險。
主要困難
隨著工程師越來越對需求分析的重視今天我們對需求分析的主要困難也理解得比較清楚: 需求分析需要由有充分的經(jīng)驗、技術(shù)知識和語言技巧的專家來完成;顧客一開始所提出的需要往往不完全、太樂觀以及過分受老的系統(tǒng)或過程的影響;使用復雜的工具和不同的技術(shù)來進行需求分析往往會打消獲得一個完整的和細致的結(jié)果的希望。
持有關鍵信息的人
顧客有可能防止需求分析順利進行有以下幾種可能性:
·顧客不明白他自己需要什么
·顧客不愿將他們的需要固定在一系列寫在紙上的條例中
·在價格和時間確定后顧客堅持要求新的需要
·分析者與顧客的通訊太緩慢
·顧客不參加回顧或無法參加回顧
·顧客缺乏技術(shù)上的知識
·顧客缺乏對軟件開發(fā)的知識
軟件開發(fā)者
但是軟件開發(fā)者也有他們的責任。由于軟件開發(fā)者收錢來開發(fā)他們的軟件,他們的責任就更加不可推脫了。由軟件開發(fā)者導致的困難有:
·軟件工程師與他們的顧客往往使用不同的詞匯。有時他們以為互相之間完全達成協(xié)議,但是在展示最終結(jié)果時卻發(fā)現(xiàn)并非如此。開發(fā)者有義務克服這個困難,他們拿了顧客的錢,因此有這個義務。
·軟件開發(fā)者往往喜歡將顧客的需要改變得能使它們符合一個已存在的系統(tǒng)或模式,而不愿按照顧客的需要來發(fā)展一個新的系統(tǒng)。
·需求分析往往是由程序員完成的,而不是由作業(yè)分析員完成的。程序員往往缺乏理解實際事物的運行過程和商業(yè)過程的技巧。
解決方法
解決這些困難的一個方法是使用專業(yè)的作業(yè)或系統(tǒng)分析員,這些專業(yè)人員通過專門訓練來填補商業(yè)和電腦世界之間的鴻溝的。這個方法可以達到一定的效果,但從顧客方面來說要找到相應的有類似技巧的人就相當困難了。此外今天為需求分析所使用的方法依然還有很大的缺陷,它們還不夠有效。
1990年代以來新的技術(shù)有制作原