KR102004486B1 - Automated developer capability analysis system using developer's code output - Google Patents

Automated developer capability analysis system using developer's code output Download PDF

Info

Publication number
KR102004486B1
KR102004486B1 KR1020190007263A KR20190007263A KR102004486B1 KR 102004486 B1 KR102004486 B1 KR 102004486B1 KR 1020190007263 A KR1020190007263 A KR 1020190007263A KR 20190007263 A KR20190007263 A KR 20190007263A KR 102004486 B1 KR102004486 B1 KR 102004486B1
Authority
KR
South Korea
Prior art keywords
developer
test
slope
error
development
Prior art date
Application number
KR1020190007263A
Other languages
Korean (ko)
Inventor
성종형
Original Assignee
주식회사 종달랩
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 종달랩 filed Critical 주식회사 종달랩
Priority to KR1020190007263A priority Critical patent/KR102004486B1/en
Application granted granted Critical
Publication of KR102004486B1 publication Critical patent/KR102004486B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0639Performance analysis of employees; Performance analysis of enterprise or organisation operations
    • G06Q10/06398Performance of employee with respect to a job function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Game Theory and Decision Science (AREA)
  • Stored Programmes (AREA)

Abstract

The present invention relates to an automated developer capability analysis system using a code output of a developer, which analyzes whether developers write a source according to a standard development guideline in a step before or after a process of compiling and building a source code in a cloud-based development environment, so as to calculate an error rate, and which analyzes whether developers create how many unit test codes which can be tested, so as to calculate a test rate, thereby analyzing a development capability of a developer with numerical data and providing the same. According to the present invention, inclination for the error rate is cumulatively measured whenever a developer uploads a source code in a development integration server, and when the inclination for the error rate is continuously decreased, it is possible to evaluate that a standard compliance degree for development is increased. Also, inclination for the test rate is cumulatively measured, and when the inclination for the test rate is continuously increased, it is possible to evaluate that proportion of a test code is gradually increased during development.

Description

개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템{AUTOMATED DEVELOPER CAPABILITY ANALYSIS SYSTEM USING DEVELOPER'S CODE OUTPUT}BACKGROUND OF THE INVENTION 1. Field of the Invention [0001] The present invention relates to an automated developer capability analysis system using a developer's code output,

본 발명은 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템에 관한 것으로, 더욱 상세하게는 클라우드 환경에서 개발자가 업로드 한 소스 코드가 정적분석(static analysis)인 코딩 규칙에 입각하여 작성됐는지 그리고 테스트가 가능한 단위테스트(unit test) 코드를 얼마나 만들었는지 등을 분석함으로써 개발자의 개발 능력을 평가할 수 있는 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템에 관한 것이다.The present invention relates to an automated developer capability analysis system using a developer's code output. More particularly, the present invention relates to a developer's capability analysis system using a developer's ability to analyze a source code of a developer in a cloud environment based on a static analysis coding rule, And an ability to analyze the developer's ability by analyzing how much code is available and how much unit test code was made.

종래에는 헤드헌터들이 개발자의 경력 등을 참고하여 개발자를 추천하는 방식을 이용하고 있었다. 개발자의 경력이 오래되면 실제로 개발자의 개발능력과는 상관없이 개발능력이 중, 상 이상은 되는 것으로 판단하여 개발자를 추천하였다. 다시 말해서, 실제 개발자의 개발능력을 검증하기가 어려운 점이 있었다.In the past, head hunters used a method of recommending a developer by referring to a developer's career. When a developer has a long career, he / she recommends the developer because he / she thinks that his / In other words, it was difficult to verify the development capabilities of actual developers.

또한, 기존의 로컬 개발환경에서 최근에는 클라우드 기반으로 소프트웨어 개발환경이 바뀌고 있으며, 소프트웨어의 기능이 다양하고 복잡해지면서 여러 명의 개발자들이 하나의 프로젝트에 투입되어 개발자 각자가 개발한 모듈을 빌드하고 이를 하나로 모아서 배포하는 형태로 이루어지고 있다.In addition, in the existing local development environment, cloud-based software development environment is changing recently. As the functions of software become diverse and complex, several developers are put into one project to build modules developed by each developer, And the like.

이와 같은 클라우드 개발 환경에서는 협업이 중요해지면서 개발자의 개발능력을 객관적으로 평가할 수 있는 시스템이 더욱 중요해 지고 있다.In this type of cloud development environment, as collaboration becomes more important, a system that can objectively evaluate developer's development capability becomes more important.

기업들이 개발자를 채용하는 과정에서 서류심사와 면접만으로 평가하여 채용하고, 개발자를 투입하였을 때 개발자의 경력에 비해 코딩 능력이 현저히 떨어지는 문제가 발생하기도 한다.In the process of recruiting developers, companies evaluate and hire them only through document screening and interviews, and when they put in developers, there is a problem that the coding ability is significantly lower than the developer's career.

등록특허 제10-1764890호Patent No. 10-1764890

본 발명은 상기와 같은 문제점을 개선하기 위하여 발명된 것으로, 클라우드(cloud) 기반의 개발환경에서 소스코드를 컴파일하고 빌드하는 과정의 전 또는 후 단계에서 개발자들이 표준 개발 가이드라인에 맞게 소스를 작성했는지 여부를 분석하여 에러율을 산출하고, 테스트가 가능한 단위테스트(unit test) 코드를 얼마나 만들었는지 여부를 분석하여 테스트율을 산출함으로써, 개발자의 개발능력을 수치데이터로 분석하여 제공하는 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템을 제공하기 위한 것이다.SUMMARY OF THE INVENTION The present invention has been made in order to solve the above-mentioned problems, and it is an object of the present invention to provide a method and apparatus for generating a source code in accordance with standard development guidelines in a cloud- And analyzing whether or not a unit test code that can be tested has been made is analyzed to calculate a test rate so that a developer's code result obtained by analyzing a developer's development capability as numerical data To provide an automated developer capability analysis system.

상기와 같은 목적을 달성하기 위하여, 본 발명은 클라우드(cloud) 기반의 개발환경에서 여러 개발자들이 업로드 한 소스코드를 컴파일하고 빌드하는 과정의 전 또는 후 단계에서 개발자들이 표준 개발 가이드라인에 맞게 소스를 작성했는지 분석하는 정적분석(static analysis)을 수행하고, 소스코드의 특정 모듈이 의도된 대로 작동하는지 검증하는 단위테스트(unit test)를 수행하며, 빌드한 코드들을 통합하고 배포하는 개발통합서버; 상기 개발통합서버로부터 정적분석 결과를 가져와서 각 결과 항목별 위험 수준에 따라 가중치를 차등 적용하여 에러 포인트(error point)를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출하는 코드에러검사부; 및 상기 개발통합서버로부터 단위테스트에 관련된 데이터를 가져와서 단위테스트를 수행하기 위해 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율(test rate)을 산출하는 테스트함수검사부를 포함한다.In order to accomplish the above object, the present invention provides a method and system for managing a source code in a cloud-based development environment, A development integration server that performs a static analysis to analyze whether a specific module of the source code is executed, a unit test that verifies whether a specific module of the source code operates as intended, and integrates and distributes the built codes; A static analysis result is obtained from the development integration server, an error point is calculated by applying a weight differently according to the risk level for each result item, and an error point is calculated as a total code number A code error checker for calculating an error rate corresponding to the divided value; And a test rate corresponding to a value obtained by dividing the number of test functions created by the developer for verification into the number of total execution functions of the source code in order to fetch data related to unit tests from the development integration server and perform a unit test, ) Of the test function.

상기 개발통합서버로부터 정적분석 결과를 받아서 소스 코드를 업로드한 개발자 정보, 업로드 일시, 해당 프로젝트의 이름 및 분석 결과에 해당하는 각 구문상 에러(syntax error)의 종류와 개수를 추출 후 상기 코드에러검사부에 전달하고, 상기 개발통합서버로부터 단위테스트(unit test)에 관련된 데이터를 받아서 테스트함수를 작성한 개발자 정보, 해당 프로젝트의 이름 및 테스트함수의 개수를 추출 후 상기 테스트함수검사부에 전달하는 분석데이터추출부를 더 포함하는 것을 특징으로 한다.Extracts the type and number of each syntax error corresponding to the developer information, the date and time of uploading, the name of the project, and the analysis result by receiving the static analysis result from the development integration server, Extracts the developer information that has received the data related to the unit test from the development integration server and creates the test function, extracts the name of the project and the number of the test functions, and transmits the extracted information to the test function checking unit And further comprising:

상기 코드에러검사부는 상기 분석데이터추출부에서 전달받은 개발자의 프로젝트 마다 각 구문상 에러(syntax error)의 종류별 개수에 종류별 위험수준에 따른 가중치를 곱한 값들을 모두 더하여 에러 포인트를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출하고, 상기 테스트함수검사부는 상기 분석데이터추출부에서 전달받은 개발자의 프로젝트 마다 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율을 산출하는 것을 특징으로 한다.The code error checking unit may calculate error points by adding all the values obtained by multiplying the number of each type of syntax error by the weight according to the type of risk for each developer received from the analysis data extracting unit, The error rate corresponding to a value obtained by dividing the total code number uploaded and uploaded so far by the developer, and the test function checking unit determines whether or not the developer A test rate corresponding to a value obtained by dividing the number of test functions by the total number of execution functions of the source code is calculated.

상기 코드에러검사부는 개발자가 소스 코드를 업로드 할 때마다 사용된 프로그래밍 언어를 포함하는 개발환경 별로 에러율을 산출하고, 상기 코드에러검사부가 산출한 시간의 경과에 따른 에러율의 변화 정도를 이용하여 에러율에 대한 기울기를 산출하고 그래프를 이용하여 에러율에 대한 기울기를 시각화하는 기울기산출부를 더 포함하는 것을 특징으로 한다.Wherein the code error checking unit calculates an error rate for each development environment including a programming language used every time a developer uploads a source code and calculates an error rate by using a degree of change of the error rate with the elapse of time calculated by the code error checking unit And a slope calculating unit for calculating a slope for the error rate and visualizing the slope with respect to the error rate using a graph.

상기 코드에러검사부가 산출한 개발환경 별 개발자들의 에러율과 상기 기울기산출부가 산출한 에러율에 대한 기울기 정보를 개발자평가DB에 저장하고, 개발자평가DB에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트하고, 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트하는 에러상대수준평가부를 더 포함하는 것을 특징으로 한다.The error rate of the developers of the development environment calculated by the code error checker and the slope information of the error rate calculated by the slope calculating unit are stored in the developer evaluation DB and the slope values of the error rates of the developers by the development environment stored in the developer evaluation DB are compared If the slope value of a specific developer is larger than the average slope value by a predetermined ratio or more, it is evaluated that the capability is relatively insufficient in the development environment and reported. When the slope value of a specific developer is smaller than a predetermined ratio And an error relative level evaluation unit for evaluating and reporting the capability as relatively superior in the corresponding development environment.

상기 에러상대수준평가부가 개발자평가DB에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트 하거나, 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트 하거나, 능력이 부족과 우수 사이에 해당하는 것으로 평가하는 모든 경우 개발자평가DB에 각각 부족, 우수, 보통을 나타내는 등급으로 표시하여 평가 일시와 함께 기록하고, 개발자들의 개발환경 별 과거 시점부터 현재 일정 시간 동안의 부족, 우수, 보통의 변화 정도를 분석하여 개발자 자신의 절대적인 향상 정도를 리포트하는 에러절대수준평가부를 더 포함하는 것을 특징으로 한다.The error relative level evaluating unit compares the slope value with respect to the error rate of the developer of each development environment stored in the developer evaluation DB to evaluate or report the capability as relatively inadequate in the corresponding development environment, In the case where the evaluation is made between the lack and the capability, the developer evaluation DB is recorded in the developer evaluation DB as a score indicating lack, excellentness, and normal, and recorded together with the evaluation date and time. And an absolute error level evaluation unit for analyzing the degree of shortage, excellentness, and normal change over a predetermined period of time and reporting the degree of absolute improvement of the developer himself / herself.

상기 테스트함수검사부는 개발자가 소스 코드를 업로드 할 때마다 사용된 프로그래밍 언어를 포함하는 개발환경 별로 테스트율을 산출하고, 상기 기울기산출부는 상기 테스트함수검사부가 산출한 시간의 경과에 따른 테스트율의 변화 정도를 이용하여 테스트율에 대한 기울기를 산출하고 그래프를 이용하여 테스트율에 대한 기울기를 시각화하는 것을 특징으로 한다.Wherein the test function checking unit calculates a test rate for each development environment including a programming language used each time a developer uploads a source code, and the slope calculating unit calculates a test rate for each test environment, And the slope of the test rate is visualized by using the graph.

상기 테스트함수검사부가 산출한 개발환경 별 개발자들의 테스트율과 상기 기울기산출부가 산출한 테스트율에 대한 기울기 정보를 개발자평가DB에 저장하고, 개발자평가DB에 저장된 개발환경 별 개발자들의 테스트율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트하고, 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트하는 테스트상대수준평가부를 더 포함하는 것을 특징으로 한다.The slope information on the test rate calculated by the test function checker and the test rate calculated by the slope calculating unit is stored in the developer evaluation DB, and the slope of the test rate of the developers according to the development environment stored in the developer evaluation DB If the slope value of a specific developer is larger than the average slope value by more than a predetermined ratio, the performance is evaluated as being relatively superior in the development environment, and the slope value of the specific developer is compared with the average slope value at a predetermined ratio And a test relative level evaluating unit for evaluating and reporting that the capability is relatively insufficient in the development environment when the test result is small.

상기와 같은 구성의 본 발명에 따르면, 다음과 같은 효과를 도모할 수 있다.According to the present invention having the above-described configuration, the following effects can be achieved.

우선, 클라우드 기반의 개발통합서버로부터 개발자들이 업로드 한 소스코드에 대한 정적분석 결과를 가져와서 항목별 위험 수준에 따라 가중치를 적용하여 에러율을 산출함으로써 표준 개발 가이드라인에 맞게 소스를 작성했는지 평가할 수가 있다. 이를 통해서 개발자가 해당 개발환경에서 얼마나 깔끔하게 코딩을 했는지를 평가할 수가 있다.First, static analysis results of source code uploaded by developers from cloud-based development integration server can be obtained, and we can calculate the error rate by applying weights according to the item-specific risk level to evaluate whether the source is written according to the standard development guidelines . This allows developers to evaluate how cleanly they code in their development environment.

또한, 클라우드 기반의 개발통합서버로부터 개발자들이 업로드 한 소스코드에 대한 단위테스트 데이터를 가져와서 개발자가 검증용으로 작성한 테스트함수의 개수를 이용하여 코드 테스트율을 산출함으로써 개발자가 검증용 단위테스트 코드를 얼마나 만들었는지를 평가할 수가 있다. 이를 통해서 개발자 스스로가 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증을 하였는지를 평가할 수가 있다.Also, by taking the unit test data of the source code uploaded by the developers from the cloud-based development integration server, the developer calculates the code test rate by using the number of test functions created by the developer for verification, You can evaluate how much you have made. This allows developers to assess whether a particular module in the source code has verified that it works exactly as intended.

결국, 개발자가 소스코드를 개발통합서버에 업로드 할 때마다 에러율에 대한 기울기를 누적 측정하여 에러율에 대한 기울기가 지속적으로 낮아지는 경우는 개발에 대한 표준준수정도가 높아지고 있다고 평가할 수 있고, 테스트율에 대한 기울기를 누적 측정하여 테스트율에 대한 기울기가 지속적으로 높아지는 경우는 개발시에 테스트 코드에 대한 비중이 점차적으로 높아지고 있다고 평가할 수 있다.As a result, when the developer uploads the source code to the development integration server, the slope of the error rate is measured cumulatively, and if the slope of the error rate is continuously lowered, If the gradient of the test rate is continuously increased, the proportion of the test code is gradually increasing at the time of development.

도 1은 본 발명에 따른 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템의 구성도
도 2는 본 발명에 따른 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템을 구성하는 개발자 분석시스템의 구체적인 기능 블록도
도 3은 본 발명에 따른 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템을 실행하여 에러율(error rate)의 기울기와 테스트율(test rate)의 기울기를 나타낸 그래프
1 is a block diagram of an automated developer capability analysis system using a developer's code output according to the present invention;
2 is a functional block diagram of a developer analysis system constituting an automated developer capability analysis system using a developer's code output according to the present invention
3 is a graph showing the slope of the error rate and the slope of the test rate by executing an automated developer capability analysis system using the developer's code output according to the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되는 실시 예를 참조하면 명확해질 것이다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention, and how to accomplish them, will become apparent by reference to the embodiments described in detail below with reference to the accompanying drawings.

그러나, 본 발명은 이하에서 개시되는 실시 예로 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이다.However, the present invention is not limited to the embodiments disclosed below, but may be embodied in various forms.

본 명세서에서 본 실시 예는 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.The present embodiments are provided so that the disclosure of the present invention is thoroughly disclosed and that those skilled in the art will fully understand the scope of the present invention.

그리고 본 발명은 청구항의 범주에 의해 정의될 뿐이다.And the present invention is only defined by the scope of the claims.

따라서, 몇몇 실시 예에서, 잘 알려진 구성 요소, 잘 알려진 동작 및 잘 알려진 기술들은 본 발명이 모호하게 해석되는 것을 피하기 위하여 구체적으로 설명되지 않는다.Thus, in some embodiments, well known components, well known operations, and well-known techniques are not specifically described to avoid an undesirable interpretation of the present invention.

또한, 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하고, 본 명세서에서 사용된(언급된) 용어들은 실시 예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다.In addition, throughout the specification, like reference numerals refer to like elements, and the terms (mentioned) used herein are intended to illustrate the embodiments and not to limit the invention.

본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함하며, '포함(또는, 구비)한다'로 언급된 구성 요소 및 동작은 하나 이상의 다른 구성요소 및 동작의 존재 또는 추가를 배제하지 않는다.In this specification, the singular forms include plural forms unless the context clearly dictates otherwise, and the constituents and acts referred to as " comprising (or having) " do not exclude the presence or addition of one or more other constituents and actions .

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다.Unless defined otherwise, all terms (including technical and scientific terms) used herein may be used in a sense commonly understood by one of ordinary skill in the art to which this invention belongs.

또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 정의되어 있지 않은 한 이상적으로 또는 과도하게 해석되지 않는다.Also, commonly used predefined terms are not ideally or excessively interpreted unless they are defined.

이하, 첨부된 도면을 참고로 본 발명의 바람직한 실시 예에 대하여 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.

도 1 내지 도 3을 참고하면, 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템은 개발통합서버(100)와 개발자 분석시스템(200)을 포함한다. 개발통합서버(100)는 각 개발자가 컴퓨터(300)에서 개발한 소스코드를 업로드 하면 CI(지속적인 통합, Continuous Integration)과 CD(지속적인 배포, Continuous Delivery) 및 정적 분석(Static Analysis)을 수행한다. 예를 들어, 개발자가 소스 코드를 깃허브(Github)에 푸쉬하면 깃허브는 이를 개발통합서버(100)에 알려주며 개발통합서버(100)가 깃허브에서 해당 개발자의 소스 코드를 가져가서 분석을 수행하게 된다. 도 1에서는 깃허브를 도시하지 않았으나, 개발통합서버(100)는 개발자 컴퓨터(300)로부터 직접 소스코드를 업로드 받을 수도 있고, 깃허브를 통해서 받을 수도 있다.Referring to FIGS. 1 to 3, an automated developer capability analysis system using a developer's code output includes a development integration server 100 and a developer analysis system 200. The development integration server 100 performs CI (Continuous Integration), CD (Continuous Distribution), and static analysis (Static Analysis) when each developer uploads the source code developed by the computer 300. For example, when the developer pushes the source code to the Github, the target hub notifies the development integration server 100 that the development integration server 100 takes the developer's source code from the target hub and performs analysis . Although the feather hub is not shown in FIG. 1, the development integration server 100 can directly receive the source code from the developer computer 300 or through the feather hub.

SW 공학에 있어 지속적인 통합(Continuous Integration)은 개발팀의 각 멤버에게 수정된 코드가 통합, 빌드(Build), 테스트가 제대로 되었는지 확인시켜주는 기술이다.Continuous integration in SW engineering is a technique that ensures that the modified code is integrated, built and tested by each member of the development team.

지속적인 배포(Continuous Delivery)는 코드가 모든 테스트를 통과하여 배포 가능한 품질을 갖도록 하는 것을 목표로 한다.Continuous Delivery aims to ensure that code passes all tests and has a distributable quality.

정적 분석(Static Analysis)은 코딩 규칙에 입각하며 버그를 줄여 코드의 품질을 향상시킬 수 있는 자동화된 분석이다. 개발통합서버(100)는 이 세가지 기술(CI, CD, 정적 분석)을 함께 적용함으로써 코드 품질을 향상시키고 개발 비용을 절감할 수 있으며 프로젝트 예측을 용이하게 할 수 있다.Static analysis is an automated analysis that can be based on coding rules and improve the quality of the code by reducing bugs. The development integration server 100 can improve the code quality, reduce the development cost, and facilitate project prediction by applying the three technologies (CI, CD, static analysis) together.

개발자 분석시스템(200)은 코드에러검사부(210) 및 테스트함수검사부(220)를 포함하고, 분석데이터추출부(230), 기울기산출부(240), 에러상대수준평가부(250), 에러절대수준평가부(260), 테스트상대수준평가부(270), 테스트절대수준평가부(280) 및 개발자평가DB(290)를 더 포함할 수 있다.The developer analysis system 200 includes a code error checking unit 210 and a test function checking unit 220 and includes an analysis data extracting unit 230, a slope calculating unit 240, an error relative level estimating unit 250, Level evaluator 260, a test-relative-level evaluator 270, a test absolute-level evaluator 280, and a developer evaluation DB 290. [

개발통합서버(100)와 개발자 분석시스템(200)의 기능을 구체적으로 살펴보면 다음과 같다.Functions of the development integration server 100 and the developer analysis system 200 will be described in detail as follows.

개발통합서버(100)는 클라우드(cloud) 기반의 개발환경에서 여러 개발자들이 컴퓨터(300) 또는 기타 단말을 통해 업로드 한 소스코드를 컴파일하고 빌드하는 과정의 전 또는 후 단계에서 개발자들이 표준 개발 가이드라인에 맞게 소스를 작성했는지 분석하는 정적분석(static analysis)을 수행하고, 소스코드의 특정 모듈이 의도된 대로 작동하는지 검증하는 단위테스트(unit test)를 수행하며, 빌드한 코드들을 통합하고 배포한다.The development integration server 100 may allow developers to use the standard development guidelines or the standard development guidelines before or after the process of compiling and building source code that is uploaded by a plurality of developers through the computer 300 or other terminals in a cloud- Perform a static analysis to analyze whether the source is written according to the source code, perform a unit test to verify that the specific module of the source code works as intended, and integrate and distribute the built code.

정적분석을 통해 개발자가 해당 개발환경에서 얼마나 깔끔하게 코딩을 했는지를 평가할 수가 있다. 즉, 개발통합서버(100)는 각 개발환경 및 개발언어에 맞는 체크 함수를 가지고 개발자의 소스 코드에 대해 구문에러(syntax error)를 체크하여 치명적인 수정사항(Critical)이 얼마나 있는지, 경고(Warning)는 얼마나 있는지, 참조(Reference)는 얼마나 있는지 체크한다.Static analysis can be used to assess how cleanly the developer has coded in the development environment. That is, the development integration server 100 checks the syntax error of the developer's source code with a check function suitable for each development environment and development language to determine how many critical fixes (Critical) And how many references are there.

치명적인 수정사항(Critical)은 문제가 생길 여지가 많은 코드를 말하며, 경고(Warning)는 문제는 없지만 수정하면 좋은 코드를 말하고, 참조(Reference)는 문제가 없고 수정하지 않아도 되지만, 일반적인 규칙에 어긋나는 코드를 말한다.Critical refers to a lot of code that has a lot of problems, Warning has no problem but it tells you good code to fix, and Reference is no problem and you do not have to fix it. .

단위테스트(unit test)는 개발자가 코드를 검증하기 위하여 스스로 테스트하는 메소드 단위의 테스트를 말한다. 예를 들어, 자바에서 단위테스트는 Junit을 사용해서 수행할 수 있다. 다시 말해서, 소스코드의 특정 모듈이 의도된 대로 정확하게 동작하는지 개발자가 스스로 검증하는 절차를 단위테스트라고 한다.A unit test is a method-by-method test that developers themselves test to verify code. For example, unit tests in Java can be done using Junit. In other words, the process by which the developer self-tests whether a particular module in the source code works as intended is called a unit test.

결국, 정적분석을 통해 구문에러(syntax error)는 적게 나올수록 좋으며, 단위테스트는 많을수록 좋을 것이다.In the end, the less static the syntax error is, the better the better. The more unit tests, the better.

코드에러검사부(210)는 개발통합서버(100)로부터 정적분석 결과를 가져와서 각 결과 항목별 위험 수준에 따라 가중치를 차등 적용하여 에러 포인트(error point)를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출한다.The code error checking unit 210 obtains a static analysis result from the development integration server 100, calculates an error point by applying a weight differently according to the risk level for each result item, And an error rate corresponding to a value obtained by dividing by the total number of codes uploaded and uploaded.

예를 들면, 가중치는 다음과 같이 정의할 수 있다.For example, weights can be defined as follows.

치명적인 수정사항(Critical): 3 point - 문제가 생길 여지가 많은 코드Critical: 3 point - a lot of code that can cause problems

경고(Warning): 2 point - 문제는 없지만 수정하면 좋을 만한 코드Warning: 2 point - Code that does not have a problem but should be corrected

참조(Reference): 1 point - 문제가 없고, 수정하지 않아도 되지만, 일반적인 규칙에는 어긋나는 코드Reference: 1 point - no problem, no need to fix,

코드분석에 따라 나온 모든 결과물에 가중치를 곱한 총합을 에러포인트(error point)라고 하자.Let's say that the sum of all the output from the code analysis multiplied by the weight is the error point.

Figure 112019006801098-pat00001
Figure 112019006801098-pat00001

코드라인의 양이 많을수록 에러포인트가 많이 발생할 수 있다. 에러포인트를 전체 코드라인양(total code lines)에 따른 빈도수로 환산하면 작업양을 고려할 수 있어 좀더 객관화할 수 있다. 이것을 에러율(error rate)이라고 정의한다.The more code lines, the more error points can occur. Converting the error point to the frequency according to the total code lines allows the amount of work to be taken into account, making it more objective. This is defined as the error rate.

Figure 112019006801098-pat00002
Figure 112019006801098-pat00002

개발자에 대한 비교는 언어, 개발환경에 따라 error rate가 달리 나오게 된다. 각 언어의 특징상, 프레임워크의 특징상 error point가 적어질 수 있고, total code lines 수가 늘어나게 된다.Compared to the developer, the error rate varies depending on the language and the development environment. Due to the characteristics of each language, the error point can be reduced due to the characteristics of the framework, and the total number of code lines is increased.

이러한 특징을 고려해서 언어별, 사용 프레임워크별로 상대적인 평가를 하게 되면 객관적인 평가를 할 수 있게 된다. error rate는 모든 언어와 사용프레임워크를 동시에 놓고 단편적으로 비교할 수는 없지만, 직관적인 점수로서도 사용이 가능하다.Taking these characteristics into consideration, it is possible to perform an objective evaluation by making a relative evaluation by language and using framework. The error rate can be used as an intuitive score, although not all languages and usage frameworks can be compared at the same time.

테스트함수검사부(220)는 개발통합서버(100)로부터 단위테스트(unit test)에 관련된 데이터를 가져와서 단위테스트를 수행하기 위해 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율(test rate)을 산출한다.The test function checking unit 220 fetches the data related to the unit test from the development integration server 100 and outputs the number of test functions created by the developer for verification to the unit of the total execution function of the source code The test rate corresponding to the value divided by the number is calculated.

xUnit으로 통칭되는 테스트 프레임워크을 이용해서 개발자 스스로 코드에 대한 검증을 하도록 하고, 이에 대한 자동화 툴을 통해서 점수화 한다. 예를 들어, 자바에서는 Junit을 이용하여 개발자 스스로 코드에 대한 검증을 하도록 한다.Using the test framework, which is commonly referred to as xUnit, the developer himself / herself can verify the code and scoring it through an automated tool. For example, in Java, we use Junit to do our own verification of the code.

개발자가 테스트를 위해 만들어 놓은 xUnit 기반의 함수들에 대한 개수의 총합을 전체 함수의 총합으로 나눈 수치를 테스트율(Test Rate)이라고 한다.The test rate is the number of xUnit-based functions created by the developer for testing, divided by the sum of the total functions.

Figure 112019006801098-pat00003
Figure 112019006801098-pat00003

테스트율은 언어, 프레임워크의 영향을 받지 않고, 순수하게 개발자의 자동화된 테스트환경 구축의 노력만으로 만들어지는 수치이다.The test rate is not affected by the language and framework, but only by the efforts of the developer to build an automated test environment.

상기에서 살펴본 두 가지 지표는 개발자가 소스코드를 커밋(본 발명에서는 커밋을 업로드로 사용하였다)할 때 마다 생성이 된다. Error Rate는 개발이 진행될수록 낮은 점수를 지향해 나가야 하고, Test Rate는 높은 점수를 지향해 나가는 것이 전체 개발결과물에 좋은 결과를 줄 수 있다. The above two indicators are generated whenever the developer commits the source code (in the present invention, the commit is uploaded). As the development progresses, the Error Rate should be aimed at a low score, and the Test Rate toward high score can give good results to the whole development result.

분석데이터추출부(230)는 개발통합서버(100)로부터 정적분석 결과를 받아서 소스 코드를 업로드한 개발자 정보, 업로드 일시, 해당 프로젝트의 이름 및 분석 결과에 해당하는 각 구문상 에러(syntax error)의 종류와 개수를 추출 후 코드에러검사부(210)에 전달하고, 개발통합서버(100)로부터 단위테스트(unit test)에 관련된 데이터를 받아서 테스트함수를 작성한 개발자 정보, 해당 프로젝트의 이름 및 테스트함수의 개수를 추출 후 테스트함수검사부(220)에 전달한다.The analysis data extracting unit 230 receives the static analysis result from the development integration server 100 and extracts the developer information that uploaded the source code, the upload date and time, the name of the project, and the syntax error The type and the number of the test results are extracted and then transmitted to the code error checking unit 210 and the data related to the unit test is received from the development integration server 100 to obtain the developer information, And transmits the extracted data to the test function checking unit 220.

코드에러검사부(210)는 분석데이터추출부(230)에서 전달받은 개발자의 프로젝트 마다 각 구문상 에러(syntax error)의 종류별 개수에 종류별 위험수준에 따른 가중치를 곱한 값들을 모두 더하여 에러 포인트를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출한다.The code error checking unit 210 calculates the error point by adding all values obtained by multiplying the number of each type of syntax error for each developer project received by the analysis data extracting unit 230 by the weight according to the risk level for each type , And calculates an error rate corresponding to a value obtained by dividing the error point by the total number of codes that the developer has so far created and uploaded.

테스트함수검사부(220)는 분석데이터추출부(230)에서 전달받은 개발자의 프로젝트 마다 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율을 산출한다.The test function checking unit 220 calculates a test rate corresponding to a value obtained by dividing the number of test functions created by the developer for verification by the number of total execution functions of the source code for each developer project transmitted from the analysis data extracting unit 230 do.

에러율(error rate)과 테스트율(test rate)을 산출하는 식은 상기에서 자세하게 살펴봤으므로 자세한 설명을 생략한다.Since the formula for calculating the error rate and the test rate has been described in detail above, a detailed description thereof will be omitted.

코드에러검사부(210)는 개발자가 소스 코드를 업로드 할 때마다 사용된 프로그래밍 언어를 포함하는 개발환경 별로 에러율을 산출한다.The code error checking unit 210 calculates an error rate for each development environment including a programming language used each time the developer uploads the source code.

개발환경은 개발형태, 언어, 서비스 프레임워크 등을 포함한다. 개발형태는 웹 어플리케이션, 게임 어플리케이션, 모바일 어플리케이션, 동영상 기반 서비스, 윈도우 어플리케이션, 리눅스 어플리케이션 등 다양한 것이 포함될 수 있으며, 언어는 Java, Java script, PHP, python, C# 등 다양한 것이 포함될 수 있다. 그리고 서비스 프레임워크는 스프링 프레임워크, Node.js 등이 포함될 수 있다.The development environment includes development type, language, and service framework. The development type can include various applications such as web application, game application, mobile application, video based service, window application, Linux application, and the language can include Java, Java script, PHP, python, C # and the like. The service framework may include a Spring framework, Node.js, and so on.

코드에러검사부(210)는 개발자가 소스 코드를 업로드 할 때 사용된 개발형태, 언어, 서비스 프레임워크 별로 에러율을 산출하기 때문에 각 개발자가 어떤 개발형태, 언어, 서비스 프레임워크에서 에러율이 높고 낮은지를 산출하여 기록할 수 있다.Since the code error checking unit 210 calculates the error rate for each type of development, language, and service framework used when the developer uploads the source code, each developer calculates which type of development, language, and service framework have high and low error rates Can be recorded.

기울기산출부(240)는 코드에러검사부(210)가 산출한 시간의 경과에 따른 에러율의 변화 정도를 이용하여 에러율에 대한 기울기를 산출하고 그래프를 이용하여 에러율에 대한 기울기를 시각화한다.The slope calculating unit 240 calculates the slope of the error rate using the degree of change of the error rate with the passage of time calculated by the code error checking unit 210 and visualizes the slope with respect to the error rate using the graph.

도 3(a)를 참고하면, 개발자가 소스 코드를 업로드 할 때마다 산출한 에러율의 변화 정도를 이용하여 에러율에 대한 기울기를 그래프로 나타낸 것을 볼 수가 있다. 기울기도 위에서 살펴본 에러율과 마찬가지로 개발자의 개발형태, 언어, 서비스 프레임워크 별로 산출한다.Referring to FIG. 3 (a), it can be seen that the slope of the error rate is graphically displayed by using the degree of change of the error rate calculated each time the developer uploads the source code. The slope is calculated by the developer's development type, language, and service framework as well as the error rate.

에러상대수준평가부(250)는 코드에러검사부(210)가 산출한 개발환경 별 개발자들의 에러율과 기울기산출부(240)가 산출한 에러율에 대한 기울기 정보를 개발자평가DB(290)에 저장하고, 개발자평가DB(290)에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트한다.The error relative level evaluating unit 250 stores the error rate of the developers of the development environment calculated by the code error checking unit 210 and the slope information of the error rate calculated by the slope calculating unit 240 in the developer evaluation DB 290, When the slope value of the developer of the specific developer is compared with the slope value of the error rate of the developers stored in the developer evaluation DB 290 and the slope value of the specific developer is larger than the average slope value by a predetermined ratio or more, And report it.

에러율에 대한 기울기 값이 크다는 것은 다른 개발자들과 비교하여 시간의 경과에 따라 에러율이 줄어들지 않고 있다는 의미이다.The large slope for the error rate means that the error rate is not decreasing over time as compared to other developers.

에러상대수준평가부(250)는 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트한다.If the slope value of a specific developer is smaller than the average slope value by a predetermined ratio or less, the error relative level evaluation unit 250 evaluates and reports that the capability is relatively superior in the development environment.

에러율에 대한 기울기 값이 작다는 것은 다른 개발자들과 비교하여 시간의 경과에 따라 에러율이 줄어들고 있다는 의미이다.The small slope of the error rate means that the error rate is decreasing over time as compared to other developers.

에러상대수준평가부(250)를 통해 해당 개발환경에서 다른 개발자들과 비교하여 해당 개발자의 상대적인 수준을 평가할 수 있다.The relative level estimating unit 250 can evaluate the relative level of the developer in comparison with other developers in the corresponding development environment.

에러절대수준평가부(260)는 에러상대수준평가부(250)가 개발자평가DB(290)에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트 하거나, 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트 하거나, 능력이 부족과 우수 사이에 해당하는 것으로 평가하는 모든 경우 개발자평가DB(290)에 각각 부족, 우수, 보통을 나타내는 등급으로 표시하여 평가 일시와 함께 기록한다.The absolute error level evaluation unit 260 compares the slope of the error rate with respect to the error rate of each developer in the development environment stored in the developer evaluation DB 290 by the error level estimator 250 and evaluates that the capability is relatively low in the corresponding development environment Or reports a relatively superior ability in the development environment or reports that the ability is between the shortage and excellent, the developer evaluation DB 290 may be classified as lacking, excellent or normal And records it together with the evaluation date and time.

에러절대수준평가부(260)는 개발자평가DB(290)에 기록된 개발자들의 개발환경 별 과거 시점부터 현재 일정 시간 동안의 부족, 우수, 보통의 변화 정도를 분석하여 개발자 자신의 절대적인 향상 정도를 리포트한다.The absolute error level evaluation unit 260 analyzes the degree of shortage, excellentness, and normal change for a certain period of time from the past time of the developers recorded in the developer evaluation DB 290, do.

예를 들어, 개발자가 특정 개발환경에서 3달전에는 '부족'상태였으나, 2달전 '보통'에서 최근에는 '우수'로 변화한 경우 개발자의 에러율이 절대적으로 향상되었음을 확인할 수가 있다.For example, if a developer was "short" three months ago in a particular development environment, but the developer changed from "normal" to "good" two months ago, you can see that the developer's error rate has improved dramatically.

테스트함수검사부(220)는 개발자가 소스 코드를 업로드 할 때마다 사용된 프로그래밍 언어를 포함하는 개발환경 별로 테스트율을 산출한다.Each time the developer uploads the source code, the test function checking unit 220 calculates the test rate for each development environment including the programming language used.

테스트함수검사부(220)는 개발자가 소스 코드를 업로드 할 때 사용된 개발형태, 언어, 서비스 프레임워크 별로 테스트율을 산출하기 때문에 각 개발자가 어떤 개발형태, 언어, 서비스 프레임워크에서 테스트율이 높고 낮은지를 산출하여 기록할 수 있다.Since the test function checking unit 220 calculates a test rate for each type of development, language, and service framework used when the developer uploads the source code, each developer has a high test rate and a low test rate Can be calculated and recorded.

기울기산출부(240)는 테스트함수검사부(220)가 산출한 시간의 경과에 따른 테스트율의 변화 정도를 이용하여 테스트율에 대한 기울기를 산출하고 그래프를 이용하여 테스트율에 대한 기울기를 시각화한다.The slope calculating unit 240 calculates the slope with respect to the test rate using the degree of change of the test rate with the passage of time calculated by the test function checking unit 220 and visualizes the slope with respect to the test rate using the graph.

도 3(b)를 참고하면, 개발자가 소스 코드를 업로드 할 때마다 산출한 테스트율의 변화 정도를 이용하여 테스트율에 대한 기울기를 그래프로 나타낸 것을 볼 수가 있다. 기울기도 위에서 살펴본 테스트율과 마찬가지로 개발자의 개발형태, 언어, 서비스 프레임워크 별로 산출한다.Referring to FIG. 3 (b), it can be seen that the slope of the test rate is shown graphically using the degree of change in the test rate calculated each time the developer uploads the source code. The slope is calculated by the developer's development type, language, and service framework as well as the test rate shown above.

테스트상대수준평가부(270)는 테스트함수검사부(220)가 산출한 개발환경 별 개발자들의 테스트율과 기울기산출부(240)가 산출한 테스트율에 대한 기울기 정보를 개발자평가DB(290)에 저장하고, 개발자평가DB(290)에 저장된 개발환경 별 개발자들의 테스트율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트한다.The test-relative-level evaluating unit 270 stores the test rates of the developers of the development environments calculated by the test-function checking unit 220 and the inclination information of the test rates calculated by the inclination calculating unit 240 in the developer evaluation DB 290 If the slope value of the specific developer is larger than the average slope value by a predetermined ratio or more by comparing the slope value with respect to the test rate of each developer in the development environment stored in the developer evaluation DB 290, Evaluate as excellent and report.

테스트율에 대한 기울기 값이 크다는 것은 다른 개발자들과 비교하여 시간의 경과에 따라 개발자 스스로가 코드에 대한 검증을 더욱 잘 하고 있다는 의미이다.The large slope of the test rate means that the developer is better at validating the code over time as compared to other developers.

테스트상대수준평가부(270)는 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트한다.When the inclination value of a specific developer is smaller than the average inclination value by a predetermined ratio or less, the test relative level evaluating unit 270 reports that the capability is relatively insufficient in the development environment and reports it.

테스트율에 대한 기울기 값이 작다는 것은 다른 개발자들과 비교하여 시간의 경과에 따라 개발자 스스로가 코드에 대한 검증을 게을리하고 있다는 의미이다.The small slope value for the test rate means that the developer himself neglects to verify the code over time as compared to other developers.

테스트상대수준평가부(270)를 통해 해당 개발환경에서 다른 개발자들과 비교하여 해당 개발자의 상대적인 수준을 평가할 수 있다.The relative level of the developer can be evaluated through comparison with the other developers in the corresponding development environment through the test relative level evaluation unit 270. [

테스트절대수준평가부(280)는 테스트상대수준평가부(270)가 개발자평가DB(290)에 저장된 개발환경 별 개발자들의 테스트율에 대한 기울기 값을 비교하여 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트 하거나, 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트 하거나, 능력이 부족과 우수 사이에 해당하는 것으로 평가하는 모든 경우 개발자평가DB(290)에 각각 부족, 우수, 보통을 나타내는 등급으로 표시하여 평가 일시와 함께 기록한다.The test absolute level evaluating unit 280 compares the slope value with respect to the test rate of each developer of the development environment stored in the developer evaluation DB 290 by the test relative level evaluating unit 270 so that the capability is relatively low in the corresponding development environment Evaluation, and reporting, or reports that the ability is relatively superior in the development environment, or that the ability is evaluated as being between the shortage and excellent, the developer evaluation DB 290 stores the shortage, excellent, And record it together with the evaluation date and time.

테스트절대수준평가부(280)는 개발자평가DB(290)에 기록된 개발자들의 개발환경 별 과거 시점부터 현재 일정 시간 동안의 부족, 우수, 보통의 변화 정도를 분석하여 개발자 자신의 절대적인 향상 정도를 리포트한다.The absolute test level estimating unit 280 analyzes the degree of shortage, excellentness, and normal change over a certain period of time from the past time of the developers recorded in the developer evaluation DB 290, do.

본 발명은 최종적으로 소스 코드를 업로드 할 때마다 각각의 에러율(error rate), 테스트율(test rate)의 누적분포도의 기울기를 통해서 개발자에 대한 실질적인 평가를 할 수 있다. The present invention can perform a practical evaluation of the developer through the slope of the cumulative distribution of the error rate and the test rate each time the source code is finally uploaded.

각각의 에러율(error rate), 테스트율(test rate)는 업로드가 진행될 때 마다 산출이 될 수 있기 때문에 개발자의 모든 업로드 횟수와 이때마다 얻어지는 에러율, 테스트율의 분포도에 따른 기울기를 구하고, 기울기의 변화방향 벡터를 통해서 개발자의 분야별 능력치를 확정할 수 있다.Since each error rate and test rate can be calculated each time the uploading process is performed, the developer calculates the slope of the upload rate, the error rate obtained at that time, and the distribution of the test rate, The directional vector can be used to determine the developer's field strengths.

도 3을 참고하면, 선형회귀 기법을 통하여 각각의 기울기를 구할 수 있으며, 기울기의 변화되는 방향은 개발자의 성장모델과도 직결될 수 있다. 에러율에 대한 기울기가 지속적으로 낮아지는 경우 개발에 대한 표준준수정도가 높아지고 있다고 판단할 수 있다. 테스트율에 대한 기울기가 지속적으로 높아지는 경우는 개발시에 테스트 코드에 대한 비중이 점차적으로 늘어가고 있다고 판단할 수 있다. 이 2 가지 지표를 통해서 개발자의 능력에 대한 향상 정도를 가늠할 수 있다.Referring to FIG. 3, each slope can be obtained through a linear regression technique, and the direction in which the slope changes can be directly linked to the developer's growth model. If the slope of the error rate is continuously lowered, it can be judged that the degree of adherence to standards for development is increasing. If the slope of the test rate is steadily increasing, the proportion of the test code is gradually increasing at the time of development. These two indicators provide an indication of the degree to which the developer can improve.

그리고, 본 발명의 기본적인 기술적 사상의 범주 내에서 당해 업계 통상의 지식을 가진 자에게 있어서는 다른 많은 변형 및 응용 또한 가능함은 물론이다.It will be apparent to those skilled in the art that many other modifications and applications are possible within the scope of the basic technical idea of the present invention.

100...개발통합서버
200...개발자 분석시스템
210...코드에러검사부
220...테스트함수검사부
230...분석데이터추출부
240...기울기산출부
250...에러상대수준평가부
260...에러절대수준평가부
270...테스트상대수준평가부
280...테스트절대수준평가부
290...개발자평가DB
300...개발자 컴퓨터
100 ... Development Integration Server
200 ... Developer Analysis System
210 ... code error check section
220 ... test function checker
230 ... analysis data extracting unit
240 ... slope calculating section
250 ... Error relative level evaluation unit
260 ... error absolute level evaluation unit
270 ... test relative level evaluation unit
280 ... test absolute level evaluation unit
290 ... developer evaluation DB
300 ... developer computer

Claims (8)

클라우드(cloud) 기반의 개발환경에서 여러 개발자들이 업로드 한 소스코드를 컴파일하고 빌드하는 과정의 전 또는 후 단계에서 개발자들이 표준 개발 가이드라인에 맞게 소스를 작성했는지 분석하는 정적분석(static analysis)을 수행하고, 소스코드의 특정 모듈이 의도된 대로 작동하는지 검증하는 단위테스트(unit test)를 수행하며, 빌드한 코드들을 통합하고 배포하는 개발통합서버;
상기 개발통합서버로부터 정적분석 결과를 가져와서 각 결과 항목별 위험 수준에 따라 가중치를 차등 적용하여 에러 포인트(error point)를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출하는 코드에러검사부; 및
상기 개발통합서버로부터 단위테스트에 관련된 데이터를 가져와서 단위테스트를 수행하기 위해 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율(test rate)을 산출하는 테스트함수검사부를 포함하되,
상기 개발통합서버로부터 정적분석 결과를 받아서 소스 코드를 업로드한 개발자 정보, 업로드 일시, 해당 프로젝트의 이름 및 분석 결과에 해당하는 각 구문상 에러(syntax error)의 종류와 개수를 추출 후 상기 코드에러검사부에 전달하고, 상기 개발통합서버로부터 단위테스트(unit test)에 관련된 데이터를 받아서 테스트함수를 작성한 개발자 정보, 해당 프로젝트의 이름 및 테스트함수의 개수를 추출 후 상기 테스트함수검사부에 전달하는 분석데이터추출부를 더 포함하고,
상기 코드에러검사부는 상기 분석데이터추출부에서 전달받은 개발자의 프로젝트 마다 각 구문상 에러(syntax error)의 종류별 개수에 종류별 위험수준에 따른 가중치를 곱한 값들을 모두 더하여 에러 포인트를 계산하고, 에러 포인트를 해당 개발자가 지금까지 작성하여 업로드 한 총 코드수로 나눈 값에 해당하는 에러율(error rate)을 산출하고,
상기 테스트함수검사부는 상기 분석데이터추출부에서 전달받은 개발자의 프로젝트 마다 개발자가 검증용으로 작성한 테스트함수의 개수를 소스코드의 총 실행함수의 개수로 나눈 값에 해당하는 테스트율을 산출하며,
상기 코드에러검사부는 개발자가 소스 코드를 업로드 할 때 사용된 개발형태, 프로그래밍 언어, 서비스 프레임워크 별로 에러율을 산출하기 때문에 각 개발자가 어떤 개발형태, 언어, 서비스 프레임워크에서 에러율이 높고 낮은지를 산출하여 기록하며,
상기 코드에러검사부가 산출한 시간의 경과에 따른 에러율의 변화 정도를 이용하여 에러율에 대한 기울기를 산출하고 그래프를 이용하여 에러율에 대한 기울기를 시각화하는 기울기산출부를 더 포함하고,
상기 기울기산출부는 개발자의 개발형태, 프로그래밍 언어, 서비스 프레임워크 별로 에러율에 대한 기울기를 산출하고 시각화하며,
상기 코드에러검사부가 산출한 개발환경 별 개발자들의 에러율과 상기 기울기산출부가 산출한 에러율에 대한 기울기 정보를 개발자평가DB에 저장하고, 개발자평가DB에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트하고, 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트하는 에러상대수준평가부를 더 포함하며,
상기 에러상대수준평가부가 개발자평가DB에 저장된 개발환경 별 개발자들의 에러율에 대한 기울기 값을 비교하여 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트 하거나, 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트 하거나, 능력이 부족과 우수 사이에 해당하는 것으로 평가하는 모든 경우 개발자평가DB에 각각 부족, 우수, 보통을 나타내는 등급으로 표시하여 평가 일시와 함께 기록하고, 개발자들의 개발환경 별 과거 시점부터 현재 일정 시간 동안의 부족, 우수, 보통의 변화 정도를 분석하여 개발자 자신의 절대적인 향상 정도를 리포트하는 에러절대수준평가부를 더 포함하고,
상기 테스트함수검사부는 개발자가 소스 코드를 업로드 할 때 사용된 개발형태, 프로그래밍 언어, 서비스 프레임워크 별로 테스트율을 산출하기 때문에 각 개발자가 어떤 개발형태, 언어, 서비스 프레임워크에서 테스트율이 높고 낮은지를 산출하여 기록하고,
상기 기울기산출부는 상기 테스트함수검사부가 산출한 시간의 경과에 따른 테스트율의 변화 정도를 이용하여 테스트율에 대한 기울기를 산출하고 그래프를 이용하여 테스트율에 대한 기울기를 시각화하며,
상기 기울기산출부는 개발자의 개발형태, 프로그래밍 언어, 서비스 프레임워크 별로 테스트율에 대한 기울기를 산출하고 시각화하며,
상기 테스트함수검사부가 산출한 개발환경 별 개발자들의 테스트율과 상기 기울기산출부가 산출한 테스트율에 대한 기울기 정보를 개발자평가DB에 저장하고, 개발자평가DB에 저장된 개발환경 별 개발자들의 테스트율에 대한 기울기 값을 비교하여 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이상으로 큰 경우는 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트하고, 특정 개발자의 기울기 값이 평균 기울기 값보다 소정의 비율 이하로 작은 경우는 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트하는 테스트상대수준평가부를 더 포함하고,
상기 테스트상대수준평가부가 개발자평가DB에 저장된 개발환경 별 개발자들의 테스트율에 대한 기울기 값을 비교하여 해당 개발환경에서 능력이 상대적으로 부족한 것으로 평가하여 리포트 하거나, 해당 개발환경에서 능력이 상대적으로 우수한 것으로 평가하여 리포트 하거나, 능력이 부족과 우수 사이에 해당하는 것으로 평가하는 모든 경우 개발자평가DB에 각각 부족, 우수, 보통을 나타내는 등급으로 표시하여 평가 일시와 함께 기록하고, 개발자들의 개발환경 별 과거 시점부터 현재 일정 시간 동안의 부족, 우수, 보통의 변화 정도를 분석하여 개발자 자신의 절대적인 향상 정도를 리포트하는 테스트절대수준평가부를 포함하는 것을 특징으로 하는 개발자의 코드 결과물을 이용한 자동화된 개발자 능력분석 시스템.
In the cloud-based development environment, perform static analysis to analyze whether the developers have written the source according to the standard development guidelines, either before or after the process of compiling and building the source code uploaded by several developers. A development integration server for performing a unit test for verifying whether a specific module of the source code is operating as intended, and integrating and distributing the built codes;
A static analysis result is obtained from the development integration server, an error point is calculated by applying a weight differently according to the risk level for each result item, and an error point is calculated as a total code number A code error checker for calculating an error rate corresponding to the divided value; And
A test rate corresponding to a value obtained by dividing the number of test functions created by the developer for verification into the number of total execution functions of the source code in order to fetch data related to unit tests from the development integration server and perform a unit test, And a test function checking unit for calculating a test function,
Extracts the type and number of each syntax error corresponding to the developer information, the date and time of uploading, the name of the project, and the analysis result by receiving the static analysis result from the development integration server, Extracts the developer information that has received the data related to the unit test from the development integration server and creates the test function, extracts the name of the project and the number of the test functions, and transmits the extracted information to the test function checking unit Further included,
The code error checking unit may calculate error points by adding all the values obtained by multiplying the number of each type of syntax error by the weight according to the type of risk for each developer received from the analysis data extracting unit, An error rate corresponding to a value obtained by dividing the total code number uploaded and uploaded by the developer so far,
The test function checking unit calculates a test rate corresponding to a value obtained by dividing the number of test functions created by the developer for verification by the number of total execution functions of the source code for each developer's project delivered from the analysis data extracting unit,
Since the code error checking unit calculates the error rate for each development type, programming language, and service framework used when the developer uploads the source code, each developer calculates the error rate of the development type, language, and service framework Record,
Further comprising a slope calculating unit for calculating a slope with respect to an error rate by using a degree of change of an error rate with an elapse of time calculated by the code error checking unit and visualizing a slope with respect to an error rate using a graph,
The inclination calculator calculates and visualizes the slope of the error rate for each developer's development type, programming language, and service framework,
The error rate of the developers of the development environment calculated by the code error checker and the slope information of the error rate calculated by the slope calculating unit are stored in the developer evaluation DB and the slope values of the error rates of the developers by the development environment stored in the developer evaluation DB are compared If the slope value of a specific developer is larger than the average slope value by a predetermined ratio or more, it is evaluated that the capability is relatively insufficient in the development environment and reported. When the slope value of a specific developer is smaller than a predetermined ratio And an error relative level evaluation unit for evaluating and reporting the capability as relatively superior in the corresponding development environment,
The error relative level evaluating unit compares the slope value with respect to the error rate of the developer of each development environment stored in the developer evaluation DB to evaluate or report the capability as relatively inadequate in the corresponding development environment, In the case where the evaluation is made between the lack and the capability, the developer evaluation DB is recorded in the developer evaluation DB as a score indicating lack, excellentness, and normal, and recorded together with the evaluation date and time. An absolute error level evaluation unit for analyzing the degree of shortage, excellentness, and normal change over a predetermined period of time and reporting the absolute degree of improvement of the developer himself / herself,
Since the test function checking unit calculates the test rate for each development type, programming language, and service framework used when the developer uploads the source code, the developer can check the development rate, the language, and the service framework And then,
The slope calculating unit may calculate a slope with respect to the test rate using the degree of change of the test rate with the passage of time calculated by the test function check unit, visualize the slope with respect to the test rate using a graph,
The inclination calculator calculates and visualizes a slope of a test rate for each developer type, a programming language, and a service framework,
The slope information on the test rate calculated by the test function checker and the test rate calculated by the slope calculating unit is stored in the developer evaluation DB, and the slope of the test rate of the developers according to the development environment stored in the developer evaluation DB If the slope value of a specific developer is larger than the average slope value by more than a predetermined ratio, the performance is evaluated as being relatively superior in the development environment, and the slope value of the specific developer is compared with the average slope value at a predetermined ratio And a test relative level evaluating unit for evaluating and reporting that the capability is relatively insufficient in the development environment when it is small,
The test-relative-level evaluating unit compares the slope of the test rate with the test rate of each developer in the development environment stored in the developer evaluation DB to evaluate or report the capability as relatively inadequate in the corresponding development environment, In the case of evaluating and reporting, or evaluating that the ability is equivalent between lack and excellence, it is recorded in the developer evaluation DB as a score indicating lack, excellentness, and normal, and recorded together with the evaluation date and time. And a test absolute level evaluation unit for analyzing the degree of shortage, excellentness, and normal change over a predetermined period of time and reporting the absolute degree of improvement of the developer himself / herself.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020190007263A 2019-01-21 2019-01-21 Automated developer capability analysis system using developer's code output KR102004486B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190007263A KR102004486B1 (en) 2019-01-21 2019-01-21 Automated developer capability analysis system using developer's code output

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190007263A KR102004486B1 (en) 2019-01-21 2019-01-21 Automated developer capability analysis system using developer's code output

Publications (1)

Publication Number Publication Date
KR102004486B1 true KR102004486B1 (en) 2019-07-26

Family

ID=67469613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190007263A KR102004486B1 (en) 2019-01-21 2019-01-21 Automated developer capability analysis system using developer's code output

Country Status (1)

Country Link
KR (1) KR102004486B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110097618A (en) * 2011-01-18 2011-08-31 방인성 Remote application development intermediation system for intermediating program's contract and development using client's virtual development configuration
KR101282024B1 (en) * 2013-04-11 2013-07-04 주식회사 제이윈파트너스 Co-working tool automation system
KR20140108474A (en) * 2013-02-28 2014-09-11 (주)트라이캣 Evaluation and recruit service for programmer
KR101764890B1 (en) 2016-01-11 2017-08-04 주식회사 생각공간 Method of providing programmer test service and server performing the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110097618A (en) * 2011-01-18 2011-08-31 방인성 Remote application development intermediation system for intermediating program's contract and development using client's virtual development configuration
KR20140108474A (en) * 2013-02-28 2014-09-11 (주)트라이캣 Evaluation and recruit service for programmer
KR101282024B1 (en) * 2013-04-11 2013-07-04 주식회사 제이윈파트너스 Co-working tool automation system
KR101764890B1 (en) 2016-01-11 2017-08-04 주식회사 생각공간 Method of providing programmer test service and server performing the same

Similar Documents

Publication Publication Date Title
US20120016701A1 (en) Intelligent timesheet assistance
Li et al. Architectural technical debt identification based on architecture decisions and change scenarios
Aranha et al. An estimation model for test execution effort
US20090070734A1 (en) Systems and methods for monitoring software application quality
KR102004489B1 (en) A developer recommended outsourcing system that automatically analyzes the developer's code output and recommends the developer based on it
Conwell et al. Capability maturity models support of modeling and simulation verification, validation, and accreditation
US8001068B2 (en) System and method for calibrating and extrapolating management-inherent complexity metrics and human-perceived complexity metrics of information technology management
Sahaf et al. When to automate software testing? decision support based on system dynamics: an industrial case study
Felderer et al. A multiple case study on risk-based testing in industry
Khan et al. Measuring cost of quality (CoQ) on SDLC projects is indispensible for effective software quality assurance
Bakota et al. Qualitygate sourceaudit: A tool for assessing the technical quality of software
Mazkatli et al. Incremental calibration of architectural performance models with parametric dependencies
US20230086361A1 (en) Automatic performance evaluation in continuous integration and continuous delivery pipeline
Monschein et al. Enabling consistency between software artefacts for software adaption and evolution
Ordonez et al. The state of metrics in software industry
Xenos Usability perspective in software quality
KR102004486B1 (en) Automated developer capability analysis system using developer's code output
Aktaş et al. An introduction to software testing methodologies
KR101403685B1 (en) System and method for relating between failed component and performance criteria of manintenance rule by using component database of functional importance determination of nuclear power plant
US20100114638A1 (en) Method and Software for the Measurement of Quality of Process
Wagner Towards software quality economics for defect-detection techniques
Olivieri Hardware and software readiness: A systems approach
De Sousa Coelho et al. System dynamics model for simulation of the software inspection process
Salmanoğlu et al. Exploration of a practical approach for assessing the measurement capability of software organizations
Hampp A cost-benefit model for software quality assurance activities

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant