需求分析师的基本功:逻辑思维、逻辑分析与逻辑表达
需求分析師經(jīng)常抱怨說:我太難了,自認(rèn)為對需求已經(jīng)非常清楚了,但交付軟件時用戶卻說:這不是他想要的!
軟件行業(yè)從事需求分析師的人經(jīng)常會提到下面的一些有代表性的現(xiàn)象
■現(xiàn)象1.認(rèn)真聽取了用戶需求、并且用界面原型向用戶進(jìn)行了需求確認(rèn),費(fèi)盡了千辛萬苦把軟件開發(fā)出來后,用戶一試卻說“這不是我想要的東西!”,這樣的結(jié)果讓我感到崩潰,不是確認(rèn)好的嗎?!這說明編碼之前需求工程師與用戶雙方對用原型表達(dá)的需求認(rèn)知是一致的(如不一致是不會開始編碼的),相信很多需求分析師都經(jīng)歷過,這個問題一旦發(fā)生了就會帶來開發(fā)返工、成本超支、延遲罰款,甚至最后雙方不歡而散。
■現(xiàn)象2.開發(fā)工程師總是抱怨說需求分析師的資料看不懂、表達(dá)不清晰,有時為了搞清楚一個問題(在一張A4紙上用文字說明)可能需要打3~4天的電話溝通。久而久之就造成了產(chǎn)品經(jīng)理、開發(fā)工程師對需求分析師的不信任,形成了需求分析師水平低的印象。
■現(xiàn)象3.對完成的分析與設(shè)計結(jié)果正確與否判斷不清楚(或沒有判斷方法)。老手的需求分析師可以通過積累的專業(yè)知識和經(jīng)驗來做出判斷,但是對新手的需求分析師來說因為沒有積累可以利用,常常面對完成的分析與設(shè)計結(jié)果不知道用什么方法來判斷它的正確與否,交給開發(fā)之后總是提心吊膽怕什么地方出錯誤。
這種現(xiàn)象在其他行業(yè)則很少會出現(xiàn),比如IT行業(yè)經(jīng)常會用建筑與軟件的設(shè)計制造過程做比較,但由于建筑物是具象的,看到設(shè)計圖形馬上能聯(lián)系起你所有的經(jīng)驗記憶,在大腦中建立起一個具體的形象。描繪建筑物是用幾何圖形、位置關(guān)系和物理尺寸來表達(dá)的,比如:用與實際相似的圖形來表達(dá)建筑物的外觀,還可以將建筑物分解為窗、門、柱、梁、板等構(gòu)件,同樣用完全相似的圖形來表達(dá),建筑物從里到外都可以精確地給出構(gòu)件之間的銜接關(guān)系,看了建筑設(shè)計圖之后,投資業(yè)主、建筑設(shè)計師和施工公司三方都不會對圖形有認(rèn)知上的歧義。
那么軟件行業(yè)為什么會出現(xiàn)前述的現(xiàn)象呢?主要是因為軟件產(chǎn)品的需求和交付物都比較“抽象”,很難用“具象”的圖形表達(dá)出來,對同一個軟件需求不同的人有不同的理解和表達(dá),沒有絕對公知的、唯一的和定量的表達(dá)方式,這個難題對提需求的用戶、分析需求和開發(fā)的軟件工程師來說都是一樣的,這就容易造成交流時出現(xiàn)理解和認(rèn)知上的誤差。
有的需求分析師說:與用戶交流前我畫了高保真的界面原型,用原型法向用戶確認(rèn)需求并獲得了用戶的認(rèn)可,為什么還會出現(xiàn)不盡人意的結(jié)果呢?原因在于:利用原型法雖然可以直觀地說明與確認(rèn)界面上數(shù)據(jù)輸入方面的需求,但是對不同原型之間的關(guān)系、輸入后數(shù)據(jù)之間的關(guān)系、業(yè)務(wù)整體的運(yùn)行機(jī)理、未來需求發(fā)生變化時系統(tǒng)的應(yīng)對方法等,用原型法是難以獲得這些復(fù)雜邏輯關(guān)系和重要信息的,原型法主要幫助獲得功能操作層面的邏輯和信息。
抽象的對象是人為的認(rèn)識,用文字、界面表達(dá)的內(nèi)容與現(xiàn)實的對象有聯(lián)系,但是并不能夠做到“形似”,(因為研究的對象沒有“形”),它是一種用文字、或是邏輯圖標(biāo)(符號)表達(dá)的“抽象”形象。在軟件中除去操作界面(interface)的表達(dá)具有一定的“形象”以外,支持這個界面運(yùn)行的所有內(nèi)容都是抽象的, 比如采購流程、組織分解、管理控制、合同簽訂、核算支付等,它們的事理、邏輯非常不同。
軟件需求工作中重要的成果之一就是分析和表達(dá)“邏輯”,除了用文字和界面原型的方法外,表達(dá)邏輯的最重要的方式是繪制邏輯圖,邏輯圖是由圖標(biāo)、連接線、位置、包含關(guān)系等組成的(對比建筑物的表達(dá)用圖標(biāo)、形狀、位置、尺寸等)。界面原型表達(dá)的是“數(shù)據(jù)的輸入和處理結(jié)果的展示”,邏輯圖形表達(dá)的是“業(yè)務(wù)事理、邏輯”,是表面看不到的信息,而這些信息正是用來抽提業(yè)務(wù)規(guī)律、建立數(shù)據(jù)模型的依據(jù)。
因此,在需求調(diào)研完成時除去要搞清楚功能(界面原型)和數(shù)據(jù)以外,還必須要搞清楚“邏輯”。除界面原型和文字兩種形式外,表達(dá)邏輯的圖形有:業(yè)務(wù)的分層圖、框架圖、分解圖、流程圖、數(shù)據(jù)勾稽圖等。用圖形表達(dá)的邏輯來源于“架構(gòu)設(shè)計”,缺乏邏輯表達(dá)的資料往往缺乏的就是架構(gòu)設(shè)計環(huán)節(jié),沒有架構(gòu)設(shè)計環(huán)節(jié)的系統(tǒng)基本上就是需求分析師看到什么做到什么,看一步做一步。缺乏邏輯表達(dá)的是造成前述現(xiàn)象的重要原因之一。下面簡單說明一下邏輯與前述現(xiàn)象之間的因果關(guān)系。
□現(xiàn)象1:界面原型與邏輯
用戶可以理解原型界面上的內(nèi)容,但是他不清楚原型背后的邏輯(如流程、流轉(zhuǎn)條件、發(fā)生變化時的應(yīng)對方法等),這是因為需求工程師用界面原型僅確認(rèn)了用戶做事的“表單(需要哪些字段)”,但沒有做業(yè)務(wù)流程、各功能間協(xié)同關(guān)系等深層次的邏輯確認(rèn),所以當(dāng)系統(tǒng)運(yùn)行中處理各種各樣的真實場景時,用戶就感到不是他預(yù)想的樣子了(通常用戶會認(rèn)為界面原型對了,原型背后的邏輯就一定是他想要的樣子)。
□現(xiàn)象2:開發(fā)工程師與邏輯
軟件開發(fā)工程師非常關(guān)注邏輯表達(dá)(因為編程是基于邏輯進(jìn)行的),需求分析資料必須要表達(dá)出做事的步驟順序、每個步驟上的內(nèi)容、內(nèi)容要描述到精細(xì)的規(guī)則。由于需求分析師不注重從“邏輯”的角度進(jìn)行分析與表達(dá),且完成資料中的大部分內(nèi)容采用文章體的描述方式,由于文字表達(dá)的局限性(不規(guī)范、因人而異等),就造成了產(chǎn)品經(jīng)理、開發(fā)工程師的閱讀和理解的困難(特別是復(fù)雜邏輯),覺得資料中的功能描述都是獨(dú)立的、缺乏邏輯關(guān)系的描述,整個系統(tǒng)到處是斷點、經(jīng)不起推敲。
□現(xiàn)象3:結(jié)果是否正確與邏輯推演
從事需求分析工作時間短、或是遇到了首次接觸的用戶業(yè)務(wù)時,如果新手需求分析師能夠采用“邏輯推演”的方式進(jìn)行調(diào)研和分析,則可以很大程度上彌補(bǔ)因?qū)τ脩魳I(yè)務(wù)知識不足而帶來的判斷不準(zhǔn)問題。邏輯推演方式分為三層(業(yè)務(wù)邏輯層、數(shù)據(jù)邏輯層和管控邏輯層)來檢查分析與設(shè)計結(jié)果是否正確,其原理就是采用“順藤摸瓜”的方法搞清楚研究對象,在三個不同層面上進(jìn)行邏輯推演的方式簡述如下:
□第一層(底層)-業(yè)務(wù)邏輯推理(確保業(yè)務(wù)事理正確)。
第一層主要用業(yè)務(wù)架構(gòu)圖的形式表達(dá)。給出業(yè)務(wù)構(gòu)成的要素、要素間的關(guān)系,這一步給出了業(yè)務(wù)要素之間外在的“定性關(guān)系”,勾勒出業(yè)務(wù)的“形象”,使得所研究的業(yè)務(wù)對象可視、有形,它是后續(xù)分析、設(shè)計、開發(fā)的基礎(chǔ)。業(yè)務(wù)關(guān)系明白了,粗線條的邏輯關(guān)系就清楚了。
□第二層(中層)-數(shù)據(jù)邏輯推理(確定數(shù)據(jù)間引用關(guān)系)
第二層主要用數(shù)據(jù)關(guān)系圖的形式表達(dá),在第一層的基礎(chǔ)上給出業(yè)務(wù)要素內(nèi)在的“定量關(guān)系”,第一層說明了要素之間的外在關(guān)系是定性的,第二層通過對數(shù)據(jù)之間的邏輯關(guān)系分析,給出要素之間精確的、唯一的關(guān)系表達(dá)。數(shù)據(jù)關(guān)系明白了,詳細(xì)的邏輯關(guān)系就清楚了。
□第三層(上層)-管控邏輯推理(確定約束條件合理)
有了前面對業(yè)務(wù)要素的從“業(yè)務(wù)層、數(shù)據(jù)層”的“定性、定量”分析和描述,下面就可以在此基礎(chǔ)之上給出要素之間的管控關(guān)系,管控關(guān)系說明了要素之間的相互作用以及因此產(chǎn)生的約束關(guān)系,約束關(guān)系在企業(yè)管理系統(tǒng)的中的作用就是“管理”。
完成符合三層邏輯的設(shè)計后,最后再采用業(yè)務(wù)用例驗證和應(yīng)用用例驗證的方式對設(shè)計結(jié)果進(jìn)行檢查和驗證(即利用場景進(jìn)行動態(tài)推演)。這種方式大大地提升了需求分析師與用戶、開發(fā)工程師的溝通效率,基本上確保了分析與設(shè)計結(jié)果與完成后系統(tǒng)的相似度,同時也基本上消除了系統(tǒng)開發(fā)完成后發(fā)生大規(guī)模返工或推倒重來的風(fēng)險。
從前述的三種現(xiàn)象以及造成現(xiàn)象的原因可以看出來,研發(fā)一款非具象的軟件產(chǎn)品,邏輯思維、分析和表達(dá)是非常重要的基礎(chǔ)能力,需求分析師是將用戶的抽象需求、通過分析和設(shè)計,轉(zhuǎn)換為可視、可操作產(chǎn)品的第一人。某種意義上可以說,需求分析師的邏輯思維、分析和表達(dá)水平,決定了最終產(chǎn)品水平的高低,特別是對于復(fù)雜系統(tǒng)來說更是如此。
通過邏輯推演的方法搞清楚了用戶需求,雖然還不能表明你具有優(yōu)化需求和提升用戶價值的能力(要想做到優(yōu)化和提升,還必須掌握相當(dāng)深度的用戶業(yè)務(wù)知識),但至少為理解、優(yōu)化和提升打下了基礎(chǔ)。詳細(xì)內(nèi)容可參考《大話軟件工程—需求分析與軟件設(shè)計》一書。
?
總結(jié)
以上是生活随笔為你收集整理的需求分析师的基本功:逻辑思维、逻辑分析与逻辑表达的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java链表—— LinkedList
- 下一篇: Thymeleaf一些标签的传字符串/m