用戶調(diào)查是開發(fā)產(chǎn)品的重要依據(jù),更是產(chǎn)品能否被用戶認(rèn)可的第一步。本篇文章將深入用戶調(diào)查的基礎(chǔ)理論方面,嘗試從基礎(chǔ)理論方面為用戶調(diào)查提供更多有共性、有規(guī)律性、有理論的依據(jù)。
前言:
“沒有調(diào)查就沒有發(fā)言權(quán)”,這句話很多人都非常熟悉,其實這句話還有下半句,知道下半句的人相對少了很多。
完整的一句話是這樣的:“沒有調(diào)查就沒有發(fā)言權(quán),沒有正確的調(diào)查同樣沒有發(fā)言權(quán)”。
這句話不僅強調(diào)了調(diào)查的重要性,更強調(diào)了正確調(diào)查的重要性。
在互聯(lián)網(wǎng)行業(yè),用戶調(diào)查絕對是最高頻的詞匯之一。用戶調(diào)查是開發(fā)產(chǎn)品的重要依據(jù),更是產(chǎn)品能否被用戶認(rèn)可的第一步。
隨著用戶調(diào)查的權(quán)重越來越高,參與過用戶調(diào)查的人越來越多。每個做過用戶調(diào)查或者對用戶調(diào)查研究過的人都有自己的看法。
個人對用戶調(diào)查的看法就像讀者看《哈姆雷特》一樣,一千個讀者眼中有一千個《哈姆雷特》。
本篇文章將深入用戶調(diào)查的基礎(chǔ)理論方面,嘗試從基礎(chǔ)理論方面為用戶調(diào)查提供更多有共性、有規(guī)律性、有理論的依據(jù)。
為了更好的闡述用戶調(diào)查基礎(chǔ)理論,文章中將首次引面向?qū)ο蟮木幊谭椒?,通過面向?qū)ο蟮木幊谭椒惐?,運用編程理論為用戶調(diào)查找到可行性基礎(chǔ)理論。
在互聯(lián)網(wǎng)的發(fā)展過程中,隨著市場的變化,用戶調(diào)查也一直在變化當(dāng)中。目前為止,在用戶調(diào)查方面還沒有可行性的基礎(chǔ)理論。沒有基礎(chǔ)理論的支持,讓用戶調(diào)查像“薛定諤的貓一樣”,變化莫測。
在編程中有兩種不同的編程思想:
- 面向過程(Procedure Oriented):一種以過程為中心的編程思想;
- 面向?qū)ο?(Object Oriented) :一種以事物為中心的編程思想。
用戶調(diào)查正在進行這種演化,需要從面向過程演化到面向?qū)ο蟆Mㄟ^采用面向?qū)ο蟮姆绞?,將現(xiàn)實世界的事物抽象成對象,現(xiàn)實世界中的關(guān)系抽象成類、繼承,幫助我們實現(xiàn)對現(xiàn)實世界的抽象與數(shù)字建模。
通過面向?qū)ο蟮姆椒?,更利于用人理解的方式對調(diào)查的復(fù)雜問題進行分析、歸納和演繹。
在我們過去采用的用戶調(diào)查方法中,由于某些主觀和客觀因素的存在,讓調(diào)查結(jié)果和實際情況存在不可逆偏差,且存在的偏差隨著調(diào)查人的不同被放大或者縮小。
正是因為存在這樣的問題,我們在做決策時通常依賴過往的經(jīng)驗,而非調(diào)查結(jié)果。
一、面向過程和面向?qū)ο蟮膮^(qū)別
兩種編程思想的演化,從面向過程到面向?qū)ο?,讓編程思想形成了方法論和理論支持。面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)發(fā)展到一定階段后的產(chǎn)物。
面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。
面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
以拿生活中的實例來理解面向過程與面向?qū)ο蟆?/p>
例如五子棋,面向過程的設(shè)計思路就是首先分析問題的步驟:1)開始游戲,2)黑子先走,3)繪制畫面,4)判斷輸贏,5)輪到白子,6)繪制畫面,70判斷輸贏,8)返回步驟2,9)輸出最后結(jié)果。把上面每個步驟用不同的方法來實現(xiàn)。
如果是面向?qū)ο蟮脑O(shè)計思想來解決問題,則是另外一種思路。
整個五子棋可以分為:1)黑白雙方,這兩方的行為是一模一樣的,2)棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3)規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。
第一類對象(玩家對象)負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時利用第三類對象(規(guī)則系統(tǒng))來對棋局進行判定。
可以明顯地看出,面向?qū)ο笫且怨δ軄韯澐謫栴},而不是步驟。
同樣是繪制棋局,這樣的行為在面向過程的設(shè)計中分散在了多個步驟中,很可能出現(xiàn)不同的繪制版本,因為通常設(shè)計人員會考慮到實際情況進行各種各樣的簡化。
而面向?qū)ο蟮脑O(shè)計中,繪圖只可能在棋盤對象中出現(xiàn),從而保證了繪圖的統(tǒng)一。
二、過往用戶調(diào)查方法存在的問題
過往的用戶調(diào)查主要針對產(chǎn)品的功能角度進行模塊化調(diào)查,將用戶調(diào)查的反饋結(jié)果看成是實現(xiàn)產(chǎn)品迭代的某些功能模塊。面對日趨復(fù)雜多變的市場環(huán)境,這種思路逐漸在以下幾個方面暴露了一些弱點:
1. 審視問題域的視角
在現(xiàn)實世界中存在的客體是問題域中的主角,所謂客體是指客觀存在的對象實體和主觀抽象的概念,他是人類觀察問題和解決問題的主要目標(biāo)。
例如,對于一個C2C的交易平臺來說,無論是簡單還是復(fù)雜,始終是圍繞用戶和商家這兩個客體實施。
在自然界,每個客體都具有一些屬性和行為,例如用戶有賬號、年齡、性別等屬性,以及登錄、瀏覽、下單等行為。因此,每個個體都可以用屬性和行為來描述。
通常人類觀察問題的視角是這些客體,客體的屬性反應(yīng)客體在某一時刻的狀態(tài),客體的行為反映客體能從事的操作。
這些操作附在客體之上并能用來設(shè)置、改變和獲取客體的狀態(tài)。任何問題域都有一系列的客體,因此解決問題的基本方式是讓這些客體之間相互驅(qū)動、相互作用,最終使每個客體按照依據(jù)調(diào)查結(jié)果做出的決策改變其屬性狀態(tài)。
過往采用的調(diào)查方法不是將 客體作為一個整體,而是將依附于客體之上的行為抽取出來,以功能為目標(biāo)來進行用戶調(diào)查。
這種做法導(dǎo)致在進行用戶調(diào)查的時候,不得不將客體所構(gòu)成的現(xiàn)實世界映射到由產(chǎn)品功能模塊組成的解空間中,這種變換過程,不僅增加了用戶調(diào)查的復(fù)雜程度,影響了調(diào)查結(jié)果的準(zhǔn)確性,而且背離了人們觀察問題和解決問題的基本思路。
過去不規(guī)則的用戶調(diào)查將審視問題的視角定位于不穩(wěn)定的操作之上,并將描述客體的屬性和行為分開,使得調(diào)查結(jié)果不具有指導(dǎo)性,甚至一個微小的變動,都會波及到整個調(diào)查結(jié)果。
面對問題規(guī)模的日趨擴大、環(huán)境的日趨復(fù)雜、需求變化的日趨加快,將用戶調(diào)查的基本方法統(tǒng)一到人類解決問題的習(xí)慣方法之上,這是需要采用面向?qū)ο缶幊趟枷脒M行用戶調(diào)查的首要原因。
2. 抽象級別
抽象是人類解決問題的基本法寶。良好的抽象策略可以控制問題的復(fù)雜程度,增強調(diào)查結(jié)果的通用性和可擴展性。
抽象主要包括過程抽象和數(shù)據(jù)抽象。過去的用戶調(diào)查方法是過程抽象。所謂過程抽象是將問題域中具有明確功能定義的操作抽取出來,并將其作為一個實體看待。這種抽象級別對于用戶調(diào)查結(jié)果來說得有些武斷,并且準(zhǔn)確性差,導(dǎo)致很難得到一份準(zhǔn)確性很高的用戶調(diào)查結(jié)果。
一旦某個客體屬性的表示方式發(fā)生了變化,就有可能牽扯到已有結(jié)果的很多部分。而數(shù)據(jù)抽象是較過程抽象更高級別的抽象方式,將描述客體的屬性和行為綁定在一起,實現(xiàn)統(tǒng)一的抽象,從而達到對現(xiàn)實世界客體的真正模擬。
3. 封裝體
封裝是指將現(xiàn)實世界中存在的某個客體的屬性與行為綁定在一起,并放置在一個邏輯單元內(nèi)。
這樣做既可以實現(xiàn)對客體屬性的保護作用,又可以提高調(diào)查結(jié)果的通用性。只要客體的屬性和行為不變,任何封裝體內(nèi)部的改變都不會對調(diào)查結(jié)果的其他部分造成影響。
過往的用戶調(diào)查沒有做到客體的整體封裝,只是封裝了各個功能模塊,而每個功能模塊隨著產(chǎn)品功能的改變會改變客體的屬性,并且由于描述屬性的數(shù)據(jù)與行為被分割開來。
所以一旦某個客體屬性的表達方式發(fā)生了變化,或某個行為效果發(fā)生了改變,就有可能對整個調(diào)查結(jié)果產(chǎn)生影響。
4. 可重用性
可重用性標(biāo)識著調(diào)查結(jié)果的可復(fù)用能力,是衡量一次調(diào)查結(jié)果有用與否的重要標(biāo)志。
當(dāng)今互聯(lián)網(wǎng)行業(yè),人們越來越追求更多規(guī)律性、更有通用性的調(diào)查結(jié)果,從而使商業(yè)決策更有據(jù)可源、有律可循,即從過去“瞎貓碰到死耗子”的商業(yè)決策,演化到科學(xué)客觀的商業(yè)決策,從而推動公司的快速擴張和發(fā)展。
然而,過去用戶調(diào)查的基本單位是功能模塊,每個功能模塊只是實現(xiàn)特定功能的過程描述,因此,它的可重用單位只能是模塊。
例如,諾基亞在過去進行用戶調(diào)查時,調(diào)查得到的結(jié)論是用戶需要摔不壞、質(zhì)量更好、通話時間更長的手機,但對于這樣的調(diào)查結(jié)論來說,這樣的重用性顯得微不足道,當(dāng)通信網(wǎng)絡(luò)發(fā)生變化時,這樣的調(diào)查結(jié)果沒有一點價值,諾基亞也為采用這樣的用戶調(diào)查付出了慘重的代價。
三、面向?qū)ο笥脩粽{(diào)查方法的概念
1. 對象
對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。一個用戶即可是一個對象。
2. 對象的狀態(tài)和行為
對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。
對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。
對象實現(xiàn)了數(shù)據(jù)和行為的結(jié)合,使數(shù)據(jù)和行為封裝于對象的統(tǒng)一體中。
3. 類
具有相同特性和行為的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象,類實際上就是一種數(shù)據(jù)類型或一種抽象規(guī)則的類型。
類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。
4. 類的結(jié)構(gòu)
在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系。通常有兩種主要的結(jié)構(gòu)關(guān)系,即一般–具體結(jié)構(gòu)關(guān)系,整體–部分結(jié)構(gòu)關(guān)系。
一般–具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系,整體–部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系。
四、面向?qū)ο笥脩粽{(diào)查方法的特征
1. 對象唯一性:
每個對象都有自身唯一的標(biāo)識,通過這種標(biāo)識,可找到相應(yīng)的對象。在對象的整個生命期中,它的標(biāo)識都不改變,不同的對象不能有相同的標(biāo)識。
2. 抽象性:
抽象性是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。
一個類就是這樣一種抽象,它反映了與調(diào)查結(jié)果有關(guān)的重要性質(zhì),而忽略其他一些無關(guān)內(nèi)容。任何類的劃分都是主觀的,但必須與具體的調(diào)查有關(guān)。
3. 繼承性:
繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)之上來進行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。
繼承性是面向?qū)ο笥脩粽{(diào)查不同于其它調(diào)查的最重要特點,是其他調(diào)查所沒有的。
在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。
在用戶調(diào)查中,類的繼承性使所調(diào)查結(jié)果具有開放性、延伸性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的調(diào)查工作量,增加了調(diào)查結(jié)果的可重用性。
采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu)。通過類的繼承關(guān)系,使調(diào)查結(jié)果能夠共享,提高了調(diào)查結(jié)果的重用性。
4. 多態(tài)性:
多態(tài)性是指相同的操作(行為)或過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一調(diào)查問題時可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。
多態(tài)性允許每個對象以適合自身的方式去反饋調(diào)查結(jié)果,多態(tài)性增強了調(diào)查結(jié)果的靈活性和重用性。
五、面向?qū)ο笥脩粽{(diào)查的要素
1. 抽象:
抽象是指強調(diào)實體的本質(zhì)、內(nèi)在的屬性。在用戶調(diào)查中,抽象指的是在決定如何實現(xiàn)對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細(xì)節(jié)。類實現(xiàn)了對象的數(shù)據(jù)(即狀態(tài))和行為的抽象。
2. 封裝性:
封裝性是保證調(diào)查結(jié)果具有優(yōu)良的模塊性基礎(chǔ)。
面向?qū)ο蟮念愂欠庋b良好的模塊,類定義將其說明(被調(diào)查用戶可見的信息)與實現(xiàn)(被調(diào)查用戶的不可見內(nèi)在規(guī)律)顯式地分開,其調(diào)查結(jié)果內(nèi)部實現(xiàn)按其具體定義進行抽象劃分。
對象是封裝的最基本單位。封裝防止了調(diào)查結(jié)果相互依賴性而帶來的變動影響。面向?qū)ο蟮姆庋b比傳統(tǒng)用戶調(diào)查的封裝更為清晰、更為有力。
3. 共享性:
面向?qū)ο蟮恼{(diào)查結(jié)果在不同級別上促進了共享。同一類中的對象有著相同數(shù)據(jù)結(jié)構(gòu)、相同的行為特征。這些對象之間是結(jié)構(gòu)、行為特征的共享關(guān)系。
六、面向?qū)ο笥脩粽{(diào)查的對象模型
對象模型表示了靜態(tài)的、結(jié)構(gòu)化的調(diào)查結(jié)果數(shù)據(jù)性質(zhì),描述了調(diào)查結(jié)果的靜態(tài)結(jié)構(gòu),它是從客觀世界實體的對象關(guān)系角度來描述,表現(xiàn)了對象的相互關(guān)系。該模型主要關(guān)心系統(tǒng)中對象的結(jié)構(gòu)、屬性和操作。
1. 對象和類
(1)對象:
對象建模的目的就是描述對象。
(2)類:
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。
(3)屬性:
屬性指的是類中對象所具有的性質(zhì)(數(shù)據(jù)值)。
(4)操作和方法:
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標(biāo)對象作為其隱含行為。方法是類的操作的實現(xiàn)步驟。
2. 關(guān)聯(lián)和鏈
(1)關(guān)聯(lián)和鏈的含義:
關(guān)聯(lián)是建立類之間關(guān)系的一種手段,而鏈則是建立對象之間關(guān)系的一種手段。
鏈表示對象間的物理與概念聯(lián)結(jié),關(guān)聯(lián)表示類之間的一種關(guān)系,鏈?zhǔn)顷P(guān)聯(lián)的實例,關(guān)聯(lián)是鏈的抽象。
(2)角色
角色說明類在關(guān)聯(lián)中的作用,它位于關(guān)聯(lián)的端點。
(3)關(guān)聯(lián)的多重性:
關(guān)聯(lián)的多重性是指類中有多少個對象與關(guān)聯(lián)的類的一個對象相關(guān)。重數(shù)常描述為“一”或“多”。
3. 類的層次結(jié)構(gòu)
(1)聚集關(guān)系:
聚集是一種“整體-部分”關(guān)系。在這種關(guān)系中,有整體類和部分類之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯(lián)系起來簡單得多,對象模型應(yīng)該容易地反映各級層次。
(2)一般化關(guān)系:
一般化關(guān)系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般—具體”的關(guān)系。
一般化類稱為你類,具體類又能稱為子類,各子類繼承了父類的性質(zhì),而各子類的一些共同性質(zhì)和操作又歸納到你類中。
因此,一般化關(guān)系和繼承是同時存在的。一般化關(guān)系的符號表示是在類關(guān)聯(lián)的連線上加一個小三角形。
4. 對象模型
(1)模板:
模板是類、關(guān)聯(lián)、一般化結(jié)構(gòu)的邏輯組成。
(2)對象模型:
對象模型是由一個或若干個模板組成。模板將模型分為若干個便于管理的子塊,在整個對象模型和類及關(guān)聯(lián)的構(gòu)造塊之間,模板提供了一種集成的中間單元,模板中的類名及關(guān)聯(lián)名是唯一的。
愛盈利-運營小咖秀(www.jza6.com) 始終堅持研究分享移動互聯(lián)網(wǎng)App運營推廣經(jīng)驗、策略、全案、渠道等純干貨知識內(nèi)容;是廣大App運營從業(yè)者的知識啟蒙、成長指導(dǎo)、進階學(xué)習(xí)的集聚平臺;
想了解更多移動互聯(lián)網(wǎng)干貨知識,請關(guān)注微信公眾號運營小咖秀(ID: yunyingshow)