首页> 中国专利> 一种基于SVN日志的程序员工作状态过程评价方法及系统

一种基于SVN日志的程序员工作状态过程评价方法及系统

摘要

本发明涉及一种基于SVN日志的程序员工作状态过程评价方法及系统,属于程序员工作状态评价技术领域。本发明的核心思想是以程序员操作特征、当前任务特征、和程序员能力特征为输入,借助决策树模型对程序员每天工作状态进行客观评价。具体为,部署在SVN服务器的数据采集模块实时采集程序员SVN操作日志并计算一组操作特征,通过消息中间件将这些特征传输到后台服务器数据接收模块。在接收到这些操作特征以后,状态评估模块以程序操作特征、任务特征和能力特征为输入,对程序员当前工作状态进行评价。本发明为管理人员提供一张图的视角,对程序员的工作状态在时间上进行细粒度的过程性评价,对项目管理和工作效率的提升起到了积极的作用。

著录项

  • 公开/公告号CN114819502A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 云南师范大学;

    申请/专利号CN202210302535.9

  • 发明设计人 熊文;罗敏;王星苏;

    申请日2022-03-25

  • 分类号G06Q10/06(2012.01);G06F16/18(2019.01);G06K9/62(2022.01);

  • 代理机构昆明明润知识产权代理事务所(普通合伙) 53215;

  • 代理人王鹏飞

  • 地址 650500 云南省昆明市呈贡区聚贤街768号

  • 入库时间 2023-06-19 16:12:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-16

    实质审查的生效 IPC(主分类):G06Q10/06 专利申请号:2022103025359 申请日:20220325

    实质审查的生效

说明书

技术领域

本发明涉及一种基于SVN日志的程序员工作状态过程评价方法及系统,属于程序员工作状态评价技术领域。

背景技术

目前的软件开发部门中,一个部门经理(管理人员)通常要管理多个项目,每个项目经理管理十多名程序员(开发工程师或测试工程师),共同负责一个或多个软件开发项目。软件开发部门涉及多个软件项目,每个项目涉及到设计、开发、测试和部署等多个环节。

对于一个中小型软件企业来讲,普遍存在的情况是:项目管理和开发过程不够规范,程序员技术水平和规范意识都参差不齐,且沟通效率不高。程序员是项目执行的主体,管理人员往往不能及时了解程序员工作状态,导致项目进度受到影响。因此,程序员工作状态过程性评价和管理显得尤为重要。

管理人员细粒度(例如按天)的方式了解程序员岗位等级、当前任务难度如何、工作效率、是否出现异常情况。对于提升项目管理能力,队伍能力建设有着积极的作用。但是,管理人员想要了解上百名工程师每天的工作状态是一件几乎不可能事情。如果上百名工程师每天都做一次工作汇报,整个部门无法承担这样的管理成本。

目前,管理人员只能借助相关工具间隔一段时间(例如一周)的周报或口头汇报了解项目进展和每位工程师进展。这种粗粒度方式不利于项目的推进和工作效率的提升,这种缺少过程评价的方式掩盖了一些不利因素,有可能会导致项目延迟交付。由于软件开发过程可见性不高、项目经理管理能力、工程师个人素质等多种原因,普遍存在这样的问题:

(1)部分开发工程师可能一整天都没有提交代码,测试工程师可能一整天都没有更新测试报告;

(2)项目经理对上述知情与否,是否有进行积极的干预,管理人员都无从得知。这种情况的存在不利于项目按正常进度推进,也不利于提升团队的工作效率。对于管理人员来讲,迫切需要一种实时低成本的“一张图”可视化界面评价工程师每天的工作状态。

SVN是一款流行的多人协作软件开发版本管理工具,软件开发团队使用设计文档、源代码、bug追踪,只要团队成员有代码更新、文档更新,在SVN中都会有对应的记录。通过对SVN操作记录的实时监控和量化分析,使管理人员细粒度的下属每天的工作状态成为可能。

专利“CN201810771505.6,一种基于计算机辅助的程序员绩效评定的方法”从评定规则出发,结合自评和他评的视角,提出了一种多因子加权平均的绩效量化评定方法。该方法是针对阶段性结果的绩效评定方法(例如按月对程序员绩效评定),而不是细粒度(例如按天) 过程性的评价方法。

专利“CN202011443298.5,基于SVN日志差异文件分析的代码量计算的方法”提出了通过“SVNdiff”命令计算两个不同版本间的代码差异量。该方法考虑的也是间隔一段时间完成的代码量,不是时间细粒度的评价。另外,仅依据代码量也不能客观反映工程师的工作状态。

综上所述,现有技术中存在两个缺陷,分别是:

一、缺少细粒度过程性评价。已有的方法无法准确回答以下这些问题:开发工程师今天是否有提交代码,代码量有多少,是否有修改bug,测试工程师是否有提交测试报告。

二、无法实施大规模实时评价。在已有的方法前提下,一个管理员想了解整个部门一百名工程师每天的工作状态,管理成本太高。

因此,目前急需一种采用细粒度过程性评价、并且可以进行大规模实时评价的评价方法。

发明内容

本发明要解决的技术问题是提供一种基于SVN日志的程序员工作状态过程评价方法及系统,通过实时采集SVN操作日志,计算程序员执行Checkout、Checkin的次数,代码更新量、文档规范性等行为特征。结合程序员岗位级别、历史工作效率、负责模块的难易程度和对应工作量等客观因素,通过部门内普遍认可的一系列规则来综合判断程序员每天的工作状态。为管理人员提供全局一张图,了解每位工程师的每天工作状态,每个项目组及时响应的能力,提升部门管理水平,提升团队执行力。

一种基于SVN日志的程序员工作状态过程评价系统,包括:

数据采集单元,用于实时监控SVN系统运行日志并对系统产生的新的操作日志进行采集,根据操作日志信息得到程序员行为特征,将行为特征打包成一条消息记录,并将消息记录进行编码后,提交到数据发送单元。

所述行为特征为SVN系统记录的程序员的操作行为特征。

所述消息记录为程序员操作行为特征的消息记录。

数据发送单元,用于接收数据采集单元采集的消息记录,并将消息记录发送到消息中间件Kafka。

消息中间件Kafka,用于接收和临时保存数据发送单元发送的数据,并通知数据接收单元获取数据。

数据接收单元,用于实时从消息中间件Kafka的发布/订阅功能实时获取消息记录,并将这些消息记录保存在存储单元。

数据存储单元,用于根据存储规则对行为特征数据进行存储。

指标配置单元,用于将程序员的岗位特征和当前工作任务的任务特征进行配置。

指标评价单元,用于将程序员的行为特征、程序员的能力特征和当前任务特征输入到决策树中,构建评价模型,通过评价模型对程序员的工作状态进行评价。

所述系统还包括用户交互单元,是用户和系统之间的交互界面,用于向指标配置单元和评价指标计算单元发送指令,还用于显示评价指标计算单元输出的评价结果,提供显示功能。

所述数据采集单元和数据发送单元同时部署在SVN系统的节点上,并且可以部署在多个 SVN系统的节点上。

所述消息中间件Kafka是一个开源分布式的消息中间件,可以为分布式环境下消息中间件的生产者和消费者等多个参与者提供高效、稳定和可靠的消息传递功能。

所述数据接收单元,数据存储单元,指标配置单元,指标评价单元和交互单元可以部署在一个工作节点上。

一种基于SVN日志的程序员工作状态过程评价方法,采用所述的基于SVN日志的程序员工作状态过程评价系统,具体步骤为:

Step1:通过数据采集单元采集程序员在SVN系统上的操作日志,即程序员的行为特征。

所述程序员的行为特征包括但不限于:源代码Checkout次数、源代码Checkin次数、新增加代码数量、修改代码数量、删除代码数量、代码的注释内容、修改bug的数量、测试文档Checkout次数、测试文档Checkin次数、对已经修改bug的再测试的次数。

Step2:获取程序员的岗位能力特征和当前任务的特征,并对程序员的岗位能力特征和当然任务的分级特征进行配置。

所述程序员能力特征包括岗位等级(高级、中级和初级),历史工作能力(效率高、效率一般)。程序员当前承担的任务特征可以分为当前任务难度(难、一般、简单),代码可表达性(难、一般、简单)、预期完成时间(一周、两周、四周等)。

所述程序员的能力特征包括程序员的能力等级。

所述程序员能力等级可以由程序员掌握的编程语言数量和熟练程度、程序员在公司内部的岗位等级确定。

所述当前任务的特征包括:当前任务难度(难、一般、简单)、代码可表达性(难、一般、简单)、预期完成时间(一周、二周、四周等)。

Step3:将程序员的操作行为特征、程序员的能力特征、当前任务的特征进行状态标记,然后输入到决策树中,构建评价模型,通过评价模型对程序员当前的工作状态进行评价,并输出程序员的当前工作状态,实时完成状态评价。

程序员工作状态的评价,其核心是构建评价模型。评价模型的输入是程序员在SVN上的操作行为特征、程序员的能力特征和当前任务的特征,评价模型的输出是程序员工作状态。为了构建评价模型,首先要进行特征采集和状态标记,形成样本数据。此处的数据采集通过整个流程进行采集、标记由通过部门内部一个普遍接收的合理规则来进行人工标记。

所述状态标记为将所有特征按照等级划分进行标记。例如分为高效、效率较高、正常、效率较低、低效等五个等级。

所述构建评价模型具体为:

所述程序员的行为特征和能力特征、当前任务的特征形成一个向量

所述设定的时间周期后,所有特征和状态形成了一个矩阵A

本发明采用决策树(Decision Tree)构建状态评价模型。通过决策树建立起三种特征和程序员工作状态之间的关系。

矩阵A

在训练集D中,属性集合为A={属性1、属性2、…属性N},标签集合为R={等级1、等级2、…等级M},N个等级将训练集中的所有样本分为了M个子类。|D|指的是训练集D 中的样本的个数。

构建评价模型所需计算公式分别为:

类别信息熵:

属性的条件熵:

其中,A代表属性,属性有v个不同取值,将训练集D划分为v个类别。

信息增益:

Gain(A)=Infor(D)-Infor

信息增益为类别信息熵和条件熵的差。

对信息增益进行规范化,得到分裂信息,分裂信息的计算过程类似于Infor(D),具体为:

信息增益率是对信息增益的扩充,可以克服信息增益产生的偏倚,计算方法如公式(5) 描述。

GainRatio(A)=Gain(A)/SplitInfor(A) (5)

引入信息增益率,会使得结果更准确。

模型的构建过程如下:

Step3.1:构建一颗空树Tree,用于保存最终结果。

Step3.2:根据分类个数判断D是否可以进一步划分:

若只有1个类,则跳转Step3.9。

若有两个及以上的类,则跳转Step3.3。

Step3.3:遍历D中的所有属性,根据公式GainRatio(A)=Gain(A)/SplitInfor(A)为每个属性计算信息增益率。

Step3.4:选择信息增益最大的属性A。

Step3.5:以属性A为创建节点,作为Tree的根节点。

Step3.6:根据A的属性取值,产生子集划分D(v)。

Step3.7:遍历D(v)中的每一个子集,以子集为输入构建子树,将子树加入Tree。

Step3.8:返回Tree。

Step3.9:结束。

所述评价模型被部署在工作节点的评价指标计算单元中,程序员对SVN的操作、下班时间18:00、晚24点都会触发模型的调用。

本发明的有益效果是:本发明可以对程序员细粒度工作状态进行过程性评价,提升了个人和团队的工作作效率;部门管理者可以通过一张图的方式实时了解整个部门所有程序员的工作状态,极大的降低了管理成本;

附图说明

图1是本发明的步骤流程图;

图2是本发明中构建评价模型的步骤流程图。

具体实施方式

下面结合附图和具体实施方式,对本发明作进一步说明。

如图1所示,一种基于SVN日志的程序员工作状态过程评价系统,包括:

数据采集单元,用于实时监控SVN系统运行日志并对系统产生的新的操作日志进行采集,根据操作日志信息得到程序员的行为特征,将程序员的行为特征打包成一条消息记录,并将消息记录进行编码压缩后,提交到数据发送单元。

所述行为特征为SVN系统记录的程序员的操作行为特征。

所述消息记录为程序员操作行为特征的消息记录。

所述程序员的行为特征如表1所示:

表1

所述程序员的行为特征包括但不限于表1中的内容。其中表1中第1至8项为程序员行为数据,第9至11项为测试工程师行为数据。数据采集单元将时间戳、项目名称、用户名、行为特征等字段打包成一条消息记录,并将记录进行编码压缩后,提交到数据发送单元。

数据发送单元。用于接收数据采集单元采集的消息记录,并将消息记录发送到消息中间件Kafka。在数据发送单元首次使用消息中间件Kafka时,创建消息中间件的生产者对象,生产者对象会通过网络连接Kakfa集群,数据发送单元通过生产者对象向Kafka提交消息。

消息中间件Kafka,用于接收和临时保存数据发送单元发送的数据,并通知数据接收单元获取数据。本发明利用Kafka进行可靠、高效、稳定的网络数据传输。运行在SVN所在节点的数据发送单位即为消息中间件的生产者,运行在工作节点的数据接收单元为消息中间件的消费者。

数据接收单元,用于实时从消息中间件Kafka的发布/订阅功能实时获取消息记录,并将这些消息记录保存在存储单元。在数据接收单元首次使用消息中间件Kafka时,创建消息中间件的消费者对象,并告知Kafka自己关注的话题。消费者对象会通过网络连接Kakfa集群,当Kafka接收到消息时,会通知消费者获取消息。数据接收单元通过消费者获取消息。

数据存储单元,用于根据存储规则对行为特征数据进行存储。例如按时间戳、项目、用户名、行为特征存储数据,数据存储单元可以是一个轻量级的本地关系型数据库管理系统,例如Access,SQLlite。

指标配置单元,用于将程序员的能力特征和当前工作任务的特征进行配置。包括但不限于表2中的特征,程序员的能力特征有程序员岗位等级、历史工作能力。当前任务相关的特征有:任务难度,代码可表达性,预期完成时间。

表2

指标评价单元,用于将程序员的行为特征、程序员的能力特征和当前任务特征输入到决策树中,构建评价模型,通过评价模型对程序员的工作状态进行评价。

具体的说,指标评价单元从数据存储单元读取表1中的数据,结合配置单元中表2配信息,使用决策树的方式来判断程序员的状态。程序员的工作状态有:非常高效、较高效率、正常、一般、低效、异常等五个等级。

所述系统还包括用户交互单元,是用户和系统之间的交互界面,用于向指标配置单元和评价指标计算单元发送指令,还用于显示评价指标计算单元输出的评价结果,提供显示功能。

所述数据采集单元和数据发送单元同时部署在SVN系统的节点上,并且可以部署在多个 SVN系统的节点上。

所述数据接收单元,数据存储单元,指标配置单元,指标评价单元和交互单元可以部署在一个工作节点上。

一种基于SVN日志的程序员工作状态过程评价方法,具体步骤为:

Step1:程序员操作SVN,执行Checkin操作。

Step2:数据采集单元通过SVN日志捕获Checkin操作,采集程序员在SVN系统上的操作日志,即程序员的行为特征,形成记录(例如时间、用户、操作描述)。由数据发送单元提交到消息中间件Kafka。

Step3:消息中间件Kafka通知数据接收单元获取消息。

Step4:数据接收单元从Kafka获取消息,保存在数据存储单元,并通知指标评价单元开始工作。

Step5:指标评价单元在数据存储单元中获取当天该用户(程序员)的所有操作特征,读取程序员的能力特征以及当前任务的等级特征。以这三个特征为输入,构建评价模型。评价模型的工作过程如图2所示。

Step6:评价模型将输出保存在数据存储单元中,也将评价结果显示在用户交互单元中。

所述程序员的行为特征包括但不限于:源代码Checkout次数、源代码Checkin次数、新增加代码数量、修改代码数量、删除代码数量、代码的注释内容、修改bug的数量、测试文档Checkout次数、测试文档Checkin次数、对已经修改bug的再测试的次数。

所述程序员的能力特征包括程序员的能力等级和历史任务记录。

所述前任务的特征包括:当前任务难度、代码可表达性、预期完成时间。

所述状态标记为将所有特征按照等级划分进行标记。

所述构建评价模型具体为:

所述程序员的行为特征和能力特征、当前任务的特征形成一个向量

所述设定的时间周期后,所有特征和状态形成了一个矩阵A

矩阵A

在训练集D中,属性集合为A={属性1、属性2、…属性N},标签集合为R={等级1、等级2、…等级M},N个等级将训练集中的所有样本分为了M个子类。|D|指的是训练集D 中的样本的个数。

构建评价模型所需计算公式分别为:

类别信息熵:

属性的条件熵:

其中,A代表属性,属性有v个不同取值,将训练集D划分为v个类别。

信息增益:

Gain(A)=Infor(D)-Infor

信息增益为类别信息熵和条件熵的差。

对信息增益进行规范化,得到分裂信息,分裂信息的计算过程类似于Infor(D),具体为:

信息增益率是对信息增益的扩充,计算方法如公式(5)描述。

GainRatio(A)=Gain(A)/SplitInfor(A) (5)

模型的构建过程如下:

Step5.1:构建一颗空树Tree,用于保存最终结果。

Step5.2:根据分类个数判断D是否可以进一步划分:

若只有1个类,则跳转Step5.9。

若有两个及以上的类,则跳转Step5.3。

Step5.3:遍历D中的所有属性,根据公式GainRatio(A)=Gain(A)/SplitInfor(A)为每个属性计算信息增益率。

Step5.4:选择信息增益最大的属性A。

Step5.5:以属性A为创建节点,作为Tree的根节点。

Step5.6:根据A的属性取值,产生子集划分D(v)。

Step5.7:遍历D(v)中的每一个子集,以子集为输入构建子树,将子树加入Tree。

Step5.8:返回Tree。

Step5.9:结束。

实施例2:在实施例的基础上,在某公司进行实施,该公司有在线网络游戏和物联网两个方面的业务。目前软件开发部门超过100多名工程师。部署了3个SVN服务器,平均15个项目组。通过该发明的技术方案,部门管理人员可以实时查看,并借助于该解决方案快对程序员工作状态进行过程性评价。系统实施以来,项目执行能力得到明显的提升,发现问题也更及时。

具体的实施过程为:

(1)使用三台计算机作为消息中间件,配置好消息中间件Kafka,启动Kafka,创建消息话题。

(2)在SVN服务器上分别部署数据采集单元和数据发送单元,配置好Kafka的IP地址,端口号,关注话题。

(3)选取一台服务器,部署好数据接收单元,数据存储单元,配置单元,指标评价计算单元和交互式单元等5个组件。并为数据接收单元配置好Kafka的IP地址,端口号,关注话题。

(4)启动数据接收单元,使用Kafka配置信息,初始化消费者对象,建立到Kafka的连接。

(5)启动数据发送单元,使用Kafka配置信息,初始化生产者对象,建立到Kafka的连接。

(6)数据采集模块使用python实现,以自动化脚本方式定时获取SVN的操作日志,并通过自定义规则计算程序员行为特征,将行为特征打包变成消息,提交给数据发送模块。

(7)数据发送模块将消息提交到消息中间件Kafka。

(8)数据接收模块从消息中间件Kafka获取消息。

(9)评价指标单元在收到行为特征以后,结合程序员岗位特征和任务特征。使用决策树模型进行程序员工作状态评价,评价结果会实时显示在交互单元。

以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号