軟件需求包括三個不同的層次業(yè)務需求、用戶需求和功能需求也包括非功能需求。
業(yè)務需求反映了組織機構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標要求,它們在項目[視圖]與范圍[文檔]中予以說明。
用戶需求(user requirement) 文檔描述了用戶使用產(chǎn)品必須要完成的任務,這在使用實例文檔或方案腳本說明中予以說明。
功能需求(functional requirement)定義了開發(fā)人員必須實現(xiàn)的軟件功能,使得用戶能完成他們的任務,從而滿足了業(yè)務需求。所謂特性(feature)是指邏輯上相關(guān)的功能需求的集合,給用戶提供處理能力并滿足業(yè)務需求。軟件需求各組成部分之間的關(guān)系如圖所示。
作為補充,軟件需求規(guī)格說明還應包括非功能需求,它描述了系統(tǒng)展現(xiàn)給用戶的行為和執(zhí)行的操作等。它包括產(chǎn)品必須遵從的標準、規(guī)范和合約;外部界面的具體細節(jié);性能要求;設計或?qū)崿F(xiàn)的約束條件及質(zhì)量屬性。所謂約束是指對開發(fā)人員在[軟件]產(chǎn)品設計和構(gòu)造上的限制。質(zhì)量屬性是通過多種角度對產(chǎn)品的特點進行描述,從而反映產(chǎn)品功能。多角度描述產(chǎn)品對用戶和開發(fā)人員都極為重要。 值得注意的一點是,需求并未包括設計細節(jié)、實現(xiàn)細節(jié)、項目計劃信息或測試信息。需求與這些沒有關(guān)系,它關(guān)注的是充分說明你究竟想開發(fā)什么。
開發(fā)軟件系統(tǒng)最為困難的部分就是準確說明開發(fā)什么。最為困難的概念性工作便是編寫出詳細技術(shù)需求,這包括所有面向用戶、面向機器和其它軟件系統(tǒng)的接口。如果前期[需求分析]不透徹,一旦做錯,將最終會給系統(tǒng)帶來極大損害的部分,并且以后再對它進行修改也極為困難,容易導致項目失敗。