軟件需求包括3個(gè)不同的層次――業(yè)務(wù)需求、用戶(hù)需求和功能需求。
除此之外,每個(gè)系統(tǒng)還有各種非功能需求。
業(yè)務(wù)需求(Business requirement)表示組織或客戶(hù)高層次的目標(biāo)。業(yè)務(wù)需求通常來(lái)自項(xiàng)目投資人、購(gòu)買(mǎi)產(chǎn)品的客戶(hù)、實(shí)際用戶(hù)的管理者、市場(chǎng)營(yíng)銷(xiāo)部門(mén)或產(chǎn)品策劃部門(mén)。業(yè)務(wù)需求描述了組織為什么要開(kāi)發(fā)一個(gè)系統(tǒng),即組織希望達(dá)到的目標(biāo)。使用前景和范圍(vision and scope)文檔來(lái)記錄業(yè)務(wù)需求,這份文檔有時(shí)也被稱(chēng)作項(xiàng)目輪廓圖或市場(chǎng)需求(project charter 或 market requirement)文檔。
用戶(hù)需求(user requirement)描述的是用戶(hù)的目標(biāo),或用戶(hù)要求系統(tǒng)必須能完成的任務(wù)。用例、場(chǎng)景描述和事件――響應(yīng)表都是表達(dá)用戶(hù)需求的有效途徑。也就是說(shuō)用戶(hù)需求描述了用戶(hù)能使用系統(tǒng)來(lái)做些什么。
功能需求(functional requirement)規(guī)定開(kāi)發(fā)人員必須在產(chǎn)品中實(shí)現(xiàn)的軟件功能,用戶(hù)利用這些功能來(lái)完成任務(wù),滿(mǎn)足業(yè)務(wù)需求。功能需求有時(shí)也被稱(chēng)作行為需求(behavioral requirement),因?yàn)榱?xí)慣上總是用“應(yīng)該”對(duì)其進(jìn)行描述:“系統(tǒng)應(yīng)該發(fā)送電子郵件來(lái)通知用戶(hù)已接受其預(yù)定”。功能需求描述是開(kāi)發(fā)人員需要實(shí)現(xiàn)什么。
系統(tǒng)需求(system requirement)用于描述包含多個(gè)子系統(tǒng)的產(chǎn)品(即系統(tǒng))的頂級(jí)需求。系統(tǒng)可以只包含軟件系統(tǒng),也可以既包含軟件又包含硬件子系統(tǒng)。人也可以是系統(tǒng)的一部分,因此某些系統(tǒng)功能可能要由人來(lái)承擔(dān)。
業(yè)務(wù)規(guī)則包括企業(yè)方針、政府條例、工業(yè)標(biāo)準(zhǔn)、會(huì)計(jì)準(zhǔn)則和計(jì)算方法等。業(yè)務(wù)規(guī)劃本身并非軟件需求,因?yàn)樗鼈儾粚儆谌魏翁囟ㄜ浖到y(tǒng)的范圍。然而,業(yè)務(wù)規(guī)則常常會(huì)限制誰(shuí)能夠執(zhí)行某些特定用例,或者規(guī)定系統(tǒng)為符合相關(guān)規(guī)則必須實(shí)現(xiàn)某些特定功能。有時(shí),功能中特定的質(zhì)量屬性(通過(guò)功能實(shí)現(xiàn))也源于業(yè)務(wù)規(guī)則。所以,對(duì)某些功能需求進(jìn)行追溯時(shí),會(huì)發(fā)現(xiàn)其來(lái)源正是一條特定的業(yè)務(wù)規(guī)則。
功能需求記錄在軟件需求規(guī)格說(shuō)明(SRS)中。SRS完整地描述了軟件系統(tǒng)的預(yù)期特性。SRS我們一般把它當(dāng)作文檔,其實(shí),SRS還可以是包含需求信息的數(shù)據(jù)庫(kù)或電子表格;或者是存儲(chǔ)在商業(yè)需求管理工具中的信息;而對(duì)于小型項(xiàng)目,甚至可能是一疊索引卡片。開(kāi)發(fā)、測(cè)試、質(zhì)量保證、項(xiàng)目管理和其他相關(guān)的項(xiàng)目功能都要用到SRS。
除了功能需求外,SRS中還包含非功能需求,包括性能指標(biāo)和對(duì)質(zhì)量屬性的描述。
質(zhì)量屬性(quality attribute)對(duì)產(chǎn)品的功能描述作了補(bǔ)充,它從不同方面描述了產(chǎn)品的各種特性。這些特性包括可用性、可移植性、完整性、效率和健壯性,它們對(duì)用戶(hù)或開(kāi)發(fā)人員都很重要。其他的非功能需求包括系統(tǒng)與外部世界的外部界面,以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的約束。
約束(constraint)限制了開(kāi)發(fā)人員設(shè)計(jì)和構(gòu)建系統(tǒng)時(shí)的選擇范圍。
產(chǎn)品特性。所謂特性(feature),是指一組邏輯上相關(guān)的功能需求,它們?yōu)橛脩?hù)提供某項(xiàng)功能,使業(yè)務(wù)目標(biāo)得以滿(mǎn)足。對(duì)商業(yè)軟件而言,特性則是一組能被客戶(hù)識(shí)別,并幫助他決定是否購(gòu)買(mǎi)的需求,也就是產(chǎn)品說(shuō)明書(shū)中用著重號(hào)標(biāo)明的部分??蛻?hù)希望得到的產(chǎn)品特性和用戶(hù)的任務(wù)相關(guān)的需求不完全是一回事。一項(xiàng)特性可以包括多個(gè)用例,每個(gè)用例又要求實(shí)現(xiàn)多項(xiàng)功能需求,以便用戶(hù)能夠執(zhí)行某項(xiàng)任務(wù)。
還有一項(xiàng)稱(chēng)為可用性(usability)的質(zhì)量屬性,它規(guī)定了業(yè)務(wù)需求中“有效”(efficiently)一詞的含義。
管理人員或市場(chǎng)營(yíng)銷(xiāo)人員負(fù)責(zé)定義軟件的業(yè)務(wù)需求,以提高公司的運(yùn)營(yíng)效率(對(duì)信息系統(tǒng)而言)或產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力(對(duì)商業(yè)軟件而言)。所有的用戶(hù)需求都必須符合業(yè)務(wù)需求。需求分析員從用戶(hù)需求中推導(dǎo)出產(chǎn)品應(yīng)具備哪些對(duì)用戶(hù)有幫助的功能。開(kāi)發(fā)人員則根據(jù)功能需求和非功能需求設(shè)計(jì)解決方案,在約束條件的限制范圍內(nèi)實(shí)現(xiàn)必需的功能,并達(dá)到規(guī)定的質(zhì)量和性能指標(biāo)。
當(dāng)一項(xiàng)新的特性、用例或功能需求被提出時(shí),需求分析員必須思考一個(gè)問(wèn)題:“它在范圍內(nèi)嗎?”。如果答案是肯定的,則該需求屬于需求規(guī)格說(shuō)明,反之則不屬于。但答案也許是“不在,但應(yīng)該在”,這時(shí)必須由業(yè)務(wù)需求的負(fù)責(zé)人或投資管理人來(lái)決定:是否擴(kuò)大項(xiàng)目范圍以容納新的需求。這是一個(gè)可能影響項(xiàng)目進(jìn)度和預(yù)算的商業(yè)決策。
不屬于需求的內(nèi)容
需求規(guī)格說(shuō)明中不包括(除已知約束外的)設(shè)計(jì)和實(shí)現(xiàn)的細(xì)節(jié)、項(xiàng)目的計(jì)劃信息,以及測(cè)試信息(Leffingwell 和 Widrig 2000)。把這些內(nèi)容與需求分開(kāi),就可以把需求活動(dòng)的注意力集中到了解開(kāi)發(fā)小組需要開(kāi)發(fā)的產(chǎn)品特性上。項(xiàng)目中通常還包括其他類(lèi)型的需求,如開(kāi)發(fā)環(huán)境需求,進(jìn)度或預(yù)算限制,幫助新用戶(hù)跟上進(jìn)度的培訓(xùn)需求,或者發(fā)布產(chǎn)品使其轉(zhuǎn)入支持環(huán)境的需求。這些都屬于項(xiàng)目需求而不是產(chǎn)品需求,因此不屬于軟件需求的討論范圍。










