KR20170040004A - Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법 - Google Patents

Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법 Download PDF

Info

Publication number
KR20170040004A
KR20170040004A KR1020150139308A KR20150139308A KR20170040004A KR 20170040004 A KR20170040004 A KR 20170040004A KR 1020150139308 A KR1020150139308 A KR 1020150139308A KR 20150139308 A KR20150139308 A KR 20150139308A KR 20170040004 A KR20170040004 A KR 20170040004A
Authority
KR
South Korea
Prior art keywords
code
refactoring
model
concurrency
class
Prior art date
Application number
KR1020150139308A
Other languages
English (en)
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 KR1020150139308A priority Critical patent/KR20170040004A/ko
Publication of KR20170040004A publication Critical patent/KR20170040004A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Abstract

본 발명은 UML 모델을 기반으로 소스 코드의 동기화 처리를 개선시키는 리팩토링 장치 및 리팩토링 방법을 개시한다. 본 발명에 따르는 리팩토링 장치는, 입력되는 소스 코드를 분석하여 동시성 코드를 추출하는 동시성 코드 추출부; 추출된 동시성 코드를 리버스 모델링하여 모델로 생성하는 모델링부; 생성된 모델에 대해 리팩토링 처리하여 변환된 모델을 생성하는 리팩토링부; 및 변환된 모델을 코드로 변환하여 출력되는 코드를 생성하는 코드 변환부를 포함한다. 본 발명에 따르면, 소스 코드의 동시성 처리와 관련된 부분에 대해 클래스 구조를 개선하여 동시성 처리를 개선시킨다.

Description

UML 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법{Apparatus for refactoring synchronization code based on Unified Modeling Language and method thereof}
본 발명은 코드 리팩토링의 기술로서, 보다 상세하게는 동시성 코드를 UML을 이용하여 리버스 모델링하고, 모델링된 모델을 리팩토링 처리하는 동시성 코드의 리팩토링 장치 및 리팩토링 방법에 관한 것이다.
멀티 코어 프로세서가 대중화됨에 따라 대다수의 애플리케이션들이 병렬화를 지원하기 위해 동시성의 처리를 도입하고 있다. 그러나 동시성은 병목 현상이 발생하기 때문에 쉽지가 않다. 동시성에서 가장 큰 병목 지점은 동기화(synchronization) 및 락(lock) 경쟁이다. 숙련된 프로그래머가 아니면 에러를 일으키기 쉽기 때문에 모델 기반의 리팩토링을 도입하면 프로그래머의 부담을 더는 방법이 된다.
멀티 코어 시스템과 하드웨어가 발전함에 따라 동시성을 도입할 필요성이 증가하고 있다. 최적의 동시성 성능을 얻기 위해 스레드 개수 조절, 락 범위 조절, 동시성 라이브러리 도입 등의 작업이 필요하다. 그 중에서도 성능에 가장 큰 영향을 미치는 것은 락, 동기화 관련 API이다. 이와 관련하여 최적의 성능을 얻기 위해 동시성 코드를 리팩토링 해야 하는데, 동시성을 제공하는 코드를 수동으로 리팩토링 할 경우 스레드의 개수, 동기화 블록의 범위, 같은 동작을 보장하지 않기에 원하는 성능과 안정성을 얻기 힘들다.
현대의 소프트웨어 시스템들은 그 규모와 복잡함이 나날이 증가하고 있다. 이로 인해 소프트웨어를 개발, 유지보수 비용이 기하급수적으로 치솟게 되었다. 이러한 추세에 따라 다양한 소프트웨어 시스템 개발 방법론이 등장하였고, 그 중 OMG(Object Management Group)에 의해 제안된 MDA(Model Driven Architecture) 방법론이 해결책으로 나왔다. MDA는 모든 컴포넌트 기술 요소의 표준 메타 모델을 정의하고 이를 기반으로 각 구성요소를 정의함으로써 호환성 및 시스템간 자동성을 보장하고자 하는 소프트웨어 개발기술이다. MDA의 장점으로는 크게 3가지로 볼 수 있다. 메타 모델을 이용하여 구현 공정의 대부분을 자동화할 수 있는 구조이며, 프로젝트 진행 전체 결과를 재사용이 가능하다. 마지막으로 구현 환경과 독립적으로 정의되며, 이식성(Portability)을 증가시켜 준다.
정리하면 MDA는 모델간의 변환을 말하고, 이를 효과적으로 기술하기 위해 QVT(Query View Transformation)언어가 OMG에 의해 제안되었다. 이는 모델간의 변환 관계를 기술하며, 변환을 정의하는 작업을 다이어그램으로 표기하여 사용한다.
한국등록특허 10-1432712(2014.08.14.)
본 발명은 상기와 같은 종래 기술의 인식 하에 창출된 것으로서, 동시성 코드에 대해 UML을 이용하여 모델링하고, 모델링된 모델을 리팩토링 하여 동시성이 개선된 코드로 변환하는 동시성 코드의 리팩토링 장치 및 리팩토링 방법을 제공하는 것을 목적으로 한다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 UML 모델 기반의 동시성 코드의 리팩토링 장치는, 입력되는 소스 코드를 분석하여 동시성 코드를 추출하는 동시성 코드 추출부; 추출된 동시성 코드를 리버스 모델링하여 모델로 생성하는 모델링부; 생성된 모델에 대해 리팩토링 처리하여 변환된 모델을 생성하는 리팩토링부; 및 변환된 모델을 코드로 변환하여 출력되는 코드를 생성하는 코드 변환부를 포함한다.
본 발명에 있어서, 상기 리팩토링 장치는, 프로그램의 언어별로 동시성 코드 정보가 저장된 동시성 코드 DB(Data Base)를 더 포함하고, 상기 동시성 코드 추출부는 동시성 코드 DB를 참조하여 동시성 코드를 추출한다.
여기서, 상기 모델링부는, UML(Unified Model Language)을 이용하여 동시성 코드를 클래스 다이어그램으로 변환하여 상기 모델을 생성한다.
바람직하게, 상기 리팩토링부는, 클래스 모델로부터 읽기 연산에 관련된 락(Lock)을 객체로 추출하고, 추출된 객체를 기존 클래스 모델에 병합시키거나 새로운 클래스 모델로 해체하여 상기 리팩토링 처리한다.
또한, 상기 리팩토링 장치는, 객체 정보 및 객체 정보의 클래스 리팩토링 규칙이 저장된 클래스 리팩토링 DB를 더 포함하고, 상기 리팩토링부는 클래스 리팩토링 DB를 참조하여 상기 병합 및 해체의 리팩토링 처리를 수행한다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 UML 모델 기반의 동시성 코드의 리팩토링 방법은, 동시성 코드의 리팩토링 장치가 실행하는 리팩토링 방법에 있어서, (a)입력되는 소스 코드를 분석하여 동시성 코드를 추출하는 동시성 코드 추출 단계; (b)추출된 동시성 코드를 리버스 모델링하여 모델로 생성하는 모델링 단계; (c)생성된 모델에 대해 리팩토링 처리하여 변환된 모델을 생성하는 리팩토링 단계; 및 (d)변환된 모델을 코드로 변환하여 출력되는 코드를 생성하는 코드 변환 단계를 포함한다.
본 발명의 일 측면에 따르면, 프로그램의 동시성 처리와 관련된 코드를 역공학을 통해 리버스 모델링하여 클래스 모델로 생성하고, 클래스 모델을 동시성 처리가 개선된 모델로 변환하여 다시 코드 변환하여 출력함으로써 프로그램의 동시성 처리가 개선된다.
본 발명의 다른 측면에 따르면, 개발자에 의한 수작업의 동시성 처리 개선에서 발생되는 개발자의 수작업 부담 및 정확성이 떨어지는 단점을 제거하여 자동화 코드 변환에 따른 동기화 오버 헤드를 줄인다.
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술한 발명의 상세한 설명과 함께 본 발명의 기술 사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되지 않아야 한다.
도 1은 본 발명의 일 실시예에 따른 동시성 코드의 리팩토링 장치의 개략적 구성도이다.
도 2 내지 도 8은 도 1의 리팩토링 장치의 처리 과정의 예시도이다.
도 9는 본 발명의 일 실시예에 따른 동시성 코드의 리팩토링 방법의 개략적 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 이에 앞서, 본 명세서 및 청구 범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다.
따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상에 모두 대변하는 것은 아니므로, 본 출원 시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1은 본 발명의 일 실시예에 따른 동시성 코드의 리팩토링 장치(1)의 개략적 구성도이다.
본 발명의 일 실시예에 따른 리팩토링 장치(1)는 소스 코드로부터 동시성 코드를 추출하는 동시성 코드 추출부(11), 추출된 동시성 코드를 리버스 모델링하여 모델을 생성하는 모델링부(12), 생성된 모델을 리팩토링하여 변환된 모델을 생성하는 리팩토링부(13) 및 변환된 모델을 코드 변환하여 동시성이 개선된 소스 코드를 출력하는 코드 변환부(14)를 포함하여 구성된다.
상기 리팩토링 장치(1)는 컴퓨터 단말에 해당하고, 소스 코드를 입력받고, 입력된 소스 코드에 대해 동시성의 처리와 관련된 코드 부분을 개선하고, 동시성이 개선된 소스 코드를 출력한다. 리팩토링 장치(1)는 스탠드 얼론 환경 또는 서버 클라이언트 환경으로 구축될 수 있다.
상기 동시성 코드 추출부(1)는 소스 코드를 입력받고, 입력된 소스 코드를 분석하여 동시성의 처리가 수반되는 코드를 동시성 코드로서 추출한다. 추출된 동시성 코드는 병렬 처리가 수반되는 코드로서 프로그램의 처리 속도를 단축시킨다. 하지만, 병렬 처리로 인해 처리의 부하가 발생될 수 있기 때문에 프로그램 처리의 지연을 유발하고 병목 현상의 원인이 된다. 즉, 소스 코드에서 동시성 코드가 많아질수록 처리 지연의 가능성은 증가할 수 있다.
여기서, 동시성 코드 추출부(1)는 프로그램의 언어별로 동시성 코드 정보가 저장된 동시성 코드 DB(Data Base)를 참조하여 소스 코드로부터 동시성 코드를 추출할 수 있다. 예를 들면, Thread로 구성된 코드는 동시성 코드로서 추출 대상이다.
상기 모델링부(12)는 추출된 동시성 코드를 리버스 모델링하여 모델로 생성한다. 소프트웨어 엔지니어링에서 코드에 앞서서 요구 분석 및 설계가 수행되는데 이때 모델링 기법이 적용된다. 즉, 설계를 통해 요구 분석의 내용이 모델링되고, 생성된 모델을 기반으로 코딩이 수행된다. 모델링부(12)는 이미 완료된 소스 코드에 대해 리버스 모델링을 수행하여 소스 코드에 대응되는 모델을 생성한다.
여기서, 모델링부(12)는 MDA 방법론을 기반으로 동시성 코드의 프로그래밍 언어를 UML(Unified Model Language) 언어로 변환하고, 변한된 UML 언어 기반의 클래스 다이어그램의 모델을 생성한다. 생성된 클래스 다이어그램에 의해 클래스간의 상속, 호출 등의 관계가 파악될 수 있다.
또한, 모델링부(12)가 소스 코드를 리버스 모델링 처리하여 클래스 다이어그램으로 변환하는 이유는 소스 코드의 레벨에서 특정 언어에 종속되어 코드를 고치는 것보다 모델 레벨에서 특정 언어에 독립되어 코드를 고치는 것이 다양한 프로그램 언어가 지원되는 범용성을 가져다 주기 때문이다.
상기 리팩토링부(13)는 생성된 모델에 대해 동시성이 개선되는 변환 처리를 적용하여 변환된 모델을 생성한다. 여기서, 리팩토링은 모델을 구성하는 개별 객체의 팩터에 대해 병합 및 해체를 통해 팩터를 재정의하여 새롭게 객체를 정의하는 것을 말한다.
실제로, 리팩토링의 모델 변환 처리에 의해 클래스 모델은 특정 클래스로 병합되거나 또는 클래스 생성에 의한 복수개 클래스로 해체된다. 물론, 리팩토링은 클래스의 병합 및 해체 과정에서 클래스의 고유한 기능은 그대로 유지하면서 클래스 구조의 변환에 의해 동시성 처리의 효율을 개선시킨다.
여기서, 리팩토링부(13)는 동시성 개선을 위한 리팩토링 알고리즘을 적용한다. 상기 알고리즘은 Read-dominant 락(Lock)을 제안한다. 동기화 블록 내에서 읽기 연산이 대부분이라면 읽기에 대한 동기화를 줄여 오버 헤드를 줄일 수 있다.
나아가, 리팩토링부(13)는 적용 대상의 모델로부터 락을 객체로 추출하고, 추출된 락이 리팩토링의 대상이면 클래스의 병합 또는 해체의 처리를 한다.
예를 들어, 클래스 모델 A에서 락이 추출되어 새로운 클래스 모델 B가 생성되는 경우, 클래스 모델 A는 락이 제거된 클래스로 변환되고, 클래스 모델 B는 새로 생성된다. 그리고 동일한 클래스의 기능이 유지되어야 하므로 클래스 모델 A는 클래스 모델 B를 호출한다.
여기서, 리팩토링부(13)는 배타적인 처리가 요구되는 DB, 클래스 등의 정보가 저장된 클래스 리팩토링 DB(130)를 참조할 수 있다. 상기 DB(130)는 리팩토링 처리를 위한 규칙들이 저장된 DB이다. 따라서, 리팩토링부(14)는 클래스 리팩토링 DB(130)로부터 조회된 배타적인 관계의 DB 또는 클래스에 대해 동시성 처리가 존재한다면, 클래스 해체를 통해 동시성 처리를 제거한다. 물론, 상기 DB(130)로부터 배타적인 관계로 조회되지 않는 클래스는 병합을 통해 동시성 처리의 개선 대상이 될 수 있다.
나아가, 리팩토링부(13)는 리팩토링의 처리 과정에서 동시성 코드의 클래스와 비동시성 코드의 클래스로 구분할 수 있다. 예를 들어, 개발자가 한 클래스에 대해 동시성 코드와 비동시성 코드를 혼합하여 구현한 경우, 리팩토링부(13)는 동시성 코드를 별도의 클래스로 분리할 수 있다.
상기 코드 변환부(14)는 리팩토링 처리된 클래스 모델을 코드로 변환하여 출력한다. 따라서, 입력된 소스 코드는 동시성이 개선된 출력 코드로 변환된다. 동시성의 개선에 의해 동시성 코드는 병합되거나 해체되어 클래스 구조의 변경이 수반된다. 동시성 개선의 효율성 평가는 출력 코드의 실행에서 데드락의 발생이 제거됨으로써 확인이 가능하다.
도 2 내지 도 8은 도 1의 리팩토링 장치(1)의 처리 과정의 예시도이다.
도 2를 참조하면, 리팩토링 장치(1)는 소스 코드를 입력받는다. 리팩토링 장치는 입력된 소스 코드로부터 병목 현상을 발생시킬 수 있는 지점을 추출한다.
도 3을 참조하면, 리팩토링 장치(1)는 소스 코드로부터 상기 지점에 해당하는 동시성 코드를 추출한다. 예를 들면, 자바 언어의 소스 코드라 가정할 경우, 리팩토링 장치(1)는 동시성 코드 DB(110)로부터 자바 언어에 대응하는 키워드 "syschronized"를 조회한 후, 소스 코드로부터 키워드 "syschronized"를 포함하는 코드를 동시성 코드로서 추출한다.
도 4 및 도 5를 참조하면, 추출된 동시성 코드는 리버스 모델링에 의해 클래스 다이어그램의 모델로 변환된다. 리버스 모델링의 역 공학에 의해 코드는 클래스 모델로 생성된다. 모델 변환으로 생성된 클래스 다이어그램은 클래스의 구조 관계를 나타낸다. 도 5에서, 전체 클래스 다이어그램 중에서 "TestResult" 클래스의 "TestResult(), failureCount(), startTest(Test), stop(void)"가 관련 메소드로서 동시성 코드에 해당한다.
도 6을 참조하면, 리팩토링의 알고리즘을 적용하여, 클래스 다이어그램에서 검출된 리팩토링 대상에서 lock을 별도 클래스로 추출하고, 기존 클래스에서 병목현상을 나타낼 수 있는 코드를 임시 변수를 통하여 관리하는 모습이다(클래스 다이어그램에 lock:ReentrantLook변수 추가).
여기서, 리팩토링 장치(1)는 클래스 모델로부터 객체를 추출하고, 추출된 객체에 대한 병합 또는 해체의 리팩토링 처리를 수행한다. 먼저, 리팩토링 장치(1)는 클래스 모델로부터 읽기 연산과 관련된 락을 객체로 추출한다. 예를 들어, 동일한 DB 또는 데이터 의존 관계가 있는 복수개의 DB가 동시성 처리되는 경우, 처리 지연에 의한 병목 현상이 유발될 수 있는데, 이런 경우 추출된 객체의 해체를 통해 동시성을 처리를 제거하면 처리의 유연성이 보장된다. 반대로 데이터 의존 관계가 없는 서로 다른 DB에 대해 추출된 객체를 병합하여 동시성 처리를 한다면 처리 능력의 시간과 효율은 개선된다. 즉, 리팩토링 처리는 읽기 연산과 관련된 클래스 객체의 해체 및 병합이 수반되어 동시성 처리가 개선된다.
도 7을 참조하면, 리팩토링 장치(1)의 리팩토링 처리에 의해 클래스 모델이 동시성이 개선된 클래스 모델로 변환된다. 여기서, 클래스의 해체 및 병합이 수반되어 클래스 구조가 변경된다. 또한, 리팩토링 장치(1)는 모델간의 변환 규칙(QVT)을 정의하여 다이어그램간의 변환 또는 개발언어와 다른 언어로의 지원을 가능하다. 참고로, 도 5에서 리팩토링 처리의 대상인 "testResult" 클래스는 도 7에서 "Lock" 클래스가 분리되고, 변환된 "testResult" 클래스는 "Lock" 클래스를 이용하여 처리함을 알 수 있다.
도 8을 참조하면, 다양한 언어로 제작될 수 있는 소스 코드를 모델로 변환하는 처리가 예시된다. 자바 언어의 개발 도구는 소스 코드로부터 클래스 다이어그램의 모델 변환이 지원된다. 하지만, 자바 언어가 아닌 다른 프로그램 언어에서는 프로그램 언어로부터 독립되는 클래스 모델의 변환 처리가 요구된다. 도 8에서 예시된 모델 변환 처리의 예시는 QVT 언어를 통한 모델간의 변환 규칙을 정의하여 동일 언어가 아닌 다른 언어로의 지원을 가능하게 하여 이식성을 높여주는 장점을 가진다.
도 9는 본 발명의 일 실시예에 따른 동시성 코드의 리팩토링 방법의 개략적 순서도이다.
리팩토링 장치(1)는 소스 코드를 입력받고, 입력된 소스 코드로부터 동시성 코드를 추출한다(S11).
여기서, 리팩토링 장치(1)는 동시성 코드 DB(110)를 참조하여 소스 코드의 언어에 대응되는 동시성 코드의 키워드를 조회하고, 조회된 코드가 포함된 코드를 소스 코드로부터 동시성 코드로 추출한다.
동시성 코드가 추출되면, 리팩토링 장치(1)는 추출된 동시성 코드에 대해 역 공학에 따른 리버스 모델링의 변환 처리를 적용하여 클래스 다이어그램의 모델을 생성한다(S12).
클래스 다이어그램의 모델이 생성되면, 리팩토링 장치(1)는 클래스 모델에 대해 리팩토링 알고리즘의 처리를 적용하여 읽기 연산의 객체에 대해 클래스 해체 또는 병합 처리를 수행하여 동시성을 개선시킨다(S13). 그리고 리팩토링 처리에 의해 클래스 모델의 생성 및 변환이 수반된다(S14).
여기서, 리팩토링 장치(1)는 적용 대상의 객체에 대한 정보 및 리팩토링 규칙이 정의된 클래스 리팩토링 DB(130)를 참조하여 클래스 모델의 클래스 구조를 변경하여 동시성 처리를 개선시킨다. 물론, 사용자는 클래스 리팩토링 DB(130)에 리팩토링의 대상이 되는 객체 정보 및 객체 정보의 리팩토링 규칙을 미리 저장하는 것이 요구된다. 그러면, 리팩토링 장치(1)는 Read-dominant 락을 객체 정보로 조회하고, 객체 정보의 리팩토링 규칙을 규칙 정보로 조회한다. 리팩토링 장치(1)는 조회된 정보를 기반으로 클래스 모델에 대해 리팩토링 처리를 수행하여 동시성을 개선한다.
리팩토링 처리가 완료되면, 리팩토링 장치(1)는 변환된 클래스 모델을 코드 변환하고, 동시성 처리가 개선된 소스 코드를 출력한다(S15).
상술한 실시예에서, "~부"라는 용어는 리팩토링 장치(1)의 하드웨어적 구분을 의미하는 용어로 사용된 것이 아니다. 따라서 복수의 구성부가 하나의 구성부로 통합될 수도 있고, 하나의 구성부가 복수의 구성부로 분할될 수도 있다. 또한, 구성부는 하드웨어의 구성부를 의미할 수도 있지만, 소프트웨어의 구성부를 의미할 수도 있다. 따라서 본 발명은 "~부"라는 용어에 의해 특별히 한정되지 않음을 이해하여야 할 것이다.
본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 이것에 의해 한정되지 않으며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구범위의 균등범위 내에서 다양한 수정 및 변형이 가능함은 물론이다.
1 : 리팩토링 장치 11 : 동시성 코드 추출부
12 : 모델링부 13 : 리팩토링부
14 : 코드 변환부

Claims (10)

  1. 입력되는 소스 코드를 분석하여 동시성 코드를 추출하는 동시성 코드 추출부;
    추출된 동시성 코드를 리버스 모델링하여 모델로 생성하는 모델링부;
    생성된 모델에 대해 리팩토링 처리하여 변환된 모델을 생성하는 리팩토링부; 및
    변환된 모델을 코드로 변환하여 출력되는 코드를 생성하는 코드 변환부
    를 포함하는 것을 특징으로 하는 동시성 코드의 리팩토링 장치.
  2. 제 1항에 있어서,
    프로그램의 언어별로 동시성 코드 정보가 저장된 동시성 코드 DB(Data Base)를 더 포함하고,
    상기 동시성 코드 추출부는 동시성 코드 DB를 참조하여 동시성 코드를 추출하는 것을 특징으로 하는 동시성 코드의 리팩토링 장치.
  3. 제 1항에 있어서,
    상기 모델링부는,
    UML(Unified Model Language)을 이용하여 동시성 코드를 클래스 다이어그램으로 변환하여 상기 모델을 생성하는 것을 특징으로 하는 동시성 코드의 리팩토링 장치.
  4. 제 1항에 있어서,
    상기 리팩토링부는,
    클래스 모델로부터 읽기 연산에 관련된 락(Lock)을 객체로 추출하고, 추출된 객체를 기존 클래스 모델에 병합시키거나 새로운 클래스 모델로 해체하여 상기 리팩토링 처리하는 것을 특징으로 하는 동시성 코드의 리팩토링 장치.
  5. 제 4항에 있어서,
    객체 정보 및 객체 정보의 클래스 리팩토링 규칙이 저장된 클래스 리팩토링 DB를 더 포함하고,
    상기 리팩토링부는 클래스 리팩토링 DB를 참조하여 상기 병합 및 해체의 리팩토링 처리를 수행하는 것을 특징으로 하는 동시성 코드의 리팩토링 장치.
  6. 동시성 코드의 리팩토링 장치가 실행하는 리팩토링 방법에 있어서,
    (a)입력되는 소스 코드를 분석하여 동시성 코드를 추출하는 동시성 코드 추출 단계;
    (b)추출된 동시성 코드를 리버스 모델링하여 모델로 생성하는 모델링 단계;
    (c)생성된 모델에 대해 리팩토링 처리하여 변환된 모델을 생성하는 리팩토링 단계; 및
    (d)변환된 모델을 코드로 변환하여 출력되는 코드를 생성하는 코드 변환 단계
    를 포함하는 것을 특징으로 하는 동시성 코드의 리팩토링 방법.
  7. 제 6항에 있어서,
    상기 단계(a)는
    프로그램의 언어별로 동시성 코드 정보가 저장된 동시성 코드 DB를 참조하여 동시성 코드를 추출하는 단계인 것을 특징으로 하는 동시성 코드의 리팩토링 방법.
  8. 제 6항에 있어서,
    상기 단계(b)는,
    UML을 이용하여 동시성 코드를 클래스 다이어그램으로 변환하여 상기 모델을 생성하는 단계인 것을 특징으로 하는 동시성 코드의 리팩토링 방법.
  9. 제 6항에 있어서,
    상기 단계(c)는,
    클래스 모델로부터 읽기 연산에 관련된 락(Lock)을 객체로 추출하고, 추출된 객체를 기존 클래스 모델에 병합시키거나 새로운 클래스 모델로 해체하여 상기 리팩토링 처리하는 단계인 것을 특징으로 하는 동시성 코드의 리팩토링 방법.
  10. 제 9항에 있어서,
    상기 단계(c)는,
    객체 정보 및 객체 정보의 클래스 리팩토링 규칙이 저장된 클래스 리팩토링 DB를 참조하여 상기 병합 및 해체의 리팩토링 처리를 수행하는 단계인 것을 특징으로 하는 동시성 코드의 리팩토링 방법.
KR1020150139308A 2015-10-02 2015-10-02 Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법 KR20170040004A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150139308A KR20170040004A (ko) 2015-10-02 2015-10-02 Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150139308A KR20170040004A (ko) 2015-10-02 2015-10-02 Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법

Publications (1)

Publication Number Publication Date
KR20170040004A true KR20170040004A (ko) 2017-04-12

Family

ID=58580187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150139308A KR20170040004A (ko) 2015-10-02 2015-10-02 Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법

Country Status (1)

Country Link
KR (1) KR20170040004A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4231130A2 (en) 2017-03-29 2023-08-23 Samsung Electronics Co., Ltd. Screen output method using external device and electronic device for supporting the same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101432712B1 (ko) 2013-03-05 2014-08-25 충북대학교 산학협력단 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101432712B1 (ko) 2013-03-05 2014-08-25 충북대학교 산학협력단 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4231130A2 (en) 2017-03-29 2023-08-23 Samsung Electronics Co., Ltd. Screen output method using external device and electronic device for supporting the same
EP4235414A2 (en) 2017-03-29 2023-08-30 Samsung Electronics Co., Ltd. Screen output method using external device and electronic device for supporting the same

Similar Documents

Publication Publication Date Title
Li et al. Automating the choice of consistency levels in replicated systems
CA2908130C (en) Method for transforming first code instructions in a first programming language into second code instructions in a second programming language
CN104965735B (zh) 用于生成升级sql脚本的装置
US8527971B2 (en) Parallel program generation method
US20190361802A1 (en) Semantic comparison of computer compiler traces
KR100501410B1 (ko) 서블릿 프로그램의 재사용 가능한 비즈니스 로직으로부터이제이비 컴포넌트를 생성하는 시스템 및 방법
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US20170357927A1 (en) Process management for documentation-driven solution development and automated testing
CN106843840B (zh) 一种基于相似度分析的源代码版本演化注释复用方法
Kusano et al. CCmutator: A mutation generator for concurrency constructs in multithreaded C/C++ applications
US20130179863A1 (en) Bug variant detection using program analysis and pattern identification
EP2650785A1 (en) Method, system, and computer program product for transforming machine code to source code
CN108197027B (zh) 软件性能优化方法、可存储介质、计算机、计算机程序
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
US20200394036A1 (en) Method and system for integrating a development environment repository with a version control tool
US20150020051A1 (en) Method and apparatus for automated conversion of software applications
CN108304164B (zh) 一种业务逻辑的开发方法及开发系统
KR20170040004A (ko) Uml 모델 기반의 동시성 코드의 리팩토링 장치 및 리팩토링 방법
CN116049141A (zh) 一种基于多源异构数据的数据迁移方法及系统
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
US8510342B1 (en) Automatic conversion of build processes to use streaming input
WO2012133606A1 (ja) プログラムの影響範囲設定装置、並びにこれを用いた影響範囲特定方法及び影響波及のあるプログラムの抽出方法
Putra et al. CNT: Semi-Automatic Translation from CWL to Nextflow for Genomic Workflows
Wu et al. Concurrency bug-oriented mutation operators design for Java
Almghawish et al. An automatic parallelizing model for sequential code using Python