《需求设计:构建用户想要和需要的产品》——第1章 情境驱动设计入门1.1 对需求进行设计...
本節(jié)書摘來自華章計(jì)算機(jī)《需求設(shè)計(jì):構(gòu)建用戶想要和需要的產(chǎn)品》一書中的第1章,第1.1節(jié),作者:[英] 克里斯·布里頓(Chris Britton) 更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“華章計(jì)算機(jī)”公眾號(hào)查看。
第1章 情境驅(qū)動(dòng)設(shè)計(jì)入門
本書講的是如何設(shè)計(jì)IT應(yīng)用程序。筆者寫這本書,是想建議大家采用與原來不同的辦法去做設(shè)計(jì),尤其是想進(jìn)行下列三項(xiàng)變革:
- 要使人意識(shí)到自己并不是在收集IT應(yīng)用程序的需求,而是在設(shè)計(jì)它們。對(duì)應(yīng)用程序所做的設(shè)計(jì)工作,正是建立在這樣一種認(rèn)知之上。
- 要把程序的設(shè)計(jì)做得像工程學(xué)一樣,特別是要在實(shí)現(xiàn)之前先對(duì)設(shè)計(jì)進(jìn)行分析,并尋找其中的缺陷。
- 要確保當(dāng)前所開發(fā)的應(yīng)用程序能夠與現(xiàn)有的或同時(shí)開發(fā)的其他應(yīng)用程序協(xié)同運(yùn)作,以創(chuàng)建出一套連貫的IT架構(gòu)。
本書要談?wù)撊绾嗡伎紤?yīng)用程序的設(shè)計(jì),以及如何對(duì)設(shè)計(jì)進(jìn)行分析,而不會(huì)過多地涉及如何組織開發(fā)團(tuán)隊(duì)、如何管理團(tuán)隊(duì),以及每隔多久就應(yīng)該向終端用戶展示新版程序等問題。如果你遵循本書的理念,那么自然能夠找到很多種規(guī)劃并管理項(xiàng)目的辦法。沒有那種能夠適用于每個(gè)組織和每種項(xiàng)目的萬能辦法。
筆者首先要在1.1節(jié)講解上述第一項(xiàng)主張,也就是對(duì)需求進(jìn)行設(shè)計(jì)。1.2節(jié)會(huì)給出一些準(zhǔn)備知識(shí),有了這些知識(shí),我們就可以在1.3節(jié)中講解上述第二項(xiàng)主張。其后,會(huì)在1.4節(jié)講解上述第三項(xiàng)主張。
1.1 對(duì)需求進(jìn)行設(shè)計(jì)
為什么要對(duì)需求進(jìn)行設(shè)計(jì)?這么做合適嗎?就一般意義而言,需求確實(shí)用不著設(shè)計(jì),但是對(duì)IT應(yīng)用程序來說,這么做卻很有必要。原因非常簡(jiǎn)單:沒有誰愿意平白無故地去開發(fā)一款商用的IT應(yīng)用程序,之所以要開發(fā)這種程序,是為了給業(yè)務(wù)提供支持。因此,我們必須注重IT應(yīng)用程序的設(shè)計(jì),令其能夠反映出整個(gè)業(yè)務(wù)解決方案的設(shè)計(jì)情況。這正如蓋樓的時(shí)候必須把地基設(shè)計(jì)好,因?yàn)樗鼤?huì)體現(xiàn)整幢房屋的設(shè)計(jì)。
本書的很多章節(jié)都在鼓勵(lì)大家改變?cè)瓉砟欠N為IT應(yīng)用程序收集需求的消極做法,以一種更為積極的姿態(tài),去對(duì)IT應(yīng)用程序所要支持的業(yè)務(wù)解決方案進(jìn)行設(shè)計(jì)。下面就來解釋這種設(shè)計(jì)工作為什么這么重要。
要對(duì)業(yè)務(wù)做出變革,是有一定困難的。其中某些變革,可以由公司管理層通過調(diào)配資金和資源等手段來強(qiáng)行推進(jìn),這屬于那種實(shí)現(xiàn)起來相對(duì)簡(jiǎn)單的情況。此外還有一些變革,推動(dòng)起來則不太容易,這些變革旨在降低業(yè)務(wù)運(yùn)作過程之中的出錯(cuò)概率、減少成本并提升其靈活度,換句話說,就是想使員工改變他們長(zhǎng)久以來所習(xí)慣的那種工作方式并將他們移出“舒適區(qū)”。如果再把IT應(yīng)用程序也考慮進(jìn)去,那么這種情況就更為復(fù)雜了。IT應(yīng)用程序如果推出得比較遲,那么會(huì)影響新工作方法的推廣進(jìn)度,IT應(yīng)用程序若是做得不夠好、不夠可靠或不夠高效,則會(huì)使員工對(duì)整個(gè)變革計(jì)劃產(chǎn)生抗拒情緒。當(dāng)IT應(yīng)用程序的功能與使用者的期望不相符時(shí),他們會(huì)開始懷疑這個(gè)變革計(jì)劃是否行得通。
引發(fā)上述風(fēng)險(xiǎn)的根本原因在于,一旦將IT應(yīng)用程序考慮進(jìn)來,就必須把公司打算推進(jìn)的業(yè)務(wù)變革精確地轉(zhuǎn)化成具體的要求,使員工依照這些要求來改變自己的工作方式。然而,不同的人即使在面對(duì)同一個(gè)目標(biāo)時(shí),也會(huì)提出不同的實(shí)現(xiàn)方式,每個(gè)人都認(rèn)為自己的方式是最好的。如果再加上各部門之間的爭(zhēng)斗、業(yè)務(wù)環(huán)境的變化,以及各個(gè)地區(qū)在做法和習(xí)慣上的差別,那么大家在看法上面的沖突,自然就難以避免了。對(duì)于業(yè)務(wù)變革之中的某些環(huán)節(jié)(如培訓(xùn))來說,你可以不處理這些分歧,并把它們通通掩飾起來,可是一旦涉及新的IT應(yīng)用程序,那你就必須面對(duì)這些分歧了,因?yàn)镮T應(yīng)用程序中的計(jì)算和編程工作,都必須精準(zhǔn)地去完成。舉個(gè)非常簡(jiǎn)單的例子。大家肯定都見過這樣一種網(wǎng)站:它要求你在輸入框里填寫一些數(shù)據(jù),并且會(huì)用星號(hào)把剛剛輸入的字符遮住。為什么會(huì)有這樣的機(jī)制呢?或許是有人覺得這份數(shù)據(jù)相當(dāng)重要(而且不太可能會(huì)遭到仿冒),因而規(guī)定客戶必須先把這個(gè)字段填好,然后才能繼續(xù)訪問該網(wǎng)站,盡管這么做比較麻煩,但他還是強(qiáng)迫訪問者必須輸入這份數(shù)據(jù)。那么,是不是公司里的每一個(gè)人都同意這項(xiàng)決定呢?這很難說。IT應(yīng)用程序中到處都能遇到這種可疑的決策。是否要求訪問者填寫某個(gè)字段,這是個(gè)很容易就能修改的決策,然而還有一些決策,會(huì)對(duì)應(yīng)用程序或業(yè)務(wù)的開展方式產(chǎn)生結(jié)構(gòu)性的影響,這些決策修改起來可就不那么容易了。
再來看一個(gè)復(fù)雜的例子。筆者住在英國,也在那里工作,過去幾年,有些銀行因?yàn)檫`規(guī)銷售金融產(chǎn)品而遭到重罰,它們?cè)诳蛻舨恢榛驔]有獲得足夠信息的情況下,就賣出了一些很昂貴或者沒有必要購買的支付保護(hù)保險(xiǎn)(Payment Protection Insurance,PPI),這種保險(xiǎn),本來是針對(duì)投保人有可能無法償還貸款而設(shè)立的。現(xiàn)在假設(shè)有一家銀行,想要設(shè)法避免這種違規(guī)銷售的情況。首先,必須知道問題出在哪里。銀行里面并沒有人會(huì)給員工下命令,讓他們?nèi)ミ`規(guī)銷售產(chǎn)品。之所以會(huì)出現(xiàn)違規(guī)銷售,是因?yàn)殇N售人員在銷售目標(biāo)和獎(jiǎng)金等指標(biāo)上面,受到了銀行所施加的壓力,從而導(dǎo)致自己會(huì)瘋狂地向客戶兜售金融產(chǎn)品。這種壓力有可能是直接的,也有可能是間接的。比如,銀行可能把某些支行裝修得很漂亮,把它們打造成銷售金融產(chǎn)品的場(chǎng)所,或者曾經(jīng)在培訓(xùn)過程中告訴銷售人員,說每一筆貸款業(yè)務(wù)都和PPI有聯(lián)系。這家銀行以后還是會(huì)銷售金融產(chǎn)品,但是要銷售得更加明智。它必須更加理解客戶的想法。如果銀行只告訴員工“以后要好好做”,那么這些員工的工作方式是不可能有太大改觀的。銀行固然可以針對(duì)某些事項(xiàng)重新進(jìn)行培訓(xùn),但員工只要看到下一次的獎(jiǎng)金計(jì)劃,就很可能會(huì)把培訓(xùn)時(shí)的內(nèi)容丟在腦后;此外,如果銀行開始追求更高的業(yè)績(jī),那么培訓(xùn)時(shí)的那些話,也有可能等于白說了。于是問題就來了:銀行到底應(yīng)該怎樣使員工領(lǐng)會(huì)這個(gè)意思呢?銀行最終采用的辦法是:命令員工在與客戶談話的過程中,向客戶提出一些關(guān)鍵問題,并把客戶的答復(fù)記錄下來,以便確認(rèn)這次銷售是否合理。這些問題旨在探查客戶是否確實(shí)需要某一款金融產(chǎn)品。不久之后有人建議,應(yīng)該把客戶對(duì)問題所給出的答復(fù),放在新的數(shù)據(jù)庫里,以后萬一出了問題,可以從這個(gè)數(shù)據(jù)庫中查出對(duì)話的雙方以及他們當(dāng)時(shí)所說的內(nèi)容。又過了一小段時(shí)間,銀行發(fā)現(xiàn)客戶對(duì)這些問題所做的回答,其實(shí)是很有價(jià)值的營(yíng)銷信息。緊接著,有人提出(這個(gè)人可能是和CEO一起打高爾夫的朋友,他碰巧在一家大型咨詢公司上班):可以編寫一個(gè)應(yīng)用程序,把客戶對(duì)種種問題所給出的回答,全都捕獲到數(shù)據(jù)庫之中,這樣的應(yīng)用程序應(yīng)該很快就能寫好,而且?guī)缀醪恍枰~外的開銷。這些做法看起來似乎是比較合理的,但只要仔細(xì)想想,我們就會(huì)發(fā)現(xiàn),其實(shí)還有很多事情需要解決,例如:
- 這套辦法針對(duì)的是哪些金融產(chǎn)品?所有的金融產(chǎn)品都要按照這套辦法來銷售嗎?
- 如果銷售人員是第二次向某位客戶推銷,那么他是不是還要把上次推銷時(shí)問過的那些問題再問一遍?這么做可能會(huì)使客戶感到厭煩。
- 除了銷售金融產(chǎn)品本身所需的時(shí)間,問這些問題要花費(fèi)多長(zhǎng)時(shí)間?銀行為此需要付出哪些成本?
- 應(yīng)用程序需要把銀行現(xiàn)有的數(shù)據(jù)用作自己的輸入數(shù)據(jù)嗎?如果需要,那么具體需要哪些數(shù)據(jù)?所需的數(shù)據(jù)存放在什么地方?
- 如何對(duì)這些問題做出修改?誰有權(quán)修改它們?
- 如果有人修改了問題,那么會(huì)不會(huì)對(duì)數(shù)據(jù)分析的效果造成影響?(比如,某些分析所依據(jù)的數(shù)據(jù),既有問題修改之前的數(shù)據(jù),也有問題修改之后的數(shù)據(jù)。)
- 對(duì)于某些產(chǎn)品(如房屋貸款)來說,銷售人員在推銷該產(chǎn)品時(shí)已經(jīng)問過很多問題了。那么,剛才構(gòu)想的那些問題,是屬于一個(gè)新的系統(tǒng),還是屬于對(duì)現(xiàn)有系統(tǒng)所做的擴(kuò)展?如果是新的系統(tǒng),那么怎樣避免銷售人員重復(fù)詢問原來問過的問題呢?
- 如果銀行察覺到客戶的狀況發(fā)生了變化(如換工作、移居、離婚等),那么是否需要對(duì)賣給客戶的產(chǎn)品重新進(jìn)行評(píng)估?
通過上面這些事項(xiàng),我們可以看到,如果員工向客戶提出的問題過多,那么這套辦法就將變成一套重復(fù)而僵化的流程,客戶與銷售人員都會(huì)覺得很煩。
剛才提出的那些事項(xiàng),主要針對(duì)的是銷售流程,而在IT應(yīng)用程序的開發(fā)方面,也有很多因素需要考慮,例如:
- 新程序與現(xiàn)有程序或數(shù)據(jù)庫之間的集成度應(yīng)該有多高?
- 這個(gè)程序應(yīng)該怎樣與現(xiàn)有的安全系統(tǒng)相集成?
- 如何防止銷售人員隨意查看客戶的詳細(xì)財(cái)務(wù)信息?
- 有沒有現(xiàn)成的工具可以用來分析數(shù)據(jù)?
除了上面這4項(xiàng),還有很多IT方面的事務(wù)也有待考慮。
當(dāng)前的IT應(yīng)用程序開發(fā),在需求收集方面有兩種辦法。一種辦法是派一個(gè)人或一個(gè)團(tuán)隊(duì),以書面或口頭的方式,向利益相關(guān)者詢問一些問題,并通過頭腦風(fēng)暴(brainstorming)或其他手段來提出業(yè)務(wù)構(gòu)想。然后,團(tuán)隊(duì)會(huì)把這些想法寫成文檔,并在其中指出客戶的需求。這份需求文檔經(jīng)過審批和簽字之后,會(huì)交給公司的IT開發(fā)部門來實(shí)現(xiàn)。另外一種辦法,是把需求用簡(jiǎn)短的文句寫成一份清單,程序員直接根據(jù)這張清單來開發(fā)程序。軟件每次會(huì)推進(jìn)一小步,推進(jìn)之前,程序員會(huì)與業(yè)務(wù)代表把這次迭代將要實(shí)現(xiàn)的詳細(xì)需求確定下來。如果采用這種辦法,那么軟件只要有了進(jìn)展,就會(huì)盡快提供給客戶使用,并且會(huì)從客戶那里持續(xù)獲得反饋,開發(fā)者可以根據(jù)這些反饋來擴(kuò)充早前的那份需求清單。
上面說的這兩種需求收集辦法,都建立在一系列的假設(shè)之上,如果這些假設(shè)不成立,那么軟件項(xiàng)目就很有可能會(huì)失敗。
第一個(gè)假設(shè),是認(rèn)為業(yè)務(wù)經(jīng)理總是能夠清晰地回答每一個(gè)問題。以早前講過的銀行為例。當(dāng)我們正準(zhǔn)備收集IT應(yīng)用程序的需求時(shí),很多經(jīng)理其實(shí)根本還沒有開始考慮這些問題。更糟糕的是,有些人會(huì)用一些模糊而曖昧的話來回答問題,他們想通過一種過于樂觀和浮夸的語調(diào),來把這些困難的問題通通掩飾過去。只要稍微收集一下需求,你就會(huì)發(fā)現(xiàn),需要厘清的細(xì)節(jié)實(shí)在是太多了。然而很多業(yè)務(wù)經(jīng)理都是那種不關(guān)心細(xì)節(jié)的人,你如果必須要這些細(xì)節(jié)問題,他們就會(huì)覺得不太舒服。
此外還有一些人,他們要求所有的需求都必須能夠量化,這在一部分程度上是為了防止管理人員給出模糊的答案。例如,他們不喜歡“應(yīng)用程序必須足夠簡(jiǎn)單,以便于公眾使用”這樣的說法,而是要把話說成“用戶必須能夠在5分鐘之內(nèi)完成操作,用戶的退出率必須小于5%”。其實(shí)量化的指標(biāo)是很難確定的。用5%的退出率來衡量程序的易用性,這是否合適?為什么不用1%或10%呢?而且用戶退出應(yīng)用程序,或許還有其他一些原因,未必全都是因?yàn)樵摮绦蚝茈y用。因此,這項(xiàng)指標(biāo)的意義是不夠明確的。這種指標(biāo)還有一個(gè)缺點(diǎn),就是會(huì)增加項(xiàng)目的開發(fā)成本。為了滿足這些指標(biāo),必須有人在應(yīng)用程序中編寫一些代碼,來捕獲原始的數(shù)據(jù),而且還必須有人來分析這些數(shù)據(jù),以判斷應(yīng)用程序是否合格。如果應(yīng)用程序沒有達(dá)到預(yù)定的指標(biāo),那么項(xiàng)目就會(huì)延期,因?yàn)槲覀儽仨氃囍バ拚@個(gè)問題。萬一用戶的退出率是6%怎么辦?難道要取消這個(gè)開發(fā)項(xiàng)目嗎?有的時(shí)候,我們應(yīng)該把這些指標(biāo)當(dāng)成一項(xiàng)需求來收集,并且最好是能夠?qū)⑵渥兂赏七M(jìn)項(xiàng)目的動(dòng)力,而不要使其成為干擾項(xiàng)目的阻力。但要想做到這一點(diǎn),首先必須有人真的愿意去關(guān)注并處理些指標(biāo)。很少有哪位業(yè)務(wù)經(jīng)理能夠明確地把這些指標(biāo)講給你聽,對(duì)于易用程度這種模糊的概念來說更是如此。即便有人說出了明確的指標(biāo),也很有可能是錯(cuò)誤的,他們不是把指標(biāo)定得太寬,就是把指標(biāo)定得太嚴(yán)。于是在這個(gè)時(shí)候,就需要借助一些專業(yè)的知識(shí)了,也就是說,收集需求的人應(yīng)該明白怎樣的指標(biāo)才算合理,并且應(yīng)該幫助回答問題的人去提出合理的指標(biāo)。
第二個(gè)假設(shè)是認(rèn)為所有的利益相關(guān)者都會(huì)給出一致的回答。這顯然不成立。經(jīng)理與經(jīng)理之間的意見不同,經(jīng)理與工人之間的意見不同,總部與分支機(jī)構(gòu)或部門經(jīng)理之間的意見也不同。對(duì)于銀行這個(gè)例子來說,經(jīng)理之間很可能在“誰有權(quán)確定這些問題”這件事情上面有所分歧。銷售人員的主管可能認(rèn)為銷售經(jīng)理可以按照當(dāng)?shù)氐膶?shí)際情況來修改已經(jīng)定好的問題,而營(yíng)銷主管或許完全不同意這樣做。
第三個(gè)假設(shè),是認(rèn)為每一位重要的利益相關(guān)者都能夠找得到。實(shí)際上,收集需求的人有時(shí)可能會(huì)漏掉某些重要的利益相關(guān)者,尤其是可能漏掉那些位于國外的利益相關(guān)者。而且有的時(shí)候,可能是有人故意要求他們忽略某些重要的相關(guān)方。對(duì)于銀行這個(gè)例子來說,總部的管理層可能早就料到分行的人會(huì)有所抱怨,會(huì)說自己總要花時(shí)間向用戶問一些他們不想回答的問題,于是,管理層就想提前把這條需求確定下來,以造成一種既成的事實(shí),而不想去和分行的人正面討論這個(gè)話題。
文化差異也是個(gè)值得考慮的問題。筆者曾經(jīng)聽到一位日本的業(yè)務(wù)經(jīng)理,把西方的業(yè)務(wù)人員比作槍手,說他們“拔槍很快,但打出去的子彈太慢”。這句話的意思是說,他們可以把產(chǎn)品迅速推向市場(chǎng),但卻沒有考慮諸多的細(xì)節(jié)問題,而且沒有提供該產(chǎn)品成功所需的必要支援。此外,公司總是會(huì)把某一個(gè)人捧成英雄或打成替罪羊,而其他的人則在旁邊看熱鬧,沒有誰愿意站出來給人以支持。這對(duì)于IT應(yīng)用程序的開發(fā)來說,是個(gè)很嚴(yán)重的問題,有的時(shí)候,我們明明應(yīng)該與很多位利益相關(guān)者進(jìn)行溝通,但實(shí)際上卻只找了其中的一兩個(gè)人來談話。(另外,在很多非西方的文化之中,也有一個(gè)對(duì)需求收集不利的因素,那就是:當(dāng)經(jīng)理出錯(cuò)時(shí),沒有人愿意指出他的錯(cuò)誤。)
收集需求的人員或團(tuán)隊(duì)會(huì)有一種傾向,他們總是自己來回答這些需求問題。他們很容易就會(huì)在不經(jīng)意間過度地詮釋自己所聽到的話,或是自己內(nèi)心先設(shè)立一種觀點(diǎn),然后再去聽別人說話。如果你自己已經(jīng)確信項(xiàng)目就是應(yīng)該朝這個(gè)方向走,那么你只會(huì)愿意傾聽那些與自己相符的觀點(diǎn)。心理學(xué)家把這叫做認(rèn)知偏誤(confirmation bias)。
于是,我們就要談到第四條假設(shè),也就是認(rèn)為高層和業(yè)務(wù)經(jīng)理總是會(huì)閱讀并理解需求規(guī)范文件(requirements specification),并且總是能夠給出明智且周全的反饋意見。有一些項(xiàng)目會(huì)把軟件成品的早期樣品拿給業(yè)務(wù)經(jīng)理去看,并希望從中得到反饋,對(duì)于這樣的項(xiàng)目來說,認(rèn)知偏誤會(huì)以一種相反的形式表現(xiàn)出來,也就是說,經(jīng)理會(huì)提前認(rèn)定:這個(gè)產(chǎn)品已經(jīng)能夠滿足早前所提出的需求,即便他們當(dāng)前并沒有發(fā)現(xiàn)這些功能,也依然會(huì)以為相關(guān)的功能位于該應(yīng)用程序的其他部分,或是認(rèn)為自己還沒有了解該應(yīng)用程序的工作原理。
任何一個(gè)商業(yè)項(xiàng)目,都必須估算開發(fā)成本和開發(fā)時(shí)間,并且要在這兩者與項(xiàng)目所能產(chǎn)生的收益之間進(jìn)行權(quán)衡,這就涉及第五條假設(shè),也就是認(rèn)為需求團(tuán)隊(duì)能夠很好地估算應(yīng)用程序的開發(fā)時(shí)間及運(yùn)作成本,并且認(rèn)為高層管理者對(duì)應(yīng)用程序所應(yīng)具備的功能有足夠的了解,從而可以在各項(xiàng)決策之間做出良好的權(quán)衡。
筆者要談的最后一條假設(shè),與IT部門有關(guān)。現(xiàn)在我們所要開發(fā)的很多應(yīng)用程序都面臨著與其他IT應(yīng)用程序之間的集成度問題,而且剛才所舉的那個(gè)銀行案例,更是個(gè)相當(dāng)?shù)湫偷睦?。有的時(shí)候,要想打造出更高的集成度,就必須在項(xiàng)目前期投入更多的成本,這樣做的好處通常會(huì)在項(xiàng)目后期體現(xiàn)出來,因?yàn)橐院笏_發(fā)的內(nèi)容,可以復(fù)用早前已經(jīng)實(shí)現(xiàn)好的某些特性。以銀行那個(gè)例子來說,我們可以選擇很多種集成方案,比如,在各程序之間共用同一套單點(diǎn)登錄(single sign-on)機(jī)制,以確保安全,或是把新程序所要用到的數(shù)據(jù)集成到數(shù)據(jù)庫中現(xiàn)有的客戶表里。如果采用后者,那么設(shè)計(jì)人員可能就需要決定:到底應(yīng)該和數(shù)據(jù)庫里的哪些客戶表進(jìn)行集成。比如,賬戶數(shù)據(jù)庫、貸款數(shù)據(jù)庫和保險(xiǎn)數(shù)據(jù)庫里面,都存放著包含客戶數(shù)據(jù)的表,那么應(yīng)該和其中的哪些表相集成呢?(大多數(shù)銀行的客戶表實(shí)際上都應(yīng)該不止這三種吧?)于是,這就引出了最后一條假設(shè),也就是認(rèn)為業(yè)務(wù)經(jīng)理能夠明確地看到集成度的問題,以及各種集成方案的優(yōu)點(diǎn)和缺點(diǎn),從而可以做出周全的決策。
如果要做的項(xiàng)目很小,涉及的利益相關(guān)者很少,他們之間配合得比較好,而且要開發(fā)的IT應(yīng)用程序也不太需要同其他程序進(jìn)行集成,那么上述的6條假設(shè)就有可能是成立的。但如果項(xiàng)目的規(guī)模變大,而且應(yīng)用程序之間的集成變得較為重要,那么上述6條假設(shè)則很難成立。這導(dǎo)致的主要結(jié)果就是IT應(yīng)用程序無法滿足業(yè)務(wù)需求。我們經(jīng)常看到有些人在項(xiàng)目做到一半的時(shí)候去修改需求,這是因?yàn)樗l(fā)覺項(xiàng)目不能具備自己想要的能力。這種做法可能導(dǎo)致項(xiàng)目延期或預(yù)算超支。(筆者在前言中說過:很多人以為需求發(fā)生變化的常見原因在于業(yè)務(wù)改變得很快,但筆者卻認(rèn)為,最常見的原因應(yīng)該是,利益相關(guān)者發(fā)現(xiàn)項(xiàng)目正朝著自己當(dāng)初從來沒有想過的方向發(fā)展。)有的時(shí)候,收集需求的人自己也發(fā)現(xiàn)當(dāng)初所擬定的假設(shè)是不成立的,于是,他們就開始堆砌各種需求,想要把每一種做法都囊括到項(xiàng)目里面。
本書將會(huì)提出另外一種與利益相關(guān)者進(jìn)行接觸的方式,使得我們可以構(gòu)建出合適的需求。筆者所要講的這種方式,建立在一個(gè)簡(jiǎn)單的道理之上,那就是:IT應(yīng)用程序的需求,應(yīng)該是設(shè)計(jì)流程所輸出的成果。換句話說,我們不能像從樹上摘蘋果那樣,僅僅去“收集”IT應(yīng)用程序的需求,而是應(yīng)該設(shè)計(jì)一套能夠解決業(yè)務(wù)問題的方案,IT應(yīng)用程序則是該方案之中的一部分。
銀行的例子可以證實(shí)上述觀點(diǎn)。銀行的宏觀需求,是在法律范圍內(nèi)銷售產(chǎn)品,如果超出了這個(gè)邊界,那就會(huì)令銀行的信譽(yù)受損,而且還會(huì)令其遭受罰款。我們當(dāng)然還可以用成本等方面的標(biāo)準(zhǔn)來擴(kuò)充這條表述,但其核心的意思依然是要在法律范圍內(nèi)銷售產(chǎn)品。實(shí)際上,許多公司的宏觀標(biāo)準(zhǔn)都可以歸結(jié)成像這樣一句很簡(jiǎn)單的話。把公司想要做的事情說出來并不會(huì)太過復(fù)雜,真正有些復(fù)雜的,在于要把做這件事的辦法也同時(shí)指出來。在本例中,實(shí)現(xiàn)該需求的辦法,是設(shè)計(jì)一套業(yè)務(wù)解決方案,該方案會(huì)對(duì)現(xiàn)有的多個(gè)銷售流程做出改動(dòng),并且會(huì)增加某些管理流程及營(yíng)銷流程。(管理流程是為了監(jiān)測(cè)客戶所給出的答復(fù),營(yíng)銷流程用來設(shè)定銷售人員提給客戶的問題,并對(duì)收集到的數(shù)據(jù)進(jìn)行分析。)為了給這套業(yè)務(wù)方案提供支持,我們需要設(shè)計(jì)一款新的IT應(yīng)用程序,該應(yīng)用程序?qū)Ρ痉桨钙鹬陵P(guān)重要的作用。
對(duì)于解決業(yè)務(wù)問題來說,設(shè)計(jì)這個(gè)詞聽起來可能有點(diǎn)虛。之所以會(huì)有這種感覺,部分原因可能在于:很多業(yè)務(wù)經(jīng)理都喜歡更加自由隨興的辦法,也就是先試試某個(gè)方案,然后在嘗試的過程中再去修改它。筆者要說的是,用這種辦法來探索通用的設(shè)計(jì)方案是完全可行的,我們會(huì)在1.2.1節(jié)中談到這一點(diǎn)。但是,對(duì)于IT應(yīng)用程序,尤其是大型的IT應(yīng)用程序來說,這種辦法卻不太適合。因?yàn)镮T應(yīng)用程序是一種容易僵化而且容易出錯(cuò)的東西,筆者要告訴你怎樣才能把它做得靈活一些,使其能夠適應(yīng)變化。也就是說,你只能在一定程度上把它做得柔韌一些。有一款知名的軟件產(chǎn)品,以“靈活而又堅(jiān)固”來描述它自己,意思是說:我們?cè)谒茉焖倪^程中,可以把該軟件捏成任意的形狀,然而一旦成形,它就會(huì)穩(wěn)定下來。很多IT應(yīng)用程序也應(yīng)該達(dá)到這種地步。
現(xiàn)在我們就來看看,應(yīng)該怎樣把“收集需求”轉(zhuǎn)變成“設(shè)計(jì)業(yè)務(wù)解決方案”,以便使我們接下來所要列出的那幾條假設(shè)能夠成立。任何一項(xiàng)設(shè)計(jì)工作之中,都有一個(gè)關(guān)鍵的階段,筆者將其稱為“設(shè)計(jì)猜想”(design hypothesis),這些猜想,是我們對(duì)該方案所提出的基本想法。銀行那個(gè)例子的設(shè)計(jì)猜想是:在銷售過程中,銷售者向客戶提問,并記錄客戶所給出的答復(fù)。設(shè)計(jì)流程中最花時(shí)間的部分,應(yīng)該是對(duì)設(shè)計(jì)所做的細(xì)化,也就是要厘清它的實(shí)際內(nèi)容及各種細(xì)節(jié)。設(shè)計(jì)的方式與“只顧收集需求”的方式相比,有一個(gè)顯著的區(qū)別,那就是,它不會(huì)讓人花很多時(shí)間去填表,而是會(huì)用相當(dāng)多的時(shí)間去展示候選方案并傾聽反饋意見。評(píng)價(jià)一件事物,要比創(chuàng)建一件事物容易得多。如果你直接詢問他們的需求,他們可能很難把所有的需求全都列出來,但你如果把一兩個(gè)備選方案拿給他們,那他們很快能就看出還有哪些需求有待實(shí)現(xiàn),并且能夠指出方案中的錯(cuò)誤、問題及難點(diǎn)。此外,請(qǐng)各位利益相關(guān)者去審閱同一份設(shè)計(jì),可以迅速地展現(xiàn)他們之間的觀點(diǎn)分歧。設(shè)計(jì)提供了一套框架,使我們可以在該框架中找尋折中的辦法。下面列出我們所要確立的幾條假設(shè):
- 假設(shè)一:清晰。我們并不指望他人能夠給出清晰的需求,而是要求自己能夠?qū)⒔鉀Q方案的準(zhǔn)確圖景清晰地呈現(xiàn)給他人。
- 假設(shè)二:歧見能夠消除。如果你把一份備選方案展示出來,那么別人就可以對(duì)這份方案進(jìn)行評(píng)判,從而更有可能提出一些替代方案,這樣做使得利益相關(guān)者可以在不直接批評(píng)同事的情況下,表達(dá)出自己的意見。把分歧擺在明處,這樣解決起來更容易。
- 假設(shè)三:能夠找到每一位利益相關(guān)者。在注重反饋的開放氛圍之下,我們可以把設(shè)計(jì)方案的電子文檔發(fā)給他人,從而更加容易地找到所有的利益相關(guān)者。
- 假設(shè)四:可以獲得清晰的反饋信息。我們會(huì)請(qǐng)利益相關(guān)者精確地指出解決方案中的錯(cuò)誤,這要比請(qǐng)他們來描述解決方案更容易一些。
- 假設(shè)五:能夠?qū)⒊杀竟浪慵皺?quán)衡納入設(shè)計(jì)流程。實(shí)際上,單從業(yè)務(wù)設(shè)計(jì)中是很難估算出成本的,你必須進(jìn)一步把技術(shù)解決方案也設(shè)計(jì)出來,然后才能夠做出精確的估量。第3章將會(huì)詳細(xì)討論此話題。所幸這一步所花費(fèi)的時(shí)間,與項(xiàng)目的總時(shí)間相比并不算多,因而我們可以很快地拿出一些備選的業(yè)務(wù)解決方案及技術(shù)設(shè)計(jì)方案,使得公司能夠據(jù)此做出明智的決策,挑選出時(shí)間和預(yù)算均不超標(biāo)的方案。(比如,這些技術(shù)設(shè)計(jì)方案在可用性這一指標(biāo)方面設(shè)置有不同的目標(biāo)。)
- 假設(shè)六:業(yè)務(wù)經(jīng)理能夠充分理解各種集成選項(xiàng),從而可以在這一領(lǐng)域內(nèi)給出指導(dǎo)意見。大家稍后將會(huì)看到,我們?cè)谶M(jìn)行設(shè)計(jì)的過程中,能夠給業(yè)務(wù)經(jīng)理呈現(xiàn)出一些集成選項(xiàng),這些可供選擇的集成方式,都是從數(shù)據(jù)訪問和信息傳遞的角度來描述的,而不會(huì)包含過多的技術(shù)詞匯。
筆者把需求設(shè)計(jì)所產(chǎn)生的結(jié)果稱為情境設(shè)計(jì)(context design),因?yàn)樗oIT設(shè)計(jì)提供了情境。正如早前所說的那樣,這種情境設(shè)計(jì),一定要能夠向業(yè)務(wù)經(jīng)理呈現(xiàn)一幅清晰的圖景,使他們明白當(dāng)前要構(gòu)建的這個(gè)IT應(yīng)用程序到底是用來做什么的。
筆者所提出的這一整套設(shè)計(jì)辦法,可以稱為情境驅(qū)動(dòng)設(shè)計(jì)(context-driven design)。
本章開頭一共提出了三項(xiàng)主張,現(xiàn)在已經(jīng)講解了第一項(xiàng)主張,而剩下的兩項(xiàng)(也就是要像工程學(xué)那樣去做設(shè)計(jì),以及要使各程序?qū)軜?gòu)起到推動(dòng)作用),則需要在我們討論完一般意義上的設(shè)計(jì)之后,再進(jìn)行講解。
總結(jié)
以上是生活随笔為你收集整理的《需求设计:构建用户想要和需要的产品》——第1章 情境驱动设计入门1.1 对需求进行设计...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Adobe Illustrator C
- 下一篇: 《C语言程序设计与实践(第2版)》——第