剛在某客戶做了3個(gè)月的需求調(diào)研,親自體驗(yàn)了需求調(diào)研的過(guò)程,有一些感想,總結(jié)下來(lái)。
客戶方配備了BA和SA,BA是業(yè)務(wù)專家,SA是技術(shù)專家,負(fù)責(zé)輸出一個(gè)描述業(yè)務(wù)需求文檔XXXS,將流程和需求都記述在該文檔中,和大多數(shù)客戶一樣,客戶的優(yōu)勢(shì)在于對(duì)他們的業(yè)務(wù)比較了解,但是對(duì)于如何去抽象業(yè)務(wù),比較系統(tǒng)的把他們的業(yè)務(wù)需求歸納并描述下來(lái),并不擅長(zhǎng),至少很多人不擅長(zhǎng),這就導(dǎo)致客戶方的XXXS文檔中通常是一些需求片段和樣例。
我方對(duì)一個(gè)topic,分配了SA和BA,其中SA負(fù)責(zé)技術(shù)方案,而B(niǎo)A負(fù)責(zé)理解業(yè)務(wù)并澄清業(yè)務(wù),topic的輸出件有XXD和XXS,XXD主要記述業(yè)務(wù)流程和topic級(jí)的solution,XXS主要記述系統(tǒng)的功能。
XXD中的業(yè)務(wù)流程,準(zhǔn)確的來(lái)講,應(yīng)該改名叫系統(tǒng)流程,是講述業(yè)務(wù)功能操作是如果由解決方案各個(gè)內(nèi)部子系統(tǒng)及外部系統(tǒng)協(xié)同完成的。這其中的actor是系統(tǒng),因此,是從系統(tǒng)的角度來(lái)描述的。
XXXS中,模板像系統(tǒng)用例文檔,但是里面的一個(gè)個(gè)單元是叫功能,功能與用例的差別就是,一個(gè)是從系統(tǒng)的角度出發(fā),一個(gè)是從Actor(即用戶)的角度出發(fā),對(duì)每個(gè)功能,有功能描述,功能的前置條件、后置條件、功能的用戶角色、業(yè)務(wù)規(guī)則,輸入規(guī)格,輸出規(guī)格,如果涉及到界面,就有界面原型。具體的內(nèi)容,通常pre-condition是千篇一律的,如用戶必須已登錄什么的,后置條件通常是結(jié)果,而角色通常是一個(gè)很泛的一個(gè)總稱(比如在廚房干活的分切菜的,炒菜的,統(tǒng)稱廚子)。
對(duì)于客戶方描述的不清楚或者只描述了幾個(gè)片段或例子的需求,我們采用prototype的方式,先按照自己的理解做prototype,然后給客戶去演示,由客戶來(lái)決定是否符合他們要求。
是不是看上去很完美?
再看看幾個(gè)問(wèn)題:
問(wèn)題一:對(duì)客戶方的某個(gè)需求,我方一直不理解客戶方為什么會(huì)提這么怪異的需求,覺(jué)得不可思議,而客戶方一直堅(jiān)持要這個(gè)功能!
問(wèn)題二:客戶方并不具備多么深厚的業(yè)務(wù)抽象功力,我們自己通過(guò)蒙著眼睛摸象的方式作出原型給客戶方評(píng)審,客戶方say ok就ok,不ok就不ok,客戶方不會(huì)犯錯(cuò)誤嗎?客戶方會(huì)照顧你其它客戶的需求嗎?我們拒絕客戶方的理由通常是實(shí)現(xiàn)不了,或者工作量太大。我們絕大多數(shù)人沒(méi)法使用客戶的業(yè)務(wù)語(yǔ)言告訴客戶,你的目的是什么,你要求怎么來(lái)做,這樣做有什么樣的壞處,我建議這么做,這么做能獲得什么樣的好處。
問(wèn)題三:我們把一些業(yè)務(wù)角色使用的功能和運(yùn)維人員使用的功能放置于一個(gè)界面中,從功能上來(lái)講,我們可以自豪的告訴客戶,我們實(shí)現(xiàn)了你要的功能。
。。。
我相信我了解到的問(wèn)題絕不是全部,還有很多我不知道的問(wèn)題。
對(duì)這種狀況,我逐一分析了一下原因:
問(wèn)題一:因?yàn)槲覀兝斫獾臉I(yè)務(wù)概念跟客戶理解的客戶概念不一樣,雖然我們叫的是同一個(gè)名詞,但實(shí)際上并不是同一個(gè)東西,從而導(dǎo)致我們覺(jué)得客戶提的要求匪夷所思;
問(wèn)題二:我可以說(shuō),其實(shí)我們的做法是去摸清楚客戶要什么,但沒(méi)有去理解他為什么要;
問(wèn)題三:很明顯,我們實(shí)現(xiàn)了功能,但忽略了功能的使用者是誰(shuí);
這一切的根源是什么?我認(rèn)為,這根源是我們一直從系統(tǒng)的角度去思考問(wèn)題,思考我們的系統(tǒng)功能,思考我們的系統(tǒng)流程,對(duì)一個(gè)經(jīng)驗(yàn)豐富的專家來(lái)講,也許會(huì)考慮的比較全面,但絕大多數(shù)人往往是重視了功能的描述,而且描述是基于我方的語(yǔ)言,忽略了功能的用戶,而我們沒(méi)有一個(gè)萬(wàn)能的客戶和萬(wàn)能的專家?guī)臀覀冎赋鼋桓都乃械膯?wèn)題。
即便是我們成功交付了一個(gè)系統(tǒng),我們還是沒(méi)有消化客戶為什么要這么做的原因,對(duì)業(yè)務(wù)系統(tǒng)來(lái)講,這是最核心的價(jià)值之一。
我們要怎么改?我的建議是:
1、加入對(duì)“用戶需求背景”的調(diào)研,即真正的“業(yè)務(wù)調(diào)研”,在這個(gè)階段的主角是BA,BA是業(yè)務(wù)專家,對(duì)IT技術(shù)不熟,這是他的優(yōu)勢(shì),這個(gè)階段的輸出件要包括客戶的業(yè)務(wù)架構(gòu),包括組織結(jié)構(gòu),人員角色,業(yè)務(wù)流程(是各業(yè)務(wù)人員如何協(xié)同來(lái)完成工作,跟系統(tǒng)流程有本質(zhì)區(qū)別),業(yè)務(wù)模型(用戶做的事情中涉及到的一些概念,這里指純業(yè)務(wù)概念,客戶能感知的,非系統(tǒng)概念)。經(jīng)過(guò)這個(gè)階段,我們應(yīng)該能明白客戶為什么會(huì)提這個(gè)那個(gè)需求,能夠有效避免因?yàn)榭蛻舻钠婧酮M隘導(dǎo)致我們跟著片面和狹隘,并且我們知道了客戶說(shuō)的概念A(yù)是指什么,概念B是指什么,跟我們平常所說(shuō)的有什么不同。
2、扭轉(zhuǎn)“功能分析”的角度,由從系統(tǒng)的角度分析轉(zhuǎn)變成由用戶的角度分析。把功能變成用戶基于系統(tǒng)所做的操作分析(系統(tǒng)用例),首先搞清楚是誰(shuí),然后是要基于系統(tǒng)做什么事情,有什么業(yè)務(wù)規(guī)則,前置條件和后置條件是什么,再次是系統(tǒng)通過(guò)什么樣的界面或接口來(lái)支持。輸出的內(nèi)容看似都差不多,但因?yàn)槭菑挠脩舻慕嵌瘸霭l(fā)分析的,提供的功能自然會(huì)更貼用戶的心。
3、我們要明白一個(gè)基本原則,業(yè)務(wù)架構(gòu)是不依賴于IT系統(tǒng)存在的,IT系統(tǒng)是規(guī)范業(yè)務(wù)運(yùn)作和提升業(yè)務(wù)效率的工具,IT系統(tǒng)中的軟件概念是業(yè)務(wù)概念在軟件系統(tǒng)中的投影,千萬(wàn)不能從技術(shù)的角度出發(fā),視圖去重定義業(yè)務(wù)概念。