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