摘要:需求開發(fā)的質(zhì)量嚴(yán)重影響著軟件產(chǎn)品的質(zhì)量。而許多組織的需求質(zhì)量較大程度依賴于需求開發(fā)人員的經(jīng)驗和能力,缺少對需求調(diào)研方法的指導(dǎo)。文章描述了需求調(diào)研準(zhǔn)備以及需求篩選的方法,為需求開發(fā)人員提供了參考。
關(guān)鍵詞:需求開發(fā);鍍金需求;需求質(zhì)量
一、前言
軟件企業(yè)日益關(guān)注到產(chǎn)品質(zhì)量對項目成本及時間等方面的巨大影響,逐漸強調(diào)軟件開發(fā)過程中的質(zhì)量管理體系的建立。戴明的質(zhì)量觀點是“質(zhì)量必須從客戶的觀點出發(fā)加以考慮”以及“質(zhì)量是從客戶的觀點出發(fā)加強到產(chǎn)品上的東西”;Crosby認(rèn)為質(zhì)量是“與需求的一致性”。根據(jù)兩者的觀點,對于軟件產(chǎn)品而言,質(zhì)量就是對客戶需求的滿足情況。
然而客戶需求不等同于“客戶認(rèn)為他們需要的”。Young對于需求的定義是“為了使系統(tǒng)能為用戶提供實用價值而對其必須的屬性、能力及特征的定義”。在現(xiàn)實中,需求分析人員經(jīng)常遇到的挑戰(zhàn)之一就是客戶對于真正的需求并不了解,無法清晰描述真正的需求,進(jìn)而導(dǎo)致了需求人員對用戶真正意圖的誤解以及加入了“鍍金需求”,最終造成了項目的范圍頻繁變更,成本及工期急劇增加。
本文的目的在于探索提高軟件需求開發(fā)質(zhì)量的方法,針對如何進(jìn)行調(diào)研準(zhǔn)備及篩選需求提出相關(guān)看法,為需求分析人員提供參考。
二、確定項目背景范圍
既然軟件質(zhì)量關(guān)注產(chǎn)品與客戶需求的一致性,在深入了解客戶需求之前,需求分析人員應(yīng)該明確“誰是客戶”以及與客戶有關(guān)的人員。在確定了客戶及相關(guān)人員后,需要嘗試了解其目的及偏好,為項目具體的需求平衡取舍提供決策基礎(chǔ)。最后,確定最終產(chǎn)品的范圍并在整個項目期間進(jìn)行正式的管理。
?。ㄒ唬┥姹姡⊿takeholder)
所謂客戶,既有責(zé)任驗收產(chǎn)品或支付費用的一群人(個人、項目或組織)。需求分析人員總是以“客戶”稱呼所有服務(wù)對象,從而容易忽略了客戶內(nèi)部的關(guān)系。實際上在許多組織(特別是大型組織),存在著組織內(nèi)部由于相互獨立,不能實現(xiàn)協(xié)同化管理,互相競爭,另外縱向和橫向溝通渠道不暢,資源和信息不流通等問題。需求人員可以首先了解組織架構(gòu),并且根據(jù)以往的經(jīng)驗判斷客戶內(nèi)部的矛盾及聯(lián)系,之后再通過進(jìn)一步調(diào)研了解客戶個人的習(xí)慣、喜好及性格??蛻敉ǔS捎诓涣私庀嚓P(guān)技術(shù)及其需求,在需求調(diào)研時隨意地提出各種需求,而在產(chǎn)品開發(fā)階段也可能隨時變更需求,這對產(chǎn)品的穩(wěn)定性以及項目成本常常造成嚴(yán)重的影響。因此,了解客戶內(nèi)部關(guān)系及個人特征,有利于需求分析人員在隨后的需求調(diào)研中正確了解客戶需求并做出正確地需求決策。
除了管理客戶以外,需求分析人員還需要關(guān)注與項目及產(chǎn)品相關(guān)的組織及個人。通常我們將受到一項任務(wù)所造成結(jié)果影響,或需要從某種程度上對其負(fù)責(zé)的個人或團(tuán)體成為涉眾(Stakeholder)。我們可以借助以下的層次劃分了解產(chǎn)品相關(guān)的涉眾:
1、操作/運營領(lǐng)域。該領(lǐng)域的涉眾是直接經(jīng)常使用產(chǎn)品的內(nèi)部人員,例如網(wǎng)站管理系統(tǒng)的維護(hù)人員。在需求調(diào)研時需要關(guān)注其能力及操作習(xí)慣,例如文化水平以及是否有相似系統(tǒng)的操作經(jīng)歷等。
2、業(yè)務(wù)領(lǐng)域。通常情況下,業(yè)務(wù)領(lǐng)域的涉眾為系統(tǒng)提供了高層次的業(yè)務(wù)需求,是系統(tǒng)的功能受益人。需求調(diào)研時應(yīng)該關(guān)注涉眾的目的以及對產(chǎn)品投資回報率的期望。
3、外部環(huán)境。許多產(chǎn)品的服務(wù)對象不只是組織內(nèi)部,可能涉及外部的使用者,例如銀行ATM。由于外部使用者的不確定性,在需求調(diào)研時需要對外部人員進(jìn)行恰當(dāng)?shù)胤诸?,以獲得有效的需求。
?。ǘ┠繕?biāo)(Goal)
確定了涉眾后,我們需要確定他們的目標(biāo)??梢詫⒛繕?biāo)理解為涉眾為什么需要這個產(chǎn)品、希望從這個產(chǎn)品獲得何好處、期望產(chǎn)品以什么方式運行等。由于涉眾對于目標(biāo)的理解各不相同,并且以不同的方式表達(dá),所以需求分析人員可以通過統(tǒng)一的方法記錄各涉眾的目的。
James Robertson將其成為PAM方法,即P(Purpose):對于系統(tǒng)的目的或高層需求。A(Advantage):系統(tǒng)對于組織或個人的好處。M(Measurement):盡可能地量化產(chǎn)品的效果。
例如1個電話客服管理系統(tǒng)的PAM可能是:P——通過系統(tǒng)管理客服人員的工作情況;A——降低客戶投訴率;M——使客戶投訴率降低20%。
對于涉眾目標(biāo)的準(zhǔn)確理解同時有助于我們對需求的平衡及取舍。
?。ㄈ┓秶⊿cope)
對于軟件開發(fā)而言,范圍是應(yīng)該注意的最重要的變量。產(chǎn)品范圍實際上包含兩層意思,即產(chǎn)品的功能范圍及產(chǎn)品與外部的界限。
1、產(chǎn)品功能范圍。產(chǎn)品的功能范圍可以看作高層次的功能性需求。對于功能性的需求,通常的做法是通過建立高層次的產(chǎn)品分解結(jié)構(gòu)(Product Breakdown Structure),與涉眾就產(chǎn)品范圍達(dá)成共識。但是由于僅限定了產(chǎn)品需要完成的工作范圍,未能阻止需求的逐漸蔓延,容易造成涉眾在產(chǎn)品開發(fā)的階段不斷增加新的特性,導(dǎo)致鍍金需求的產(chǎn)生。所以,準(zhǔn)確說明產(chǎn)品不完成哪些功能與需要完成哪些功能同樣重要,為需求的穩(wěn)定提供了一定保障。產(chǎn)品功能范圍實際對于項目范圍有巨大的影響。而項目的范圍、成本、進(jìn)度以及質(zhì)量是緊密相聯(lián)的變量,確定其中的3個變量后,第4個變量的區(qū)間也隨之確定。同時產(chǎn)品范圍也是一個變化很大的變量,特別是在客戶不成熟以及產(chǎn)品規(guī)模較大的情況下。因此,當(dāng)產(chǎn)品范圍難以確定時,可以考慮與涉眾限定產(chǎn)品開發(fā)的成本、進(jìn)度以及質(zhì)量,而令范圍成為在開發(fā)過程中根據(jù)實際情況“活動”的變量。
2、產(chǎn)品與外部界限。產(chǎn)品一般通過接口與外部系統(tǒng)進(jìn)行交互。使一個系統(tǒng)與另外一個系統(tǒng)配合是一項耗時而且不可預(yù)測的工程。開發(fā)人員可能不知道實現(xiàn)一個特定的接口將有多么的困難,直到他們真正開始著手去做。如果我們在使用別人定義的接口,它可能不能準(zhǔn)確地完成我們的目標(biāo),或者不像我們所想象的;如果我們自己設(shè)計接口,我們依賴其他系統(tǒng)正確地實現(xiàn)它。因此,我們需要確定每一個接口是完全屬于內(nèi)部的還是外部的,或者還未明確所屬的。
在接口所有權(quán)選擇上,我們通常面臨著一次權(quán)衡。自己定義接口時,能夠確保接口能夠滿足內(nèi)部的需要,并且能夠以最好的方式支持系統(tǒng)的工作,但是需要負(fù)責(zé)完成所有困難的接口定義工作,并且要向外部人員解釋使用方法。而把定義接口工作交由外部完成時,可能不得不使用質(zhì)量低下的接口,并且面臨沒有文檔和對接口熟悉的技術(shù)人員的困境。更重要的是,當(dāng)外部提供的接口發(fā)生變更時,內(nèi)部系統(tǒng)不得不隨之調(diào)整,而且外部對內(nèi)部提出的接口變更請求反應(yīng)遲緩。
(四)SGS循環(huán)
實際工作中,很難一次性準(zhǔn)確地發(fā)現(xiàn)所有的涉眾,獲得所有涉眾的目標(biāo)并確定產(chǎn)品范圍。更多的情況是,在確定一部分涉眾后,通過了解其目標(biāo)及對產(chǎn)品范圍的理解,發(fā)現(xiàn)更多的涉眾,進(jìn)而獲得更多的目標(biāo)及產(chǎn)品范圍。另外,在目標(biāo)及范圍定義時,可能遇到各涉眾理解不一致,產(chǎn)生矛盾的情況,這時需要需求開發(fā)人員在涉眾間進(jìn)行協(xié)調(diào)與溝通,這個階段投入的工作是有價值的,避免系統(tǒng)開發(fā)后期,由于頻繁變更引起更大的成本投入。
三、需求篩選
通過各種方式了解客戶需求后,需求人員會整理相關(guān)信息形成涉眾的原始需求。但是原始需求不等同于產(chǎn)品開發(fā)的目標(biāo)需求,并不是涉眾提出的所有需求都要滿足,因為可能各需求間存在矛盾,某些需求并不是涉眾真正需要的。CMMI for Development Version 1.2模型中的需求開發(fā)過程域中,SP 3.3分析需求中強調(diào)了“確保需求的必要性”。某些組織使用需求優(yōu)先級的方法實現(xiàn)需求篩選。根據(jù)需求開發(fā)人員以及(或者)涉眾對需求優(yōu)先級的判斷,將所有需求根據(jù)需求優(yōu)先級進(jìn)行排序。這種方法主觀性較大,并且可能由于需求開發(fā)人員及涉眾考慮問題的角度不同,導(dǎo)致對優(yōu)先級無法達(dá)到一致。
我們可以使用客戶價值的方法對需求進(jìn)行篩選。即對于每一個需求,分析兩個參數(shù):實現(xiàn)該需求后客戶的滿意程度以及不實現(xiàn)該需求后客戶的不滿意程度。這種方法降低了主觀性對判斷的影響,并且促使需求開發(fā)人員及涉眾對需求必要性的思考,避免了鍍金需求在最終需求出現(xiàn)的可能性。
四、結(jié)論
越來越多的組織認(rèn)識到了需求質(zhì)量對軟件產(chǎn)品質(zhì)量的影響,嘗試通過需求評審等方法提高質(zhì)量。但是在需求的源頭——需求開發(fā)方面沒有提供有效的方法,更多地依賴個人的能力及經(jīng)驗。本文建議在需求調(diào)研前期使用SGS循環(huán)的方法明確產(chǎn)品的涉眾、目標(biāo)及范圍,確保需求人員對產(chǎn)品的總體情況獲得清晰的了解,為具體的需求調(diào)研提供決策所需的重要信息。另外,還建議組織采用客戶價值的方法對涉眾的原始需求進(jìn)行分析,確保所有的需求對于涉眾都是有價值和必要的,避免開發(fā)團(tuán)隊為不必要的功能花費成本。
?。ㄗ髡邌挝唬簭V州賽寶認(rèn)證中心)