軟件需求是指用戶對(duì)目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。通過(guò)對(duì)應(yīng)問(wèn)題及其環(huán)境的理解與分析,為問(wèn)題涉及的信息、功能及系統(tǒng)行為建立模型,將用戶需求精確化、完全化,最終形成需求規(guī)格說(shuō)明,這一系列的活動(dòng)即構(gòu)成軟件開發(fā)生命周期的需求分析階段。
需求分析是介于系統(tǒng)分析和軟件設(shè)計(jì)階段之間的橋梁。一方面,需求分析以系統(tǒng)規(guī)格說(shuō)明和項(xiàng)目規(guī)劃作為分析活動(dòng)的基本出發(fā)點(diǎn),并從軟件角度對(duì)它們進(jìn)行檢查與調(diào)整;另一方面,需求規(guī)格說(shuō)明又是軟件設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試直至維護(hù)的主要基礎(chǔ)。良好的分析活動(dòng)有助于避免或盡早剔除早期錯(cuò)誤,從而提高軟件生產(chǎn)率,降低開發(fā)成本,改進(jìn)軟件質(zhì)量。
需求工程是隨著計(jì)算機(jī)的發(fā)展而發(fā)展的,在計(jì)算機(jī)發(fā)展的初期,軟件規(guī)模不大,軟件開發(fā)所關(guān)注的是代碼編寫,需求分析很少受到重視。后來(lái)軟件開發(fā)引入了生命周期的概念,需求分析成為其第一階段。隨著軟件系統(tǒng)規(guī)模的擴(kuò)大,需求分析與定義在整個(gè)軟件開發(fā)與維護(hù)過(guò)程中越來(lái)越重要,直接關(guān)系到軟件的成功與否。人們逐漸認(rèn)識(shí)到需求分析活動(dòng)不再僅限于軟件開發(fā)的最初階段,它貫穿于系統(tǒng)開發(fā)的整個(gè)生命周期。80年代中期,形成了軟件工程的子領(lǐng)域——需求工程(requirementengineering,RE)。進(jìn)入90年代以來(lái),需求工程成為研究的熱點(diǎn)之一。從1993年起每?jī)赡昱e辦一次需求工程國(guó)際研討會(huì)(ISRE),自1994年起每?jī)赡昱e辦一次需求工程國(guó)際會(huì)議(ICRE),在1996年Springer-Verlag發(fā)行了一新的刊物——《RequirementsEngineering》。一些關(guān)于需求工程的工作小組也相繼成立,如歐洲的RENOIR(RequirementsEngineeringNetworkofInternationalCooperatingResearchGroups),并開始開展工作。
需求工程是指應(yīng)用已證實(shí)有效的技術(shù)、方法進(jìn)行需求分析,確定客戶需求,幫助分析人員理解問(wèn)題并定義目標(biāo)系統(tǒng)的所有外部特征的一門學(xué)科。它通過(guò)合適的工具和記號(hào)系統(tǒng)地描述待開發(fā)系統(tǒng)及其行為特征和相關(guān)約束,形成需求文檔,并對(duì)用戶不斷變化的需求演進(jìn)給予支持。RE可分為系統(tǒng)需求工程(如果是針對(duì)由軟硬件共同組成的整個(gè)系統(tǒng))和軟件需求工程(如果僅是專門針對(duì)純軟件部分)。軟件需求工程是一門分析并記錄軟件需求的學(xué)科,它把系統(tǒng)需求分解成一些主要的子系統(tǒng)和任務(wù),把這些子系統(tǒng)或任務(wù)分配給軟件,并通過(guò)一系列重復(fù)的分析、設(shè)計(jì)、比較研究、原型開發(fā)過(guò)程把這些系統(tǒng)需求轉(zhuǎn)換成軟件的需求描述和一些性能參數(shù)。
需求工程是一個(gè)不斷反復(fù)的需求定義、文檔記錄、需求演進(jìn)的過(guò)程,并最終在驗(yàn)證的基礎(chǔ)上凍結(jié)需求。80年代,HerbKrasner定義了需求工程的五階段生命周期:需求定義和分析、需求決策、形成需求規(guī)格、需求實(shí)現(xiàn)與驗(yàn)證、需求演進(jìn)管理。近來(lái),MatthiasJarke和KlausPohl提出了三階段周期的說(shuō)法:獲取、表示和驗(yàn)證。
綜合了幾種觀點(diǎn),可以把需求工程的活動(dòng)劃分為以下5個(gè)獨(dú)立的階段:
(1)需求獲?。和ㄟ^(guò)與用戶的交流,對(duì)現(xiàn)有系統(tǒng)的觀察及對(duì)任務(wù)進(jìn)行分析,從而開發(fā)、捕獲和修訂用戶的需求;
(2)需求建模:為最終用戶所看到的系統(tǒng)建立一個(gè)概念模型,作為對(duì)需求的抽象描述,并盡可能多的捕獲現(xiàn)實(shí)世界的語(yǔ)義;
(3)形成需求規(guī)格:生成需求模型構(gòu)件的精確的形式化的描述,作為用戶和開發(fā)者之間的一個(gè)協(xié)約;
(4)需求驗(yàn)證:以需求規(guī)格說(shuō)明為輸入,通過(guò)符號(hào)執(zhí)行、模擬或快速原型等途徑,分析需求規(guī)格的正確性和可行性;
(5)需求管理:支持系統(tǒng)的需求演進(jìn),如需求變化和可跟蹤性問(wèn)題。