软件功能分析系统与方法

文档序号:6552373阅读:369来源:国知局
软件功能分析系统与方法
【专利摘要】本发明提供了一种软件功能分析系统和方法,系统包括:模块加载器,通过连接模块侵入式加载至客户端的软件中,扫描通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包及下载收集策略,在基础引擎SDK包被下载完成之后,创建运行容器;运行容器,检测环境,并在环境检测结束之后产生分析对象,创建异步任务池,并将异步任务池中的主任务初始化为控制收集子任务的调度引擎,调度引擎,根据本地服务器的实时服务器压力和收集策略创建流程状态机来收集分析对象数据;分析服务器,根据数据生成分析结果。通过本发明,可以实现在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
【专利说明】软件功能分析系统与方法

【技术领域】
[0001]本发明涉及软件【技术领域】,具体而言,涉及一种软件功能分析系统和一种软件功能分析方法。

【背景技术】
[0002]目前,软件行业内并没有一套有效的企业软件功能改进分析处理机制,现有的机制大部分只面向互联网统计分析,无法在兼容大部分终端和浏览器情况下,有效地收集和分析用户的行为数据和功能数据的,也无法保证在既不影响客户端体验又不影响系统运行时性能的情况下,收集和分析用户的行为数据和功能数据。
[0003]例如,目前流行的处理方式,即传统软件企业被动式功能改进机制与互联网企业功能统计分析改进机制均无法解决上述功能分析改进问题,同时还存在如下缺陷:
[0004](I)WEB软件中嵌入大量的功能、行为收集代码,WEB软件的结构复杂,开发周期长,且没有一套精准地收集用户对功能的详细使用信息的机制。
[0005](2)采用日志分析方式,占用本地存储空间,影响系统运行时程序执行效率,并且无法收集前端用户的操作行为和功能的使用情况。
[0006](3)缺乏时效性的非实时性数据传输方式,无法支撑功能分析业务流程。
[0007](4)客户端米用 Ajax (Asynchronous JavaScriptand XML,异步JavaScriptand+XML) >ffeb Socket、RIA (Rich Internet Applicat1n,富互联网应用)插件等方式传输行为数据,造成系统中存在大量的数据请求,进而影响用户执行业务体验。
[0008](5)处理问题能力有限,只有当程序出现BUG或严重错误,才会追踪溯源,缺少处理全局行为与汇总统计分析能力。
[0009](6)单台收集服务器的负载1压力大,例如:标准DELL R410(双核4G内存)支持的最大连接量在4000上下幅度,其中并不包括任何业务数据。
[0010](7) Javascript收集引擎采用事件触发方式收集功能信息,收集数据范围有限,开发耦合度高,缺少主动事件注册机制。
[0011](S)Javascript收集引擎收集的元数据无法形成完整的业务操作流,无法对操作流程进行组装也无法对操作流程溯源进行分析。
[0012](9)收集分析机制标准不统一,软件升级困难,需要修改大量前端收集分析代码进行收集引擎重构,缺少升级机制。
[0013](10)无法处理复杂场景,目前市面上没有一款产品可以有效地收集和处理复杂场景下的功能操作和行为分析。
[0014](11)客户端必须安装插件,例如:Flash/Flex、Java Swing、Unity3D (UnityTechnologies,优美缔3D)等,对用户体验首次使用体验效果差。
[0015](12)跨平台能力差,例如:一些PAD端、移动端、虚拟终端中的浏览器无法识别支持SOCKET连接的插件。
[0016]因此,需要一套有效的软件功能分析机制,在兼容大部分终端和浏览器情况下,在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。


【发明内容】

[0017]本发明正是基于上述技术问题,提出了一种新的技术方案,可以在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
[0018]有鉴于此,本发明的一方面提出了一种软件功能分析系统,包括:模块加载器,用于通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据所述通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在所述基础引擎SDK包被下载完成之后,创建运行容器;所述运行容器,检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将所述异步任务池中的主任务初始化为控制收集子任务的调度引擎,其中所述分析对象对应于与和用户行为和业务活动相关的事件;所述调度引擎,根据本地服务器传递的实时服务器压力和所述收集策略创建流程状态机来收集所述分析对象的数据;以及所述分析服务器,对所述数据进行分析并生成分析结果。
[0019]在该技术方案中,客户端采用Javascript (脚本语言)侵入式加载到用户的WEB软件中,通过基础加载模块向Node, js收集服务器获取必要收集引擎SDK包、Javascript特性SDK (Software Development Kit,软件开发工具包)包和收集策略,然后创建运行容器对客户端的运行环境进行初始化,进而运行容器创建一个异步任务池,分配一个主任务运行调度引擎,调度引擎根据本地服务器传递的实时服务器压力和收集策略创建流程状态机收来集客户功能使用信息,并将收集到的信息存储在前端数据仓库,然后定时将Json (Javascript Object Notat1n,—种轻量级数据交换格式)格式的数据压缩并传递到MongoDB本地服务器中进行数据储存,本地服务器经过元数据事件规则处理引擎将所述数据加工成分析数据传递给分析服务器进行分析,最终形成功能行为报表,在这个过程中,由于MongoDB本地服务器只负责定传递实时服务器压力和收集策略以使调度引擎形成所述分析数据,并不负责分析数据,而且在分析数据时,并没有利用日志进行分析,不占用任何本地存储空间,也没有影响系统运行时程序的执行效率。因此,可以实现在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。同时,由于客户端采用Javascript侵入式加载到了用户的WEB软件中,因此,可以简化业务逻辑的开发,提高开发效率,开发人员不用实时地关注数据收集问题,只需要可以通过这种方式嵌入一条Javascript代码即可完成复杂、全面、高效的业务需求。其中,MongoDB是一种文件导向数据库管理系统。
[0020]在上述技术方案中,优选地,还包括:所述本地服务器通过元数据事件流引擎将收集到的所述数据进行加工成分析数据,并发送至所述分析服务器。
[0021]在该技术方案中,本地服务器中一个负责元数据事件规则的线程,将接收到的元数据生成新元数据,即将元数据加工成分析服务器可以识别的分析数据,而本地服务器本身并不负责分析数据,因此,通过本技术方案,可以提高本地服务器系统运行时的执行效率,减轻MongoDB本地服务器的运行负担。
[0022]在上述技术方案中,优选地,所述运行容器检测环境具体为:串行执行以下过程:检测浏览器环境,生成基础环境信息;扫描网页标签,生成文档树;扫描滚动条分辨率,生成特性控制元数据;以及扫描用户服务器接口,生成交互对象表。
[0023]在该技术方案中,在运行容器创建完成时,由于运行容器首先要初始化环境,因此需对上述当前环境进行检测,环境检测结束后就产生四类分析对象,这四类对象代表了四大收集方向的元数据,且会与用户的行为和业务活动进行自动绑定,以便于准确地收集用户的行为数据和功能数据,并对这些数据进行分类分析。
[0024]在上述技术方案中,优选地,所述流程状态机根据所述主任务的配置信息来选择事件,所述事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
[0025]在该技术方案中,当流程状态机根据主任务配置信息选择被注册的处理事件时,上述五项事件是必选事件,但是,为了增加事件以扩大收集粒度的范围,还可以根据配置文件和Node.JS收集服务器返回的服务器压力状况,还可以根据以下标准选择事件:1、基于异步请求分析,在服务器有请求的映射的事件,2、基于同页面行为频率收集事件,3、基于预定义的类型范围数据收集事件,4、基于前端标签和事件上下文进行收集事件,5、基于预制流程规则收集事件,6、基于访问来源收集事件。同时,在收集完事件后,收集任务状态机根据检测到的任务类型、时间、描述和依赖关系将事件组成JSON数组存入前端数据仓库,调度引擎主任务根据数据仓库大小和数据时间抽取数据压缩后交给MongoDB本地服务器做数据持久化。其中,Node.JS是一种基于Chrome JavaScript运行时建立的平台。
[0026]在上述技术方案中,优选地,还包括:所述收集服务器将所述分析对象的数据置于FIFO (First Input First Output,先进先出)队列,并增加所述服务器压力;以及将在所述FIFO队列中的队列数据根据压力阈值写入所述本地服务器中进行数据持久化,同时减少所述服务器压力。
[0027]在该技术方案中,在FIFO队列中的队列数据根据压力阈值写入所述本地服务器中时,本地服务器中一个负责根据元数据事件规则的线程,将接收到的元数据生成新元数据(分析服务器可以分析的数据),并将数据同步到远端分析服务器以生成报表。
[0028]本发明的另一方面提出了一种软件功能分析方法,包括:模块加载器通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据所述通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在所述基础引擎SDK包被下载完成之后,创建运行容器;所述运行容器检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将所述异步任务池中的主任务初始化为控制收集子任务的调度引擎,其中所述分析对象对应于与和用户行为和业务活动相关的事件;所述调度引擎根据本地服务器传递的实时服务器压力和所述收集策略创建流程状态机来收集所述分析对象的数据;以及所述分析服务器对所述数据进行分析并生成分析结果。
[0029]在该技术方案中,客户端采用Javascript侵入式加载到用户的WEB软件中,通过基础加载模块向Node, js收集服务器获取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后创建运行容器对客户端运行环境进行初始化,进而运行容器创建一个异步任务池,分配一个主任务运行调度引擎,调度引擎根据本地服务器传递的实时服务器压力和收集策略创建流程状态机收来集客户功能使用信息,并将收集到的信息存储在前端数据仓库,然后定时将Json格式的数据压缩并传递到MongoDB本地服务器中进行数据储存,本地服务器经过元数据事件规则处理引擎将所述数据加工成分析数据传递给分析服务器进行分析,最终形成功能行为报表,在这个过程中,由于MongoDB本地服务器只负责定传递实时服务器压力和收集策略以使调度引擎形成所述分析数据,并不负责分析数据,而且在分析数据时,并没有利用日志进行分析,不占用任何本地存储空间,也没有影响系统运行时程序执行效率。因此,可以实现在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
[0030]同时,由于客户端采用Javascript侵入式加载到用户的WEB软件中,因此,可以简化业务逻辑的开发,提高开发效率,因为开发人员不用实时地关注数据收集问题,只需要可以通过这种方式嵌入一条Javascript代码即可完成复杂、全面、高效的业务需求。
[0031]在上述技术方案中,优选地,还包括:所述本地服务器通过元数据事件流引擎将收集到的所述数据进行加工成分析数据,并发送至所述分析服务器。
[0032]在该技术方案中,本地服务器中一个负责元数据事件规则的线程,将接收到的元数据生成新元数据,即将元数据加工成分析服务器可以识别的分析数据,而本地服务器本身并不负责分析数据,因此,通过本技术方案,可以提高本地服务器系统运行时的执行效率,减轻MongoDB本地服务器的运行负担。
[0033]在上述技术方案中,优选地,所述运行容器检测环境具体为:串行执行以下过程:检测浏览器环境,生成基础环境信息;扫描网页标签,生成文档树;扫描滚动条分辨率,生成特性控制元数据;以及扫描用户服务器接口,生成交互对象表。
[0034]在该技术方案中,在运行容器创建完成时,由于运行容器首先要初始化环境,因此需对上述当前环境进行检测,环境检测结束后就产生四类分析对象,这四类对象代表了四大收集方向的元数据,且会与用户的行为和业务活动进行自动绑定,以便于准确地收集用户的行为数据和功能数据,并对这些数据进行分类分析。
[0035]在上述技术方案中,优选地,所述流程状态机根据所述主任务的配置信息来选择事件,所述事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
[0036]在该技术方案中,当流程状态机根据主任务配置信息选择被注册的处理事件时,上述五项事件是必选事件,但是,为了增加事件以扩大收集粒度的范围,还可以根据配置文件和Node.JS收集服务器返回的服务器压力状况,还可以根据以下标准选择事件:1、基于异步请求分析,在服务器有请求的映射的事件,2、基于同页面行为频率收集事件,3、基于预定义的类型范围数据收集事件,4、基于前端标签和事件上下文进行收集事件,5、基于预制流程规则收集事件,6、基于访问来源收集事件。
[0037]同时,在收集完事件后,收集任务状态机根据检测到的任务类型、时间、描述和依赖关系将事件组成JSON数组存入前端数据仓库,调度引擎主任务根据数据仓库大小和数据时间抽取数据压缩后交给MongoDB本地服务器做数据持久化。
[0038]在上述技术方案中,优选地,还包括:所述收集服务器将所述分析对象的数据置于FIFO队列,并增加所述服务器压力;以及将在所述FIFO队列中的队列数据根据压力阈值写入所述本地服务器中进行数据持久化,同时减少所述服务器压力。
[0039]在该技术方案中,在FIFO队列中的队列数据根据压力阈值写入所述本地服务器中时,本地服务器中一个负责根据元数据事件规则的线程,将接收到的元数据生成新元数据(分析服务器可以分析的数据),并将数据同步到远端分析服务器以生成报表。
[0040]通过上述技术方案,可以在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。

【专利附图】

【附图说明】
[0041]图1示出了根据本发明的实施例的软件功能分析系统的结构示意图;
[0042]图2示出了根据本发明的实施例的软件功能分析方法的流程示意图;
[0043]图3示出了根据本发明的另一个实施例的软件功能分析系统的结构示意图;
[0044]图4示出了根据本发明的实施例的软件功能分析系统的客户端Javascript初始化环境的结构示意图;
[0045]图5示出了根据本发明的实施例的软件功能分析系统的客户端任务调度控制的结构示意图;
[0046]图6示出了根据本发明的实施例的软件功能分析系统的服务器储存传输机制的结构示意图。

【具体实施方式】
[0047]为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和【具体实施方式】对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0048]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0049]图1示出了根据本发明的实施例的软件功能分析系统的结构示意图。
[0050]如图1所示,根据本发明的实施例的软件功能分析系统100的结构,包括:模块加载器102,用于通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在基础引擎SDK包被下载完成之后,创建运行容器104 ;运行容器104,检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将异步任务池中的主任务初始化为控制收集子任务的调度引擎106,其中分析对象对应于与和用户行为和业务活动相关的事件;调度引擎106,根据本地服务器传递的实时服务器压力和收集策略创建流程状态机来收集分析对象的数据;以及分析服务器108,对数据进行分析并生成分析结果。
[0051]在该技术方案中,客户端采用Javascript侵入式加载到用户的WEB软件中,通过基础加载模块向Node, js收集服务器获取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后创建运行容器104对客户端运行环境进行初始化,进而运行容器104创建一个异步任务池,分配一个主任务运行调度引擎106,调度引擎106根据本地服务器传递的实时服务器压力和收集策略创建流程状态机收来集客户功能使用信息,并将收集到的信息存储在前端数据仓库,然后定时将Json格式的数据压缩并传递到MongoDB本地服务器中进行数据储存,本地服务器经过元数据事件规则处理引擎将数据加工成分析数据传递给分析服务器108进行分析,最终形成功能行为报表,在这个过程中,由于MongoDB本地服务器只负责定传递实时服务器压力和收集策略以使调度引擎106形成分析数据,并不负责分析数据,而且在分析数据时,并没有利用日志进行分析,不占用任何本地存储空间,也没有影响系统运行时程序执行效率。因此,可以实现在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
[0052]同时,由于客户端采用Javascript侵入式加载到用户的WEB软件中,因此,可以简化业务逻辑的开发,提高开发效率,因为开发人员不用实时地关注数据收集问题,只需要可以通过这种方式嵌入一条Javascript代码即可完成复杂、全面、高效的业务需求。
[0053]在上述技术方案中,优选地,还包括:本地服务器通过元数据事件流引擎将收集到的数据进行加工成分析数据,并发送至分析服务器108。
[0054]在该技术方案中,本地服务器中一个负责元数据事件规则的线程,将接收到的元数据生成新元数据,即将元数据加工成分析服务器108可以识别的分析数据,而本地服务器本身并不负责分析数据,因此,通过本技术方案,可以提高本地服务器系统运行时的执行效率,减轻MongoDB本地服务器的运行负担。
[0055]在上述技术方案中,优选地,运行容器104检测环境具体为:串行执行以下过程:检测浏览器环境,生成基础环境信息;扫描网页标签,生成文档树;扫描滚动条分辨率,生成特性控制元数据;以及扫描用户服务器接口,生成交互对象表。
[0056]在该技术方案中,在运行容器104创建完成时,由于运行容器104首先要初始化环境,因此需对上述当前环境进行检测,环境检测结束后就产生四类分析对象,这四类对象代表了四大收集方向的元数据,且会与用户的行为和业务活动进行自动绑定,以便于准确地收集用户的行为数据和功能数据,并对这些数据进行分类分析。
[0057]在上述技术方案中,优选地,流程状态机根据主任务的配置信息来选择事件,事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
[0058]在该技术方案中,当流程状态机根据主任务配置信息选择被注册的处理事件时,上述五项事件是必选事件,但是,为了增加事件以扩大收集粒度的范围,还可以根据配置文件和Node.JS收集服务器返回的服务器压力状况,还可以根据以下标准选择事件:1、基于异步请求分析,在服务器有请求的映射的事件,2、基于同页面行为频率收集事件,3、基于预定义的类型范围数据收集事件,4、基于前端标签和事件上下文进行收集事件,5、基于预制流程规则收集事件,6、基于访问来源收集事件。
[0059]同时,在收集完事件后,收集任务状态机根据检测到的任务类型、时间、描述和依赖关系将事件组成JSON数组存入前端数据仓库,调度引擎106主任务根据数据仓库大小和数据时间抽取数据压缩后交给MongoDB本地服务器做数据持久化。
[0060]在上述技术方案中,优选地,还包括:收集服务器将分析对象的数据置于FIFO队列,并增加服务器压力;以及将在FIFO队列中的队列数据根据压力阈值写入本地服务器中进行数据持久化,同时减少服务器压力。
[0061 ] 在该技术方案中,在FIFO队列中的队列数据根据压力阈值写入本地服务器中时,本地服务器中一个负责根据元数据事件规则的线程,将接收到的元数据生成新元数据(分析服务器108可以分析的数据),并将数据同步到远端分析服务器108以生成报表。
[0062]图2示出了根据本发明的实施例的软件功能分析方法的流程示意图。
[0063]如图2所示,根据本发明的实施例的软件功能分析方法,包括:
[0064]步骤202,模块加载器通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在基础引擎SDK包被下载完成之后,创建运行容器;步骤204,运行容器检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将异步任务池中的主任务初始化为控制收集子任务的调度引擎,其中分析对象对应于与和用户行为和业务活动相关的事件;步骤206,调度引擎根据本地服务器传递的实时服务器压力和收集策略创建流程状态机来收集分析对象的数据;步骤208,以及分析服务器对数据进行分析并生成分析结果。
[0065]在该技术方案中,客户端采用Javascript侵入式加载到用户的WEB软件中,通过基础加载模块向Node, js收集服务器获取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后创建运行容器对客户端运行环境进行初始化,进而运行容器创建一个异步任务池,分配一个主任务运行调度引擎,调度引擎根据本地服务器传递的实时服务器压力和收集策略创建流程状态机收来集客户功能使用信息,并将收集到的信息存储在前端数据仓库,然后定时将Json格式的数据压缩并传递到本地服务器MongoDB中进行数据储存,本地服务器经过元数据事件规则处理引擎将数据加工成分析数据传递给分析服务器进行分析,最终形成功能行为报表,在这个过程中,由于MongoDB本地服务器只负责定传递实时服务器压力和收集策略以使调度引擎形成分析数据,并不负责分析数据,而且在分析数据时,并没有利用日志进行分析,不占用任何本地存储空间,也没有影响系统运行时程序执行效率。因此,可以实现在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
[0066]同时,由于客户端采用Javascript侵入式加载到用户的WEB软件中,因此,可以简化业务逻辑的开发,提高开发效率,因为开发人员不用实时地关注数据收集问题,只需要可以通过这种方式嵌入一条Javascript代码即可完成复杂、全面、高效的业务需求。
[0067]在上述技术方案中,优选地,还包括:本地服务器通过元数据事件流引擎将收集到的数据进行加工成分析数据,并发送至分析服务器。
[0068]在该技术方案中,本地服务器中一个负责元数据事件规则的线程,将接收到的元数据生成新元数据,即将元数据加工成分析服务器可以识别的分析数据,而本地服务器本身并不负责分析数据,因此,通过本技术方案,可以提高本地服务器系统运行时的执行效率,减轻MongoDB本地服务器的运行负担。
[0069]在上述技术方案中,优选地,运行容器检测环境具体为:串行执行以下过程:检测浏览器环境,生成基础环境信息;扫描网页标签,生成文档树;扫描滚动条分辨率,生成特性控制元数据;以及扫描用户服务器接口,生成交互对象表。
[0070]在该技术方案中,在运行容器创建完成时,由于运行容器首先要初始化环境,因此需对上述当前环境进行检测,环境检测结束后就产生四类分析对象,这四类对象代表了四大收集方向的元数据,且会与用户的行为和业务活动进行自动绑定,以便于准确地收集用户的行为数据和功能数据,并对这些数据进行分类分析。
[0071]在上述技术方案中,优选地,流程状态机根据主任务的配置信息来选择事件,事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
[0072]在该技术方案中,当流程状态机根据主任务配置信息选择被注册的处理事件时,上述五项事件是必选事件,但是,为了增加事件以扩大收集粒度的范围,还可以根据配置文件和Node.JS收集服务器返回的服务器压力状况,还可以根据以下标准选择事件:1、基于异步请求分析,在服务器有请求的映射的事件,2、基于同页面行为频率收集事件,3、基于预定义的类型范围数据收集事件,4、基于前端标签和事件上下文进行收集事件,5、基于预制流程规则收集事件,6、基于访问来源收集事件。
[0073]同时,在收集完事件后,收集任务状态机根据检测到的任务类型、时间、描述和依赖关系将事件组成JSON数组存入前端数据仓库,调度引擎主任务根据数据仓库大小和数据时间抽取数据压缩后交给MongoDB本地服务器做数据持久化。
[0074]在上述技术方案中,优选地,还包括:收集服务器将分析对象的数据置于FIFO队列,并增加服务器压力;以及将在FIFO队列中的队列数据根据压力阈值写入本地服务器中进行数据持久化,同时减少服务器压力。
[0075]在该技术方案中,在FIFO队列中的队列数据根据压力阈值写入本地服务器中时,本地服务器中一个负责根据元数据事件规则的线程,将接收到的元数据生成新元数据(分析服务器可以分析的数据),并将数据同步到远端分析服务器以生成报表。
[0076]图3示出了根据本发明的另一个实施例的软件功能分析系统的结构示意图。
[0077]如图3所示,根据本发明的实施例的软件功能分析系统的结构示意图,模块加载器102采用Javascript侵入式加载到用户的WEB软件中,并通过基础加载模块向Node,js收集服务器302获取必要收集引擎SDK包、Javascript特性SDK包和收集策略,然后创建运行容器104根据获取的SDK包和收集策略对客户端运行环境进行初始化,进而运行容器104创建一个异步任务池,并分配一个主任务运行调度引擎106,进而调度引擎106根据本地服务器304传递的实时服务器压力和收集策略创建流程状态机收来集客户功能使用信息,并将收集到的信息存储在前端数据仓库306,然后定时将Json格式的数据压缩并传递到MongoDB本地服务器304中进行数据储存,最后本地服务器304经过元数据事件规则处理引擎将所述数据加工成分析数据并传递给分析服务器进行分析,最终形成功能行为报表。
[0078]图4示出了根据本发明的实施例的软件功能分析系统的客户端Javascript初始化环境的结构示意图。
[0079]如图4所示,根据本发明的实施例的软件功能分析方法的Javascript初始化环境的结构示意图,模块加载器102扫描通讯环境后生成基础服务器交互方式,并使用Iframe、XmlHttpRequest、WebSocket跨域与Node.JS服务器302进行通讯,同时申请必要的引擎SDK包,并在将必要的引擎SDK包缓存到本地浏览器后收集策略配置数据。而在引擎SDK包被缓存到浏览器缓存后,系统就会立即创建一个运行容器104,然后该运行容器104开始检测环境并串行执行以下过程:检测浏览器环境,生成基础环境信息;扫描网页标签,生成文档树;扫描滚动条分辨率,生成特性控制元数据;以及扫描用户服务器接口,生成交互对象表,以产生四类分析对象,这四类对象代表了四大收集方向的元数据,且会与用户的行为和业务活动进行自动绑定,以方便准确地收集用户的行为数据和功能数据,并对这些数据进行分类分析。
[0080]其中,基础引擎SDK包402只会在系统第一次加载程序时出现,其体积相对较大,并且是利用服务器过期时间来控制其时效性的。另外,扩展SDK包和配置文件为一串二进制数,并负责控制基础引擎SDK包402的使用方式,且基础引擎SDK包402包括如下内容:
1、RIA状态引擎,2、特性监控引擎3、标签扫描引擎,4、规则过滤引擎,5、事件收集引擎,6、DOM分析引擎。
[0081]图5示出了根据本发明的实施例的软件功能分析系统的客户端任务调度控制的结构示意图。
[0082]如图5所示,调度引擎106中存在调度主任务,且调度主任务主要负责三个类型操作:1、服务器端Json通讯管理,2、服务器端压力监控,3、超时定时器。其中,Json通讯管理只接收服务器传递过来的紧急处理请求,例如:配置信息更改,收集策略变更;压力监控引擎主要监控2个方面压力:1、当前业务级别服务器的压力情况,2、客户端浏览器的GC率,通过压力监控引擎,调度引擎106可以自由调节客户端子任务的执行粒度和执行时间,进而快速地调整客户端程序的运行状态,解决收集服务器对于用户业务操作和使用体验上的影响;超时定时器是管理子任务状态,保障任务的正常运转,避免死循环状态,对于重复任务增加超时判定。
[0083]下面将结合图5说明收集任务机制502的执行流程:
[0084]I)首先,收集任务机制502创建一个流程状态机,流程状态机内采用注册机制,该注册机制通过状态机主任务配置信息选择被注册的处理事件,其中,有五项必选事件,这五项事件面向5个比较重要的领域(如图5中的504所示):1、用户的行为动作信息数据收集,2、根据页面等待事件数据发生的变化信息收集,3、基于页面标签模拟流程顺序收集,4、用户业务服务器与客户端交互事件收集,5、运行环境变化状态信息收集;
[0085]但是,为了增加事件以扩大收集粒度的范围,还可以根据配置文件和Node.JS收集服务器302返回的服务器压力状况,选择506区域中的事件:1、基于异步请求分析,在服务器有请求的映射的事件,2、基于同页面行为频率收集事件,3、基于预定义的类型范围数据收集事件,4、基于前端标签和事件上下文进行收集事件,5、基于预制流程规则收集事件,
6、基于访问来源收集事件。
[0086]2)在收集完事件后,收集任务状态机502将根据检测到的任务的类型、时间、描述和依赖关系将事件组成JSON数组存入前端数据仓库,同时,调度引擎主任务根据数据仓库大小和数据时间抽取数据压缩后交给MongoDB本地服务器以持久化数据。
[0087]图6示出了根据本发明的实施例的软件功能分析系统的服务器储存传输机制的结构示意图。
[0088]如图6所示,根据本发明的实施例的软件功能分析系统的服务器储存传输机制的结构示意图,客户端通过Long Polling的方式将待处理数据发送到Node.JS收集服务器302中,然后Node.JS收集服务器302对数据进行以下操作:1、使数据进入FIFO队列,2、增加服务器的压力。这2个步骤结束后Node.JS收集服务器302将当前系统负载数字直接返回给客户端以供客户端参考;然后收集服务器会根据压力阀值将在FIFO队列中的队列数据批量写入到MongoDB本地服务器304,以进行数据持久化并减少服务器压力;最后,本地服务器304中一个负责元数据事件规则的线程,将接收到的元数据生成新元数据(即分析服务器可以分析的数据),同时将数据同步到远端分析服务器以生成报表。
[0089]以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以在既不影响客户端体验又不影响系统运行时性能的情况下,有效地收集和分析用户的行为数据和功能数据。
[0090]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种软件功能分析系统,其特征在于,包括: 模块加载器,用于通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据所述通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在所述基础引擎SDK包被下载完成之后,创建运行容器; 所述运行容器,检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将所述异步任务池中的主任务初始化为控制收集子任务的调度引擎,其中所述分析对象对应于与和用户行为和业务活动相关的事件; 所述调度引擎,根据本地服务器传递的实时服务器压力和所述收集策略创建流程状态机来收集所述分析对象的数据;以及 所述分析服务器,对所述数据进行分析并生成分析结果。
2.根据权利要求1所述的软件功能分析系统,其特征在于,还包括:所述本地服务器通过元数据事件流引擎将收集到的所述数据进行加工成分析数据,并发送至所述分析服务器。
3.根据权利要求1或2所述的软件功能分析系统,其特征在于,所述运行容器检测环境具体为:串行执行以下过程: 检测浏览器环境,生成基础环境信息; 扫描网页标签,生成文档树; 扫描滚动条分辨率,生成特性控制元数据;以及 扫描用户服务器接口,生成交互对象表。
4.根据权利要求1或2所述的软件功能分析系统,其特征在于,所述流程状态机根据所述主任务的配置信息来选择事件,所述事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
5.根据权利要求2所述的软件功能分析系统,其特征在于,还包括: 所述收集服务器将所述分析对象的数据置于FIFO队列,并增加所述服务器压力;以及将在所述FIFO队列中的队列数据根据压力阈值写入所述本地服务器中进行数据持久化,同时减少所述服务器压力。
6.一种软件功能分析方法,其特征在于,包括: 模块加载器通过连接模块侵入式加载至客户端的软件中,扫描通信环境,根据所述通信环境,生成与基础服务器的交互方式,与收集服务器通讯,下载基础引擎SDK包以及下载收集策略,以及在所述基础引擎SDK包被下载完成之后,创建运行容器; 所述运行容器检测环境,并在环境检测结束之后产生至少一个分析对象,以及创建异步任务池,并将所述异步任务池中的主任务初始化为控制收集子任务的调度引擎,其中所述分析对象对应于与和用户行为和业务活动相关的事件; 所述调度引擎根据本地服务器传递的实时服务器压力和所述收集策略创建流程状态机来收集所述分析对象的数据;以及 所述分析服务器对所述数据进行分析并生成分析结果。
7.根据权利要求6所述的软件功能分析方法,其特征在于,还包括:所述本地服务器通过元数据事件流引擎将收集到的所述数据进行加工成分析数据,并发送至所述分析服务器。
8.根据权利要求6或7所述的软件功能分析方法,其特征在于,所述运行容器检测环境具体为:串行执行以下过程: 检测浏览器环境,生成基础环境信息; 扫描网页标签,生成文档树; 扫描滚动条分辨率,生成特性控制元数据;以及 扫描用户服务器接口,生成交互对象表。
9.根据权利要求6或7所述的软件功能分析方法,其特征在于,所述流程状态机根据所述主任务的配置信息来选择事件,所述事件包括:用户的行为动作信息数据收集、根据页面等待事件数据发生的变化信息收集、基于页面标签模拟流程顺序收集、用户业务服务器与客户端交互事件收集、运行环境变化状态信息收集。
10.根据权利要求7所述的软件功能分析方法,其特征在于,还包括: 所述收集服务器将所述分析对象的数据置于FIFO队列,并增加所述服务器压力;以及将在所述FIFO队列中的队列数据根据压力阈值写入所述本地服务器中进行数据持久化,同时减少所述服 务器压力。
【文档编号】G06F11/36GK104077224SQ201410318762
【公开日】2014年10月1日 申请日期:2014年7月4日 优先权日:2014年7月4日
【发明者】马太航 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1