KR20130135271A - Code clone notification and architectural change visualization - Google Patents

Code clone notification and architectural change visualization Download PDF

Info

Publication number
KR20130135271A
KR20130135271A KR1020137015880A KR20137015880A KR20130135271A KR 20130135271 A KR20130135271 A KR 20130135271A KR 1020137015880 A KR1020137015880 A KR 1020137015880A KR 20137015880 A KR20137015880 A KR 20137015880A KR 20130135271 A KR20130135271 A KR 20130135271A
Authority
KR
South Korea
Prior art keywords
code
software
developer
software code
replica
Prior art date
Application number
KR1020137015880A
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
Priority to US12/972,535 priority Critical patent/US20120159434A1/en
Priority to US12/972,535 priority
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Priority to PCT/US2011/066283 priority patent/WO2012088173A1/en
Publication of KR20130135271A publication Critical patent/KR20130135271A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection

Abstract

본 명세서에서는 소프트웨어 개발자들이 동일 코드의 유사한 인스턴스들을 자동으로 식별하고 오랜 시간에 걸친 소프트웨어 코드의 버전들의 차이를 가시화하는 것을 돕기 위해 코드 복제 분석 및 가시화를 이용하여 보강된 코드 검토를 제공하는 코드 검증 시스템이 설명된다. Code verification system to the present specification, software developers are provided for automatic identification and code review reinforced by a code clone analysis and visualization to help visualize the difference between the version of the software code over a long period of time in similar instances of the same code this is explained. 이 시스템은 코드 복제 검색 기술을 이용하여 코드 복제물들을 식별하며, 개발자가 변경을 행할 때 사용자에게 유사 코드에 대한 정보를 제공한다. The system identifies the code replica using the replication code scanning technology, to provide information on similar code to the user when the developer has carried out the change. 이 시스템은 하나 이상의 관련된 복제물들을 갖는 코드 세그먼트들에 대해 변경이 행해질 때 개발자에게 또는 다른 팀들에게 자동화된 통지를 제공할 수 있다. This system can provide automatic notification to a developer or other team when changes are made to the code segment associated with one or more copies. 코드 검증 시스템은 또한 개발자가 소프트웨어 코드의 본문의 아키텍처 변화를 이해하는 것을 돕는다. Code verification system also helps developers understand the changes in the architecture body of software code. 코드 검증 시스템은 소프트웨어 코드 베이스의 2개 버전 사이의 코드 복제 검출 결과에 기초하여 아키텍처 차이를 결정하기 위한 분석 컴포넌트를 제공한다. Code verification system is based on the detection result of the replication codes between the two versions of the software code base provides an analysis component for determining a difference architecture. 코드 검증 시스템은 식별된 차이를 소프트웨어 개발 프로세스와 관련된 개발자들 및 기타 개발자들에게 직관적이고 유용한 방식으로 표시하기 위한 사용자 인터페이스 컴포넌트도 제공한다. Code verification system provides an intuitive user interface components for displaying the identified differences for developers and other developers involved and the software development process and useful way.

Description

코드 복제 통지 및 아키텍처 변경 가시화{CODE CLONE NOTIFICATION AND ARCHITECTURAL CHANGE VISUALIZATION} Change the code replica notified and architecture visualization {CODE CLONE NOTIFICATION AND ARCHITECTURAL CHANGE VISUALIZATION}

가장 단순한 레벨에서의 소프트웨어 개발 프로세스는 소프트웨어 개발자가 언어(예로서, C++, C#, 어셈블리)로 소프트웨어 코드를 작성하며 컴파일러와 같은 툴를 이용하여 코드를 이진 실행 가능 모듈로 구축하는 것을 필요로 한다. Software development process in its simplest level requires that the software developers, language, writing software code to (for example, C ++, C #, assembly) and using tulreul such as the compiler to build a code into binary executable module. 소프트웨어가 더 복잡해짐에 따라, 다수의 개발자가 프로젝트를 수행하며 체크인(check-in) 관리자, 중앙 집중 구조 시스템 등과 같은 더 정교한 툴들을 이용할 수 있다. Depending on the software becomes more complex, the number of developers on a project and can use more sophisticated tools, such as check-in (check-in) Administrator, the centralized architecture system. 팀들은 또한 아키텍처 및 소스 코드 레벨들에서 발생하는 전문가 검토(peer review)와 같은 프로세스들을 실시할 수 있다. Teams can also conduct the same process as the expert review (peer review), which occurs in the architecture and source code level. 하나의 일반적인 프로세스는 주 개발자가 아닌 적어도 한 명의 다른 개발자가 각각의 체크인을 검토하게 하는 것이다. One common process is at least one other developer than the main developer to review each check-in. 개발자는 또한 유닛 테스트, 정적 코드 체커, 런타임 코드 체커 등과 같은 하나 이상의 자동화된 검증 툴을 실행할 수 있다. The developer can also perform an automated verification tool such as one or more unit testing, static code checker, the run-time code checker. MICROSOFT TM VISUAL STUDIO TM과 같은 더 새로운 통합 개발 환경(IDE)들은 잠재적 코드 결함들에 대해 가능한 한 빨리 개발자들에게 알리려고 시도한다. The new integrated development environment (IDE) such as MICROSOFT TM VISUAL STUDIO TM are trying to warn developers as soon as possible about potential code defects. 예를 들어, IDE는 개발자가 코드를 타이핑할 때 소프트웨어 코드를 파싱(parsing)하여 오타, 선언되지 않은 참조 변수 등을 식별할 수 있다. For example, IDE may identify a reference variable such as the developer is not the software code when typing the code parsing (parsing), it declared to Ota.

각각의 새로운 문제를 해결하기 위한 "쓸데없는 재개발(reinventing the wheel)"을 방지하기 위해 일반적으로 코드 재사용이 권장된다. Typically, code reuse to avoid "unnecessary redevelopment (reinventing the wheel)" to solve each new problem is recommended. 오랫동안 사용되어 온 소프트웨어 코드는 오랜 시간에 걸쳐 아마도 더 많은 보장 및 분석을 받았으므로 결함이 없을 가능성이 더 크다. Software code that has been used for a long time are more likely to not have a big flaw, so probably got more assurance and analysis over a long period of time. 게다가, 많은 소프트웨어 문제는 반복적으로 나타나며, 따라서 코드의 재사용은 알려진 훌륭한 절차들을 이용하여 오래된 문제들을 해결하는 것을 가능하게 하고 개발자들로 하여금 새로운 문제들 또는 특정 프로젝트에 고유한 소프트웨어 코드에 집중할 수 있게 해준다. In addition, many software problem appears repeatedly, and therefore reuse of the code allows you to focus on making it possible to solve old problems using a good procedure known to cause the developers of software code unique to the new issues or specific project . 코드 재사용은 개발자가 동일 프로젝트를 위해 유사한 코드를 여러 번 사용하는 작은 규모에서 발생할 수 있지만, 회사의 한 프로젝트에서 일하는 개발자가 회사의 다른 프로젝트로부터의 코드를 재사용하는 더 큰 규모에서도 발생할 수 있다. Code reuse may occur in a small-scale developers to use code that is similar to the same project several times, there is a developer working on a project company may also occur in larger scale to reuse code from other projects of the company. 두 개발자는 동일 팀에서 일하지 않거나, 재사용된 코드에 대하여 알려고 서로 한 번도 통신하지 않을 수도 있다. Two developers do not work in the same team, to know about the reused code may not communicate with each other once.

코드 재사용의 한 가지 문제는 코드 재사용이 버그 전파도 유발한다는 것이다. One problem is that the code reuse code reuse bug also caused waves. 복사(본 명세서에서 복제(clone)라고도 함)되는 코드 내의 소프트웨어 결함은 코드의 모든 인스턴스들 내에 존재할 것이다. Copying the software defects in the code (also known as replication (clone) herein) will be present in all instances of the code. 개발자들이 회사 전반에서 또는 훨씬 더 광범위하게 코드를 복사하는 경우, 한 프로젝트 내의 결함을 고치는 개발자는 결함이 존재할 수 있는 다른 프로젝트들을 알지 못할 수 있다. If you copy the code to developers, or even more broadly across the company, developers fix flaws in the project may not be aware of other projects that may be defective. 이것은 각각의 팀이 문제들을 발견하고 해결하기 위해 중복된 노력을 하게 하거나, 더 나쁘게는 한 팀에서 알고 고친 문제가 코드를 재사용한 다른 팀에서는 고쳐지지 않게 한다. This is not to duplicate the efforts that each of the teams to discover and solve problems, or worse, not fix the other team knows the problem repaired in a team reuse the code. 오늘날, 코드 검토 동안, 검토자는 그 자신의 지식 내에서의 복제로 제한되며, 현재 인스턴스에서 고친 결함과 동일한 결함을 지닌 모든 복제물들에 대해 알지 못할 수 있다. While today, code review, reviewers are limited to replication within his own knowledge you may not know about all copies with the same flaws and defects repaired by the current instance. 모든 복제된 사본들이 고려되는 것을 보증하기는 어렵다. It is difficult to ensure that all replicated copies are being considered. 또 하나의 문제는 소프트웨어 코드는 오랜 시간에 걸쳐 가시화하기 어려운 방식으로 변한다는 것으로, 다수의 개발자가 오랜 시간에 걸쳐 코드 작업을 하는 경우에 특히 그러하다. Another problem is the software code that is difficult to change the way you visualize for a long time, especially if a large number of developers that the code work over a long period of time. 변경을 행하는 개발자는 소스 코드의 2개의 버전 사이의 아키텍처 차이를 이해하기를 원할 수 있다. Developers perform the change may want to understand the architectural differences between the two versions of the source code. 예를 들어, 코드 베이스에 대한 클래스 레벨, 이름 공간 레벨 또는 모듈 레벨 차이들은 많은 소스 파일을 동시에 깊게 파악하기가 복잡하고 어려울 수 있다. For example, the class-level namespace level or module-level differences in the code base can be a complicated and difficult to understand deeply the many source files at the same time.

본 명세서에서는 소프트웨어 개발자들이 동일 코드의 유사한 인스턴스들을 자동으로 식별하고 오랜 시간에 걸친 소프트웨어 코드의 버전들의 차이를 가시화하는 것을 돕기 위해 코드 복제 분석 및 가시화를 이용하여 보강된 코드 검토를 제공하는 코드 검증 시스템이 설명된다. Code verification system to the present specification, software developers are provided for automatic identification and code review reinforced by a code clone analysis and visualization to help visualize the difference between the version of the software code over a long period of time in similar instances of the same code this is explained. 이 시스템은 코드 복제 검색 기술을 이용하여 코드 복제물들을 식별하며, 개발자가 변경을 행할 때 사용자에게 유사 코드에 대한 정보를 제공한다. The system identifies the code replica using the replication code scanning technology, to provide information on similar code to the user when the developer has carried out the change. 이 시스템은 하나 이상의 관련된 복제물들을 갖는 코드 세그먼트들에 대해 변경이 행해질 때 개발자에게 또는 다른 팀들에게 자동화된 통지를 제공할 수 있다. This system can provide automatic notification to a developer or other team when changes are made to the code segment associated with one or more copies. 코드 검증 시스템은 또한 개발자가 소프트웨어 코드의 본문의 아키텍처 변화를 이해하는 것을 돕는다. Code verification system also helps developers understand the changes in the architecture body of software code. 코드 검증 시스템은 아키텍처 차이를 판정하기 위한 분석 컴포넌트 및 식별된 차이를 소프트웨어 개발 프로세스와 관련된 개발자들 및 기타 개발자들에게 직관적이고 유용한 방식으로 표시하기 위한 사용자 인터페이스 컴포넌트를 제공한다. Code verification system provides a user interface component for displaying in an intuitive and useful manner the analysis component, and the identified differences for determining the difference between architecture provides developers with the developer, and other related software development process. 이것은 개발자가 변경에 대한 이유들을 이해하고 나쁜 아키텍처 변경들이 너무 지나치기 전에 이들을 제거하는 것을 도울 수 있다. This can help developers to understand the reasons for the change and remove them before they hit so bad over architectural changes. 이 시스템은 코드 복제물들에 대해 유사한 가시화를 제공하여, 개발자로 하여금 하나의 복제물과 다른 복제물 간의 차이를 가시화하게 할 수 있다. This system provides a similar visualization for the code replicas can cause developers to make visible the difference between a replica and another replica. 이것은 검토자들로 하여금 코드 베이스의 2개의 버전 간의 아키텍처 레벨 차이를 분석 및 가시화하는 것을 가능하게 하고, 아키텍처 레벨 차이의 직관적인 이해를 제공하며, 아키텍처 레벨 코드 검토의 효율을 향상시킨다. This causes the reviewer makes it possible to analyze and visualize the architecture level difference between the two versions of the code base, providing an intuitive understanding of the architecture level differences, improving the efficiency of the architecture level of code review. 따라서, 코드 검증 시스템은 코드 정확성을 향상시키며, 이전에 고쳐진 결함들을 갖는 미검출된 코드 복제물들로부터 중복된 노력을 피함으로써 에러들의 비용을 줄인다. Thus, the code verification system improves the accuracy of the code, by avoiding the duplication of effort from the detected non-replica code having a fixed defect prior to reduce the cost of errors.

이 요약은 아래의 상세한 설명에서 더 설명되는 개념들의 선택을 간단한 형태로 소개하기 위해 제공된다. This summary is provided to introduce a selection of concepts that are further described below in the Detailed Description of a simple form. 이 요약은 청구된 발명 대상의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않으며, 청구 발명의 범위를 제한하는 데 사용되는 것도 의도하지 않는다. This summary is not intended to identify key features or essential features of the claimed subject invention, it is not intended to be used to limit the scope of the claimed invention.

도 1은 일 실시예에서 코드 검증 시스템의 컴포넌트들을 나타내는 블록도이다. 1 is a block diagram showing the components of the code verification system in one embodiment.
도 2는 일 실시예에서 소프트웨어 개발자가 수정하고 있는 소프트웨어 코드와 관련된 소프트웨어 코드가 존재한다는 것을 개발자에게 통지하기 위한 코드 검증 시스템의 처리를 나타내는 흐름도이다. 2 is a flow chart showing an operation of the code verification system to notify the developer that the software code associated with the software code, the software developer has been modified in one embodiment exist.
도 3은 일 실시예에서 소프트웨어 코드의 변화와 관련된 소프트웨어 개발자에게 아키텍처 레벨 변화를 표시하기 위한 코드 검증 시스템의 처리를 나타내는 흐름도이다. 3 is a flow chart showing an operation of the code verification system for displaying the architectural level changes to the software developer related to changes in the software code in one embodiment.
도 4는 일 실시예에서 소프트웨어 개발자에게 코드 복제에 대해 통지하기 위해 코드 검증 시스템에 의해 표시되는 사용자 인터페이스를 나타내는 디스플레이 도면이다. Figure 4 is a display diagram showing a user interface that is displayed by the code verification system to notify about the code replica to the software developer in one embodiment.
도 5는 일 실시예에서 소프트웨어 개발자에게 소프트웨어 코드에 대한 아키텍처 변화의 가시화를 제공하기 위해 코드 검증 시스템에 의해 표시되는 사용자 인터페이스를 나타내는 디스플레이 도면이다. 5 is a display diagram showing a user interface that is displayed by the code verification system to provide visualization of the architectural changes to the software code, the software developer in one embodiment.

본 명세서에서는 소프트웨어 개발자들이 동일 코드의 유사한 인스턴스들을 자동으로 식별하고 오랜 시간에 걸친 소프트웨어 코드의 버전들의 차이를 가시화하는 것을 돕기 위해 코드 복제 분석 및 가시화를 이용하여 보강된 코드 검토를 제공하는 코드 검증 시스템이 설명된다. Code verification system to the present specification, software developers are provided for automatic identification and code review reinforced by a code clone analysis and visualization to help visualize the difference between the version of the software code over a long period of time in similar instances of the same code this is explained. 이 시스템은 이전에 설명된 코드 복제 검색 기술(예를 들어, "코드 복제 검출 및 분석(CODE-CLONE DETECTION AND ANALYSIS)"이라는 발명의 명칭으로 2010년 4월 1일자로 출원된 미국 특허 출원 제12/752,942호 참조)을 이용하여 코드 복제물들을 식별하며, 개발자가 변경을 행할 때 사용자에게 유사 코드에 대한 정보를 제공한다. The system previously code replica search techniques described in (e. G., U.S. Patent Application No. 12 filed by the invention that the "code replica is detected and analyzed (CODE-CLONE DETECTION AND ANALYSIS)" designation in 1st April 2010 / 752 942 the call reference) and by the identifying code replica is used, it provides information on the pseudo-code to the user when the developer is carried out to change. 예를 들어, 이 시스템은 개발자가 코드의 블록에 대해 변경을 행할 때 유사한 소프트웨어 코드를 갖는 위치들을 표시하는 툴팁(tooltip) 팝업 또는 윈도우를 제공할 수 있다. For example, the system may provide a tool tip (tooltip) or a pop-up window displaying the positions of similar software code, by developers to perform the changes for a block of code. 더 거친 레벨에서, 이 시스템은 자신들의 코드가 하나 이상의 복제물을 포함하는 코드 세그먼트들에 대해 체크인이 행해질 때 개발자에게 또는 다른 팀들에게 자동화된 통지를 제공할 수 있다. In the tougher levels, the system can provide automated check-in notifications to the developer or the other teams when done for the code segment that contains one or more copies of their code. 이 시스템은 변경될 코드 부분의 복제 사본들을 식별하고, 동일한 변경들의 잠재적 적용을 위해 복제 사본들을 체크하도록 코드 검토자에게 제안할 수 있다. The system may offer code reviewers to identify duplicate copies of a piece of code to be changed, and check for duplicate copies of the potential application of the same changes.

코드 검증 시스템은 또한 개발자가 소프트웨어 코드의 본문의 아키텍처 변화를 이해하는 것을 돕는다. Code verification system also helps developers understand the changes in the architecture body of software code. 예를 들어, 소프트웨어 설계자는 프로젝트의 2개의 이정표(예를 들어, M1 및 M2) 간의 아키텍처 변화를 이해하기를 원할 수 있다. For example, a software designer may wish to understand the architecture changes between two milestones (e.g., M1 and M2) of the project. 다른 예로서, 2개의 소스 제어 분기 간의 코드 분기 통합을 수행하는 개발자는 2개의 분기 내의 소스 코드 사이의 아키텍처 레벨 차이를 이해하기를 원할 수 있다. As another example, a developer code for performing branch integration between the two source control branch may wish to understand the architecture, the level difference between the source code in the two branches. 코드 검증 시스템은 아키텍처 차이를 결정하기 위한 분석 컴포넌트 및 식별된 차이를 소프트웨어 개발 프로세스와 관련된 개발자들 및 기타 개발자들에게 직관적이고 유용한 방식으로 표시하기 위한 사용자 인터페이스 컴포넌트를 제공한다. Code verification system provides a user interface component for displaying the analysis component and intuitively identify the difference to developers and other developers involved and the software development process is a useful way to determine a difference architectures. 이것은 개발자가 변화에 대한 이유들을 이해하고 불량한 아키텍처 변화들이 너무 심해지기 전에 이들을 제거하는 것을 도울 수 있다. This can help developers to understand and to remove them before the bad architecture changes are so severe that the reason for the change. 이 시스템은 코드 복제물들에 대해 유사한 가시화를 제공하여, 개발자로 하여금 하나의 복제물과 다른 복제물 간의 차이를 가시화하게 할 수 있다. This system provides a similar visualization for the code replicas can cause developers to make visible the difference between a replica and another replica. 이것은 검토자들로 하여금 코드 베이스의 소스 코드의 2개의 버전 간의 아키텍처 레벨 차이를 분석 및 가시화하는 것을 가능하게 하고, 아키텍처 레벨 차이의 직관적인 이해를 제공하며, 아키텍처 레벨 코드 검토의 효율을 향상시킨다. This causes the reviewer makes it possible to analyze and visualize the architecture level difference between the two versions of the source code of the code base, providing an intuitive understanding of the architecture level differences, improving the efficiency of the architecture level of code review. 따라서, 코드 검증 시스템은 코드 정확성을 향상시키며, 이전에 고쳐진 결함들을 갖는 미검출된 코드 복제물들로부터 중복된 노력을 피함으로써 에러들의 비용을 줄인다. Thus, the code verification system improves the accuracy of the code, by avoiding the duplication of effort from the detected non-replica code having a fixed defect prior to reduce the cost of errors.

개발자들은 종종 빠른 코드 재사용을 위해 코드를 복제한다. Developers often replicate the code for fast code reuse. 복제된 코드는 코드 복제물이라고도 한다. The replica code is also referred to as a replica code. 아주 종종, 하나의 코드에 대해 변경을 행할 때, 동일한 변경이 그의 복제된 사본들에도 적용되어야 한다. When very often, perform the changes for one of the code, the same change should be applied to his cloned copy. 오늘날, 코드 검토 동안, 검토자는 단지 그의 기억 속의 코드 베이스에 대한 지식에 의해 동일 변경이 그의 복제된 사본들에 적용될 필요가 있는지를 판단할 수 있다. While today, code review, reviewers can only determine whether the same changes need to be applied to the replicated copies by his knowledge of the code base inside his memory. 이것은 모든 복제 사본들이 고려되는 것을 보증하기 어렵다. It is difficult to ensure that all replicated copies are being considered. 코드 검증 시스템은 현재 코드 베이스의 소스 코드를 인덱싱하는 코드 복제 검색 엔진에 대해 또는 더 확장된 코드 베이스 범위에서 변경된 코드 스니펫(snippet)들을 검색함으로써 이를 해결하며, 복제된 사본들을 체크하도록 코드 검토자들에게 자동으로 알린다. Code verification system by retrieving the current changes from, or more extended code base to the code replica search engines to index the source code of the code base, code snippets (snippet) and resolve it, review the code to check the cloned copy characters automatically it informs as to.

오늘날, 코드 검토자가 코드 검토 동안에 소스 코드의 2개의 버전 간의 아키텍처 레벨 차이를 이해하기는 어렵다. Today, the code reviewer is difficult to understand the architecture level difference between the two versions of the source code during the code review. 기존의 툴들은 추가 또는 제거된 라인, 단어 또는 문자와 같은 텍스트 레벨 차이를 지시하는 훌륭한 작업을 행하지만, 소프트웨어 코드는 너무 많은 방식으로 구축될 수 있으므로, 이러한 툴들은 어떠한 종류의 더 높은 레벨의 뷰(view)도 제공하지 못한다. Only the existing tools are performing an excellent job instructing the text level differences, such as adding or removing lines, words or characters, the software code so so many ways, can be built in, these tools can view any kind of higher level (view) also does not provide. 클래스 뷰어, 이름 공간 뷰어 등과 같이 코드의 현재 버전에 대한 아키텍처 정보를 표시하기 위한 훌륭한 기존 툴들도 존재한다. There are also great tools for displaying existing architecture information about the current version of the code, such as a class viewer, and the viewer namespace. 그러나, 이러한 툴들은 소프트웨어 코드의 2개의 버전을 비교하고 개발자가 변경된 것을 가시화하는 것을 돕기 위한 기능을 갖지 못한다. However, these tools can compare the two versions of the software code and does not have the ability to help you visualize what the developer has changed. 이것은 코드 검토자가 아키텍처 레벨 코드 리팩터링(refactoring)이 도움될지를 판단하는 것을 더 어렵게 한다. This is more difficult to determine whether the code reviewer architecture level refactoring code (refactoring) to help.

도 1은 일 실시예에서 코드 검증 시스템의 컴포넌트들을 나타내는 블록도이다. 1 is a block diagram showing the components of the code verification system in one embodiment. 시스템(100)은 파싱 컴포넌트(110), 인덱싱 컴포넌트(120), 변경 검출 컴포넌트(130), 코드 복제 검출 컴포넌트(140), 차이 가시화 컴포넌트(150), 사용자 인터페이스 컴포넌트(160) 및 통신 컴포넌트(170)를 포함한다. System 100 includes a parsing component 110, an indexing component 120, a change detection component 130, a code replica detection component 140, a difference visualization component 150, a user interface component 160 and communications component (170 ) a. 이러한 컴포넌트들 각각이 본 명세서에서 더 상세히 설명된다. These components are respectively described in more detail herein.

파싱 컴포넌트(110)는 프로그래밍 언어로 작성된 소프트웨어 코드를 파싱하여, 인덱싱을 위해 소프트웨어 코드와 관련된 정보를 식별한다. Parsing component 110 parses the software code in any programming language, and identifies information related to a software code for indexing. 본 명세서에서는 단순히 파싱으로서 지칭되지만, 이 프로세스는 파싱, 사전적 분석, 최적화 등을 포함하는 소프트웨어 코드 컴파일링과 관련된 통상적인 프로세스들을 포함할 수 있다. In this specification, but is simply referred to as parsing, this process may include a conventional process relating to the software code compilation, including parsing, pre-analysis, optimization. 파싱 컴포넌트(110)는 변수 이름들, 코드의 블록들, 언어 키워드들(예를 들어, "if", "then" 및 "while"), 변수 선언들, 클래스 정의들 및 임의의 다른 코드 특징들을 식별할 수 있다. The parsing component 110 is a variable name, the blocks of code, language keyword (e.g., "if", "then" and "while"), variable declarations, the class definition, and any other code, characterized in It can be identified. 파싱 컴포넌트(110)는 다양한 프로그래밍 언어들을 처리하기 위한 플러그-인 모듈들 또는 기타 서브컴포넌트들을 포함할 수 있다. Parsing component 110 plugs to handle a variety of programming languages ​​may include a module, or other sub-components. 파싱 컴포넌트(110)는 코드 내에서 체크된 큰 본문은 물론, 개발자에 의해 활발하게 편집되고 있는 코드의 국지적 본문에 대해서도 작용할 수 있다. Parsing component 110 is a large body checking in code, of course, can also act locally in the body of the code that is being actively edited by a developer. 일부 실시예들에서, 파싱 컴포넌트(110)는 사용자가 타이핑 및/또는 중지할 때 입력되는 새로운 텍스트를 파싱한다(MICROSOFT TM INTELLISENSE TM). In some embodiments, the parsing component 110 parses the new text to be entered when the user type and / or the stop (MICROSOFT TM INTELLISENSE TM).

인덱싱 컴포넌트(120)는 파싱 동안에 식별된 소프트웨어 코드 정보를 인덱싱하여, 코드 정보의 빠른 탐색 및 매칭을 제공한다. Indexing component 120 to index the software code information identified during parsing, provides a fast search and matching of the code information. 컴포넌트(120)는 코드의 큰 본문 또는 코드의 다수의 본문의 인덱스를 생성할 수 있으며, 입력 코드와 매칭되는 공지 코드가 존재하는지를 결정하는 질의(query)를 수신할 수 있다. Component 120 may generate a large body, or the index of the number of the body of the code of the code, it is possible to receive a query (query) to determine whether a known code that matches the input code exists. 예를 들어, 인덱스는 큰 프로젝트에 대한 코드를 포함할 수 있으며, 시스템(100)은 개발자가 현재 타이핑하고 있는 것에 기초하여 질의를 제출할 수 있다. For example, the index may include the code for big projects, system 100 includes a developer can submit a query based on what you are currently typing. 시스템(100)은 또한 개발자의 현재 편집 위치 주변의 코드의 서브세트에 기초하여 질의하여 현재 위치와 관련된 코드 복제물들을 식별할 수 있다. The system 100 may also query based on the subset of the current editing position near the developer's code to identify the code replica is associated with the current location. 인덱싱 컴포넌트(120)는 개발자의 컴퓨팅 장치 상에서 국지적으로 또는 개발자의 컴퓨팅 장치로부터 액세스 가능한 서버 상에서 동작할 수 있다. Indexing component 120 may operate on a server accessible from the local to the developer or computing device on a computing device of a developer. 인덱싱 컴포넌트(120)는 새로운 코드 변화들 또는 추가적인 코드 베이스들이 오랜 시간에 걸쳐 식별될 때 이들을 통합하기 위해 증대 방식(incremental way)으로 동작한다. Indexing component 120 operates in a manner increasing (incremental way) in order to integrate them in the new code, changing code or additional base to be identified over time.

변경 검출 컴포넌트(130)는 식별된 소프트웨어 코드의 범위에 대한 개발자에 의한 현재의 변경을 검출한다. Change detection component 130 detects changes in the current due to the developer for a range of the identified software code. 컴포넌트(130)는 개발자가 소프트웨어 코드를 편집하는 데 사용하는 IDE에 통합될 수 있다. Component 130 may be integrated into the IDE, developers used to edit software code. 일부 실시예들에서, 변경 검출 컴포넌트(130)는 타이핑 및 기타 개발자 입력을 모니터링하여, 개발자가 소프트웨어 코드에 대해 변경을 행하고 있는 것을 검출한다. In some embodiments, the change detection component 130 to monitor the type and other developer input, detects that a developer performs a change to the software code. 검출된 변경은 특정 소스 파일에서 또는 하나 이상의 시각적 편집 툴들을 통해 소프트웨어 코드를 추가, 삭제 또는 갱신하는 것을 포함할 수 있다. The detected change may include add, delete, or update the software code via a particular source file, or one or more visual editing tools. 변경 검출 컴포넌트(130)는 하나 이상의 코드 범위를 식별하고, 범위들을 공지된 코드 복제물들의 인덱스와 비교하기 위해 코드 복제 검출 컴포넌트(140)에 제출한다. Change detection component 130 identifies one or more of the code range and submit to the code replica is detected a component 140 to be compared with the index of the known code replica ranges.

코드 복제 검출 컴포넌트(140)는 소프트웨어 개발자에 의해 이루어진 검출된 변경의 식별된 범위와 관련된 하나 이상의 코드 복제물을 식별한다. Code replica detection component 140 identifies one or more replica code associated with the identified range of the detected changes effected by the software developer. 시스템은 개발자의 현재 위치 주변의 코드 또는 코드 범위를 인덱스 컴포넌트(130)에 제출하여, 동일한 또는 다른 소프트웨어 프로젝트들에서 유사한 또는 매칭되는 코드 범위들을 식별할 수 있다. The system may identify the code range in which to complete the code, or the code range of the vicinity of the current position in the index component developer 130, a similar or matching at the same or other software projects. 코드 복제 검출 컴포넌트(140)는 개발자의 컴퓨팅 장치 상에 저장된 복제물들을 식별하도록 국지적으로 동작할 수 있거나, 회사 내의 서버 상에서 또는 다수의 소프트웨어 프로젝트에 대한 소스 코드의 인덱싱을 제공하는 공개 인터넷 서버 상에서와 같이 더 광범위한 레벨에서 동작할 수 있다. Code replica detection component (140) may be operated locally to identify replicas stored on a computing device of a developer, such as the public on the internet server providing the indexing of the source code for the or a plurality of software project on a server in the enterprise It can operate in a more comprehensive level. 일부 실시예들에서, 코드 복제 검출 컴포넌트(140)는 입도 정보(예를 들어, 블록 레벨, 함수 레벨, 모듈 레벨 유사성들)에 기초하여 또는 현재 코드 위치 주변의 결정된 크기(예를 들어, 현재 위치 +/- 100 문자)에 기초하여 코드 복제물의 시작과 끝을 식별한다. In some embodiments, the code replica detection component 140 is size information (e.g., block level, a function level, a module level similarity to) the determined size of the peripheral to, or the current code location based on (e. G., Current location based on the +/- 100 characters) identifies the beginning and end of the code replica. 복제물들은 다양한 상이한 방식으로 정의 및 식별될 수 있으며, 본 명세서에서의 설명은 시스템(100)을 어느 하나의 특정 방법으로 한정하는 것을 의도하지 않는다. Replica are identified and can be defined in many different ways, the description herein is not intended to limit the system 100 in any one specific method. 특히, 상이한 프로그래밍 언어들은 코드 복제물들을 식별하는 데 적합한 소스 코드의 입도에서 다를 것이다. In particular, different programming languages ​​will differ from the size of the source code used to identify the appropriate code replica.

차이 가시화 컴포넌트(150)는 소스 코드의 아키텍처 모델을 생성하고, 아키텍처 모델을 다른 아키텍처 모델들과 비교하여 아키텍처 차이를 식별한다. Difference visualization component 150 generates the architectural model of the source code and compares the architectural model with other architectural model identifies the architectural differences. 컴포넌트(150)는 동일 소스 코드의 2개 버전(예를 들어, 오늘로부터의 하나의 버전과 지난주로부터의 하나의 버전)을 입력으로서 수신하고, 2개 버전을 비교하여 아키텍처 차이를 소프트웨어 개발자 또는 설계자에게 표시할 수 있다. Component 150 are two versions of the same source code received as input (e.g., a version with a version of from a week from the day), and the two versions of the software developer or designer the architectural differences as compared to the It can be shown to. 컴포넌트(150)는 또한 코드의 상이한 본문들을 비교하여, 개발자들이 아키텍처 유사성 및 차이를 가시화하는 것을 도울 수 있다. Component 150 also compares the different body of code can help developers visualize the architectural similarities and differences. 일부 실시예들에서는, IDE가 코드 검토 프로세스 동안 차이 가시화 컴포넌트(150)를 호출하며, 따라서 개발자는 체크인된 코드와 새로운 코드 사이의 차이를 아키텍처 레벨에서 쉽게 식별할 수 있다. In some embodiments, the IDE code review process, call the difference visualization component 150 for, so developers can easily identify the difference between the check-in code and new code at the architectural level. 소프트웨어 코드는 다양한 설계들 및 아키텍처들로 팩터링 및 리팩터링될 수 있다. The software code can be refactored, and Factoring in various design and architecture. 종종, 텍스트 레벨에서 크게 변하는 소스 코드는 아키텍처 레벨에서는 매우 적게 변하며, 그 반대도 마찬가지이다. Often, large changes in source code in a text level varies very little in the architectural level, and vice versa. 예를 들어, 개발자가 프로그램 내의 모든 변수를 개명한 경우, 텍스트는 거의 매칭되지 않지만, 아키텍처는 동일할 것이다(예를 들어, 동일 클래스, 클래스들 사이의 관계 등). For example, if a developer has renamed all of the variables in the program, the text is rarely matched, the architecture will be the same (for example, the relationship between the same class, class, etc.).

사용자 인터페이스 컴포넌트(160)는 식별된 코드 복제물들 및 식별된 아키텍처 차이들을 개발자에게 제공한다. User interface component 160 may provide copies of the identification code and the identification architectural differences to the developer. 사용자 인터페이스 컴포넌트(160)는 그래픽 사용자 인터페이스(GUI), 프로그램 애플리케이션 프로그래밍 인터페이스(API) 또는 개발자들에게 정보를 제공하기 위한 다른 인터페이스를 포함할 수 있다. User interface component 160 may include a different interface for providing information to the graphical user interface (GUI), the program's application programming interface (API) or developers. 컴포넌트(160)는 IDE의 일부로서 또는 확장형 IDE 내에 통합된 플러그-인으로서 동작하여, 사용자가 소프트웨어 코드를 편집할 때 복제 식별을 제공하고, 요청시에 아키텍처 비교를 제공할 수 있다. Component 160 is a plug incorporated within or as part of an extended IDE IDE - can operate as a, user and service identification replication when editing software code, and provides an architecture compared to the request. 일부 실시예들에서, 시스템(100)은 소스 코드 변화들을 검토하기 위한 코드 검토 프로세스의 일부로서 동작하고, 코드 검토 프로세스 동안 GUI 또는 다른 인터페이스를 제공하여, 코드 복제물들 및 현재 변경들과 관련된 아키텍처 차이들을 개발자 및/또는 검토자에게 표시한다. In some embodiments, the system 100 includes a code review operation as part of the process, and the code review process by providing a GUI or other interface for architecture differences related to the code replica and the current change to examine the source code change the displays to the developer and / or reviewers. 컴포넌트(160)는 또한 정보를 가시화하는 데 적합한 웹, 이동 또는 다른 인터페이스들을 제공할 수 있다. Component 160 may also provide a suitable web, moving, or other interface for visualizing the information. 일부 실시예들에서, 사용자 인터페이스 컴포넌트(160)는 코드 소유자들 또는 다른 개발자들의 소프트웨어 코드가 기초로 하는 복제된 코드가 변경되었다는 것을 검출할 때 그들에게 통지를 제공하는 통지 서브컴포넌트를 포함한다. In some embodiments, the user interface component 160 may include a notification sub-component that provides a notification to them upon detecting that the the replica code to the software code of the code owner or other developer based change. 이것은 개발자들로 하여금 개발자들이 서로 알거나 코드의 공유를 아는지에 관계없이 관련 코드에서 다른 개발자들에 의해 식별된 그들의 코드 내의 문제들을 해결할 수 있게 해준다. This allows the developers allows developers to know and solve problems within their code, the identification by the relevant code from other developers, regardless if they know the share code with each other.

통신 컴포넌트(170)는 시스템(100)이 분산될 때 시스템(100)의 다른 컴포넌트들 간의 통신을 제공하는 옵션 컴포넌트이다. Communication component 170 is an optional component which provides for communication between the different components of the system 100 when the distributed system (100). 시스템은 완전히 단일 개발자의 클라이언트 컴퓨팅 장치 상에서 동작할 수 있지만, 일부 사용자들은 코드의 훨씬 더 큰 본문들에 시스템(100)을 적용함으로써 추가적인 가치를 발견할 것이다. System can be fully operational on a client computing device for a single developer, some users will find additional value by applying the system 100 to a much larger body of code. 시스템(100)은 단일 개발자의 컴퓨팅 장치 상에서 이용 가능한 것보다 큰 코드 본문들에 액세스하기 위해 그리고 시스템(100)의 기능들을 수행하는 데 사용되는 개발자의 컴퓨팅 장치로부터 자원 소비를 덜기 위해 개별 컴포넌트들이 하나 이상의 서버들 상에 배치되게 할 수 있다. System 100 individual components to one to ease the consumption of resources from a developer's computing device is used to perform the functions of and system (100) for access to the large body of code than what is available on the computing device of a single developer It may be disposed on more than one server. 예를 들어, 코드 복제 검출 및 아키텍처 모델링은 다수의 코드 버전 및 다수의 코드 베이스에 대한 액세스를 갖는 서버에 의해 제공될 수 있다. For example, the code replica is detected and architecture modeling may be provided by a server having access to a plurality of code and version number of the base code. 그러한 예들에서, 개별 개발자의 IDE는 통신 컴포넌트(170)를 통해 서버에 접속하여, 개발자를 돕기 위한 정보를 수신할 수 있다. In such instances, individual developers of IDE is connected to the server through the communication component 170 can receive information to assist the developer. 통신 컴포넌트(170)는 근거리 네트워크(LAN) 또는 인터넷 상의 전송 제어 프로토콜(TCP)과 같은 다양한 일반 네트워킹 프로토콜들 및 네트워크들을 사용할 수 있다. Communications component 170 may use a variety of networking protocols and general network such as a local area network (LAN) or the Transmission Control Protocol (TCP) over the Internet. 시스템은 또한 클라우드 컴퓨팅 자원들을 이용하여, MICROSOFT TM WINDOWS TM AZURE TM에 의해 제공되는 것들과 같은 스케일링 가능 클라우드 기반 서버들에 처리, 저장 또는 다른 기능들을 분산시킬 수 있다. The system also uses a cloud computing resource, MICROSOFT TM WINDOWS TM AZURE may be dispersed in the treatment, storage, or other features to the scalable cloud-based servers, such as those provided by the TM.

코드 검증 시스템을 구현하는 컴퓨팅 장치는 중앙 처리 유닛, 메모리, 입력 장치들(예를 들어, 키보드 및 포인팅 장치들), 출력 장치들(예를 들어, 디스플레이 장치들) 및 저장 장치들(예를 들어, 디스크 드라이브들 또는 다른 비휘발성 저장 매체들)을 포함할 수 있다. A computing device to implement the code verification system is the central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e. G. , it may comprise a disk drive or other non-volatile storage media). 메모리 및 저장 장치들은 시스템을 구현하거나 가능하게 하는 컴퓨터 실행 가능 명령어들(예를 들어, 소프트웨어)로 인코딩될 수 있는 컴퓨터 판독 가능 저장 매체들이다. Memory and storage devices are computer-executable instructions that implement the system, or computer program product are possible which may be encoded with a (e. G., Software). 게다가, 데이터 구조들 및 메시지 구조들이 저장될 수 있거나, 통신 링크 상의 신호와 같은 데이터 전송 매체를 통해 전송될 수 있다. In addition, or data structures and message structures may be stored, it can be transmitted via a data transmission medium, such as a signal on a communications link. 인터넷, 근거리 네트워크, 광역 네트워크, 점대점 다이얼-업 접속, 셀폰 네트워크 등과 같은 다양한 통신 링크들이 사용될 수 있다. The Internet, a local area network, wide area network, point-to-point dial-up connection may be used, various communication links such as a cell phone network.

시스템의 실시예들은 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그래밍 가능 소비자 전자 장치, 디지털 카메라, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템 또는 장치를 포함하는 분산형 컴퓨팅 환경, 셋톱 박스, 시스템 온 칩(SOC) 등을 포함하는 다양한 동작 환경들에서 구현될 수 있다. Embodiment of the system for example, are personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PC, a minicomputer, a mainframe computer, any of the above systems or distributed computing environments that include a device, may be implemented in a set-top box, a system-on-chip variety of operating conditions, including (SOC) and the like. 컴퓨터 시스템들은 셀폰, 개인용 휴대 단말기, 스마트폰, 개인용 컴퓨터, 프로그래밍 가능 소비자 전자 장치, 디지털 카메라 등일 수 있다. Computer system may be a cell phone, a personal digital assistant, smart phones, personal computers, programmable consumer electronics, digital cameras.

시스템은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령어들의 일반적 상황에서 설명될 수 있다. The system may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. Generally, program modules include routines that perform particular tasks or implement particular abstract data types, programs, objects, components, data structures and the like. 통상적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 필요에 따라 결합 또는 분산될 수 있다. Typically, the functionality of the program modules may be combined or distributed as required in the various embodiments.

도 2는 일 실시예에서 소프트웨어 개발자가 수정하고 있는 소프트웨어 코드와 관련된 소프트웨어 코드가 존재한다는 것을 개발자에게 통지하기 위한 코드 검증 시스템의 처리를 나타내는 흐름도이다. 2 is a flow chart showing an operation of the code verification system to notify the developer that the software code associated with the software code, the software developer has been modified in one embodiment exist. 블록 210에서 시작하여, 시스템은 소프트웨어 코드 베이스를 파싱하여, 소프트웨어 코드와 관련된 정보를 식별한다. Beginning at block 210, the system parses the software code base, the identification information related to the software code. 시스템은 언어 특징들, 코드의 블록들, 변수 정보, 클래스 및 다른 데이터 구조 정보, 함수 정보 등을 식별할 수 있다. The system may identify the language characteristics, the blocks of code, variable information, class and other data structure information, the function information, and the like. 시스템은 사용자들이 소프트웨어 코드를 수정할 때 질의하기 위한 인덱스에 파싱된 정보를 제공한다. The system provides information to parse the index to query the user to modify the software code. 시스템은 또한 개발자가 현재 작업하고 있는 소스 코드를 파싱하여, 인덱스 내의 이전에 파싱된 소프트웨어 코드와 비교한다. The system also enable developers to parse the source code you are working, compared with the previous software code parsing in the index.

블록 220에서 계속하여, 시스템은 파싱된 소프트웨어 코드 베이스를 인덱싱하여, 소프트웨어 코드의 매칭 섹션들의 빠른 식별을 제공한다. It continues at block 220 by, the system indexes the parsing software code base, provides a rapid identification of the matching section in the software code. 인덱스는 개발자의 컴퓨팅 장치로부터의 소프트웨어 코드 또는 잠재적으로 많은 소프트웨어 프로젝트에 대한 잠재적으로 많은 개발자의 기여를 포함하는 더 광범위한 코드 베이스를 포함할 수 있다. The index may include a more extensive code base, including the potential number of developers contributing to many of the software project, the software code, or potentially from a computing device developers. 시스템은 인덱스에 기초하는 질의 및 검색 기능을 제공하여, 개발자가 작업하고 있는 소프트웨어의 현재 범위와 관련된 코드 복제물들을 식별한다. The system provides the ability to query and search based on the index identifies duplicate code associated with the current range of software developers and operations. 시스템은 개발자들이 소프트웨어 코드를 코드 관리 시스템에 대해 또는 다른 중대한 이정표들에서 체크인할 때 인덱스를 갱신할 수 있다. The system can update the index when the developers check-in or another significant milestone for the software code in the code control system. 시스템은 또한 개발자가 소스 코드를 편집할 때 관련 정보를 탐색하기 위해 개발자의 컴퓨팅 장치에 국지적 인덱스를 제공할 수 있다. The system can also provide a local index, the developer of the computing device to search for relevant information to the developer to edit the source code.

앞의 두 단계는 진행했던 대로 그리고 이어지는 단계들보다 이른 시간에 또는 개별 서버에서 발생할 수 있다. The previous two steps can occur in the early hours than those in which progress and the next step, or an individual server. 예를 들어, 시스템은 소프트웨어 코드 변화들을 연속적으로 식별하고 인덱싱하는 코드 복제 인덱싱 서비스를 제공할 수 있다. For example, the system can provide the code replica indexing service to continuously identify and index the software code changes. 개발자의 컴퓨팅 장치 상에서 실행되는 개별 서비스가 개발자에 의해 이루어진 변경들을 식별하고, 인덱스 서비스에 질의하여 관련 소프트웨어 코드를 식별할 수 있다. Individual services running on a computing device of a developer to identify the changes made by the developer, and to query the index service may identify the related software code. 대안으로서 또는 추가로, 시스템은 개발자의 컴퓨팅 장치 상에서 인덱스 서비스를 제공하여 동일 컴퓨팅 장치 상에서 관련 코드를 식별할 수 있다. As an alternative or in addition, the system provides the Indexing Service on a computing device, the developer can identify the relevant code on the same computing device.

블록 230에서 계속하여, 시스템은 소프트웨어 코드를 편집하는 개발자에 의해 제공되는 소프트웨어 코드 변경을 검출한다. It continues at block 230 by, the system detects the change of software code provided by a developer to edit the software code. 시스템은 개발자에 의한 타이핑을 검출하여, 소프트웨어 코드에서 식별된 결함을 고칠 수 있다. The system detects the type of the developer, it is possible to fix the defects identified in the software code. 사용자가 타이핑할 때, 시스템은 인덱스에 대해 질의에서 변경을 제출하여 개발자가 작업하고 있는 코드에 대한 관련 코드를 식별할 수 있다. When you type, the system can submit a query for changes in the index identifies the specific code to the code that developers are working. 시스템은 또한 IDE에, 또는 IDE가 소프트웨어 변화들을 설명하는 정보를 시스템에 제공할 수 있고 그에 응답하여 코드 복제물들에 대한 정보를 수신할 수 있는 다른 소프트웨어 프로그램에 API를 제공할 수 있다. The system also may provide an API in the IDE, or IDE may provide information describing the software changes in the system and in response to which another software program that is capable of receiving information about the code replica. 일부 실시예들에서, 개발자는 코드의 특정 블록을 선택하고, 선택된 코드의 블록과 관련된 코드 복제물들을 식별하기 위한 옵션(예를 들어, "유사 코드 발견(Find Similar Code)")을 선택할 수 있다. In some embodiments, the developer can select an option (for example, "similar to the code found (Find Similar Code)") for selecting a particular block of code and identifies the code duplicates associated with blocks of selected code.

블록 240에서 계속하여, 시스템은 개발자에 의해 제공되는 코드 변경과 관련된 임의의 코드 복제물을 식별한다. It continues at block 240 by, the system identifies the code of reproduction relating to the code Change provided by the developer. 시스템은 인덱스를 참고하고 코드 변경을 둘러싸는 코드의 부분 또는 변경 전의 코드의 이전 버전을 제공하여 관련 코드의 식별을 도울 수 있다. The system can provide an earlier version of the reference index and the previous portion of the code or change the enclosed code to change the code to help identify the relevant code. 코드 복제물들은 현재 코드 베이스 내에 관련 코드 베이스들 내에 또는 소프트웨어 코드의 특정 범위를 우연히 공유하는 완전히 관련없는 코드 베이스들 내에 존재할 수 있다. Code copies may exist within the code base is not completely related to inadvertently share specific scope of the current code related to the code base or in the software code in the database. 코드의 블록들은 개발자들에 의해 매크로 및 마이크로 레벨 양쪽에서 재사용되는 것이 일반적이다. Block of code are generally to be re-used in both macro and micro level, by developers. 일부 예들에서 개발자는 특정 함수 또는 프로그램 루프를 재사용할 수 있으며, 다른 예들에서 개발자는 전체 모듈들 또는 클래스들을 재사용할 수 있다. In some instances, developers can re-use a particular function or program loop, developers can reuse the entire module or class, in other instances. 시스템은 다양한 레벨들 및 입도들에서 복제물들을 식별할 수 있다. The system can identify duplicate at various levels and particle sizes. 일부 실시예들에서, 시스템은 사용자 또는 애플리케이션이 복제물들이 식별되는 레벨을 구성하기 위해 수정할 수 있는 구성 파라미터들을 제공한다. In some embodiments, the system provides configuration parameters that can be modified to form a level, the user or application that copies are identified.

판정 블록 250에서 계속하여, 시스템이 적어도 하나의 복제물을 식별한 경우, 시스템은 블록 260에서 계속하고, 그렇지 않은 경우에는 시스템이 종료된다. Continues at decision block 250, if the system identifies at least one of the reproduction, the system continues at block 260, and otherwise, end the system. 시스템은 복제 인덱스 서버로부터 또는 개발자의 컴퓨팅 장치 상에서 실행되는 국지적 인덱스로부터 식별된 복제물들의 리스트를 수신할 수 있다. The system can receive a list of duplicate identification from the local index is running on a computing device from replicating the index server or developer. 리스트는 복제물의 소스 코드의 저장 위치(예를 들어, URL(uniform resource locator) 또는 파일 경로), 파일 이름 정보, 라인 번호 정보, 복제물과 관련된 개발자 등과 같은 복제물 설명 정보를 포함할 수 있다. The list may contain duplicate description information, such as the storage location of copies of the source code (for example, URL (uniform resource locator) or file path), the file name information and the line number information, and developers associated with reproduction.

블록 260에서 계속하여, 시스템은 적어도 하나의 복제물이 존재한다는 것을 소프트웨어 개발자에게 통지하며, 따라서 개발자는 검출된 변경을 식별된 복제물들에 적용할지를 결정할 수 있다. Continuing at block 260, the system notifies the software developer that at least one of the copies is present, therefore, developers can determine whether to apply to the identification of the detected change reproduction. 시스템은 식별된 복제물들을 개발자에게 표시하기 위해 IDE 또는 다른 사용자 인터페이스에서 팝업 메시지, 툴 팁, 도킹된 리스트를 제공할 수 있다. The system can provide a list of pop-up messages, tool tips, docked in the IDE or other user interface to indicate to the developer of the identified clone. 시스템은 표시할 복제물들의 임계치(예를 들어, 10)를 결정할 수 있거나, 복제물들 사이에서 내비게이션하기 위한 사용자 인터페이스 제어들을 제공할 수 있다. The system may provide user interface controls for the threshold value of the replica to be displayed (e.g., 10) or to determine, navigation among the copies. 일부 예들에서, 개발자는 복제물들을 수정하기 위한 액세스를 갖지 않을 수 있으며, 시스템은 개발자에게 코드 변경을 다른 개발자들에게 통지하기 위한 연락처 정보를 제공할 수 있다. In some examples, the developer may not have access to modify the copies, the system can provide contact information for the developer to notify the code changes to other developers. 시스템은 또한 코드 복제를 담당하는 다른 개발자들에게 이메일 메시지와 같은 자동화된 통지를 제공할 수 있다. The system can also provide automated notification, such as e-mail messages to other developers responsible for code duplication. 통지는 변경을 설명하고 변경을 행한 개발자를 식별하는 정보, 및 변경에 대한 동기를 설명하는, 개발자에 의해 제공되는 임의의 정보를 포함할 수 있다. The notification may include any information provided by the developer to describe the synchronization of the information, and changes to identify the developer describes the changes and subjected to change. 블록 260 후에, 이러한 단계들이 종료된다. After block 260, that these steps are terminated.

도 3은 일 실시예에서 소프트웨어 코드의 변화와 관련된 소프트웨어 개발자에게 아키텍처 레벨 변화를 표시하기 위한 코드 검증 시스템의 처리를 나타내는 흐름도이다. 3 is a flow chart showing an operation of the code verification system for displaying the architectural level changes to the software developer related to changes in the software code in one embodiment. 블록 310에서 시작하여, 시스템은 하나 이상의 아키텍처 특징을 포함하는 소프트웨어 코드의 제1 버전을 수신한다. Beginning at block 310, the system receives a first version of the software code comprising at least one architectural feature. 소프트웨어 코드는 개발자가 작업하고 있는 프로젝트의 일부인 코드 베이스 또는 다른 코드 베이스들을 포함할 수 있다. The software code may include the code base, or other part of the code base project where the developer is working. 개발자는 개발자가 아키텍처 비교를 받기를 원하는 소프트웨어 코드의 2개의 버전을 식별할 수 있다. Developers can identify the two versions of the software code developers want to receive architecture comparison. 일부 실시예들에서, 시스템은 개발자가 아키텍처 비교를 요청할 수 있는 사용자 인터페이스를 제공한다. In some embodiments, the system provides a user interface that allows developers to request architecture comparison.

블록 320에서 계속하여, 시스템은 수신된 소프트웨어 코드의 제1 버전의 개념적 가시화를 제공하는 제1 아키텍처 모델을 생성한다. It continues at block 320 by, the system generates a first architectural model that provides a conceptual visualization of the first version of the received software code. 모델은 소프트웨어 코드를 아키텍처 레벨에서 설명하는 클래스들, 모듈들, 이름 공간들, 및 다른 프로그래밍 언어 및 환경 특징들을 포함할 수 있다. Models can include classes, modules, namespaces, and other programming languages ​​and environments characteristic that describes the software code from the architecture level. 모델은 하나 이상의 메모리내 데이터 구조들 및 소프트웨어 코드의 제1 버전의 아키텍처를 관찰하기 위한 표시된 가시화들을 포함할 수 있다. Model may include a visualization displayed to monitor one or more in-memory data structures, and the first version of the architecture of the software code. 시스템은 이전에 저장된 소프트웨어 코드(예를 들어, 체크인들, 릴리스들 또는 다른 이정표들)의 아키텍처 모델들을 생성하고 저장할 수 있다. The system can generate an architectural model of the old software code (for example, check-in, release or other milestone) stored in and save.

블록 330에서 계속하여, 시스템은 하나 이상의 아키텍처 특징을 포함하는 소프트웨어 코드의 제2 버전을 수신한다. It continues at block 330 by, the system receives a second version of the software code comprising at least one architectural feature. 제2 버전은 동일 코드 베이스의 후속 버전 또는 개발자가 아키텍처 차이를 식별하기를 원하는 관련 코드 베이스일 수 있다. The second version can be a follow-up version of the same code base, developers or database-related code that you want to identify a difference architectures. 개발자는 제2 소프트웨어 버전을 식별할 수 있거나, 시스템은 제2 소프트웨어 버전이 개발자가 현재 작업하고 있는 소스 코드의 버전인 것으로 자동 추론할 수 있다. Developers can either identify the second version of the software, the system can automatically infer that this second version of the software developer version of the source code you are working on. 일부 실시예들에서, 시스템은 소스 관리 시스템에서의 코드 분기의 통합 또는 소프트웨어 코드의 체크인과 같은 프로세스의 일부로서 제1 및 제2 소프트웨어 버전들을 자동으로 식별한다. In some embodiments, the system can automatically identify a first and second version of the software as part of the process, such as check-in or integrated software code, the branch code in the source control system.

블록 340에서 계속하여, 시스템은 수신된 소프트웨어 코드의 제2 버전의 개념적 가시화를 제공하는 제2 아키텍처 모델을 생성한다. It continues at block 340 by, the system generates a second architectural model that provides a conceptual visualization of the second version of the received software code. 제1 아키텍처 모델과 같이, 제2 모델은 소프트웨어 코드의 제2 버전의 아키텍처 구조체들을 강조한다. The architecture as shown in the first model, the second model highlights the structure of the architecture, the second version of the software code. 모델들은 소프트웨어 코드의 각각의 버전 상에서 실행되는 유닛 테스트들 또는 다른 벤치마크들로부터 도출되는 성능 정보를 포함할 수 있다. Model may include performance information derived from the test unit or the benchmarks executed on each version of the software code.

블록 345에서 계속하여, 시스템은 코드 베이스의 2개의 버전 사이에서 코드 복제 검출을 수행한다. Continues at block 345 by, the system performs a code replica is detected between the two versions of the code base. 원시 검출 결과들은 하나의 함수/스니펫이 코드 베이스의 제1 버전으로부터 오고 다른 함수/스니펫이 코드 베이스의 제2 버전으로부터 오는 복제된 함수/스니펫 쌍들의 세트일 수 있다. Raw detection result can be one of the functions / snippet is coming from the first version of the code base, the other function / code snippet is the set of coming replicated function / snippet pair from the second version of the base. 코드 베이스들의 2개의 버전 사이의 원시 복제 쌍들은 다음 단계에서 아키텍처 레벨 복제물을 식별하기 위해 더 사용된다. Raw replication pair between the two versions of the code base are further used to identify the architectural level copies in the next step. 블록 350에서 계속하여, 시스템은 제1 아키텍처 모델과 제2 아키텍처 모델은 물론, 원시 복제 쌍 정보도 비교하여, 2개의 모델 사이의 하나 이상의 차이를 식별한다. Continues at block 350 by, the system first architectural model and the second model architecture, as well as to also compare native replication pair information, and identifies at least one difference between the two models. 차이들은 추가된 아키텍처 특징들, 삭제된 아키텍처 특징들, 코드 복제 검출 결과에 기초하는 코드 유사성(예를 들어, 공유 코드의 백분율)의 식별, 발생한 리팩터링의 식별 등을 포함할 수 있다. Differences can include additional features, architecture, and removed architecture features, code replica code similarity based on the detection result of the identification (e.g., a percentage of the shared code), such as identification of the refactoring occurred. 아키텍처 비교는 또한 모델 내에서 사용되는 복제물들, 모델의 성능 특성 등과 같이 각각의 모델을 설명하는 통계를 식별할 수 있다. Architecture comparison may also identify the statistics that describe each of the model, such as a replica of, the performance characteristics of the model used in the model. 시스템은 이러한 정보를 비교하여 성능 또는 복제물 사용의 증가 또는 감소를 나타낼 수 있다. The system may compare these information indicates the increase or decrease in use performance or replicas. 비교는 또한 변경되지 않은 객체들을 식별할 수 있는데, 이것은 개발자에게도 유용한 정보일 수 있기 때문이다. There is also compared to identify objects that have not changed, this is because it can be useful information to developers.

블록 360에서 계속하여, 시스템은 개발자에게 변경들을 표시하는 시각적 디스플레이 내에 소프트웨어 코드 버전들 사이의 아키텍처 차이들을 표시한다. It continues at block 360 and the system displays the architectural differences between the version of the software code in a visual display to show the changes to the developer. 디스플레이는 컴포넌트들 사이의 데이터 흐름을 나타내는 화살표들을 이용하여 주요 코드 컴포넌트들을 나타내는 블록도들 또는 아키텍처 레벨에서 변경들을 간결하게 통신하는 데 도움이 되는 다른 시각화들을 포함할 수 있다. The display may comprise a different visualization to help succinctly communicate the change in the block diagram or architecture level represents the major component code using the arrows indicating the data flow between components. 일부 실시예들에서, 시스템은 변화량 또는 다른 차이들을 지시하는 일부 표시된 컴포넌트들을 통해 통계를 표시할 수 있다. In some embodiments, the system may display the statistics with some components shown indicative of the variation, or other differences. 블록 360 후에, 이러한 단계들이 종료된다. After block 360, that these steps are terminated.

도 4는 일 실시예에서 소프트웨어 개발자에게 코드 복제에 대해 통지하기 위해 코드 검증 시스템에 의해 표시되는 사용자 인터페이스를 나타내는 디스플레이 도면이다. Figure 4 is a display diagram showing a user interface that is displayed by the code verification system to notify about the code replica to the software developer in one embodiment. 디스플레이는 소프트웨어 코드를 편집하고 관리하기 위한 하나 이상의 툴을 제공하는 IDE 윈도우(410)를 포함한다. The display includes IDE window 410 to provide one or more tools to edit and manage the software code. IDE 윈도우(410)는 개발자가 현재 보고 그리고/또는 편집하고 있는 특정 소프트웨어 코드 소스 파일을 표시하는 코드 윈도우(420)를 포함한다. IDE window 410 includes a code window (420) for developers to display a certain software source code files that are currently viewing and / or editing. IDE 윈도우(410)는 또한 코드 복제물들을 검출하기 위한 옵션을 포함하는 코드 검토 옵션들(430)의 세트를 포함한다. IDE window 410 also includes a set of code review options (430), including the option to detect duplicate code. 코드 윈도우(420)는 다수의 식별된 복제물을 포함한다. The code window 420 includes a number of the identified clone. 예를 들어, 코드 윈도우(420)는 강조된 최초 식별된 코드 범위(440) 및 팝업 윈도우(450) 내에 표시된 식별된 코드 복제물을 포함한다. For example, the code window 420 includes the identification code reproduction is displayed in the highlighted first identification code range 440 and a pop-up window 450. 팝업 윈도우(450)는 복제물의 이름 및 복제물과 관련된 소스 파일을 열기 위한 링크와 같은 복제물에 대한 정보를 제공한다. Pop-up window 450 provides information on the reproductions, such as a link to open the source file associated with the names and copies of copies. 개발자는 이러한 정보를 이용하여 코드 복제물을 관찰한다. Developers should observe the code replica using this information. 일부 예들에서, 복제물은 개발자의 버전보다 최신인 코드를 포함할 수 있으며, 이 경우에 개발자는 변경들을 복사할 수 있다. In some instances, copies can include the latest version of code than the developer, in this case, developers can copy changes. 다른 예들에서, 개발자의 변경들은 또한 복제물에 속하며, 개발자는 복제물을 수정하거나, 복제물 소유자에게 복제물을 수정하도록 통지할 수 있다. In other instances, they also belong to the developer to change the copies, developers can modify the notification a copy, or to modify the replica to replica owner.

도 5는 일 실시예에서 소프트웨어 개발자에게 소프트웨어 코드에 대한 아키텍처 변화의 가시화를 제공하기 위해 코드 검증 시스템에 의해 표시되는 사용자 인터페이스를 나타내는 디스플레이 도면이다. 5 is a display diagram showing a user interface that is displayed by the code verification system to provide visualization of the architectural changes to the software code, the software developer in one embodiment. 디스플레이는 소프트웨어 코드를 편집 및 관리하기 위한 하나 이상의 툴을 제공하는 IDE 윈도우(510)를 포함한다. The display includes IDE window 510 to provide one or more tools to edit and manage the software code. IDE 윈도우(510)는 개발자에 의해 선택된 소프트웨어 프로젝터에 관련하여 본 명세서에서 설명되는 시각화들을 표시하는 아키텍처 비교 윈도우(520)를 포함한다. The IDE window 510 comprises an architecture comparison window 520 which displays the visualization is described herein in relation to the projector software selected by the developer. IDE 윈도우(510)는 또한 코드 버전들 사이의 아키텍처 차이들을 표시하기 위한 옵션을 포함하는 코드 검토 옵션들(530)의 세트를 포함한다. IDE window 510 also includes a set of the code review options 530, including the option for displaying the architectural differences between the version of the code. 아키텍처 비교 윈도우(520)는 아키텍처 특징들 및 변경들을 식별하는 다수의 블록을 포함한다. Architecture comparison window 520 includes a plurality of blocks to identify architectural features and variations. 예를 들어, 아키텍처 비교 윈도우(520)는 제1 이름 공간(540)을 포함한다. For example, the architecture comparison window 520 includes a first name space (540). 이름 공간(540)은 클래스(550)를 포함한다. The namespace 540 includes classes (550). 클래스(550)는 클래스 코드의 80%가 2개의 버전 사이에서 변경되었음을 지시하는 통계 정보(560)를 제공한다. Class 550, provides the statistical information (560) indicating that 80% of the class code is changed between the two versions. 다른 클래스는 클래스가 코드 버전들 사이에서 그의 측정된 성능의 30%를 잃었다는 지시(570)를 제공한다. Other classes provide instruction for the 570 class has lost 30% of its measured performance among the code version. 다른 이름 공간(580)은 이름 공간이 새로우며 소프트웨어 코드의 제1 버전 내에 존재하지 않음을 지시한다. Other name space (580) directs the new Roasting name space does not exist in the first version of the software code. 시스템은 이들 및 다른 변경들을 표시하며, 따라서 개발자는 텍스트에 대한 원시 변경들에 더하여 코드 변경들이 의미하는 것에 대한 하이 레벨 뷰를 수신한다. The system displays these and other changes, and therefore the developer receives a high-level view of what it means to change the code in addition to the raw changes to the text.

일부 실시예들에서, 코드 검증 시스템은 코드를 검토하는 다수의 스테이지에서 개발자들을 지원한다. In some embodiments, the code verification system supports a developer in multiple stages to review the code. 자기 검토의 제1 스테이지에서, 시스템은 개발자가 소프트웨어 코드를 그 코드와 관련된 코드 복제물들 및/또는 개발자가 소프트웨어 코드에 대해 행하고 있는 아키텍처 변경들에 대해 수정할 때 개발자에게 입력을 제공한다. In the first stage of the magnetic review, the system provides an input to the developer when a developer to modify the software code to the code replica and / or architectural changes in the developer carried on the software code associated with that code. 검토의 제2 스테이지에서, 개발자의 동료 또는 개발자의 관리자와 같은 검토자는 시스템을 이용하여, 코드 복제물들의 사용 또는 변경들 또는 개발자에 의해 행해지는 아키텍처 변경들 양쪽과 관련하여 소프트웨어 개발자의 변경들을 관찰한다. Sleeping in the second stage of the review, review, such as the developer's colleagues or the developer of the administrator using the system, and to the architectural changes carried out by the use of, or changes in, or the developer of the code replica associated with both observe the changes of the software developers . 훨씬 더 높은 레벨에서, 팀 설계자들 또는 코드의 큰 본문들을 담당하는 다른 담당자들은 시스템을 이용하여, 개별적인 변경들 또는 코드 이력 내의 주요 포인트들(예를 들어, 이정표들 또는 릴리스들) 사이에서 발생하는 변경들을 관찰하여 변경들의 본질을 시각화할 수 있다. At a much higher level, and the other person in charge of a large body of the team, designers or code are using the system, which occurs between the main points in the individual changes or code history (for example, a milestone or release s) the observed change can visualize the nature of the change.

일부 실시예들에서, 코드 검증 시스템은 코드 재사용을 방지하는 데 사용될 수 있다. In some embodiments, the code verification system may be used to avoid re-use code. 소프트웨어 코드는 종종 회사 또는 다른 실체가 그들의 소프트웨어 코드에서 손해를 입기를 원하지 않을 수 있는 저작권 또는 다른 제한들을 포함한다. The software code often includes the Company or any copyright or other restrictions that other entities may not want to wear damage in their software code. 시스템은 개발자가 피해야 하는 프로젝트 내의 코드와 매칭되는 소프트웨어 프로젝트 내의 코드를 식별하는 데 사용될 수 있으며, 따라서 개발자 또는 다른 검토자는 위반 코드를 제거할 수 있다. The system can be used to identify a code that matches the code in a software project within a project that should be avoided by developers, so developers or other review may remove the violation of the code. 유사하게, 회사는 시스템을 이용하여, 식별된 약점들이 회사의 코드 베이스들의 전체 세트에 걸쳐 치료되는 것을 보장할 수 있다. Similarly, the company can guarantee that by using the system weaknesses identified were being treated throughout the entire set of the company's code base. 시스템은 코드 유사성들의 광범위한 규모의 분석 및 이전에 가능하지 않았던 레벨에서의 재사용을 가능하게 한다. The system makes it possible to reuse at levels that were not possible on a broader scale in the analysis and the previous code of similarities.

위의 설명으로부터, 코드 검증 시스템의 특정 실시예들이 예시의 목적을 위해 본 명세서에서 설명되었지만, 본 발명의 사상 및 범위로부터 벗어나지 않으면서 다양한 변경들이 이루어질 수 있다는 것을 알 것이다. Specific embodiments from the description above, for example, the code verification system have been described herein for purposes of illustration, it will be appreciated that the stand can be made to various changes without departing from the spirit and scope of the invention. 따라서, 본 발명은 첨부된 청구범위에 의한 것 외에는 제한되지 않는다. Accordingly, the invention is not limited except by the appended claims.

Claims (15)

  1. 소프트웨어 개발자에게 상기 개발자가 수정하고 있는 소프트웨어 코드와 관련된 소프트웨어 코드가 존재한다는 것을 통지하기 위한 컴퓨터 구현 방법(computer-implemented method)으로서, A computer implemented method (computer-implemented method) for notifying the software developer that the software code associated with the software code, which the developer is fixed there,
    상기 소프트웨어 코드와 관련된 정보를 식별하기 위해 소프트웨어 코드 베이스를 파싱하는 단계, The step of parsing the software code base to identify information associated with the software code,
    소프트웨어 코드의 매칭 섹션의 빠른 식별을 제공하기 위해 상기 파싱된 소프트웨어 코드를 인덱싱하는 단계, The step of indexing the software code, the parsing in order to provide fast identification of the matching section in the software code,
    소프트웨어 코드를 편집하는 개발자에 의해 제공되는 소프트웨어 코드 변경을 검출하는 단계, Detecting a software change code is provided by the developer to edit the software code,
    상기 개발자에 의해 제공되는 상기 코드 변경과 관련된 임의의 코드 복제물을 식별하는 단계, Identifying a code of copies associated with the code Change provided by the developer,
    복제물이 식별된 것을 검출한 때, 상기 개발자가 상기 검출된 변경을 식별된 복제물에 적용할지를 결정할 수 있도록 상기 소프트웨어 개발자에게 적어도 하나의 복제물이 존재한다는 것을 통지하는 단계를 포함하며, When it is detected that the reproduction is identified, comprising the step of notifying that the developer is at least one replica to the software developer exists to determine whether to apply the copies to identify a change of the detected,
    상기 단계들은 적어도 하나의 프로세서에 의해 수행되는 The steps are performed by at least one processor
    방법. Way.
  2. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드 베이스를 파싱하는 단계는 언어 특징, 코드의 블록, 변수 정보, 클래스 및 다른 데이터 구조 정보 및 함수 정보 중 적어도 하나를 식별하는 단계를 포함하는 The step of parsing the software code base language features, which of the blocks, the variable information, class and other data structure information and function information of the code comprises the step of identifying at least one
    방법. Way.
  3. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드 베이스를 파싱하는 단계는 상기 인덱스 내의 이전에 파싱된 소프트웨어 코드와 비교하기 위해 상기 개발자가 현재 작업하고 있는 소스 코드를 파싱하는 단계를 포함하는 The step of parsing the software code base comprising parsing the source code that the developers are currently working to compare with the software code parsing previously in the index
    방법. Way.
  4. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드를 인덱싱하는 단계는 상기 개발자의 컴퓨팅 장치로부터의 소프트웨어 코드 및 적어도 하나의 다른 코드 베이스를 인덱싱하는 단계를 포함하는 방법. The step of indexing said software code realizing the method comprising the step of indexing the software code and at least one other code base from the computing device of the developer.
  5. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드를 인덱싱하는 단계는 상기 개발자가 작업하고 있는 소프트웨어의 현재 범위와 관련된 코드 복제물을 식별하기 위해 상기 인덱스에 기초하는 질의 및 검색 기능을 제공하는 단계를 포함하는 The step of indexing said software code comprising the steps of: providing a query and search capabilities based on the index for identifying the replica code associated with the current scope of the software and the developers are working
    방법. Way.
  6. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드를 인덱싱하는 단계는 개발자가 소프트웨어 코드를 코드 관리 시스템에 대해 또는 다른 중대한 이정표(significant milestone)에서 체크인할 때 상기 인덱스를 갱신하는 단계를 포함하는 The step of indexing the software code to developers to check in the software code or other significant milestone for code management system (significant milestone), comprising the step of updating the index
    방법. Way.
  7. 제1항에 있어서, According to claim 1,
    상기 소프트웨어를 파싱하고 인덱싱하는 단계는 소프트웨어 코드 변경을 연속적으로 식별하고 인덱싱하는 코드 베이스 인덱싱 서버에서 진행했던 대로 발생하는 The step of parsing and index the software generated as was conducted in the code base, the indexing server that continuously identify and index the software code changes
    방법. Way.
  8. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드 변경을 검출하는 단계는 상기 소프트웨어 코드에서 식별되는 결함을 고치기 위해 상기 개발자에 의한 타이핑을 검출하며, 상기 사용자가 타이핑할 때, 상기 개발자가 작업하고 있는 상기 코드에 대한 관련 코드 복제물을 식별하기 위해 상기 인덱스에 대해 질의에서 변경을 제출하는 단계를 포함하는 Detecting the software code changes, identifies a specific code replica for the code, and the developers work to detects the type of the developer to correct the defects identified in the software code, the user typing comprising the step of submitting the query for changes in the index for
    방법. Way.
  9. 제1항에 있어서, According to claim 1,
    상기 소프트웨어 코드 변경을 검출하는 단계는 상기 개발자가 코드의 특정 블록을 선택하였으며 상기 선택된 코드의 블록과 관련된 코드 복제물을 식별하기 위한 옵션을 선택한 것을 검출하는 단계를 포함하는 Detecting the software code changes, was selected for a particular block of the developer, the code comprises the step of detecting that the selected option for identifying the replica code associated with the blocks of the selected code,
    방법. Way.
  10. 제1항에 있어서, According to claim 1,
    상기 코드 복제물을 식별하는 단계는 상기 인덱스에 질의하며 관련 코드를 식별하기 위해 상기 코드 변경을 둘러싸는 상기 코드의 일부를 제공하는 단계를 포함하는 Identifying the code replica comprises the step of providing a portion of the cord is surrounded by the code Change to identify query-related code and the index
    방법. Way.
  11. 제1항에 있어서, According to claim 1,
    코드 복제물을 식별하는 단계는 상기 개발자가 작업하고 있는 상기 코드 베이스와 동일하거나 상이한 코드 베이스에서 복제물을 식별하는 단계를 포함하는 Identifying a replica code is comprising the same as the base code, which is the developer identifies the operation or reproduction at a different base code
    방법. Way.
  12. 제1항에 있어서, According to claim 1,
    상기 개발자에게 통지하는 단계는 통합 개발 환경(IDE) 내에서 상기 복제물을 식별하는 사용자 인터페이스 메시지를 제공하는 단계를 포함하는 Steps to notify the developer that includes the steps of providing a user interface message that identifies the replica within the integrated development environment (IDE)
    방법. Way.
  13. 제1항에 있어서, According to claim 1,
    상기 개발자에게 통지하는 단계는 식별된 코드 복제물과 관련된 다른 개발자에게 추가적인 통지를 제공하는 단계를 포함하는 Steps to notify the developer that includes the steps of providing a further notice to the other developers associated with the identification code replica
    방법. Way.
  14. 코드 복제 식별 및 아키텍처 변경 가시화를 이용하여 소프트웨어 코드 검토를 보강하기 위한 컴퓨터 시스템으로서, A computer system for enhancing the software code review using code clone identification and visualization architectural changes,
    아래의 컴포넌트 내에서 구현되는 소프트웨어 명령어를 실행하도록 구성되는 프로세서 및 메모리, That is configured to execute software instructions that are implemented in the following components of the processor and the memory,
    프로그래밍 언어로 작성된 소프트웨어 코드를 파싱하고 인덱싱을 위해 상기 소프트웨어 코드와 관련된 정보를 식별하는 파싱 컴포넌트, Parsing parsing the software code in any programming language, and identifying information associated with the software code for indexing component,
    파싱 동안 식별된 소프트웨어 코드 정보를 인덱싱하고 코드 정보의 빠른 탐색 및 매칭을 제공하는 인덱싱 컴포넌트, Indexing the information to identify the software code for parsing and indexing that provides fast search and matching components of the code information,
    소프트웨어 코드의 식별된 범위에 대한 개발자에 의한 현재의 변경을 검출하는 변경 검출 컴포넌트, Change of detecting a current change by the developer for the identified range of software code detection component,
    상기 소프트웨어 개발자에 의해 행해진 검출된 변경의 상기 식별된 범위와 관련된 하나 이상의 코드 복제물을 식별하는 코드 복제 검출 컴포넌트, The code that identifies the one or more code replica associated with the identified range duplicate detection component of the detected change is performed by the software developer,
    소스 코드의 아키텍처 모델을 생성하며, 상기 아키텍처 모델을 다른 아키텍처 모델과 비교하여 아키텍처 차이를 식별하는 차이 가시화 컴포넌트, 및 It generates an architectural model of the source code, visible differences identifying the architectural differences as compared to the architecture model and the other model component architecture, and
    식별된 코드 복제물 및 식별된 아키텍처 차이를 상기 개발자에게 시각적으로 제공하는 사용자 인터페이스 컴포넌트를 포함하는 The identification code replica and the identified differences in architecture that includes a user interface component that provides a visual to the developer
    컴퓨터 시스템. The computer system.
  15. 제14항에 있어서, 15. The method of claim 14,
    상기 변경 검출 컴포넌트는 상기 개발자가 소프트웨어 코드를 편집하기 위해 사용하는 통합 개발 환경(IDE)과 관련되며, 상기 변경 검출 컴포넌트는 타이핑 및 다른 개발자 입력을 모니터링하여 상기 개발자가 소프트웨어 코드에 대해 변경을 행하고 있다는 것을 검출하고 공지된 코드 복제물의 인덱스와의 비교를 위해 하나 이상의 코드 범위를 상기 코드 복제 검출 컴포넌트에 제출하는 The change detection component that the developer is subjected to change for the integrated development environment (IDE) and related is the change detection component type and monitor the different developer inputs the developer, the software code that is used to edit the software code to detect and submit the one or more code range for comparison with the index of the known code replica for the code detection component to replicate
    컴퓨터 시스템. The computer system.
KR1020137015880A 2010-12-20 2011-12-20 Code clone notification and architectural change visualization KR20130135271A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/972,535 US20120159434A1 (en) 2010-12-20 2010-12-20 Code clone notification and architectural change visualization
US12/972,535 2010-12-20
PCT/US2011/066283 WO2012088173A1 (en) 2010-12-20 2011-12-20 Code clone notification and architectural change visualization

Publications (1)

Publication Number Publication Date
KR20130135271A true KR20130135271A (en) 2013-12-10

Family

ID=46236210

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137015880A KR20130135271A (en) 2010-12-20 2011-12-20 Code clone notification and architectural change visualization

Country Status (8)

Country Link
US (1) US20120159434A1 (en)
EP (1) EP2656222A1 (en)
JP (1) JP2014503910A (en)
KR (1) KR20130135271A (en)
CN (1) CN102681835A (en)
AU (1) AU2011349296A1 (en)
CA (1) CA2821541A1 (en)
WO (1) WO2012088173A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150134713A (en) * 2014-05-22 2015-12-02 황수진 Method and apparatus for visually implementing software code

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010044150A1 (en) * 2008-10-15 2010-04-22 富士通株式会社 Program change management device, program change management program, and program change management method
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments
US8826222B2 (en) * 2011-08-02 2014-09-02 International Business Machines Corporation Pre-merge conflict avoidance
US8769501B2 (en) * 2011-12-07 2014-07-01 Siemens Aktiengesellschaft Method for analyzing changes in a software code and software analysis system
US8904357B2 (en) * 2012-05-08 2014-12-02 Siemens Aktiengesellschaft Dashboard for architectural governance
US9589129B2 (en) 2012-06-05 2017-03-07 Lookout, Inc. Determining source of side-loaded software
US9407443B2 (en) * 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US8938424B2 (en) * 2012-10-31 2015-01-20 Ca, Inc. System and method of assessing the state of a database product for installation consistency
US9208215B2 (en) 2012-12-27 2015-12-08 Lookout, Inc. User classification based on data gathered from a computing device
JP6090850B2 (en) * 2013-03-29 2017-03-08 Necソリューションイノベータ株式会社 The source program analysis system, source program analysis method and program
US9436727B1 (en) * 2013-04-01 2016-09-06 Ca, Inc. Method for providing an integrated macro module
JP2015056140A (en) * 2013-09-13 2015-03-23 アイシン・エィ・ダブリュ株式会社 Clone detection method and clone common function method
US9122561B2 (en) * 2013-09-24 2015-09-01 International Business Machines Corporation Program integration that accommodates restrictions on merge-locations
US9262134B2 (en) * 2014-03-21 2016-02-16 International Business Machines Corporation Analysis of source code changes
CN106104469A (en) * 2014-03-25 2016-11-09 株式会社日立制作所 Device for verifying dependencies between software specifications, and method for verifying dependencies between software specifications
CN105446723B (en) * 2014-09-02 2018-11-23 国际商业机器公司 A method and apparatus for identifying semantic distinction between source code version of
KR101568224B1 (en) * 2014-12-26 2015-11-11 고려대학교 산학협력단 Analysis device and method for software security
CN104598231B (en) * 2015-01-09 2018-07-20 山东工商学院 Python source code file similarity detection method
CN105988929B (en) * 2015-03-02 2018-12-21 杭州睿琪软件有限公司 Code consistency detecting method
JP2016184323A (en) * 2015-03-26 2016-10-20 日本電気株式会社 Information processing apparatus
CN104765692B (en) * 2015-04-29 2018-11-06 北京嘀嘀无限科技发展有限公司 Method and apparatus for automated testing software
JP2017010476A (en) * 2015-06-26 2017-01-12 三菱電機株式会社 Similarity determination device, similarity determination method and similarity determination program
CN105183467B (en) * 2015-08-28 2019-04-12 北京奇艺世纪科技有限公司 A kind of message prompt method and device
US20170109331A1 (en) * 2015-10-16 2017-04-20 International Business Machines Corporation Managing changes to a document in a revision control system
US9965633B2 (en) * 2015-12-29 2018-05-08 Sap Se Using code similarities for improving auditing and fixing of SAST-discovered code vulnerabilities
US10191737B2 (en) * 2016-06-29 2019-01-29 Accenture Global Solutions Limited Program code comparison and reporting
EP3282355A1 (en) * 2016-08-11 2018-02-14 Empear AB Method for identifying critical parts in software code
EP3379409A1 (en) * 2017-03-21 2018-09-26 Accenture Global Solutions Limited Automated program code analysis and reporting
US10218697B2 (en) 2017-06-09 2019-02-26 Lookout, Inc. Use of device risk evaluation to manage access to services

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149734B2 (en) * 2001-07-06 2006-12-12 Logic Library, Inc. Managing reusable software assets
CA2418255A1 (en) * 2003-01-31 2004-07-31 Ibm Canada Limited - Ibm Canada Limitee Tracking and maintaining related and derivative code
US7526753B2 (en) * 2003-06-18 2009-04-28 Microsoft Corporation System and method for creating, managing and using code segments
US7401330B2 (en) * 2003-12-11 2008-07-15 Hewlett-Packard Development Company, L.P. Cloning programming code
JP2005301859A (en) * 2004-04-15 2005-10-27 Fujitsu Ltd Code search program and device
JP2006018693A (en) * 2004-07-02 2006-01-19 Fujitsu Ltd Similar source code extraction program, similar source code extraction device and similar source code extraction method
EP1805600A4 (en) * 2004-09-20 2008-11-05 Koders Inc Source code search engine
US20070006152A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Software source asset management
US8171499B2 (en) * 2005-07-22 2012-05-01 International Business Machines Corporation Apparatus, system, and method for object clone event notification
US7631294B2 (en) * 2006-09-19 2009-12-08 Black Duck Software, Inc. Notification system for source code discovery
US8375361B2 (en) * 2007-05-29 2013-02-12 International Business Machines Corporation Identifying changes in source code
US8370821B2 (en) * 2007-08-21 2013-02-05 International Business Machines Corporation Method for enabling profile-based call site tailor-ing using profile gathering of cloned functions
US8423960B2 (en) * 2008-03-31 2013-04-16 International Business Machines Corporation Evaluation of software based on review history
US8291389B2 (en) * 2008-08-21 2012-10-16 International Business Machines Corporation Automatically detecting non-modifying transforms when profiling source code
US8312430B2 (en) * 2008-08-27 2012-11-13 International Business Machines Corporation Guarding code check-in with test case execution results
JP5027765B2 (en) * 2008-09-02 2012-09-19 新日鉄ソリューションズ株式会社 Clones code detecting device, clone code detection method and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150134713A (en) * 2014-05-22 2015-12-02 황수진 Method and apparatus for visually implementing software code

Also Published As

Publication number Publication date
AU2011349296A1 (en) 2013-07-18
CN102681835A (en) 2012-09-19
WO2012088173A1 (en) 2012-06-28
EP2656222A1 (en) 2013-10-30
CA2821541A1 (en) 2012-06-28
JP2014503910A (en) 2014-02-13
US20120159434A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
De Silva et al. Controlling software architecture erosion: A survey
US8930930B2 (en) Updating a computer system
US8856724B2 (en) Systems and methods for incremental software development
US8903762B2 (en) Modeling data exchange in a data flow of an extract, transform, and load (ETL) process
Thummalapenta et al. An empirical study on the maintenance of source code clones
US9038027B2 (en) Systems and methods for identifying software performance influencers
Zaidman et al. Studying the co-evolution of production and test code in open source and industrial developer test processes through repository mining
US7941309B2 (en) Modeling IT operations/policies
US9575752B2 (en) Inferring a defect's cause in updated source code
US7624394B1 (en) Software installation verification
US7480893B2 (en) Rule-based system and method for checking compliance of architectural analysis and design models
US8037452B2 (en) Task aware source checkin and build
US8739150B2 (en) Systems and methods for dynamically replacing code objects via conditional pattern templates
US8745572B2 (en) Software development automated analytics
Kapser et al. Supporting the analysis of clones in software systems
US8572566B2 (en) Systems and methods for analyzing changes in application code from a previous instance of the application code
US8473894B2 (en) Method and system for monitoring metadata related to software artifacts
Liu et al. Schedule of bad smell detection and resolution: A new way to save effort
US9207931B2 (en) System and method of providing real-time updates related to in-use artifacts in a software development environment
CA2680978C (en) Integrated design application
US8898627B2 (en) Systems and methods for applying rules to transform objects of an application
KR20080091351A (en) Context based code analysis
US8024305B2 (en) Updating a data warehouse schema based on changes in an observation model
Ould et al. Testing in software development
US9063808B2 (en) Deploying a package for a software application

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination