析作為軟件生命周期的第一個階段,并貫穿于整個軟件生命周期,其重要性越來越突出,到80年代中期,逐步形成了軟件工程的子領(lǐng)域———需求工程。軟件工程的子領(lǐng)域需求工程的出現(xiàn),體現(xiàn)了其在軟件質(zhì)量保證中的重要意義。進入20世紀(jì)90年代后,需求工程成為軟件界研究的重點之一。
在國內(nèi)則興起于20世紀(jì)90年代后期,其研究方法和研究方向基本上參照國外的相關(guān)方法和理念,而研究成果的創(chuàng)新度和實用意義與國外尚有差距。當(dāng)前對于需求工程的研究已經(jīng)成為軟件工程中的重要環(huán)節(jié),但正如AlanM. Davis所說的那樣:需求工程的進展相當(dāng)緩慢。
我國已進入WTO,因此軟件開發(fā)也要與國際接軌,只有這樣才能提高我們在項目管理水平,最終開發(fā)出高質(zhì)量的軟件。
2 需求分析的相關(guān)問題及過程
需求分析是軟件工程中最復(fù)雜和最難處理的過程。歸結(jié)起來,需求分析的問題主要體現(xiàn)在以下4個方面:
(1)需求的復(fù)雜性。由于用戶需求所涉及的因素繁多,如運行環(huán)境和系統(tǒng)功能等,而導(dǎo)致了需求分析的復(fù)雜化。積極與用戶交流,捕捉、分析和修訂用戶對目標(biāo)系統(tǒng)的需求,并提煉出符合問題解決領(lǐng)域的用戶需求。
(2)分析人員或客戶理解有誤。系統(tǒng)需求涉及人員較多,如軟件系統(tǒng)用戶、問題領(lǐng)域?qū)<?、需求工程師和項目管理員等,這些人員往往具有不同的背景知識,且處在不同角度,扮演不同角色,從而不可避免地造成了他們之間相互交流的困難。
例如軟件系統(tǒng)分析人員不可能都是全才,客戶表達的需求,不同的分析人員可能有不同的理解;客戶大多不懂軟件,他們可能覺得軟件是萬能的,會提出一些無法實現(xiàn)的需求。
(3)不完整性和不一致性。每一項需求都必須將所要實現(xiàn)的功能描述清楚,以使開發(fā)人員獲得設(shè)計和實現(xiàn)這些功能所需的所有必要信息。但由于種種原因,用戶對問題的陳述往往是不完整的,其各方面的需求還不可避免地存在著矛盾。
此外用戶需求必須和業(yè)務(wù)需求一致,功能需求必須和用戶需求一致。嚴(yán)格的遵守不同層次間的一致性關(guān)系,才可以保證最后開發(fā)出來的軟件系統(tǒng)不會偏離最初的實現(xiàn)目標(biāo)。
(4)需求易變性。隨著客戶對這個項目越來越深刻的理解,那么可能他的需求也會隨之改變,這些變化的可能性越大項目風(fēng)險就會越大,我們在需求分析的時候就要充分考慮到哪些需求是相對固定的需求,哪些可能會是產(chǎn)生變動的需求,考慮到他的可變性,這樣設(shè)計功能和數(shù)據(jù)庫的時候不致因為后面的變動而影響整個工程。
需求分析的步驟可歸納為四個:
(1)需求獲取。需求獲取通常從分析當(dāng)前系統(tǒng)包含的數(shù)據(jù)開始,建立當(dāng)前系統(tǒng)的物理模型。
(2)分析建模。分析模型的建立過程是對目標(biāo)系統(tǒng)的綜合要求及數(shù)據(jù)要求的分析綜合的過程。
(3)文檔編寫。軟件需求分析說明書是軟件需求分析階段最主要的文檔。
(4)需求驗證。軟件需求說明需求不一致的問題、二義性問題等,這些都必須通過需求分析的驗證復(fù)審來發(fā)送,確保需求說明可作為軟件設(shè)計和最終系統(tǒng)驗收的依據(jù)。
(1)結(jié)構(gòu)化分析方法(Struetured Analysis,SA),該方法比較常用,不再贅述。
(2)軟系統(tǒng)方法:這只是過度性的方法論他的出現(xiàn)只是證明結(jié)構(gòu)化分析方法的一些不足。因為結(jié)構(gòu)化分析方法采用的相對形式化的模型不僅與社會觀格格不入,而且在解決“不確定性”時顯得十分無力。
(3)面向?qū)ο蠓治龇椒?Object Oriented Analysis,OOA):這一方法也較為常用。
(4)面向問題域的分析(Problem Domain OrientedAnalysis,PDO