軟件功能分析系統(tǒng)與方法
【專利摘要】本發(fā)明提供了一種軟件功能分析系統(tǒng)和方法,系統(tǒng)包括:模塊加載器,通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包及下載收集策略,在基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器;運(yùn)行容器,檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生分析對(duì)象,創(chuàng)建異步任務(wù)池,并將異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,調(diào)度引擎,根據(jù)本地服務(wù)器的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集分析對(duì)象數(shù)據(jù);分析服務(wù)器,根據(jù)數(shù)據(jù)生成分析結(jié)果。通過(guò)本發(fā)明,可以實(shí)現(xiàn)在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
【專利說(shuō)明】軟件功能分析系統(tǒng)與方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件【技術(shù)領(lǐng)域】,具體而言,涉及一種軟件功能分析系統(tǒng)和一種軟件功能分析方法。
【背景技術(shù)】
[0002]目前,軟件行業(yè)內(nèi)并沒(méi)有一套有效的企業(yè)軟件功能改進(jìn)分析處理機(jī)制,現(xiàn)有的機(jī)制大部分只面向互聯(lián)網(wǎng)統(tǒng)計(jì)分析,無(wú)法在兼容大部分終端和瀏覽器情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)的,也無(wú)法保證在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0003]例如,目前流行的處理方式,即傳統(tǒng)軟件企業(yè)被動(dòng)式功能改進(jìn)機(jī)制與互聯(lián)網(wǎng)企業(yè)功能統(tǒng)計(jì)分析改進(jìn)機(jī)制均無(wú)法解決上述功能分析改進(jìn)問(wèn)題,同時(shí)還存在如下缺陷:
[0004](I)WEB軟件中嵌入大量的功能、行為收集代碼,WEB軟件的結(jié)構(gòu)復(fù)雜,開(kāi)發(fā)周期長(zhǎng),且沒(méi)有一套精準(zhǔn)地收集用戶對(duì)功能的詳細(xì)使用信息的機(jī)制。
[0005](2)采用日志分析方式,占用本地存儲(chǔ)空間,影響系統(tǒng)運(yùn)行時(shí)程序執(zhí)行效率,并且無(wú)法收集前端用戶的操作行為和功能的使用情況。
[0006](3)缺乏時(shí)效性的非實(shí)時(shí)性數(shù)據(jù)傳輸方式,無(wú)法支撐功能分析業(yè)務(wù)流程。
[0007](4)客戶端米用 Ajax (Asynchronous JavaScriptand XML,異步JavaScriptand+XML) >ffeb Socket、RIA (Rich Internet Applicat1n,富互聯(lián)網(wǎng)應(yīng)用)插件等方式傳輸行為數(shù)據(jù),造成系統(tǒng)中存在大量的數(shù)據(jù)請(qǐng)求,進(jìn)而影響用戶執(zhí)行業(yè)務(wù)體驗(yàn)。
[0008](5)處理問(wèn)題能力有限,只有當(dāng)程序出現(xiàn)BUG或嚴(yán)重錯(cuò)誤,才會(huì)追蹤溯源,缺少處理全局行為與匯總統(tǒng)計(jì)分析能力。
[0009](6)單臺(tái)收集服務(wù)器的負(fù)載1壓力大,例如:標(biāo)準(zhǔn)DELL R410(雙核4G內(nèi)存)支持的最大連接量在4000上下幅度,其中并不包括任何業(yè)務(wù)數(shù)據(jù)。
[0010](7) Javascript收集引擎采用事件觸發(fā)方式收集功能信息,收集數(shù)據(jù)范圍有限,開(kāi)發(fā)耦合度高,缺少主動(dòng)事件注冊(cè)機(jī)制。
[0011](S)Javascript收集引擎收集的元數(shù)據(jù)無(wú)法形成完整的業(yè)務(wù)操作流,無(wú)法對(duì)操作流程進(jìn)行組裝也無(wú)法對(duì)操作流程溯源進(jìn)行分析。
[0012](9)收集分析機(jī)制標(biāo)準(zhǔn)不統(tǒng)一,軟件升級(jí)困難,需要修改大量前端收集分析代碼進(jìn)行收集引擎重構(gòu),缺少升級(jí)機(jī)制。
[0013](10)無(wú)法處理復(fù)雜場(chǎng)景,目前市面上沒(méi)有一款產(chǎn)品可以有效地收集和處理復(fù)雜場(chǎng)景下的功能操作和行為分析。
[0014](11)客戶端必須安裝插件,例如:Flash/Flex、Java Swing、Unity3D (UnityTechnologies,優(yōu)美締3D)等,對(duì)用戶體驗(yàn)首次使用體驗(yàn)效果差。
[0015](12)跨平臺(tái)能力差,例如:一些PAD端、移動(dòng)端、虛擬終端中的瀏覽器無(wú)法識(shí)別支持SOCKET連接的插件。
[0016]因此,需要一套有效的軟件功能分析機(jī)制,在兼容大部分終端和瀏覽器情況下,在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0017]本發(fā)明正是基于上述技術(shù)問(wèn)題,提出了一種新的技術(shù)方案,可以在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0018]有鑒于此,本發(fā)明的一方面提出了一種軟件功能分析系統(tǒng),包括:模塊加載器,用于通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)所述通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在所述基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器;所述運(yùn)行容器,檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將所述異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,其中所述分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件;所述調(diào)度引擎,根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和所述收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集所述分析對(duì)象的數(shù)據(jù);以及所述分析服務(wù)器,對(duì)所述數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
[0019]在該技術(shù)方案中,客戶端采用Javascript (腳本語(yǔ)言)侵入式加載到用戶的WEB軟件中,通過(guò)基礎(chǔ)加載模塊向Node, js收集服務(wù)器獲取必要收集引擎SDK包、Javascript特性SDK (Software Development Kit,軟件開(kāi)發(fā)工具包)包和收集策略,然后創(chuàng)建運(yùn)行容器對(duì)客戶端的運(yùn)行環(huán)境進(jìn)行初始化,進(jìn)而運(yùn)行容器創(chuàng)建一個(gè)異步任務(wù)池,分配一個(gè)主任務(wù)運(yùn)行調(diào)度引擎,調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)收來(lái)集客戶功能使用信息,并將收集到的信息存儲(chǔ)在前端數(shù)據(jù)倉(cāng)庫(kù),然后定時(shí)將Json (Javascript Object Notat1n,—種輕量級(jí)數(shù)據(jù)交換格式)格式的數(shù)據(jù)壓縮并傳遞到MongoDB本地服務(wù)器中進(jìn)行數(shù)據(jù)儲(chǔ)存,本地服務(wù)器經(jīng)過(guò)元數(shù)據(jù)事件規(guī)則處理引擎將所述數(shù)據(jù)加工成分析數(shù)據(jù)傳遞給分析服務(wù)器進(jìn)行分析,最終形成功能行為報(bào)表,在這個(gè)過(guò)程中,由于MongoDB本地服務(wù)器只負(fù)責(zé)定傳遞實(shí)時(shí)服務(wù)器壓力和收集策略以使調(diào)度引擎形成所述分析數(shù)據(jù),并不負(fù)責(zé)分析數(shù)據(jù),而且在分析數(shù)據(jù)時(shí),并沒(méi)有利用日志進(jìn)行分析,不占用任何本地存儲(chǔ)空間,也沒(méi)有影響系統(tǒng)運(yùn)行時(shí)程序的執(zhí)行效率。因此,可以實(shí)現(xiàn)在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。同時(shí),由于客戶端采用Javascript侵入式加載到了用戶的WEB軟件中,因此,可以簡(jiǎn)化業(yè)務(wù)邏輯的開(kāi)發(fā),提高開(kāi)發(fā)效率,開(kāi)發(fā)人員不用實(shí)時(shí)地關(guān)注數(shù)據(jù)收集問(wèn)題,只需要可以通過(guò)這種方式嵌入一條Javascript代碼即可完成復(fù)雜、全面、高效的業(yè)務(wù)需求。其中,MongoDB是一種文件導(dǎo)向數(shù)據(jù)庫(kù)管理系統(tǒng)。
[0020]在上述技術(shù)方案中,優(yōu)選地,還包括:所述本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的所述數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至所述分析服務(wù)器。
[0021]在該技術(shù)方案中,本地服務(wù)器中一個(gè)負(fù)責(zé)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù),即將元數(shù)據(jù)加工成分析服務(wù)器可以識(shí)別的分析數(shù)據(jù),而本地服務(wù)器本身并不負(fù)責(zé)分析數(shù)據(jù),因此,通過(guò)本技術(shù)方案,可以提高本地服務(wù)器系統(tǒng)運(yùn)行時(shí)的執(zhí)行效率,減輕MongoDB本地服務(wù)器的運(yùn)行負(fù)擔(dān)。
[0022]在上述技術(shù)方案中,優(yōu)選地,所述運(yùn)行容器檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程:檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息;掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù);掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及掃描用戶服務(wù)器接口,生成交互對(duì)象表。
[0023]在該技術(shù)方案中,在運(yùn)行容器創(chuàng)建完成時(shí),由于運(yùn)行容器首先要初始化環(huán)境,因此需對(duì)上述當(dāng)前環(huán)境進(jìn)行檢測(cè),環(huán)境檢測(cè)結(jié)束后就產(chǎn)生四類分析對(duì)象,這四類對(duì)象代表了四大收集方向的元數(shù)據(jù),且會(huì)與用戶的行為和業(yè)務(wù)活動(dòng)進(jìn)行自動(dòng)綁定,以便于準(zhǔn)確地收集用戶的行為數(shù)據(jù)和功能數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分類分析。
[0024]在上述技術(shù)方案中,優(yōu)選地,所述流程狀態(tài)機(jī)根據(jù)所述主任務(wù)的配置信息來(lái)選擇事件,所述事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
[0025]在該技術(shù)方案中,當(dāng)流程狀態(tài)機(jī)根據(jù)主任務(wù)配置信息選擇被注冊(cè)的處理事件時(shí),上述五項(xiàng)事件是必選事件,但是,為了增加事件以擴(kuò)大收集粒度的范圍,還可以根據(jù)配置文件和Node.JS收集服務(wù)器返回的服務(wù)器壓力狀況,還可以根據(jù)以下標(biāo)準(zhǔn)選擇事件:1、基于異步請(qǐng)求分析,在服務(wù)器有請(qǐng)求的映射的事件,2、基于同頁(yè)面行為頻率收集事件,3、基于預(yù)定義的類型范圍數(shù)據(jù)收集事件,4、基于前端標(biāo)簽和事件上下文進(jìn)行收集事件,5、基于預(yù)制流程規(guī)則收集事件,6、基于訪問(wèn)來(lái)源收集事件。同時(shí),在收集完事件后,收集任務(wù)狀態(tài)機(jī)根據(jù)檢測(cè)到的任務(wù)類型、時(shí)間、描述和依賴關(guān)系將事件組成JSON數(shù)組存入前端數(shù)據(jù)倉(cāng)庫(kù),調(diào)度引擎主任務(wù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)大小和數(shù)據(jù)時(shí)間抽取數(shù)據(jù)壓縮后交給MongoDB本地服務(wù)器做數(shù)據(jù)持久化。其中,Node.JS是一種基于Chrome JavaScript運(yùn)行時(shí)建立的平臺(tái)。
[0026]在上述技術(shù)方案中,優(yōu)選地,還包括:所述收集服務(wù)器將所述分析對(duì)象的數(shù)據(jù)置于FIFO (First Input First Output,先進(jìn)先出)隊(duì)列,并增加所述服務(wù)器壓力;以及將在所述FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少所述服務(wù)器壓力。
[0027]在該技術(shù)方案中,在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中時(shí),本地服務(wù)器中一個(gè)負(fù)責(zé)根據(jù)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù)(分析服務(wù)器可以分析的數(shù)據(jù)),并將數(shù)據(jù)同步到遠(yuǎn)端分析服務(wù)器以生成報(bào)表。
[0028]本發(fā)明的另一方面提出了一種軟件功能分析方法,包括:模塊加載器通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)所述通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在所述基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器;所述運(yùn)行容器檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將所述異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,其中所述分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件;所述調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和所述收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集所述分析對(duì)象的數(shù)據(jù);以及所述分析服務(wù)器對(duì)所述數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
[0029]在該技術(shù)方案中,客戶端采用Javascript侵入式加載到用戶的WEB軟件中,通過(guò)基礎(chǔ)加載模塊向Node, js收集服務(wù)器獲取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后創(chuàng)建運(yùn)行容器對(duì)客戶端運(yùn)行環(huán)境進(jìn)行初始化,進(jìn)而運(yùn)行容器創(chuàng)建一個(gè)異步任務(wù)池,分配一個(gè)主任務(wù)運(yùn)行調(diào)度引擎,調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)收來(lái)集客戶功能使用信息,并將收集到的信息存儲(chǔ)在前端數(shù)據(jù)倉(cāng)庫(kù),然后定時(shí)將Json格式的數(shù)據(jù)壓縮并傳遞到MongoDB本地服務(wù)器中進(jìn)行數(shù)據(jù)儲(chǔ)存,本地服務(wù)器經(jīng)過(guò)元數(shù)據(jù)事件規(guī)則處理引擎將所述數(shù)據(jù)加工成分析數(shù)據(jù)傳遞給分析服務(wù)器進(jìn)行分析,最終形成功能行為報(bào)表,在這個(gè)過(guò)程中,由于MongoDB本地服務(wù)器只負(fù)責(zé)定傳遞實(shí)時(shí)服務(wù)器壓力和收集策略以使調(diào)度引擎形成所述分析數(shù)據(jù),并不負(fù)責(zé)分析數(shù)據(jù),而且在分析數(shù)據(jù)時(shí),并沒(méi)有利用日志進(jìn)行分析,不占用任何本地存儲(chǔ)空間,也沒(méi)有影響系統(tǒng)運(yùn)行時(shí)程序執(zhí)行效率。因此,可以實(shí)現(xiàn)在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0030]同時(shí),由于客戶端采用Javascript侵入式加載到用戶的WEB軟件中,因此,可以簡(jiǎn)化業(yè)務(wù)邏輯的開(kāi)發(fā),提高開(kāi)發(fā)效率,因?yàn)殚_(kāi)發(fā)人員不用實(shí)時(shí)地關(guān)注數(shù)據(jù)收集問(wèn)題,只需要可以通過(guò)這種方式嵌入一條Javascript代碼即可完成復(fù)雜、全面、高效的業(yè)務(wù)需求。
[0031]在上述技術(shù)方案中,優(yōu)選地,還包括:所述本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的所述數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至所述分析服務(wù)器。
[0032]在該技術(shù)方案中,本地服務(wù)器中一個(gè)負(fù)責(zé)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù),即將元數(shù)據(jù)加工成分析服務(wù)器可以識(shí)別的分析數(shù)據(jù),而本地服務(wù)器本身并不負(fù)責(zé)分析數(shù)據(jù),因此,通過(guò)本技術(shù)方案,可以提高本地服務(wù)器系統(tǒng)運(yùn)行時(shí)的執(zhí)行效率,減輕MongoDB本地服務(wù)器的運(yùn)行負(fù)擔(dān)。
[0033]在上述技術(shù)方案中,優(yōu)選地,所述運(yùn)行容器檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程:檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息;掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù);掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及掃描用戶服務(wù)器接口,生成交互對(duì)象表。
[0034]在該技術(shù)方案中,在運(yùn)行容器創(chuàng)建完成時(shí),由于運(yùn)行容器首先要初始化環(huán)境,因此需對(duì)上述當(dāng)前環(huán)境進(jìn)行檢測(cè),環(huán)境檢測(cè)結(jié)束后就產(chǎn)生四類分析對(duì)象,這四類對(duì)象代表了四大收集方向的元數(shù)據(jù),且會(huì)與用戶的行為和業(yè)務(wù)活動(dòng)進(jìn)行自動(dòng)綁定,以便于準(zhǔn)確地收集用戶的行為數(shù)據(jù)和功能數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分類分析。
[0035]在上述技術(shù)方案中,優(yōu)選地,所述流程狀態(tài)機(jī)根據(jù)所述主任務(wù)的配置信息來(lái)選擇事件,所述事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
[0036]在該技術(shù)方案中,當(dāng)流程狀態(tài)機(jī)根據(jù)主任務(wù)配置信息選擇被注冊(cè)的處理事件時(shí),上述五項(xiàng)事件是必選事件,但是,為了增加事件以擴(kuò)大收集粒度的范圍,還可以根據(jù)配置文件和Node.JS收集服務(wù)器返回的服務(wù)器壓力狀況,還可以根據(jù)以下標(biāo)準(zhǔn)選擇事件:1、基于異步請(qǐng)求分析,在服務(wù)器有請(qǐng)求的映射的事件,2、基于同頁(yè)面行為頻率收集事件,3、基于預(yù)定義的類型范圍數(shù)據(jù)收集事件,4、基于前端標(biāo)簽和事件上下文進(jìn)行收集事件,5、基于預(yù)制流程規(guī)則收集事件,6、基于訪問(wèn)來(lái)源收集事件。
[0037]同時(shí),在收集完事件后,收集任務(wù)狀態(tài)機(jī)根據(jù)檢測(cè)到的任務(wù)類型、時(shí)間、描述和依賴關(guān)系將事件組成JSON數(shù)組存入前端數(shù)據(jù)倉(cāng)庫(kù),調(diào)度引擎主任務(wù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)大小和數(shù)據(jù)時(shí)間抽取數(shù)據(jù)壓縮后交給MongoDB本地服務(wù)器做數(shù)據(jù)持久化。
[0038]在上述技術(shù)方案中,優(yōu)選地,還包括:所述收集服務(wù)器將所述分析對(duì)象的數(shù)據(jù)置于FIFO隊(duì)列,并增加所述服務(wù)器壓力;以及將在所述FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少所述服務(wù)器壓力。
[0039]在該技術(shù)方案中,在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中時(shí),本地服務(wù)器中一個(gè)負(fù)責(zé)根據(jù)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù)(分析服務(wù)器可以分析的數(shù)據(jù)),并將數(shù)據(jù)同步到遠(yuǎn)端分析服務(wù)器以生成報(bào)表。
[0040]通過(guò)上述技術(shù)方案,可以在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
【專利附圖】
【附圖說(shuō)明】
[0041]圖1示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的結(jié)構(gòu)示意圖;
[0042]圖2示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析方法的流程示意圖;
[0043]圖3示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的軟件功能分析系統(tǒng)的結(jié)構(gòu)示意圖;
[0044]圖4示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的客戶端Javascript初始化環(huán)境的結(jié)構(gòu)示意圖;
[0045]圖5示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的客戶端任務(wù)調(diào)度控制的結(jié)構(gòu)示意圖;
[0046]圖6示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的服務(wù)器儲(chǔ)存?zhèn)鬏敊C(jī)制的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0047]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0048]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。
[0049]圖1示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的結(jié)構(gòu)示意圖。
[0050]如圖1所示,根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)100的結(jié)構(gòu),包括:模塊加載器102,用于通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器104 ;運(yùn)行容器104,檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎106,其中分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件;調(diào)度引擎106,根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集分析對(duì)象的數(shù)據(jù);以及分析服務(wù)器108,對(duì)數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
[0051]在該技術(shù)方案中,客戶端采用Javascript侵入式加載到用戶的WEB軟件中,通過(guò)基礎(chǔ)加載模塊向Node, js收集服務(wù)器獲取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后創(chuàng)建運(yùn)行容器104對(duì)客戶端運(yùn)行環(huán)境進(jìn)行初始化,進(jìn)而運(yùn)行容器104創(chuàng)建一個(gè)異步任務(wù)池,分配一個(gè)主任務(wù)運(yùn)行調(diào)度引擎106,調(diào)度引擎106根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)收來(lái)集客戶功能使用信息,并將收集到的信息存儲(chǔ)在前端數(shù)據(jù)倉(cāng)庫(kù),然后定時(shí)將Json格式的數(shù)據(jù)壓縮并傳遞到MongoDB本地服務(wù)器中進(jìn)行數(shù)據(jù)儲(chǔ)存,本地服務(wù)器經(jīng)過(guò)元數(shù)據(jù)事件規(guī)則處理引擎將數(shù)據(jù)加工成分析數(shù)據(jù)傳遞給分析服務(wù)器108進(jìn)行分析,最終形成功能行為報(bào)表,在這個(gè)過(guò)程中,由于MongoDB本地服務(wù)器只負(fù)責(zé)定傳遞實(shí)時(shí)服務(wù)器壓力和收集策略以使調(diào)度引擎106形成分析數(shù)據(jù),并不負(fù)責(zé)分析數(shù)據(jù),而且在分析數(shù)據(jù)時(shí),并沒(méi)有利用日志進(jìn)行分析,不占用任何本地存儲(chǔ)空間,也沒(méi)有影響系統(tǒng)運(yùn)行時(shí)程序執(zhí)行效率。因此,可以實(shí)現(xiàn)在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0052]同時(shí),由于客戶端采用Javascript侵入式加載到用戶的WEB軟件中,因此,可以簡(jiǎn)化業(yè)務(wù)邏輯的開(kāi)發(fā),提高開(kāi)發(fā)效率,因?yàn)殚_(kāi)發(fā)人員不用實(shí)時(shí)地關(guān)注數(shù)據(jù)收集問(wèn)題,只需要可以通過(guò)這種方式嵌入一條Javascript代碼即可完成復(fù)雜、全面、高效的業(yè)務(wù)需求。
[0053]在上述技術(shù)方案中,優(yōu)選地,還包括:本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至分析服務(wù)器108。
[0054]在該技術(shù)方案中,本地服務(wù)器中一個(gè)負(fù)責(zé)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù),即將元數(shù)據(jù)加工成分析服務(wù)器108可以識(shí)別的分析數(shù)據(jù),而本地服務(wù)器本身并不負(fù)責(zé)分析數(shù)據(jù),因此,通過(guò)本技術(shù)方案,可以提高本地服務(wù)器系統(tǒng)運(yùn)行時(shí)的執(zhí)行效率,減輕MongoDB本地服務(wù)器的運(yùn)行負(fù)擔(dān)。
[0055]在上述技術(shù)方案中,優(yōu)選地,運(yùn)行容器104檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程:檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息;掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù);掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及掃描用戶服務(wù)器接口,生成交互對(duì)象表。
[0056]在該技術(shù)方案中,在運(yùn)行容器104創(chuàng)建完成時(shí),由于運(yùn)行容器104首先要初始化環(huán)境,因此需對(duì)上述當(dāng)前環(huán)境進(jìn)行檢測(cè),環(huán)境檢測(cè)結(jié)束后就產(chǎn)生四類分析對(duì)象,這四類對(duì)象代表了四大收集方向的元數(shù)據(jù),且會(huì)與用戶的行為和業(yè)務(wù)活動(dòng)進(jìn)行自動(dòng)綁定,以便于準(zhǔn)確地收集用戶的行為數(shù)據(jù)和功能數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分類分析。
[0057]在上述技術(shù)方案中,優(yōu)選地,流程狀態(tài)機(jī)根據(jù)主任務(wù)的配置信息來(lái)選擇事件,事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
[0058]在該技術(shù)方案中,當(dāng)流程狀態(tài)機(jī)根據(jù)主任務(wù)配置信息選擇被注冊(cè)的處理事件時(shí),上述五項(xiàng)事件是必選事件,但是,為了增加事件以擴(kuò)大收集粒度的范圍,還可以根據(jù)配置文件和Node.JS收集服務(wù)器返回的服務(wù)器壓力狀況,還可以根據(jù)以下標(biāo)準(zhǔn)選擇事件:1、基于異步請(qǐng)求分析,在服務(wù)器有請(qǐng)求的映射的事件,2、基于同頁(yè)面行為頻率收集事件,3、基于預(yù)定義的類型范圍數(shù)據(jù)收集事件,4、基于前端標(biāo)簽和事件上下文進(jìn)行收集事件,5、基于預(yù)制流程規(guī)則收集事件,6、基于訪問(wèn)來(lái)源收集事件。
[0059]同時(shí),在收集完事件后,收集任務(wù)狀態(tài)機(jī)根據(jù)檢測(cè)到的任務(wù)類型、時(shí)間、描述和依賴關(guān)系將事件組成JSON數(shù)組存入前端數(shù)據(jù)倉(cāng)庫(kù),調(diào)度引擎106主任務(wù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)大小和數(shù)據(jù)時(shí)間抽取數(shù)據(jù)壓縮后交給MongoDB本地服務(wù)器做數(shù)據(jù)持久化。
[0060]在上述技術(shù)方案中,優(yōu)選地,還包括:收集服務(wù)器將分析對(duì)象的數(shù)據(jù)置于FIFO隊(duì)列,并增加服務(wù)器壓力;以及將在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少服務(wù)器壓力。
[0061 ] 在該技術(shù)方案中,在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入本地服務(wù)器中時(shí),本地服務(wù)器中一個(gè)負(fù)責(zé)根據(jù)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù)(分析服務(wù)器108可以分析的數(shù)據(jù)),并將數(shù)據(jù)同步到遠(yuǎn)端分析服務(wù)器108以生成報(bào)表。
[0062]圖2示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析方法的流程示意圖。
[0063]如圖2所示,根據(jù)本發(fā)明的實(shí)施例的軟件功能分析方法,包括:
[0064]步驟202,模塊加載器通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器;步驟204,運(yùn)行容器檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,其中分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件;步驟206,調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集分析對(duì)象的數(shù)據(jù);步驟208,以及分析服務(wù)器對(duì)數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
[0065]在該技術(shù)方案中,客戶端采用Javascript侵入式加載到用戶的WEB軟件中,通過(guò)基礎(chǔ)加載模塊向Node, js收集服務(wù)器獲取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后創(chuàng)建運(yùn)行容器對(duì)客戶端運(yùn)行環(huán)境進(jìn)行初始化,進(jìn)而運(yùn)行容器創(chuàng)建一個(gè)異步任務(wù)池,分配一個(gè)主任務(wù)運(yùn)行調(diào)度引擎,調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)收來(lái)集客戶功能使用信息,并將收集到的信息存儲(chǔ)在前端數(shù)據(jù)倉(cāng)庫(kù),然后定時(shí)將Json格式的數(shù)據(jù)壓縮并傳遞到本地服務(wù)器MongoDB中進(jìn)行數(shù)據(jù)儲(chǔ)存,本地服務(wù)器經(jīng)過(guò)元數(shù)據(jù)事件規(guī)則處理引擎將數(shù)據(jù)加工成分析數(shù)據(jù)傳遞給分析服務(wù)器進(jìn)行分析,最終形成功能行為報(bào)表,在這個(gè)過(guò)程中,由于MongoDB本地服務(wù)器只負(fù)責(zé)定傳遞實(shí)時(shí)服務(wù)器壓力和收集策略以使調(diào)度引擎形成分析數(shù)據(jù),并不負(fù)責(zé)分析數(shù)據(jù),而且在分析數(shù)據(jù)時(shí),并沒(méi)有利用日志進(jìn)行分析,不占用任何本地存儲(chǔ)空間,也沒(méi)有影響系統(tǒng)運(yùn)行時(shí)程序執(zhí)行效率。因此,可以實(shí)現(xiàn)在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0066]同時(shí),由于客戶端采用Javascript侵入式加載到用戶的WEB軟件中,因此,可以簡(jiǎn)化業(yè)務(wù)邏輯的開(kāi)發(fā),提高開(kāi)發(fā)效率,因?yàn)殚_(kāi)發(fā)人員不用實(shí)時(shí)地關(guān)注數(shù)據(jù)收集問(wèn)題,只需要可以通過(guò)這種方式嵌入一條Javascript代碼即可完成復(fù)雜、全面、高效的業(yè)務(wù)需求。
[0067]在上述技術(shù)方案中,優(yōu)選地,還包括:本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至分析服務(wù)器。
[0068]在該技術(shù)方案中,本地服務(wù)器中一個(gè)負(fù)責(zé)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù),即將元數(shù)據(jù)加工成分析服務(wù)器可以識(shí)別的分析數(shù)據(jù),而本地服務(wù)器本身并不負(fù)責(zé)分析數(shù)據(jù),因此,通過(guò)本技術(shù)方案,可以提高本地服務(wù)器系統(tǒng)運(yùn)行時(shí)的執(zhí)行效率,減輕MongoDB本地服務(wù)器的運(yùn)行負(fù)擔(dān)。
[0069]在上述技術(shù)方案中,優(yōu)選地,運(yùn)行容器檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程:檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息;掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù);掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及掃描用戶服務(wù)器接口,生成交互對(duì)象表。
[0070]在該技術(shù)方案中,在運(yùn)行容器創(chuàng)建完成時(shí),由于運(yùn)行容器首先要初始化環(huán)境,因此需對(duì)上述當(dāng)前環(huán)境進(jìn)行檢測(cè),環(huán)境檢測(cè)結(jié)束后就產(chǎn)生四類分析對(duì)象,這四類對(duì)象代表了四大收集方向的元數(shù)據(jù),且會(huì)與用戶的行為和業(yè)務(wù)活動(dòng)進(jìn)行自動(dòng)綁定,以便于準(zhǔn)確地收集用戶的行為數(shù)據(jù)和功能數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分類分析。
[0071]在上述技術(shù)方案中,優(yōu)選地,流程狀態(tài)機(jī)根據(jù)主任務(wù)的配置信息來(lái)選擇事件,事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
[0072]在該技術(shù)方案中,當(dāng)流程狀態(tài)機(jī)根據(jù)主任務(wù)配置信息選擇被注冊(cè)的處理事件時(shí),上述五項(xiàng)事件是必選事件,但是,為了增加事件以擴(kuò)大收集粒度的范圍,還可以根據(jù)配置文件和Node.JS收集服務(wù)器返回的服務(wù)器壓力狀況,還可以根據(jù)以下標(biāo)準(zhǔn)選擇事件:1、基于異步請(qǐng)求分析,在服務(wù)器有請(qǐng)求的映射的事件,2、基于同頁(yè)面行為頻率收集事件,3、基于預(yù)定義的類型范圍數(shù)據(jù)收集事件,4、基于前端標(biāo)簽和事件上下文進(jìn)行收集事件,5、基于預(yù)制流程規(guī)則收集事件,6、基于訪問(wèn)來(lái)源收集事件。
[0073]同時(shí),在收集完事件后,收集任務(wù)狀態(tài)機(jī)根據(jù)檢測(cè)到的任務(wù)類型、時(shí)間、描述和依賴關(guān)系將事件組成JSON數(shù)組存入前端數(shù)據(jù)倉(cāng)庫(kù),調(diào)度引擎主任務(wù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)大小和數(shù)據(jù)時(shí)間抽取數(shù)據(jù)壓縮后交給MongoDB本地服務(wù)器做數(shù)據(jù)持久化。
[0074]在上述技術(shù)方案中,優(yōu)選地,還包括:收集服務(wù)器將分析對(duì)象的數(shù)據(jù)置于FIFO隊(duì)列,并增加服務(wù)器壓力;以及將在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少服務(wù)器壓力。
[0075]在該技術(shù)方案中,在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入本地服務(wù)器中時(shí),本地服務(wù)器中一個(gè)負(fù)責(zé)根據(jù)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù)(分析服務(wù)器可以分析的數(shù)據(jù)),并將數(shù)據(jù)同步到遠(yuǎn)端分析服務(wù)器以生成報(bào)表。
[0076]圖3示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的軟件功能分析系統(tǒng)的結(jié)構(gòu)示意圖。
[0077]如圖3所示,根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的結(jié)構(gòu)示意圖,模塊加載器102采用Javascript侵入式加載到用戶的WEB軟件中,并通過(guò)基礎(chǔ)加載模塊向Node,js收集服務(wù)器302獲取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后創(chuàng)建運(yùn)行容器104根據(jù)獲取的SDK包和收集策略對(duì)客戶端運(yùn)行環(huán)境進(jìn)行初始化,進(jìn)而運(yùn)行容器104創(chuàng)建一個(gè)異步任務(wù)池,并分配一個(gè)主任務(wù)運(yùn)行調(diào)度引擎106,進(jìn)而調(diào)度引擎106根據(jù)本地服務(wù)器304傳遞的實(shí)時(shí)服務(wù)器壓力和收集策略創(chuàng)建流程狀態(tài)機(jī)收來(lái)集客戶功能使用信息,并將收集到的信息存儲(chǔ)在前端數(shù)據(jù)倉(cāng)庫(kù)306,然后定時(shí)將Json格式的數(shù)據(jù)壓縮并傳遞到MongoDB本地服務(wù)器304中進(jìn)行數(shù)據(jù)儲(chǔ)存,最后本地服務(wù)器304經(jīng)過(guò)元數(shù)據(jù)事件規(guī)則處理引擎將所述數(shù)據(jù)加工成分析數(shù)據(jù)并傳遞給分析服務(wù)器進(jìn)行分析,最終形成功能行為報(bào)表。
[0078]圖4示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的客戶端Javascript初始化環(huán)境的結(jié)構(gòu)示意圖。
[0079]如圖4所示,根據(jù)本發(fā)明的實(shí)施例的軟件功能分析方法的Javascript初始化環(huán)境的結(jié)構(gòu)示意圖,模塊加載器102掃描通訊環(huán)境后生成基礎(chǔ)服務(wù)器交互方式,并使用Iframe、XmlHttpRequest、WebSocket跨域與Node.JS服務(wù)器302進(jìn)行通訊,同時(shí)申請(qǐng)必要的引擎SDK包,并在將必要的引擎SDK包緩存到本地瀏覽器后收集策略配置數(shù)據(jù)。而在引擎SDK包被緩存到瀏覽器緩存后,系統(tǒng)就會(huì)立即創(chuàng)建一個(gè)運(yùn)行容器104,然后該運(yùn)行容器104開(kāi)始檢測(cè)環(huán)境并串行執(zhí)行以下過(guò)程:檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息;掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù);掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及掃描用戶服務(wù)器接口,生成交互對(duì)象表,以產(chǎn)生四類分析對(duì)象,這四類對(duì)象代表了四大收集方向的元數(shù)據(jù),且會(huì)與用戶的行為和業(yè)務(wù)活動(dòng)進(jìn)行自動(dòng)綁定,以方便準(zhǔn)確地收集用戶的行為數(shù)據(jù)和功能數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分類分析。
[0080]其中,基礎(chǔ)引擎SDK包402只會(huì)在系統(tǒng)第一次加載程序時(shí)出現(xiàn),其體積相對(duì)較大,并且是利用服務(wù)器過(guò)期時(shí)間來(lái)控制其時(shí)效性的。另外,擴(kuò)展SDK包和配置文件為一串二進(jìn)制數(shù),并負(fù)責(zé)控制基礎(chǔ)引擎SDK包402的使用方式,且基礎(chǔ)引擎SDK包402包括如下內(nèi)容:
1、RIA狀態(tài)引擎,2、特性監(jiān)控引擎3、標(biāo)簽掃描引擎,4、規(guī)則過(guò)濾引擎,5、事件收集引擎,6、DOM分析引擎。
[0081]圖5示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的客戶端任務(wù)調(diào)度控制的結(jié)構(gòu)示意圖。
[0082]如圖5所示,調(diào)度引擎106中存在調(diào)度主任務(wù),且調(diào)度主任務(wù)主要負(fù)責(zé)三個(gè)類型操作:1、服務(wù)器端Json通訊管理,2、服務(wù)器端壓力監(jiān)控,3、超時(shí)定時(shí)器。其中,Json通訊管理只接收服務(wù)器傳遞過(guò)來(lái)的緊急處理請(qǐng)求,例如:配置信息更改,收集策略變更;壓力監(jiān)控引擎主要監(jiān)控2個(gè)方面壓力:1、當(dāng)前業(yè)務(wù)級(jí)別服務(wù)器的壓力情況,2、客戶端瀏覽器的GC率,通過(guò)壓力監(jiān)控引擎,調(diào)度引擎106可以自由調(diào)節(jié)客戶端子任務(wù)的執(zhí)行粒度和執(zhí)行時(shí)間,進(jìn)而快速地調(diào)整客戶端程序的運(yùn)行狀態(tài),解決收集服務(wù)器對(duì)于用戶業(yè)務(wù)操作和使用體驗(yàn)上的影響;超時(shí)定時(shí)器是管理子任務(wù)狀態(tài),保障任務(wù)的正常運(yùn)轉(zhuǎn),避免死循環(huán)狀態(tài),對(duì)于重復(fù)任務(wù)增加超時(shí)判定。
[0083]下面將結(jié)合圖5說(shuō)明收集任務(wù)機(jī)制502的執(zhí)行流程:
[0084]I)首先,收集任務(wù)機(jī)制502創(chuàng)建一個(gè)流程狀態(tài)機(jī),流程狀態(tài)機(jī)內(nèi)采用注冊(cè)機(jī)制,該注冊(cè)機(jī)制通過(guò)狀態(tài)機(jī)主任務(wù)配置信息選擇被注冊(cè)的處理事件,其中,有五項(xiàng)必選事件,這五項(xiàng)事件面向5個(gè)比較重要的領(lǐng)域(如圖5中的504所示):1、用戶的行為動(dòng)作信息數(shù)據(jù)收集,2、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集,3、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集,4、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集,5、運(yùn)行環(huán)境變化狀態(tài)信息收集;
[0085]但是,為了增加事件以擴(kuò)大收集粒度的范圍,還可以根據(jù)配置文件和Node.JS收集服務(wù)器302返回的服務(wù)器壓力狀況,選擇506區(qū)域中的事件:1、基于異步請(qǐng)求分析,在服務(wù)器有請(qǐng)求的映射的事件,2、基于同頁(yè)面行為頻率收集事件,3、基于預(yù)定義的類型范圍數(shù)據(jù)收集事件,4、基于前端標(biāo)簽和事件上下文進(jìn)行收集事件,5、基于預(yù)制流程規(guī)則收集事件,
6、基于訪問(wèn)來(lái)源收集事件。
[0086]2)在收集完事件后,收集任務(wù)狀態(tài)機(jī)502將根據(jù)檢測(cè)到的任務(wù)的類型、時(shí)間、描述和依賴關(guān)系將事件組成JSON數(shù)組存入前端數(shù)據(jù)倉(cāng)庫(kù),同時(shí),調(diào)度引擎主任務(wù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)大小和數(shù)據(jù)時(shí)間抽取數(shù)據(jù)壓縮后交給MongoDB本地服務(wù)器以持久化數(shù)據(jù)。
[0087]圖6示出了根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的服務(wù)器儲(chǔ)存?zhèn)鬏敊C(jī)制的結(jié)構(gòu)示意圖。
[0088]如圖6所示,根據(jù)本發(fā)明的實(shí)施例的軟件功能分析系統(tǒng)的服務(wù)器儲(chǔ)存?zhèn)鬏敊C(jī)制的結(jié)構(gòu)示意圖,客戶端通過(guò)Long Polling的方式將待處理數(shù)據(jù)發(fā)送到Node.JS收集服務(wù)器302中,然后Node.JS收集服務(wù)器302對(duì)數(shù)據(jù)進(jìn)行以下操作:1、使數(shù)據(jù)進(jìn)入FIFO隊(duì)列,2、增加服務(wù)器的壓力。這2個(gè)步驟結(jié)束后Node.JS收集服務(wù)器302將當(dāng)前系統(tǒng)負(fù)載數(shù)字直接返回給客戶端以供客戶端參考;然后收集服務(wù)器會(huì)根據(jù)壓力閥值將在FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)批量寫(xiě)入到MongoDB本地服務(wù)器304,以進(jìn)行數(shù)據(jù)持久化并減少服務(wù)器壓力;最后,本地服務(wù)器304中一個(gè)負(fù)責(zé)元數(shù)據(jù)事件規(guī)則的線程,將接收到的元數(shù)據(jù)生成新元數(shù)據(jù)(即分析服務(wù)器可以分析的數(shù)據(jù)),同時(shí)將數(shù)據(jù)同步到遠(yuǎn)端分析服務(wù)器以生成報(bào)表。
[0089]以上結(jié)合附圖詳細(xì)說(shuō)明了本發(fā)明的技術(shù)方案,通過(guò)本發(fā)明的技術(shù)方案,可以在既不影響客戶端體驗(yàn)又不影響系統(tǒng)運(yùn)行時(shí)性能的情況下,有效地收集和分析用戶的行為數(shù)據(jù)和功能數(shù)據(jù)。
[0090]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種軟件功能分析系統(tǒng),其特征在于,包括: 模塊加載器,用于通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)所述通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在所述基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器; 所述運(yùn)行容器,檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將所述異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,其中所述分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件; 所述調(diào)度引擎,根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和所述收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集所述分析對(duì)象的數(shù)據(jù);以及 所述分析服務(wù)器,對(duì)所述數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
2.根據(jù)權(quán)利要求1所述的軟件功能分析系統(tǒng),其特征在于,還包括:所述本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的所述數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至所述分析服務(wù)器。
3.根據(jù)權(quán)利要求1或2所述的軟件功能分析系統(tǒng),其特征在于,所述運(yùn)行容器檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程: 檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息; 掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù); 掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及 掃描用戶服務(wù)器接口,生成交互對(duì)象表。
4.根據(jù)權(quán)利要求1或2所述的軟件功能分析系統(tǒng),其特征在于,所述流程狀態(tài)機(jī)根據(jù)所述主任務(wù)的配置信息來(lái)選擇事件,所述事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
5.根據(jù)權(quán)利要求2所述的軟件功能分析系統(tǒng),其特征在于,還包括: 所述收集服務(wù)器將所述分析對(duì)象的數(shù)據(jù)置于FIFO隊(duì)列,并增加所述服務(wù)器壓力;以及將在所述FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少所述服務(wù)器壓力。
6.一種軟件功能分析方法,其特征在于,包括: 模塊加載器通過(guò)連接模塊侵入式加載至客戶端的軟件中,掃描通信環(huán)境,根據(jù)所述通信環(huán)境,生成與基礎(chǔ)服務(wù)器的交互方式,與收集服務(wù)器通訊,下載基礎(chǔ)引擎SDK包以及下載收集策略,以及在所述基礎(chǔ)引擎SDK包被下載完成之后,創(chuàng)建運(yùn)行容器; 所述運(yùn)行容器檢測(cè)環(huán)境,并在環(huán)境檢測(cè)結(jié)束之后產(chǎn)生至少一個(gè)分析對(duì)象,以及創(chuàng)建異步任務(wù)池,并將所述異步任務(wù)池中的主任務(wù)初始化為控制收集子任務(wù)的調(diào)度引擎,其中所述分析對(duì)象對(duì)應(yīng)于與和用戶行為和業(yè)務(wù)活動(dòng)相關(guān)的事件; 所述調(diào)度引擎根據(jù)本地服務(wù)器傳遞的實(shí)時(shí)服務(wù)器壓力和所述收集策略創(chuàng)建流程狀態(tài)機(jī)來(lái)收集所述分析對(duì)象的數(shù)據(jù);以及 所述分析服務(wù)器對(duì)所述數(shù)據(jù)進(jìn)行分析并生成分析結(jié)果。
7.根據(jù)權(quán)利要求6所述的軟件功能分析方法,其特征在于,還包括:所述本地服務(wù)器通過(guò)元數(shù)據(jù)事件流引擎將收集到的所述數(shù)據(jù)進(jìn)行加工成分析數(shù)據(jù),并發(fā)送至所述分析服務(wù)器。
8.根據(jù)權(quán)利要求6或7所述的軟件功能分析方法,其特征在于,所述運(yùn)行容器檢測(cè)環(huán)境具體為:串行執(zhí)行以下過(guò)程: 檢測(cè)瀏覽器環(huán)境,生成基礎(chǔ)環(huán)境信息; 掃描網(wǎng)頁(yè)標(biāo)簽,生成文檔樹(shù); 掃描滾動(dòng)條分辨率,生成特性控制元數(shù)據(jù);以及 掃描用戶服務(wù)器接口,生成交互對(duì)象表。
9.根據(jù)權(quán)利要求6或7所述的軟件功能分析方法,其特征在于,所述流程狀態(tài)機(jī)根據(jù)所述主任務(wù)的配置信息來(lái)選擇事件,所述事件包括:用戶的行為動(dòng)作信息數(shù)據(jù)收集、根據(jù)頁(yè)面等待事件數(shù)據(jù)發(fā)生的變化信息收集、基于頁(yè)面標(biāo)簽?zāi)M流程順序收集、用戶業(yè)務(wù)服務(wù)器與客戶端交互事件收集、運(yùn)行環(huán)境變化狀態(tài)信息收集。
10.根據(jù)權(quán)利要求7所述的軟件功能分析方法,其特征在于,還包括: 所述收集服務(wù)器將所述分析對(duì)象的數(shù)據(jù)置于FIFO隊(duì)列,并增加所述服務(wù)器壓力;以及將在所述FIFO隊(duì)列中的隊(duì)列數(shù)據(jù)根據(jù)壓力閾值寫(xiě)入所述本地服務(wù)器中進(jìn)行數(shù)據(jù)持久化,同時(shí)減少所述服 務(wù)器壓力。
【文檔編號(hào)】G06F11/36GK104077224SQ201410318762
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2014年7月4日 優(yōu)先權(quán)日:2014年7月4日
【發(fā)明者】馬太航 申請(qǐng)人:用友軟件股份有限公司