需求分析是構(gòu)建軟件系統(tǒng)的一個(gè)重要過程。學(xué)者Crosby對(duì)于質(zhì)量的定義是“同需求保持統(tǒng)一”。從這個(gè)意義上說,需求管理正是從質(zhì)量出發(fā)以確定需求。每個(gè)人都應(yīng)當(dāng)始終明白他們所做的具體任務(wù)其意義何在。然而,在一個(gè)產(chǎn)品的生命周期里,其需求性是能動(dòng)的,是處于變化之中的。
一、需求的分類
一般把需求類型分成三個(gè)類型:
1、業(yè)務(wù)需求(business requirement)反映了組織機(jī)構(gòu)或客戶對(duì)系統(tǒng)、產(chǎn)品高層次的目的要求,它們?cè)陧?xiàng)目視圖與范圍文檔中予以說明。
2、用戶需求(user requirement) 文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用實(shí)例文檔或方案腳本說明中予以說明。
3、功能需求(functional requirement)定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。
業(yè)務(wù)需求和用戶需求是軟件需求分析的基礎(chǔ),也是軟件構(gòu)建的前提。系統(tǒng)分析員通過對(duì)業(yè)務(wù)需求和用戶需求的分解,將其轉(zhuǎn)換成克一形式化描述的軟件功能需求。開發(fā)軟件系統(tǒng)最為困難的部分,就是準(zhǔn)確說明開發(fā)什么。這就需要在開發(fā)的過程中不斷的與用戶進(jìn)行交流與探討,使系統(tǒng)更加詳盡,準(zhǔn)確到位。這就需要確定用戶是否需要這樣的產(chǎn)品類型以及獲取每個(gè)用戶類的需求。
二、需求的質(zhì)量分解
一般情況下,采用如下的手段描述軟件需求的質(zhì)量:
正確性:所有需求必須是正確的、合理的、滿足任務(wù)書要求的。
必要性:所有需求必須是為完成指定任務(wù)所必需的。
可行性:在指定的環(huán)境和條件下,所有的需求必須是可行的。
完備性:為完成指定任務(wù),這些需求是完備的、無(wú)遺漏的。
一致性:所有需求相互之間沒有矛盾,是一致的。
非退化:任一需求的引入都不會(huì)導(dǎo)致軟件性能的退化。
無(wú)歧義:任一需求的陳述都是確定的、不會(huì)導(dǎo)致多義性的。
可驗(yàn)證:任一需求都是可以測(cè)試、可以驗(yàn)證的。
可追蹤:人以需求都可以追蹤到項(xiàng)目的任務(wù)書或規(guī)格說明的需求。
三、需求的隱含質(zhì)量要求
除了這些可以量化的質(zhì)量標(biāo)準(zhǔn),還有一些需求的標(biāo)準(zhǔn)是隱含的。這些要求及時(shí)客戶沒有提出來(lái),在實(shí)現(xiàn)的時(shí)候也應(yīng)該考慮到,否則,可能導(dǎo)致項(xiàng)目的失敗。
操作方便:每一個(gè)客戶都會(huì)有操作方面的要求,只是具體的表現(xiàn)方式不一樣。一般,客戶在開始的時(shí)候?qū)Σ僮骱茈y對(duì)操作有很具體的考慮,他會(huì)想當(dāng)然個(gè)認(rèn)為新的軟件系統(tǒng)會(huì)和他以前所熟悉的某一個(gè)系統(tǒng)類似。而事實(shí)并非如此。當(dāng)他發(fā)現(xiàn)新的軟件系統(tǒng)不方便使用的時(shí)候,就會(huì)提出修改的建議。有的時(shí)候,這種修改對(duì)軟件系統(tǒng)的影響是災(zāi)難性的。
可以保證操作質(zhì)量:一般,系統(tǒng)分析員會(huì)認(rèn)為客戶應(yīng)該勾畫出系統(tǒng)運(yùn)行過程中可能發(fā)現(xiàn)的重要風(fēng)險(xiǎn),然后在系統(tǒng)實(shí)現(xiàn)的時(shí)候予以考慮。然而,在溝通的過程中,客戶認(rèn)為的重要的風(fēng)險(xiǎn)會(huì)和系統(tǒng)分析員所理解的有所不同,而被忽略的一部分,往往是很基本的那部分,因?yàn)閷?duì)于客戶而言,這些內(nèi)容應(yīng)該是顯而易見的;而系統(tǒng)分析員一把并不了解這些事實(shí)。例如,在一個(gè)管理保險(xiǎn)公司客戶的系統(tǒng)里面,修改職業(yè)是需要嚴(yán)格審核的,如果系統(tǒng)分析員以前接觸的業(yè)務(wù)以電子商務(wù)居多,他可能自然而然的認(rèn)為客戶修改職業(yè)僅僅是一個(gè)一般性的變更。
四、客戶對(duì)需求的影響
目前很多系統(tǒng)分析員在進(jìn)行需求分析的時(shí)候,把主要精力放在了解客戶的業(yè)務(wù)流程,并試圖將其用形式化的手段描述。而事實(shí)上,這樣了解到的客戶需求