技术领域
[0001] 本申请涉及计算机领域,具体而言,涉及一种功能规模的度量方法、装置、存储介质及电子设备。
相关背景技术
[0002] 现有的方法通常是通过页面数量或者用例数量或者接口数量或者代码行数估算功能规模。例如有两个软件产品A和B,A有20个页面,B有40个页面,则认定A的规模是B的50%。
[0003] 但是,此方法存在3个较大的缺陷:
[0004] 1、需求不一定和界面相关,例如后台定时任务。使用此方法难以对所有的需求进行完整地估算。
[0005] 2、各个页面、用例、接口等的复杂度不同,例如商品上架只是简单的修改状态的功能,复杂度低。而处方转单需要有很多数据查询和判断逻辑,流程较长,其复杂度较大。如果只依照用例数量来判断用例复杂度,则商品上架和处方转单的规模是一样的,但实际情况并非如此,二者复杂度相差很大。
[0006] 3、当所估计的对象发生变更时,难以估算出变更的规模,例如调整了页面上的某个展示区域。
[0007] 因此,在软件行业普遍存在功能规模估算不够准确的问题,导致项目的实际工期与计划的工期有较大的差距。
[0008] 针对上述度量功能规模不够准确的问题,目前尚未提出有效的解决方案。
具体实施方式
[0027] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0028] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0029] 根据本申请实施例,提供了一种件规模的度量方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0030] 图1是根据本申请实施例的一种功能规模的度量方法的流程图,如图1所示,该方法包括如下步骤:
[0031] 步骤S102,获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;
[0032] 步骤S104,识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;
[0033] 步骤S106,确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;
[0034] 步骤S108,累计功能模块集合中至少一个功能处理模块的移动数量,确定待度量软件的功能规模。
[0035] 需要说明的是,待度量软件的各项功能通过该待度量软件中的各功能处理模块实现,每个功能处理模块在实现某项功能的过程中,需要在对应触发事件发生的情况下进行预设数据包的数据移动,因此,在需要确定待度量软件的功能规模的情况下,可以将待度量软件拆分为功能处理模块,并累计待度量软件中全部功能处理模块对预设数据包的移动数量,确定该待度量软件的功能规模,从而可以使用待度量软件对预设数据包的移动数量描述该待度量软件的功能规模,实现对待度量软件的功能规模进行准确度量的技术效果。
[0036] 在本申请实施例中,获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量,确定待度量软件的功能规模,从而根据待度量软件对预设数据包的移动数量评估待度量软件的功能规模,实现了准确度量功能规模的技术效果,进而解决了度量功能规模不够准确技术问题。
[0037] 在上述步骤S102中,数据移动包括数据的输入、输出、写和读。输入是从用户穿越被度量系统的边界传输数据到系统内部,这里提到的用户既包括系统的使用人员,也包括其他软件或者硬件系统:输出是一个数据组从一个功能处理通过边界移动到需要它的用户;写是存储数据到永久性的存储设备;读是从永久性的存储设备读取数据。
[0038] 在上述步骤S102中,功能处理模块是用户功能需求集合的一个基本部件,能够作为唯一的、内聚的、可独立的执行数据移动。
[0039] 可选地,功能处理模块由一个来自于功能用户的数据移动(一个输入)触发,该数据移动告知待度量软件的功能用户已识别了一个触发事件。
[0040] 可选地,在功能处理模块执行完所有被要求的任务之后,该功能处理模块运行结束。
[0041] 可选地,功能处理模块能够实现的功能包括:“数据运算”和“数据移动”两种类型,在上述功能规模的度量方法中,针对用于实现“数据移动”的功能处理模块进行功能规模的度量。
[0042] 作为一种可选的实施例,获取待度量软件的功能模块集合包括:获取待度量软件的用户功能需求,其中,用户功能需求用于指示待度量软件需要实现的至少一个数据处理功能,数据处理功能包括:用于进行数据运算的第一功能和用于进行数据移动的第二功能;识别用户功能需求中的至少一个第二功能;将待度量软件中用于实现第二功能的基础部件,确定为功能处理模块;将至少一个功能处理模块,确定为功能模块集合。
[0043] 本发明上述实施例,用户功能需求用于描述待度量软件的数据处理功能,该数据处理功能包括用于进行数据运算的第一功能和用于进行数据移动的第二功能;识别用户功能需求中的至少一个第二功能;由于功能规模针对用于实现数据移动的功能处理模块进行,因此根据用户功能需求可以将待度量软件中用于实现数据移动的基础部件,确定为功能处理模块,进而至少一个功能处理模块即可作为待度量软件的功能模块集合,实现对功能模块集合的确定。
[0044] 可选地,用户功能需求描述了必须做什么,而不包括任何描述了“怎么做”的技术和质量的需求。
[0045] 可选地,用户功能需求可以在软件开发之前从软件需求文档中抽取出来,也可以在开发完成之后从软件产品(如待评估软件)中抽取出来。
[0046] 可选地,用户功能需求可以是清晰的,也可以是模糊的,在估算时可能需要估算着做出推理或假设。对于模糊的、初步的需求可以采用近似的算法进行估算。
[0047] 需要说明的是,由于用户功能需求中并不包括技术与质量的需求,在实践中有些需求很难界定是否是“功能需求”,比如“应该简单易用”,因此针对用户功能需求的最基本判定准则是:只要移动了数据组,则应该识别功能需求,并识别出功能处理模块,度量其功能规模。
[0048] 可选地,可以根据用户功能需求确定度量策略。
[0049] 可选地,用户功能需求至少包括:添加功能处理模块、删除功能处理模块和变更功能处理模块。
[0050] 在上述步骤S104中,触发事件是导致待度量软件的功能用户启动(触发)一个或多个功能处理的事件,其中,一个功能处理至少从一个可识别的用户功能需求中派生出来。
[0051] 可选地,触发事件用于启动功能处理模块执行一次或多次数据移动,数据移动的移动次数根据该功能处理模块在触发事件的启动至结束期间确定。
[0052] 需要说明的是,一个触发事件可以触发功能处理模块至少两次数据移动,第一次数据移动为输入,第二次数据移动为输出或写。
[0053] 可选地,每个功能处理模块对应用户功能需求中的某一项功能,且能够实现该功能的功能处理模块需要受到特定的触发事件的触发,则每个功能处理模块只会对对应的触发事件做出响应,因此,通过识别每个功能处理模块的触发事件,就能够确定该功能处理模块基于对应的触发事件执行数据移动的移动次数,以及该功能处理模块对预设数据包的移动数量。
[0054] 作为一种可选的实施例,识别每个功能处理模块的触发事件包括:识别每个功能处理模块的触发命令,其中,触发命令用于触发功能处理模块产生触发事件;识别触发命令的发起对象和基于触发命令产生的事件类型,其中,发起对象包括:单个功能用户,事件类型包括:单个事件和事件组,事件组包括多个事件;在发起对象为单个功能用户,且事件类型为单个事件的情况下,将基于触发命令产生的单个事件确定为触发事件。
[0055] 本发明上述实施例,功能处理模块可以在接收触发命令后,产生触发事件,但是,触发命令可以产生单个事件,也可以产生事件组,将发起对象为单个功能用户的单个事件确定为触发事件,实现对功能处理模块的触发事件的确定。
[0056] 可选地,在基于触发命令产生单个事件的情况下,可以将该单个事件确定为触发事件。
[0057] 可选地,在识别触发命令的发起对象为群体对象的情况下,将无法基于触发命令对待度量软件的功能规模进行度量,进而可以发出告警信息,指示触发命令的错误。
[0058] 可选地,识别触发命令的发起对象为群体对象的情况下,可以将群体对象拆分为多个功能用户,并确定每个功能用户的触发命令。
[0059] 作为一种可选的实施例,在检测触发命令的发起对象和基于触发命令产生的事件类型之后,方法还包括:在发起对象为单个功能用户,且事件类型为事件组的情况下,将事件组中的多个事件拆分为多个单个事件;在拆分的单个事件中识别触发事件。
[0060] 本发明上述实施例,功能处理模块可以在接收触发命令后,产生触发事件,但是,触发命令可以产生单个事件,也可以产生事件组,通过对事件组进行拆分,可以得到多个单个事件,进而将单个事件确定为触发事件,实现对功能处理模块的触发事件的确定。
[0061] 例如,触发命令为“导航命令”,该触发命令可以产生“上、下、左、右”之类的多个单一命令产生的事件组,通过对事件组进行拆分,可以得到多个单个事件,进而在拆分的单个事件中,确定触发事件,和每个触发事件的功能处理模块。
[0062] 在上述步骤S104中,预设数据包为数据组或数据属性,其中,数据组可以包括多个数据属性,预设数据包的选择根据功能规模的度量规则确定。
[0063] 例如,在需要针对数据组进行度量的情况下,可以将数据组作为预设数据包;在需要针对数据属性进行度量的情况下,可以将数据属性作为预设数据包。
[0064] 可选地,在需要针对数据组进行度量的情况下,即便未对数据组中的全部数据属性进行了数据移动,也记为数据组进行了数据移动。
[0065] 可选地,数据组是一个有区别的、非空的、没有顺序的并且没有冗余的数据属性的集合,包括的每个数据属性描述了同一个兴趣对象的一个互补的侧面。一个兴趣对象可能包含多个不同的数据组,不同的数据组具有不同的属性。
[0066] 可选地,数据属性是已识别的数据组中最小的信息包,从待度量软件的用户功能需求的角度表达了一定含义。
[0067] 可选地,一个数据属性要么刻画了用户的现实世界,要么是记录了环境信息,但不能是一种特定的实现技术所使用的信息,如临时变量等。识别数据属性并非是必须的活动。
[0068] 在上述步骤S106中,功能处理模块和触发事件一一对应,每个功能处理模块可以基于对应的触发事件执行有限次数的数据移动,每次数据移动用于移动一个预设数据包,因此,可以确定每个功能处理模块对预设数据包的移动数量。
[0069] 需要说明是,功能处理模块基于触发事件可以执行多次数据移动,且每次数据移动的预设数据包也不同;也就是说,功能处理模块基于触发事件分别对多个预设数据包进行数据移动,该功能处理模块移动的多个预设数据包共同作为该功能处理模块的兴趣对象。
[0070] 作为一种可选的实施例,确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量包括:获取每个功能处理模块的兴趣对象,其中,兴趣对象为触发事件的发起对象感兴趣的数据,触发事件用于指示功能处理模块对兴趣对象的至少一个预设数据包进行数据移动,每次数据移动用于移动一个预设数据包;统计每个功能处理模块基于触发事件进行数据移动的移动次数;根据每个功能处理模块进行数据移动的移动次数,确定预设数据包的移动数量。
[0071] 本发明上述实施例,兴趣对象可以通过预设数据包进行描述,每个兴趣对象可以包括多个预设数据包,每个功能处理模块可以对兴趣对象中的一个或多个预设数据包进行数据移动,每次数据移动可以移动兴趣对象的一个预设数据包,通过统计数据移动的次数,即可确定预设数据包的移动数量,实现对移动数量的确定。
[0072] 可选地,每个功能处理模块的移动次数和移动数量的数值相同。
[0073] 可选地,一次数据移动可以移动一个单独的数据组中一个或多个数据属性。如果移动多个数据组的数据属性,则应识别为多个数据移动。在任何一个功能处理模块中,不可以对相同的数据移动重复识别。
[0074] 可选地,兴趣对象是从用户功能需求角度识别的任何事物。它可能是任何物理的事物,也可能是任何功能用户世界中的概念对象或者概念对象的一部分,这些都是软件必须处理和存储的数据。
[0075] 需要说明的是,使用术语“兴趣对象”以避免暗示必须使用某种软件工程方法。这个术语并不暗示这个“对象”就是面向对象方法中的对象。
[0076] 可选地,相同的预设数据包被同一功能处理模块进行多次数据移动,移动次数和移动数量不累加。
[0077] 例如:假定在功能中要求一个数据组的移动,但是开发人员决定通过2个命令(如触发事件),在功能处理模块的不同地方,每次读取不同数据子集,由于进行数据移动的数据组相同,因此在考虑功能规模时仅识别为1次读。
[0078] 可选地,在预设数据包发生改变的情况下,同一功能处理模块获取改变前后的预设数据包,移动次数和移动数量累加。
[0079] 又例如,在需要检测预设数据包是否发生改变的情况下,需要先后两次读取预设数据包再进行比对,但是先后两次读取的预设数据包的定义发生了改变,如在先读取的预设数据包作为原始数据,在后读取的预设数据包作为对照数据,因此先后两次读取的预设数据包将不认为是同一个数据包,那么考虑功能规模时就应该识别为2次读。
[0080] 在上述步骤S108中,功能规模可以通过预设数据包的移动数量描述,移动数量越大,表示移动的预设数据包越多,也即对预设数据包的移动次数也就越多,相应的功能规模也就越大。
[0081] 作为一种可选的实施例,累计功能模块集合中至少一个功能处理模块的移动数量之和,确定待度量软件的功能规模包括:基于每个功能处理模块的移动数量,确定每个功能处理模块的复杂度;累计功能模块集合中至少一个功能处理模块的复杂度之和,确定功能模块集合的整体复杂度;使用功能模块集合的整体复杂度,描述待度量软件的功能规模。
[0082] 本发明上述实施例,功能规模通过复杂度描述,功能处理模块进行数据移动的移动次数+1,则对预设数据包的移动数量+1,进行该功能处理模块的复杂度+1,从而可以基于复杂度进行功能规模的描述。
[0083] 作为一种可选的实施例,在获取待度量软件的功能模块集合之前,方法还包括:获取待度量软件的度量策略,其中,度量策略至少包括:功能用户、颗粒度层级、度量精度和待度量功能范围,功能用户用于发起触发事件,颗粒度层级用于指示能够触发功能处理模块的触发事件为单个事件,且每个触发事件由单个功能用户发起,度量精度用于指示功能规模的度量单位,度量单位用于指示预设数据包的数据类型,待度量功能范围用于指示需要对待度量软件进行度量的至少一项数据移动功能,每项数据移动功能通过对应的功能处理模块实现。
[0084] 本发明上述实施例,在获取待度量软件的功能模块集合之前,可以预先获取待度量软件的度量策略,根据度量策略中的功能用户可以确定对功能处理模块的触发事件;度量策略中的颗粒度层级用于限定触发功能处理模块的触发事件为由单个功能用户发起的单个事件;根据度量策略中的度量精度确定功能规模的度量单位,由度量单位指示预设数据包的数据类型;根据度量策略中的待度量功能范围用于指示需要对待度量软件进行度量的至少一项数据移动功能,进而确定实现那每项数据移动功能的功能处理模块,从而基于度量策略可以完成对待度量软件的准备工作。
[0085] 可循地,功能用户是指与待度量软件进行交互的人、设备或其它系统。在功能用户与待度量软件之间从逻辑上存在一个边界,通过跨越边界,待度量软件输入或输出数据。
[0086] 需要说明的是,待度量软件可以从存储介质处输入或输出数据,但是存储介质不属于功能用户。
[0087] 可选地,颗粒度层级指示触发事件以下的特征:发起触发事件的功能用户是一个人或者工程设备或者一个软件,而不是这些对象的群体;待度量软件中功能处理模块必须响应的是单个事件的发生,而不是事件组的任何一个级别。
[0088] 例如,如果识别的功能用户是一个“部门”,则他们的成员需要处理很多类型的功能处理模块,则这种描述的详细程度就没有达到要求的颗粒度层级。
[0089] 又例如,识别的触发事件是“导航命令”,而不是具体的“上、下、左、右”之类的命令,则“导航命令”属于事件组,不符合对单个事件的要求,因此也没有达到要求的颗粒度层级。
[0090] 可选地,数据类型包括:数据组或数据属性,其中,数据组是数据属性的集合。
[0091] 可选地,度量单位指示的数据类型为数据组的情况下,每次数据移动的对象是数据组,数据组是数据属性的集合,因此在计算功能规模不需要考虑数据属性的多少。对于特定的度量目的,需要更加精确地进行功能规模度量时,度量单位指示的数据类型可以为数据属性,每次数据移动的对象即为数据属性。
[0092] 上述功能规模的度量方法,将系统的功能处理模块执行的功能处理过程理解为“数据运算”和“数据移动”两种类型,该方法只统计了“数据移动”的个数,没有对“数据运算”进行度量,所以此方法主要适合如下领域。
[0093] 以数据处理为主的商务应用软件,如银行、财务、保险、个人、采购、分销、制造等领域的信息系统。
[0094] 实时系统,如电话交换系统。嵌入式控制软件(家电中的控制软件、汽车中的控制软件、过程控制中的自动数据采集系统等)。
[0095] 上述两种类型的混合,如飞机售票系统、旅馆预定系统等。
[0096] 上述功能规模的度量方法,不适合于复杂算法的系统和处理连接变量的系统,如:专家系统、模拟系统、自学习系统、天气预报系统、声音和图像处理系统等。
[0097] 表1根据本申请实施例的一种基于登录功能的示意表,如表1所示,以登录功能例说明对用户登录系统的功能进行功能规模的度量。
[0098] 行为者(如发起对象) 系统(如待度量软件的功能处理模块)用户输入账号密码(如触发事件) 校验正确性
如果错误,允许重复
如果正确,进入系统
记录登录日志
[0099] 表1
[0100] 将登录功能视为由一个功能处理模块执行,根据计算规则,度量出的功能规模如下:数据移动为输入的情况下,移动的预设数据包为用户信息,移动数量记1;数据移动为读的情况下,移动的预设数据包为用户的密码信息,移动数量记1;数据移动为输出的情况下,移动的预设数据包为错误提示,移动数量记1;数据移动为写的情况下,移动的预设数据包为登录日志,移动数量记1;该功能处理模块累计的移动数量为4个,复杂度Complex为4C,其中,C是此方法中的测量单位。
[0101] 本发明还提供了一种可选实施例,该可选实施例提供了一种基于数据移动的功能规模估算方法。
[0102] 图2是根据本发明实施例的一种基于数据移动的功能规模估算方法的示意图,如图2所示,包括阶段如下:度量策略阶段、映射阶段和度量阶段;其中,度量策略阶段,用于根据设定的目标和软件环境模型,确定度量目的,以及确定待度量软件的度量范围;映射阶段,用于根据待度量软件的用户功能需求,以及通用软件模型,结合已确定的待度量软件的度量范围,确定采用通用软件模型描述的用户需求;在度量阶段,用于根据采用通用软件模型描述的用户需求,以复杂度(也即对预设数据包的移动数量)为及数量单位,确定待度量软件的功能规模。
[0103] 图3是根据本发明实施例的一种基于数据移动的功能规模估算模型的示意图,如图3所示,可以通过输入、活动、和输出三个动作维度,分别描述度量策略阶段、映射阶段、以及度量阶段的具体实现过程。
[0104] 可选地,如图3所示,度量策略阶段需要确定度量的目的、度量的范围、功能用户以及需求描述的详细程度,因此,在该度量策略阶段可以根据输入的待度量软件的系统需求文档确定度量目的,基于该度量目的可以确定度量范围、识别功能用户,确定度量的颗粒度层级,进而基于上述确定的度量范围、和颗粒度层级,以及识别的功能用户,可以形成度量策略,并且可以将形成的度量策略按照文档形式输出,使用户可以基于输出的文档审核该度量策略是否符合度量需求。
[0105] 可选地,如图3所示,映射阶段的目的是将软件的功能需求分解为功能处理、数据组、数据属性,因此,在该映射阶段可以根据度量策略阶段形成的度量策略,识别功能处理模块,识别每个功能处理模块进行数据移动的数据组,以及识别每个数据组中的数据属性,然后形成整合后的功能需求,并形成的功能需求映射为通用软件模型的需求输出。
[0106] 需要说明的是,预设数据包可以选择数据组或数据属性作为度量单位,在选择预设数据包为数据组的情况下,该数据组中的部分数据属性发生了数据移动,也认为该数据组发生了数据移动。
[0107] 可选地,如图3所示,度量阶段阶段内的目的是通过统计待度量软件进行数据移动的所有次数,可以得到待度量软件的总移动数量,进而确定待度量软件的功能规模,因此,在该度量阶段,可以根据功能需求识别数据移动,然后应用度量函数累计对预设数据包进行数据移动的移动数量,并判断所有的功能处理模块是否都已度量,进而若未确定所有的功能处理模块都已度量的情况下,再次返回识别数据移动的过程,续应用度量函数进行累计,若确定所有的功能处理模块都已度量的情况下,则汇总度量结果,并基于该度量结果输出度量报告。
[0108] 可选地,度量目的描述了度量规模,度量结果的用途,通常会有以下规模度量的目的:估算:如随着功能需求的演变,度量其规模作为估算开发工作量过程的输入;管理:如在功能需求已经被认可后,度量其变化的规模,以管理项目范围的蔓延;考核:如度量已交付软件功能需求的规模作为度量开发人员业绩的输入;了解现状:如度量已有软件提供给操作人员的功能规模;技术有效性:如度量所有已交付软件功能需求的规模,以及所有已开发软件功能需求的规模,以得到复用功能的度量数据。
[0109] 可选地,度量目的存在以下作用:确定度量范围以及度量需要产出的工作产品;定功能用户;确定在项目的生命周期中实施度量的时间点;确定度量的精度因此是否可以使用此方法,或者是否使用一个本地化的近似的方法。
[0110] 可选地,度量范围是在某次特定功能规模度量中包含的用户功能需求的集合。如准备度量某销售管理系统的规模,则该系统中包含的所有系统用例就构成了度量的范围。
[0111] 本申请上述实施例,通过上述功能规模的度量对相同的需求进行估算,偏差不会超过10%。而如果通过代码行估算,偏差最大超过100;该功能规模的度量既适合于商业应用软件,也适合于实时系统及二者混合的系统,既可以度量整个系统的规模也可以度量产品构建的规模,并且进行规模估算时,还可以发现需求不清晰、不详细等问题,对需求确认起到了很好的帮助作用。
[0112] 表2根据本申请实施例的一种规则的示意表,如表2所示,上述功能规模的度量方法基于表2所示的规则进行。
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120] 表2
[0121] 根据本发明实施例,还提供了一种功能规模的度量装置实施例,需要说明的是,该功能规模的度量装置可以用于执行本发明实施例中的功能规模的度量方法,本发明实施例中的功能规模的度量方法可以在该功能规模的度量装置中执行。
[0122] 图4是根据本发明实施例的一种功能规模的度量装置的示意图,如图4所示,该装置可以包括:获取模块42,用于获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别模块44,用于识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定模块46,用于确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计模块48,用于累计功能模块集合中至少一个功能处理模块的移动数量,确定待度量软件的功能规模。
[0123] 需要说明的是,该实施例中的获取模块42可以用于执行本申请实施例中的步骤S102,该实施例中的识别模块44可以用于执行本申请实施例中的步骤S104,该实施例中的确定模块46可以用于执行本申请实施例中的步骤S106,该实施例中的累计模块48可以用于执行本申请实施例中的步骤S108。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。
[0124] 在本申请实施例中,获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量,确定待度量软件的功能规模,从而根据待度量软件对预设数据包的移动数量评估待度量软件的功能规模,实现了准确度量功能规模的技术效果,进而解决了度量功能规模不够准确技术问题。
[0125] 度量功能规模不够准确作为一种可选的实施例,装置还包括:获取子模块,用于在获取待度量软件的功能模块集合之前,获取待度量软件的度量策略,其中,度量策略至少包括:功能用户、颗粒度层级、度量精度和待度量功能范围,功能用户用于发起触发事件,颗粒度层级用于指示能够触发功能处理模块的触发事件为单个事件,且每个触发事件由单个功能用户发起,度量精度用于指示功能规模的度量单位,度量单位用于指示预设数据包的数据类型,待度量功能范围用于指示需要对待度量软件进行度量的至少一项数据移动功能,每项数据移动功能通过对应的功能处理模块实现。
[0126] 作为一种可选的实施例,获取模块包括:获取单元,用于获取待度量软件的用户功能需求,其中,用户功能需求用于指示待度量软件需要实现的至少一个数据处理功能,数据处理功能包括:用于进行数据运算的第一功能和用于进行数据移动的第二功能;第一识别单元,用于识别用户功能需求中的至少一个第二功能;第一确定模块,用于将待度量软件中用于实现第二功能的基础部件,确定为功能处理模块;第二确定模块,用于将至少一个功能处理模块,确定为功能模块集合。
[0127] 作为一种可选的实施例,识别模块包括:第二识别单元,用于识别每个功能处理模块的触发命令,其中,触发命令用于触发功能处理模块产生触发事件;第三识别单元,用于识别触发命令的发起对象和基于触发命令产生的事件类型,其中,发起对象包括:单个功能用户,事件类型包括:单个事件和事件组,事件组包括多个事件;第三确定单元,用于在发起对象为单个功能用户,且事件类型为单个事件的情况下,将基于触发命令产生的单个事件确定为触发事件。
[0128] 作为一种可选的实施例,装置还包括:拆分子单元,用于在检测触发命令的发起对象和基于触发命令产生的事件类型之后,在发起对象为单个功能用户,且事件类型为事件组的情况下,将事件组中的多个事件拆分为多个单个事件;识别子单元,用于在拆分的单个事件中识别触发事件。
[0129] 作为一种可选的实施例,第一确定模块包括:第三识别单元,用于识别每个功能处理模块的兴趣对象,其中,兴趣对象为触发事件的发起对象感兴趣的数据,触发事件用于指示功能处理模块对兴趣对象的至少一个预设数据包进行数据移动,每次数据移动用于移动一个预设数据包;第四确定单元,用于统计每个功能处理模块基于触发事件进行数据移动的移动次数;第五确定单元,用于根据每个功能处理模块进行数据移动的移动次数,确定预设数据包的移动数量。
[0130] 作为一种可选的实施例,第二确定模块包括:第六确定单元,用于基于每个功能处理模块的移动数量,确定每个功能处理模块的复杂度;累计单元,用于累计功能模块集合中至少一个功能处理模块的复杂度之和,确定功能模块集合的整体复杂度;描述单元,用于使用功能模块集合的整体复杂度,描述待度量软件的功能规模。
[0131] 本发明的实施例可以提供一种电子设备可以是计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
[0132] 可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0133] 在本实施例中,上述计算机终端可以执行功能规模的度量方法中以下步骤的程序代码:获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量之和,确定待度量软件的功能规模。
[0134] 可选地,图5是根据本发明实施例的一种计算机终端的结构框图。如图5所示,该计算机终端50可以包括:一个或多个(图中仅示出一个)处理器52、和存储器54。
[0135] 其中,存储器可用于存储软件程序以及模块,如本发明实施例中的功能规模的度量方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的功能规模的度量方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端50。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0136] 处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量之和,确定待度量软件的功能规模。
[0137] 可选的,上述处理器还可以执行如下步骤的程序代码:在获取待度量软件的功能模块集合之前,获取待度量软件的度量策略,其中,度量策略至少包括:功能用户、颗粒度层级、度量精度和待度量功能范围,功能用户用于发起触发事件,颗粒度层级用于指示能够触发功能处理模块的触发事件为单个事件,且每个触发事件由单个功能用户发起,度量精度用于指示功能规模的度量单位,度量单位用于指示预设数据包的数据类型,待度量功能范围用于指示需要对待度量软件进行度量的至少一项数据移动功能,每项数据移动功能通过对应的功能处理模块实现。
[0138] 可选的,上述处理器还可以执行如下步骤的程序代码:获取待度量软件的用户功能需求,其中,用户功能需求用于指示待度量软件需要实现的至少一个数据处理功能,数据处理功能包括:用于进行数据运算的第一功能和用于进行数据移动的第二功能;识别用户功能需求中的至少一个第二功能;将待度量软件中用于实现第二功能的基础部件,确定为功能处理模块;将至少一个功能处理模块,确定为功能模块集合。
[0139] 可选的,上述处理器还可以执行如下步骤的程序代码:识别每个功能处理模块的触发命令,其中,触发命令用于触发功能处理模块产生触发事件;识别触发命令的发起对象和基于触发命令产生的事件类型,其中,发起对象包括:单个功能用户,事件类型包括:单个事件和事件组,事件组包括多个事件;在发起对象为单个功能用户,且事件类型为单个事件的情况下,将基于触发命令产生的单个事件确定为触发事件。
[0140] 可选的,上述处理器还可以执行如下步骤的程序代码:在检测触发命令的发起对象和基于触发命令产生的事件类型之后,在发起对象为单个功能用户,且事件类型为事件组的情况下,将事件组中的多个事件拆分为多个单个事件;在拆分的单个事件中识别触发事件。
[0141] 可选的,上述处理器还可以执行如下步骤的程序代码:获取每个功能处理模块的兴趣对象,其中,兴趣对象为触发事件的发起对象感兴趣的数据,触发事件用于指示功能处理模块对兴趣对象的至少一个预设数据包进行数据移动,每次数据移动用于移动一个预设数据包;统计每个功能处理模块基于触发事件进行数据移动的移动次数;根据每个功能处理模块进行数据移动的移动次数,确定预设数据包的移动数量。
[0142] 可选的,上述处理器还可以执行如下步骤的程序代码:基于每个功能处理模块的移动数量,确定每个功能处理模块的复杂度;累计功能模块集合中至少一个功能处理模块的复杂度之和,确定功能模块集合的整体复杂度;使用功能模块集合的整体复杂度,描述待度量软件的功能规模。
[0143] 采用本发明实施例,提供了一种功能规模的度量方案,通过获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量,确定待度量软件的功能规模,从而根据待度量软件对预设数据包的移动数量评估待度量软件的功能规模,实现了准确度量功能规模的技术效果,进而解决了度量功能规模不够准确技术问题。度量功能规模不够准确
[0144] 本领域普通技术人员可以理解,图5所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternetDevices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,计算机终端50还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置。
[0145] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一非易失性介质中,非易失性存储介质可以包括:闪存盘、只读存储器(Read‑Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0146] 本发明的实施例还提供了一种非易失性存储介质。可选地,在本实施例中,上述非易失性存储介质可以用于保存上述实施例所提供的功能规模的度量方法所执行的程序代码。
[0147] 可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
[0148] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:获取待度量软件的功能模块集合,其中,功能模块集合包括:待度量的至少一个功能处理模块,功能处理模块为待度量软件中独立执行数据移动的基本部件,功能处理模块基于触发事件进行数据移动;识别每个功能处理模块的触发事件,其中,功能处理模块基于不同的触发事件执行数据移动的次数不同,且每次进行数据移动的预设数据包不同;确定每个功能处理模块基于触发事件对预设数据包进行数据移动的移动数量;累计功能模块集合中至少一个功能处理模块的移动数量之和,确定待度量软件的功能规模。
[0149] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:在获取待度量软件的功能模块集合之前,获取待度量软件的度量策略,其中,度量策略至少包括:功能用户、颗粒度层级、度量精度和待度量功能范围,功能用户用于发起触发事件,颗粒度层级用于指示能够触发功能处理模块的触发事件为单个事件,且每个触发事件由单个功能用户发起,度量精度用于指示功能规模的度量单位,度量单位用于指示预设数据包的数据类型,待度量功能范围用于指示需要对待度量软件进行度量的至少一项数据移动功能,每项数据移动功能通过对应的功能处理模块实现。
[0150] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:获取待度量软件的用户功能需求,其中,用户功能需求用于指示待度量软件需要实现的至少一个数据处理功能,数据处理功能包括:用于进行数据运算的第一功能和用于进行数据移动的第二功能;识别用户功能需求中的至少一个第二功能;将待度量软件中用于实现第二功能的基础部件,确定为功能处理模块;将至少一个功能处理模块,确定为功能模块集合。
[0151] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:识别每个功能处理模块的触发命令,其中,触发命令用于触发功能处理模块产生触发事件;识别触发命令的发起对象和基于触发命令产生的事件类型,其中,发起对象包括:单个功能用户,事件类型包括:单个事件和事件组,事件组包括多个事件;在发起对象为单个功能用户,且事件类型为单个事件的情况下,将基于触发命令产生的单个事件确定为触发事件。
[0152] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:在检测触发命令的发起对象和基于触发命令产生的事件类型之后,在发起对象为单个功能用户,且事件类型为事件组的情况下,将事件组中的多个事件拆分为多个单个事件;在拆分的单个事件中识别触发事件。
[0153] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:获取每个功能处理模块的兴趣对象,其中,兴趣对象为触发事件的发起对象感兴趣的数据,触发事件用于指示功能处理模块对兴趣对象的至少一个预设数据包进行数据移动,每次数据移动用于移动一个预设数据包;统计每个功能处理模块基于触发事件进行数据移动的移动次数;根据每个功能处理模块进行数据移动的移动次数,确定预设数据包的移动数量。
[0154] 可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:基于每个功能处理模块的移动数量,确定每个功能处理模块的复杂度;累计功能模块集合中至少一个功能处理模块的复杂度之和,确定功能模块集合的整体复杂度;使用功能模块集合的整体复杂度,描述待度量软件的功能规模。
[0155] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0156] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0157] 在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0158] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0159] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0160] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的非易失性存储介质包括:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0161] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。