KR101628314B1 - The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence - Google Patents

The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence Download PDF

Info

Publication number
KR101628314B1
KR101628314B1 KR1020140045395A KR20140045395A KR101628314B1 KR 101628314 B1 KR101628314 B1 KR 101628314B1 KR 1020140045395 A KR1020140045395 A KR 1020140045395A KR 20140045395 A KR20140045395 A KR 20140045395A KR 101628314 B1 KR101628314 B1 KR 101628314B1
Authority
KR
South Korea
Prior art keywords
information
spring
module
node
application
Prior art date
Application number
KR1020140045395A
Other languages
Korean (ko)
Other versions
KR20140071292A (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 KR1020140045395A priority Critical patent/KR101628314B1/en
Publication of KR20140071292A publication Critical patent/KR20140071292A/en
Application granted granted Critical
Publication of KR101628314B1 publication Critical patent/KR101628314B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Abstract

본 발명은 스프링 프레임워크 기반으로 개발된 애플리케이션의 스프링 설정 정보들을 분석하여 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현함으로써 엔터프라이즈 애플리케이션 개발과 유지 보수를 용이하게 하는 비주얼 스프링 개발 환경 시스템에 관한 것으로, 스프링 설정 정보들을 분석하여 의존성 주입 정보 메모리 모델을 생성하는 애플리케이션 구조 분석 모듈; 상기 애플리케이션 구조 분석 모듈이 생성한 의존성 주입 정보 메모리 모델을 기반으로 소스 코드를 분석하여 메소드 호출 시퀀스 메모리 모델을 생성하는 애플리케이션 제어 흐름 분석 모듈; 상기 의존성 주입 정보 메모리 모델을 그래프의 노드와 에지로 시각화하여 비주얼 스프링 다이어그램을 생성하는 애플리케이션 구조 시각화 모듈; 상기 비주얼 스프링 다이어그램에 상기 메소드 호출 시퀀스 메모리 모델을 그래프의 노드와 에지로 시각화하는 메소드 호출 시퀀스 시각화 모듈; 상기 비주얼 스프링 다이어그램을 시각적으로 편집할 수 있게 하고, 편집된 다이어그램을 스프링 프레임워크 설정 정보로 변환하는 비주얼 스프링 편집 모듈; 을 포함하는 것을 특징으로 한다.The present invention relates to a visual spring development environment system that facilitates development and maintenance of an enterprise application by visually expressing an application structure and a method call sequence by analyzing spring configuration information of an application developed on the basis of a Spring framework, An application structure analysis module for analyzing the setting information and generating a dependency injection information memory model; An application control flow analysis module for analyzing the source code based on the dependency injection information memory model generated by the application structure analysis module to generate a method call sequence memory model; An application structure visualization module for visualizing the dependency injection information memory model with nodes and edges of the graph to generate a visual spring diagram; A method call sequence visualization module for visualizing the method call sequence memory model as nodes and edges of a graph in the visual spring diagram; A visual spring editing module that allows the visual spring diagram to be visually edited and converts the edited diagram into spring framework setting information; And a control unit.

Figure 112014036217356-pat00001
Figure 112014036217356-pat00001

Description

애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현하는 비주얼 스프링 개발 환경 시스템 {The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence}[0002] The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence, which visually expresses the structure of an application and a method call sequence,

본 발명은 애플리케이션 개발 기술에 관한 것으로, 더욱 상세하게는 스프링 프레임워크 기반으로 개발된 애플리케이션의 스프링 설정(configuration) 정보들을 분석하여 애플리케이션의 구조(application architecture)와 메소드 호출 시퀀스(method call sequence)를 시각적으로 표현함으로써 엔터프라이즈 애플리케이션 개발과 유지 보수를 용이하게 하는 기술에 관한 것이다.
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an application development technology, and more particularly, to a method and system for analyzing spring configuration information of an application developed on the basis of a Spring Framework and displaying an application architecture and a method call sequence To facilitate enterprise application development and maintenance.

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크인 스프링 프레임워크(이하 스프링으로 표기)는 호주의 로드 존슨이 2003년 6월 최초 버전을 공개한 이래 현재의 버전 4.x까지 발전하면서 엔터프라이즈 애플리케이션 개발에 가장 많이 사용되는 핵심 기술중의 하나로 자리잡았다.
The Spring Framework, an open source application framework for the Java platform (hereinafter referred to as "Spring"), has evolved from its initial release in June 2003 to the current version 4.x, It has become one of the core technologies used.

스프링이 제공하는 프로그래밍과 설정 모델(programming and configuration model)은 제어 역전(IoC: Inversion of Control)과 서비스 추상화를 통해 유연하고 확장성과 재사용성이 뛰어난 비즈니스 로직(logic) 모듈들을 개발할 수 있게 해주고, 애플리케이션에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 관점지향 프로그래밍(AOP: Aspect Oriented Programming)을 지원하여 다양한 엔터프라이즈 서비스들을 비침투적(non-invasive)으로 적용할 수 있게 한다. 또 이를 바탕으로 한 스프링의 테스트 지원 기술은 각종 배치(deployment) 환경으로부터 독립적인, 간편하고 효율적인 자동 테스트 환경을 제공함으로써 애플리케이션 개발 효율을 더욱 높여준다. 스프링은 이러한 단순함과 유연성으로 상대적으로 무겁고 침투적인(invasive) 서비스 부가 방식을 채택했던 EJB(Enterprise JavaBeans)의 단점들을 극복하면서 엔터프라이즈 애플리케이션 개발의 필수 기술이 되었고, 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 채택되었다.
The programming and configuration model provided by Spring enables the development of flexible, scalable and reusable business logic modules through inversion of control (IoC) and service abstraction, (Aspect Oriented Programming), which modularizes the additional functions that appear sporadically, and enables various enterprise services to be applied non-invasively. Based on this, Spring's test support technology further improves application development efficiency by providing a simple and efficient automated test environment that is independent of the various deployment environments. Spring has become an essential technology for enterprise application development while overcoming the shortcomings of EJB (Enterprise JavaBeans), which has adopted relatively heavy and invasive service addition method with this simplicity and flexibility. It is adopted as the base technology of the recommended e-government standard framework.

그러나 상기한 스프링의 장점들을 활용하기 위해서는 우선 스프링의 가치와 프로그래밍 모델을 제대로 이해하고 다양한 설정 정보 기술(description) 문법을 익혀서 코드뿐 아니라 설정 정보들도 정확하게 기술해야 하고, 스프링을 기반으로 개발된 애플리케이션 로직을 해석하기 위해서는 프로그램 코드와 설정 정보를 교차 비교해야 하는 등의 새로운 부담이 발생하므로, 규모가 크고 복잡한 엔터프라이즈 애플리케이션의 경우 개발과 유지 보수의 어려움을 가중시키는 면도 있다. 따라서 갈수록 규모와 복잡성이 커지는 엔터프라이즈 애플리케이션 개발과 유지 보수를 효율적으로 수행하기 위해서는 스프링의 장점을 보전하되 학습과 교차비교 해석 등에 따른 부담 가중 문제를 극복하는 새로운 기술이 필요하다.
However, in order to utilize the advantages of the above-mentioned spring, it is necessary to understand the value of the spring and the programming model and to learn various setting information description grammar to accurately describe not only the code but also the setting information, There is a new burden, such as cross comparisons of program code and configuration information, to interpret logic, which adds to the difficulty of development and maintenance for large and complex enterprise applications. Therefore, in order to efficiently develop and maintain enterprise applications that are increasing in scale and complexity, new techniques are needed to overcome the burden of weighting due to learning and cross-comparison analysis while preserving the advantages of Spring.

본 발명은 스프링 기반의 엔터프라이즈 애플리케이션을 개발하거나 유지 보수할 때 설정 정보 기술 부담을 경감시키고 애플리케이션 로직을 용이하게 해석할 수 있게 하기 위해 고안되었다. 텍스트(text)로 기술된 스프링 설정 정보들과 코드들을 교차 비교해야만 하는 대신 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현하여 애플리케이션 로직을 한눈에 파악할 수 있게 하고, 복잡한 스프링 설정 정보 기술 문법을 익힐 필요 없이 간편한 그래픽 편집만으로 정확하게 스프링 설정 정보들을 생성할 수 있게 하는 것이 본 발명의 목적이다.
The present invention is designed to alleviate the burden of configuration information technology and facilitate interpretation of application logic when developing or maintaining Spring-based enterprise applications. Instead of having to cross-compare the Spring configuration information described in text with the code, it is necessary to visualize the application structure and method call sequence so that application logic can be grasped at a glance. It is an object of the present invention to be able to generate spring configuration information accurately with only a simple graphic editing without any limitation.

상기의 목적을 달성하기 위한 본 발명은, 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현해서 애플리케이션 개발과 변경을 용이하게 하는 비주얼 스프링 개발 환경(development environment) 시스템에 있어서, 스프링 프레임워크 기반으로 개발된 애플리케이션의 스프링 설정 정보들을 분석하여 스프링 빈(bean) 정보들과 의존성 주입용 생성자(constructor)와 프로퍼티(property) 정보, 객체 간 의존 관계 정보들을 추출해내고, 이들을 종합하여 “의존성 주입(dependency injection) 정보 메모리 모델”을 생성하는 “애플리케이션 구조 분석 모듈”; 상기 애플리케이션 구조 분석 모듈이 생성한 의존성 주입 정보 메모리 모델로부터 상호 의존 관계를 갖는 객체 쌍, 즉 클라이언트-서버 관계의 객체 쌍 모두를 식별하고, 해당 객체들의 소스 코드를 분석하여 클라이언트 객체 정보, 호출하는 메소드(caller method) 정보, 서버 객체 정보, 호출되는 메소드(callee method) 정보와 메소드 간 호출 관계 정보들을 추출해내고, 이들을 종합하여 “메소드 호출 시퀀스 메모리 모델”을 생성하는 “애플리케이션 제어 흐름(control flow) 분석 모듈”; 상기 애플리케이션 구조 분석 모듈이 생성한 의존성 주입 정보 메모리 모델을 그래프의 노드(node)와 에지(edge)로 시각화하여 “비주얼 스프링 다이어그램”을 생성하는 “애플리케이션 구조 시각화 모듈”; 상기 애플리케이션 구조 시각화 모듈이 생성한 “비주얼 스프링 다이어그램”에, 상기 애플리케이션 제어 흐름 분석 모듈이 생성한 메소드 호출 시퀀스 메모리 모델을 그래프의 노드와 에지로 시각화하는 “메소드 호출 시퀀스 시각화 모듈”; 상기 애플리케이션 구조 시각화 모듈과 메소드 시퀀스 시각화 모듈이 생성한 비주얼 스프링 다이어그램을 시각적으로 편집할 수 있게 하고, 편집된 다이어그램을 스프링 프레임워크 설정 정보로 변환하여 애플리케이션의 개발을 용이하게 하는 “비주얼 스프링 편집 모듈”; 을 포함하는 것을 특징으로 한다.
According to an aspect of the present invention, there is provided a visual spring development environment system that visually expresses a structure of an application and a method call sequence to facilitate application development and modification, Spring configuration information of the application is analyzed to extract spring bean information, dependency injection constructor, property information, and inter-object dependency information, and these information are collectively referred to as "dependency injection information Memory structure "," memory model " A client-server relationship object pair is identified from the dependency injection information memory model generated by the application structure analysis module, the client object information is analyzed by analyzing the source code of the object, an application control flow analysis that extracts caller method information, server object information, callee method information and call relationship information between methods, and synthesizes them to generate a "method call sequence memory model"module"; An " application structure visualization module " for visualizing the dependency injection information memory model generated by the application structure analysis module as nodes and edges of a graph to generate a " visual spring diagram "; A " method call sequence visualization module " for visualizing a method call sequence memory model generated by the application control flow analysis module as nodes and edges of a graph in a " visual spring diagram " created by the application structure visualization module; A "visual spring editing module" that visually edits a visual spring diagram generated by the application structure visualization module and method sequence visualization module and converts the edited diagram into spring framework setting information to facilitate the development of the application, ; And a control unit.

상기와 같은 본 발명은, 스프링 기반 엔터프라이즈 애플리케이션의 구조와 메소드 호출 시퀀스를 시각화하여 애플리케이션 로직을 한눈에 파악할 수 있게 하고, 스프링 설정 정보들을 간편하고 효율적으로 기술할 수 있게 함으로써, 엔터프라이즈 애플리케이션 개발과 유지 보수 비용과 시간을 크게 절감시켜주는 효과가 있다.
The present invention enables the user to grasp the application logic at a glance by visualizing the structure of the Spring-based enterprise application and the method call sequence, and to easily and efficiently describe the spring configuration information. Thus, It has the effect of significantly reducing cost and time.

도 1은 본 발명에 따른 비주얼 스프링 개발 환경 시스템의 구성을 도시한 블록도.
도 2는 스프링 설정 정보를 담고 있는 XML 파일 내용을 도시한 예시도
도 3은 애노테이션(annotation)기반 스프링 설정 정보를 담고 있는 소스 파일 내용을 도시한 예시도
도 4는 본 발명에 따른 애플리케이션 구조 분석 모듈이 의존성 주입 정보 메모리 모델을 생성하는 과정을 도시한 흐름도
도 5는 본 발명에 따른 애플리케이션 제어 흐름 분석 모듈이 메소드 호출 시퀀스 메모리 모델을 생성하는 과정을 도시한 흐름도
도 6은 본 발명에 따른 애플리케이션 구조 시각화 모듈이 비주얼 스프링 다이어그램을 생성하고 애플리케이션 구조를 시각화하는 과정을 도시한 흐름도
도 7은 본 발명에 따른 애플리케이션 구조 시각화 모듈이 애플리케이션 구조를 시각화한 비주얼 스프링 다이어그램 예시도
도 8은 본 발명에 따른 메소드 호출 시퀀스 시각화 모듈이 비주얼 스프링 다이어그램에 메소드 호출 시퀀스를 시각화하는 과정을 도시한 흐름도
도 9는 본 발명에 따른 메소드 호출 시퀀스 시각화 모듈이 비주얼 스프링 다이어그램에 메소드 호출 시퀀스를 시각화한 내용을 도시한 예시도
도 10은 본 발명에 따른 비주얼 스프링 편집 모듈을 사용해서 비주얼 스프링 다이어그램을 편집하는 과정을 도시한 흐름도
도 11은 본 발명에 따른 비주얼 스프링 편집 모듈이 비주얼 스프링 다이어그램을 스프링 설정 정보로 변환하는 과정을 도시한 흐름도
도 12는 본 발명에 따른 비주얼 스프링 개발 환경 시스템을 오픈 소스 개발 환경인 이클립스(eclipse)에 플러그인으로 구현한 예시도
1 is a block diagram showing the configuration of a visual spring development environment system according to the present invention;
FIG. 2 is an exemplary diagram showing contents of an XML file containing spring setting information
3 is an exemplary diagram showing the contents of a source file containing annotation-based spring setting information
FIG. 4 is a flow chart illustrating a process of generating the dependency injection information memory model by the application structure analysis module according to the present invention.
5 is a flowchart illustrating a process of generating a method call sequence memory model by the application control flow analysis module according to the present invention.
Figure 6 is a flow diagram illustrating the process of creating a visual spring diagram and visualizing an application structure,
Figure 7 is an illustration of a visual spring diagram in which an application structure visualization module according to the present invention visualizes an application structure
8 is a flowchart illustrating a method of visualizing a method call sequence in a visual spring diagram by a method call sequence visualization module according to the present invention.
FIG. 9 is an exemplary diagram showing a visualization of a method call sequence in a visual spring diagram by a method call sequence visualization module according to the present invention
10 is a flowchart illustrating a process of editing a visual spring diagram using the visual spring editing module according to the present invention.
11 is a flowchart illustrating a process of converting a visual spring diagram into spring setting information by the visual spring editing module according to the present invention.
Figure 12 is an example of a plug-in implementation of the visual spring development environment system according to the present invention in an open source development environment, eclipse

이하에서는 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 내용을 설명한다.
Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 비주얼 스프링 개발 환경 시스템의 구성을 도시한 블록도로서, 애플리케이션 구조 분석 모듈(120), 애플리케이션 제어흐름 분석모듈(130), 애플리케이션 구조 시각화 모듈(140), 메소드 호출 시퀀스 시각화 모듈(150), 비주얼 스프링 편집 모듈(160)을 포함한다.
FIG. 1 is a block diagram illustrating a configuration of a visual spring development environment system according to the present invention. The application architecture analysis module 120, the application control flow analysis module 130, the application structure visualization module 140, A module 150, and a visual spring editing module 160.

애플리케이션 구조 분석 모듈(120)은 스프링 설정 정보(110)을 참조하여 의존성 주입 정보 메모리 모델(121)을 생성한다. 애플리케이션 제어흐름 분석모듈(130)은 상기 애플리케이션 구조 분석 모듈(120)이 생성한 상기 의존성 주입 정보 메모리 모델(121)과 애플리케이션 객체 소스 코드(111)를 참조하여 메소드 호출 시퀀스 메모리 모델(131)을 생성한다. 애플리케이션 구조 시각화 모듈(140)이 상기 의존성 주입 정보 메모리 모델(121)을 참조하여 비주얼 스프링 다이어그램(141)을 생성한다. 메소드 호출 시퀀스 시각화 모듈(150)은 메소드 호출 시퀀스 메모리 모델(131)을 시각화하여 비주얼 스프링 다이어그램(141)에 추가하여 나타낸다. 개발자는 비주얼 스프링 편집 모듈(160)을 사용해 비주얼 스프링 다이어그램(141)을 편집할 수 있으며, 편집된 비주얼 스프링 다이어그램(141)은 비주얼 스프링 편집 모듈(160)이 스프링 설정 정보(110)로 변환 시켜준다.
The application structure analysis module 120 generates the dependency injection information memory model 121 by referring to the spring setting information 110. [ The application control flow analysis module 130 generates a method call sequence memory model 131 by referring to the dependency injection information memory model 121 and the application object source code 111 generated by the application structure analysis module 120 do. The application structure visualization module 140 refers to the dependency injection information memory model 121 to generate the visual spring diagram 141. [ The method call sequence visualization module 150 visualizes and displays the method call sequence memory model 131 in addition to the visual spring diagram 141. The developer can edit the visual spring diagram 141 using the visual spring editing module 160 and the edited visual spring diagram 141 converts the visual spring editing module 160 into the spring setting information 110 .

본 발명의 일 실시예에 따른 스프링 설정 정보(110) 중 XML 파일 내용을 도시한 도 2를 참조하여 각각의 내용을 비주얼 스프링 다이어그램의 시각화 요소들에 대응시켜 설명한다.
Referring to FIG. 2 showing the contents of the XML file among the spring setting information 110 according to an embodiment of the present invention, each content will be described in association with visualization elements of a visual spring diagram.

스프링 설정 정보에 등록된 모든 빈(bean) element(210)는 추후 생성될 비주얼 스프링 다이어그램의 lifeline 노드(node)로 대응된다. clsSalaryMgt 빈의 생성자 인수(constructor-arg) element(211)는 lifeline 노드의 생성자 서브 노드로 대응되며, ref 값인 객체 레퍼런스 빈과 대응되는 lifeline 노드와 에지(edge)로 연결된다. clsCalcSalary 빈의 프로퍼티(property) element(212)도 lifeline 노드의 프로퍼티 서브 노드로 대응되며, ref 값인 객체 레퍼런스 빈과 대응되는 lifeline 노드와 에지로 연결된다. clsCalcTax 빈의 attribute 정보(213)는 clsCalcTax 빈과 대응되는 lifeline의 속성 정보로 저장되어 노드 선택시 개발환경의 속성창(property view)에 표시된다. (214)는 AOP(Aspect Oriented Programming) 구현을 위한 구성요소로서, advice와 pointcut을 한묶음으로 하여 advisor를 이룸을 보여주며, 이는 프록시(proxy) 빈(215)에서 interceptorNames 프로퍼티에(217) 주입된다. 프록시 빈의 타겟(target)인 clsCalcSalary 빈(216)은 프록시 빈의 타겟 프로퍼티 서브 노드와 clsCalcSalary 빈과 대응하는 lifeline 노드를 연결하는 에지로 대응된다.
All the bean elements 210 registered in the spring setting information are mapped to the lifeline nodes of the visual spring diagram to be generated later. The constructor-arg element 211 of the clsSalaryMgt bean corresponds to the constructor sub-node of the lifeline node and is connected to the edge of the corresponding object-reference bin and the corresponding lifeline node. The property element 212 of the clsCalcSalary bean also corresponds to the property sub node of the lifeline node and is connected to the edge of the object reference bin, which is a ref value, and the corresponding lifeline node. The attribute information 213 of the clsCalcTax bean is stored in the property information of the lifeline corresponding to the clsCalcTax bean and displayed in the property view of the development environment when the node is selected. The interface 214 is an element for implementing Aspect Oriented Programming (AOP), and shows an adviser and a pointcut as a bundle, which is injected into the interceptorNames property 217 from a proxy bin 215. The clsCalcSalary bean 216, the target of the proxy bean, is mapped to the edge that connects the target property subnode of the proxy bean with the clsCalcSalary bean and the corresponding lifeline node.

본 발명의 일 실시예에 따른 스프링 설정 정보(110) 중 애노테이션 기반 스프링 설정 정보를 담고 있는 소스 파일 내용을 도시한 도 3를 참조하여 각각의 내용을 비주얼 스프링 다이어그램의 시각화 요소들에 대응시켜 설명한다.
Referring to FIG. 3 showing a content of a source file containing annotation-based spring setting information among the spring setting information 110 according to an embodiment of the present invention, each content is described in association with visualization elements of a visual spring diagram .

@Bean 애노테이션이 부가된 메소드들(310)은 빈(bean)의 정보가 메소드 소스 안에 표현된 것으로서, 각각 lifeline 노드로 대응된다. @Bean 애노테이션이 부가된 메소드의 리턴 타입(311)은 빈의 타입 정보를 의미하며, 이로부터 추출된 qualified name이 lifeline 속성에 저장된다. @Bean 애노테이션이 부가된 메소드의 이름(312)은 빈의 id 정보를 의미하며, 이 또한 lifeline 속성 정보에 저장된다. (313), (318)과 같이 "set"으로 시작하는 method invocation은 각 빈의 프로퍼티 정보를 의미하며, 각 lifeline 노드의 프로퍼티 서브 노드로 표현되고, 주입되는 객체 레퍼런스 빈과 대응되는 lifeline 노드와 에지로 연결된다. 예를 들어, transactionManager 빈의 dataSource 프로퍼티에는 dataSource 빈이 주입(314)되므로, transactionManager lifeline의 dataSource 프로퍼티 서브 노드와 dataSource lifeline 노드가 서로 에지로 연결된다. @Autowired 애노테이션이 붙은 필드 변수 sqlService는 동일 configuration class 내에 등록된 빈 중 같은 타입(SqlService)을 찾아 주입된다(315). 이렇게 주입된 필드 변수 sqlService는 userDao 빈의 sqlService 프로퍼티로 주입(316)되므로, userDao lifeline의 sqlService 프로퍼티 서브 노드와 sqlService lifeline 노드가 서로 에지로 연결된다. 한편, sqlRegistry 빈의 생성자 인수에는 embeddedDatabase 빈이 주입(317)되므로, sqlRegistry lifeline의 생성자 서브 노드와 embeddedDatabase lifeline 노드를 연결하는 에지로 대응된다.
The @Bean annotated methods 310 are the bean information represented in the method source, and correspond to the lifeline nodes, respectively. The return type 311 of the method with the @Bean annotation means the type information of the bean, and the extracted qualified name is stored in the lifeline property. The name (312) of the method to which the @ Bean annotation is added means id information of the bean, which is also stored in the lifeline property information. A method invocation starting with "set" such as (313), (318) means property information of each bean, expressed as a property sub node of each lifeline node, and corresponding to the object reference bin to be injected, Lt; / RTI > For example, the dataSource property of the transactionManager bean is injected (314) with a dataSource bean, so the dataSource property sub node of the transactionManager lifeline and the dataSource lifeline node are connected to each other at the edge. The @Autowired annotated field variable sqlService is searched for 315 the same type (SqlService) of beans registered in the same configuration class. Because the injected field variable sqlService is injected (316) into the sqlService property of the userDao bean, the sqlService property sub node of the userDao lifeline and the sqlService lifeline node are connected to each other at the edge. On the other hand, since the constructor argument of the sqlRegistry bean is injected (317) into the embeddedDatabase bean, it corresponds to the edge connecting the constructor sub node of the sqlRegistry lifeline and the embeddedDatabase lifeline node.

본 발명의 일 실시예에 따른 애플리케이션 구조 분석 모듈(120)이 의존성 주입 정보 메모리 모델(121)을 생성하는 과정을 도시한 도 4를 참조하여 애플리케이션 구조 분석 모듈의 구체적인 동작과 기능을 설명한다.
The specific operation and function of the application structure analysis module will be described with reference to FIG. 4 showing a process of generating the dependency injection information memory model 121 by the application structure analysis module 120 according to an embodiment of the present invention.

의존성 주입 정보 메모리 모델(121) 생성 과정은 크게 도 2와 같이 스프링 설정 정보가 있는 XML 파일과 도 3과 같이 스프링 설정 정보가 있는 객체 소스 코드를 분석함으로써 이루어진다. 먼저 스프링 설정 정보가 있는 XML 파일을 분석하기 위해서, 애플리케이션 구조 분석 모듈(121)이 프로젝트 내 모든 XML 파일을 대상으로 스프링 설정 파일을 검색(410)한다. 이렇게 검색된 스프링 설정 파일 내에 있는 모든 빈(bean) element들을 추출하여 그에 대응하는 모델 요소 lifeline을 생성(420)한 후, 빈 element의 자식 element를 처리(430)한다. 빈 element의 자식 element에는 constructor-arg element(431)과 property element(434)가 있는데 각각 의존성 주입용 생성자 모델 요소(432)와 의존성 주입용 프로퍼티 모델 요소(435)로 생성하여 ref attribute 값을 찾아 각각에 주입할 객체로 저장(433,436)한다. 한편, 스프링 설정 정보가 있는 객체(클래스) 소스코드를 분석하기 위해서, 애플리케이션 구조 분석 모듈(121)이 프로젝트 내 모든 패키지/클래스를 대상으로 스프링 애노테이션 설정 정보를 검색(440)한다. 이렇게 검색된 스프링 애노테이션이 붙은 클래스 내의 빈 메소드를 식별하여 메소드 이름, 타입 등의 정보를 추출하여 모델 요소 lifeline을 생성(450)한 후, 빈 메소드 소스 코드를 분석하여 처리(460)한다. 의존성 주입용 생성자 모델 요소는 빈객체 생성문에서 bean type 매개변수를 검사(461)하여 생성(462) 및 주입(464)된다. 비슷하게, 의존성 주입용 프로퍼티 모델 요소는 빈객체 속성 설정문에서 bean type 매개변수를 검사(464)하여 생성(465) 및 주입(466)된다. 생성된 모든 모델 요소들을 종합하여, 의존성 주입 정보 메모리 모델 생성 및 저장(470)한다
Dependency injection information memory model 121 is generated by analyzing an XML file having spring configuration information and an object source code having spring configuration information as shown in FIG. 3, as shown in FIG. First, in order to analyze the XML file having the spring setting information, the application structure analysis module 121 searches all the XML files in the project for the spring setting file (410). After extracting all the bean elements in the searched spring configuration file and creating a corresponding model element lifeline 420, the child element of the empty element is processed 430. FIG. The child element of the empty element includes a constructor-arg element 431 and a property element 434, which are generated as a dependency injection model element 432 and a dependency injection property model element 435, (433, 436). On the other hand, in order to analyze the object (class) source code having the spring setting information, the application structure analysis module 121 searches (440) for the spring annotation setting information on all packages / classes in the project. After identifying the bean method in the class to which the spring annotation is searched and extracting information such as a method name and a type, a model element lifeline is generated (450), and the bean method source code is analyzed (460). The constructor model element for dependency injection is created (462) and injected (464) by examining (461) the bean type parameter in an empty object creation statement. Similarly, the dependency injection property model element is created (465) and injected (466) by examining (464) the bean type parameter in an empty object attribute setting statement. All generated model elements are combined to create and store dependency injection information memory model (470)

본 발명의 일 실시예에 따른 애플리케이션 제어 흐름 분석 모듈(130)이 메소드 호출 시퀀스 메모리 모델을 생성하는 과정을 도시한 도 5를 참조하여 애플리케이션 제어 흐름 분석 모듈의 구체적인 동작과 기능을 설명한다.
The specific operation and function of the application control flow analysis module will be described with reference to FIG. 5 illustrating a process of generating the method call sequence memory model by the application control flow analysis module 130 according to an embodiment of the present invention.

상기 의존성 주입 정보 메모리 모델(121)로부터 각 lifeline의 모든 의존성 주입용 생성자 및 프로퍼티를 추출(510)하여, lifeline 클래스 소스에서 상기 생성자 및 프로퍼티에 의해 의존성이 주입된 field 변수 이름을 검색(520)한다. 소스에서 상기 field 변수를 사용하는 호출문들을 찾아, 호출하는 메소드(호출문을 포함하는 메소드) 이름과, 호출되는 메소드(호출문에 의해 invoke되는 메소드) 이름을 저장(530)한다. Lifeline의 각 의존성 주입용 생성자/프로퍼티 별로 저장된 메소드 간 호출 관계 정보를 종합하여 메소드 호출 시퀀스 메모리 모델을 생성(540)한다.
All dependency injection constructors and properties of each lifeline are extracted 510 from the dependency injection information memory model 121 and the dependency injected field variable names are searched 520 from the lifeline class source . (530) the name of the calling method (the method containing the calling statement) and the name of the method to be called (the method invoked by the calling statement) by locating and calling the calling statements using the field variable at the source. (540) a method call sequence memory model by combining call relationship information between stored dependencies for each dependency injector / property of the Lifeline.

본 발명의 일 실시예에 따른 애플리케이션 구조 시각화 모듈(140)이 비주얼 스프링 다이어그램(141)을 생성하고 애플리케이션 구조를 시각화하는 과정을 도시한 도 6을 참조하여 애플리케이션 구조 시각화 모듈의 구체적인 동작과 기능을 설명한다.
6, which illustrates the process of generating the visual spring diagram 141 and visualizing the application structure, according to an embodiment of the present invention, a specific operation and function of the application structure visualization module will be described do.

먼저 내용이 없는 비주얼 스프링 다이어그램을 생성(610)한 후, 그 안에 상기 의존성 주입 정보 메모리 모델(121)의 lifeline들을 노드로 그려준다(620). 그리고 lifeline 내 모든 의존성 주입용 생성자 및 프로퍼티를 찾아 lifeline 노드의 서브 노드로 그려준다(630). 마지막으로 모든 생성자 및 프로퍼티의 객체 레퍼런스에 해당하는 lifeline 노드를 찾아 에지로 연결하여(640) 애플리케이션 구조 시각화를 완료한다.
First, a visual spring diagram having no contents is generated (610), and the lifeline of the dependency injection information memory model (121) is drawn into the node (620). Then, all the dependency injection constructors and properties in the lifeline are searched and drawn to the child nodes of the lifeline node (630). Finally, the lifeline node corresponding to the object reference of all the constructors and properties is found and connected to the edge (640) to complete visualization of the application structure.

도 7은 본 발명의 일 실시예에 따른 애플리케이션 구조 시각화 모듈(140)이 애플리케이션 구조를 시각화한 비주얼 스프링 다이어그램 예시도이다.
7 is an illustration of a visual spring diagram in which an application structure visualization module 140 in accordance with an embodiment of the present invention visualizes an application structure.

(710)의 노드들과 에지의 의미는 스프링 설정 정보 XML 파일인 도 2의 clsSalaryMgt 빈의 rqSalaryMgt1 생성자 인수에 proxyCalcSalary 빈이 주입되는 것을 나타내며, (720)의 노드들과 에지의 의미는 clsCalcSalary 빈의 rqEmpSalaryData1 프로퍼티에 clsEmployeeData 빈이 주입되는 것을 나타낸다.
The meaning of nodes and edges of node 710 is that the proxyCalcSalary bean is injected into the rqSalaryMgt1 constructor argument of the clsSalaryMgt bean of FIG. 2, which is the Spring configuration information XML file, and the meaning of nodes and edges of 720 is the rqEmpSalaryData1 property of the clsCalcSalary bean Indicates that the clsEmployeeData bean is injected.

본 발명의 일 실시예에 따른 메소드 호출 시퀀스 시각화 모듈(150)이 비주얼 스프링 다이어그램(141)에 메소드 호출 시퀀스를 시각화하는 과정을 도시한 도 8을 참조하여 메소드 호출 시퀀스 시각화 모듈의 구체적인 동작과 기능을 설명한다.
The method call sequence visualization module 150 visualizes a method call sequence in the visual spring diagram 141 according to an exemplary embodiment of the present invention. Referring to FIG. 8, the concrete operation and function of the method call sequence visualization module Explain.

메소드 호출 시퀀스 메모리 모델(131)의 각 lifeline에 대하여 상기 의존성 주입 정보를 시각화한 비주얼 스프링 다이어그램(141)에서 해당 lifeline 노드를 찾는다(810). 메소드 호출 시퀀스 메모리 모델에서 상기 lifeline에 대한 각 호출하는 메소드 이름들을 추출한 다음, 상기 lifeline 노드에 대해 각 해당하는 메소드 서브 노드들을 찾고, 없으면 추가한다(820). 메소드 호출 시퀀스 메모리 모델로부터 각 호출하는 메소드에 의해 호출되는 메소드 이름을 가져와(830), 호출하는 메소드 이름에 해당하는 메소드 서브 노드 안에 호출되는 메소드 이름들에 해당하는 invocation 서브 노드들을 그려준다(840). 의존성 주입용 생성자/프로퍼티에 주입된 객체 레퍼런스에 해당하는 lifeline 노드를 찾아 호출되는 메소드 이름에 해당하는 메소드 서브 노드를 찾거나 그려주고 앞서 그려준 invocation 서브 노드와 에지로 연결하여(850) 메소드 호출 시퀀스 시각화를 완료한다.
A visual spring diagram 141 visualizes the dependency injection information for each lifeline of the method call sequence memory model 131 to find the corresponding lifeline node (810). Extracts each calling method name for the lifeline from the method invocation sequence memory model, finds each corresponding method sub node for the lifeline node, and adds 820 if it is not. (830), and invocation subnodes corresponding to the method names to be called in the method subnode corresponding to the invoking method name are drawn (840) . Dependency Injected object to injected constructor / property Find the lifeline node corresponding to the reference method Method corresponding to the called method Find or draw the sub node and connect it to the invocation sub node that was drawn before (850) Method call sequence Complete the visualization.

도 9는 발명의 일 실시예에 메소드 호출 시퀀스 시각화 모듈(150)이 비주얼 스프링 다이어그램(141)에 메소드 호출 시퀀스를 시각화한 내용을 도시한 예시도이다.
FIG. 9 is an exemplary diagram illustrating a method call sequence visualization module 150 visualizing a method call sequence in a visual spring diagram 141 according to an exemplary embodiment of the present invention.

상기 다이어그램에서 스프링 설정 정보 XML 파일인 도 2의 clsSalaryMgt 빈의 생성자 인수 rqSalaryMgt1에는 proxyCalcSalary 빈이 주입(910)되므로, 이로부터 clsSalaryMgt 빈이 proxyCalcSalary 빈의 메소드들을 호출하는 것을 알 수 있고, 관련 호출문은 clsSalaryMgt 클래스 소스를 분석하여 식별한다. 식별된 메소드 호출들을 메소드 호출 시퀀스 시각화 모듈(150)이 비주얼 스프링 다이어그램(141)에 표현해준 부분이 바로 (920)인데, 호출되는 메소드가 proxyCalcSalary 클래스의 rqCalcSalary 메소드임을 표현하고 있다. 개발자가 메소드 서브 노드를 선택하면 해당 메소드의 상세 정보가 개발 환경의 속성창에 표시된다.
In the diagram, the proxyCalcSalary bean is injected (910) into the constructor argument rqSalaryMgt1 of the clsSalaryMgt bean of FIG. 2, which is the spring setting information XML file. From this, it can be seen that the clsSalaryMgt bean calls the methods of the proxyCalcSalary bean, . The part where the method call sequence visualization module 150 expresses the identified method calls in the visual spring diagram 141 is the expression 920, which indicates that the method to be called is the rqCalcSalary method of the proxyCalcSalary class. When the developer selects a method sub-node, the detail information of the method is displayed in the property window of the development environment.

본 발명의 일 실시예에 따른 비주얼 스프링 편집 모듈(160)을 사용해서 비주얼 스프링 다이어그램(141)을 편집하는 과정을 도시한 도 10을 참조하여 비주얼 스프링 편집 모듈의 구체적인 동작과 기능을 설명한다.
The operation and function of the visual spring editing module will be described with reference to FIG. 10 illustrating a process of editing the visual spring diagram 141 using the visual spring editing module 160 according to an embodiment of the present invention.

비주얼 스프링 다이어그램(141) 안에 lifeline 노드를 생성하기 위해서 클래스 파일을 드래그&드롭한다(1010). 비주얼 스프링 편집 모듈은 해당 클래스의 의존성 주입용 생성자 및 프로퍼티를 분석하여 lifeline 노드의 서브 노드로 생성한다(1020). 개발자가 의존성 주입용 생성자 및 프로퍼티 노드와 레퍼런스로 주입될 lifeline 노드를 선택하여 이들을 연결하는 에지를 삽입하면 의존 관계가 설정된다(1030). 의존성 주입 에지가 삽입되면, 비주얼 스프링 편집 모듈은 에지에 의해 연결된 클라이언트-서버 객체의 소스코드를 분석하여 상호간 메소드 호출 시퀀스 관계를 호출하는 메소드 서브 노드와 invocation 서브 노드, 호출되는 메소드 서브 노드, 호출을 표현하는 에지로 시각화하여 해당 lifeline 노드에 추가한다(1040). 개발자가 잘못 생성한 노드나 에지들을 선택하여 삭제할 때, 노드를 삭제할 경우 비주얼 스프링 편집 모듈은 서브 노드들과 해당 노드에 연결된 에지도 함께 제거하고, 의존성 주입 에지를 삭제할 경우 비주얼 스프링 편집 모듈은 위존 관계의 객체간 메소드 호출 시퀀스 관계를 나타낸 그래픽 요소들도 함께 삭제한다(1050). 개발자는 필요한 만큼 1010 내지 1050 과정을 반복하여 필요한 비주얼 스프링 다이어그램 편집을 완료한다.
Drag and drop the class file (1010) to create a lifeline node in the visual spring diagram (141). The visual spring editing module analyzes the constructor and property for dependency injection of the class and creates 1020 a sub node of the lifeline node. When a developer selects a creator and property node for dependency injection and a lifeline node to be injected as a reference, and inserts an edge connecting them, a dependency is established (1030). When the dependency injection edge is inserted, the visual spring editing module analyzes the source code of the client-server object connected by the edge and calls the method sub-node and the invocation sub-node, the called method sub-node, Visualized as an edge to be represented and added to the corresponding lifeline node (1040). When a node is deleted by selecting and deleting a node or an edge erroneously generated by the developer, the visual spring editing module removes the edges connected to the sub nodes and the corresponding node, and when the dependency injection edge is deleted, The graphical elements representing the object-to-object method call sequence relationship are also deleted (1050). The developer repeats the steps 1010 to 1050 as necessary to complete the necessary editing of the visual spring diagram.

본 발명의 일 실시예에 따른 비주얼 스프링 편집 모듈(160)이 비주얼 스프링 다이어그램(141)을 스프링 설정 정보(110)로 변환하는 과정을 도시한 도 11을 참조하여 구체적인 변환 과정을 설명한다.
A concrete conversion process will be described with reference to FIG. 11 showing a process of converting the visual spring diagram 141 into the spring setting information 110 according to an embodiment of the present invention.

비주얼 스프링 편집 모듈(160)이 비주얼 스프링 다이어그램(141)에서 lifeline 노드 하나를 선택(1110)한 후, 선택된 lifeline 정보를 스프링 XML 설정 파일에 빈(bean) element로 등록(1120)한다. 그리고 lifeline 노드의 프로퍼티 서브 노드 하나를 선택(1130)한 후 프로퍼티 name, value 값을 식별하여 빈 element의 자식 element로 등록(1140)한다. 현 lifeline 노드의 모든 프로퍼티 서브 노드에 대하여 (1130)과 (1140)을 반복한다. 프로퍼티에 대한 작업이 끝난 후, lifeline 노드의 생성자 서브 노드 하나를 선택(1150)한 후 생성자 인수 name, value 값을 식별하여 빈 element의 자식 element로 등록(1160)한다. 현 lifeline 노드의 모든 생성자 서브 노드에 대하여 (1150)과 (1160)을 반복한다. 생성자에 대한 작업이 끝난 후, lifeline 노드의 속성 정보를 식별하여 빈 element의 attribute로 삽입(1170)한다. 또 lifeline 노드와 연결된 프록시 관련 invocation 에지를 선택(1180)하여 XML 파일에 AOP 관련 element들로 등록(1190)하면 하나의 lifeline에 대한 변환 작업이 완료된다. 비주얼 스프링 편집 모듈은 비주얼 스프링 다이어그램의 모든 lifeline 노드들에 대하여 상기 1110 내지 1190 과정을 반복 적용하여 스프링 설정 정보로의 변환 작업을 완료한다.
The visual spring editing module 160 selects 1110 a lifeline node in the visual spring diagram 141 and registers 1120 the selected lifeline information as a bean element in the Spring XML configuration file. Then, one of the property subnodes of the lifeline node is selected (1130), and property name and value values are identified and registered as a child element of the empty element (1140). Repeat (1130) and (1140) for all property subnodes of the current lifeline node. After the property operation is completed, one creator sub node of the lifeline node is selected (1150), and the constructor arguments name and value are identified and registered as a child element of the empty element (1160). Repeat (1150) and (1160) for all constructor subnodes of the current lifeline node. After the work on the constructor is completed, the property information of the lifeline node is identified and inserted as an attribute of the empty element (1170). A proxy-related invocation edge associated with the lifeline node is selected (1180) and registered as an AOP-related element in the XML file (1190). The visual spring editing module repeats the steps 1110 to 1190 for all the lifeline nodes of the visual spring diagram to complete the conversion into the spring setting information.

도 12는 본 발명의 일 실시예에 따른 비주얼 스프링 개발 환경 시스템을 오픈 소스 개발 환경인 이클립스(eclipse)에 플러그인으로 구현한 예시도이다.
12 is an example of a plug-in implementation of a visual spring development environment system according to an embodiment of the present invention in an open source development environment, eclipse.

이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 개시된 실시예나 특정 용어들은 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기위해서 사용된 것이 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 기재된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
As described above, an optimal embodiment has been disclosed in the drawings and specification. The embodiments and specific terms used herein are for the purpose of describing the present invention and are not used to limit the scope of the present invention described in the claims or the claims. Therefore, those skilled in the art will appreciate that various modifications and equivalent embodiments are possible without departing from the scope of the present invention. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

Claims (10)

애플리케이션의 구조(application architecture)와 메소드 호출 시퀀스(method call sequence)를 시각적으로 표현해서 애플리케이션 개발과 변경을 용이하게 하는 비주얼 스프링 개발 환경(development environment) 시스템에 있어서,

(a) 스프링 프레임워크 기반으로 개발된 애플리케이션의 스프링 설정(configuration) 정보들을 분석하여 스프링 빈(bean) 정보들과 의존성 주입용 생성자(constructor)와 프로퍼티(property) 정보, 객체 간 의존 관계 정보들을 추출해내고, 이들을 종합하여 “의존성 주입(dependency injection) 정보 메모리 모델”을 생성하는 “애플리케이션 구조 분석 모듈”;
(b) 상기 애플리케이션 구조 분석 모듈 (a)가 생성한 의존성 주입 정보 메모리 모델로부터 상호 의존 관계를 갖는 객체 쌍, 즉 클라이언트-서버 관계의 객체 쌍 모두를 식별하고, 해당 객체들의 소스 코드를 분석하여 클라이언트 객체 정보, 호출하는 메소드(caller method) 정보, 서버 객체 정보, 호출되는 메소드(callee method) 정보와 메소드 간 호출 관계 정보들을 추출해내고, 이들을 종합하여 “메소드 호출 시퀀스 메모리 모델”을 생성하는 “애플리케이션 제어 흐름(control flow) 분석 모듈”;
(c) 상기 애플리케이션 구조 분석 모듈 (a)가 생성한 의존성 주입 정보 메모리 모델을 그래프의 노드(node)와 에지(edge)로 시각화하여 “비주얼 스프링 다이어그램”을 생성하는 “애플리케이션 구조 시각화 모듈”;
(d) 상기 애플리케이션 구조 시각화 모듈 (c)가 생성한 “비주얼 스프링 다이어그램”에, 애플리케이션 제어 흐름 분석 모듈 (b)가 생성한 메소드 호출 시퀀스 메모리 모델을 그래프의 노드와 에지로 시각화하는 “메소드 호출 시퀀스 시각화 모듈”;
(e) 상기 애플리케이션 구조 시각화 모듈 (c)와 메소드 시퀀스 시각화 모듈 (d)가 생성한 비주얼 스프링 다이어그램을 시각적으로 편집할 수 있게 하고, 편집된 다이어그램을 스프링 프레임워크 설정 정보로 변환하여 애플리케이션의 개발을 용이하게 하는 “비주얼 스프링 편집 모듈”; 을 포함하고,
상기 애플리케이션 구조 분석 모듈 (a)는,
(a1) 상기 애플리케이션에 포함된 XML 파일들 중 스프링 설정 정보 파일들만 판별해내고, 해당 파일들을 분석하여 스프링 빈 정보들과 의존성 주입용 생성자와 프로퍼티 정보, 객체 간 의존 관계 정보를 추출하여 저장하는 서브 모듈;
(a2) 상기 애플리케이션에 포함된 소스 코드들을 분석하여 스프링 설정 정보를 표현한 애노테이션(annotation)들을 판별해내고 이들을 해석해서 스프링 빈 정보들과 의존성 주입용 생성자와 프로퍼티 정보, 객체 간 의존 관계 정보로 저장하는 서브 모듈;
(a3) 상기 서브 모듈 (a1)과 (a2)가 저장한 정보들을 종합하여 애플리케이션의 “의존성 주입 정보 메모리 모델”을 생성하여 저장하는 서브 모듈; 을 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템.

A visual spring development environment system for visually expressing an application architecture and a method call sequence to facilitate application development and modification,

(a) Extract Spring bean information, dependency injection constructor, property information, and dependency information between objects by analyzing Spring configuration information of an application developed on the basis of Spring Framework An " application structure analysis module " for generating a " dependency injection information memory model "
(b) identifying a pair of objects having an interdependency relationship, that is, a pair of objects in a client-server relationship, from the dependency injection information memory model generated by the application structure analysis module (a) Application control that extracts object information, caller method information, server object information, callee method information and call relationship information between methods, and synthesizes them to create a "method call sequence memory model" Control flow analysis module ";
(c) an " application structure visualization module " that generates a " visual spring diagram " by visualizing the dependency injection information memory model generated by the application structure analysis module (a) as nodes and edges of the graph;
(d) visualizing the method call sequence memory model generated by the application control flow analysis module (b) as nodes and edges of the graph in the "visual spring diagram" generated by the application structure visualization module (c) Visualization module ";
(e) visually edit the visual spring diagram generated by the application structure visualization module (c) and the method sequence visualization module (d), and convert the edited diagram into Spring framework configuration information, &Quot; Visual Spring editing module " / RTI >
The application structure analysis module (a)
(a1) It determines only the spring setting information files among the XML files included in the application, analyzes the files, and extracts the spring bin information, the dependency injection generator, property information, module;
(a2) analyzing the source codes included in the application to identify annotations representing spring configuration information, interpreting the annotations, and storing spring bean information, dependency injection generator, property information, and inter-object dependency information Submodule;
(a3) a sub module for generating and storing a " dependency injection information memory model " of an application by synthesizing information stored in the sub modules a1 and a2; And a visual spring development environment system.

삭제delete 청구항 1에 있어서, 상기 애플리케이션 제어 흐름 분석 모듈 (b)는,

(b1) 상기 의존성 주입 정보 메모리 모델에 있는 상호 의존 관계를 갖는 객체 쌍, 즉 클라이언트-서버 관계의 객체 쌍 중 하나를 선택하고, 선택된 객체 쌍의 클라이언트 객체 소스 코드를 분석하여 서버 객체 레퍼런스(object reference)가 배정(assign)되는 필드 변수(field variable)와 해당 필드 변수를 사용하는 호출문(call statement)들을 찾은 다음, 이를 기반으로 클라이언트 객체 정보, 호출하는 메소드 정보와 이 메소드에 의해 호출되는 메소드들의 이름을 저장하는 서브 모듈;
(b2) 상기 서브 모듈 (b1)이 선택한 객체 쌍의 서버 객체 소스코드를 분석하여 (b1)이 저장한 호출되는 메소드들의 이름을 찾고, 이를 기반으로 서버 객체 정보, 호출되는 메소드 정보와 메소드 간 호출 관계 정보를 저장하는 서브 모듈;
(b3) 상기 의존성 주입 정보 메모리 모델에 있는 모든 클라이언트-서버 객체 쌍들에 대하여 상기 서브 모듈 (b1)과 (b2) 기능을 반복 적용하여 얻은 정보들을 종합하여 “메소드 호출 시퀀스 메모리 모델”을 생성하여 저장하는 서브 모듈; 을 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The system according to claim 1, wherein the application control flow analysis module (b)

(b1) selecting one of a pair of objects having an interdependency relationship in the dependency injection information memory model, i.e., a client-server relation object, analyzing a client object source code of the selected object pair, ) Finds a field variable to be assigned and a call statement that uses the corresponding field variable. Based on this information, the client object information, the calling method information, and the methods A submodule for storing names;
(b2) analyzing the server object source code of the object pair selected by the submodule (b1), (b1) finding the names of the stored called methods, and based on the information on the server object, A sub-module for storing relationship information;
(b3) generates a " method call sequence memory model " by synthesizing information obtained by repeatedly applying the functions of the sub modules (b1) and (b2) to all client-server object pairs in the dependency injection information memory model Sub modules; And a visual spring development environment system
청구항 1에 있어서, 상기 애플리케이션 구조 시각화 모듈 (c)는,

(c1) 새(new) 비주얼 스프링 다이어그램을 생성하고, 상기 의존성 주입 정보 메모리 모델로부터 스프링 빈 객체 정보들을 읽어내어, 객체 각각을 상기 비주얼 스프링 다이어그램에 객체 노드로 시각화하는 서브 모듈;
(c2) 상기 의존성 주입 정보 메모리 모델로부터 의존성 주입용 생성자들과 프로퍼티들의 정보를 읽어내어, 상기 서브 모듈 (c1)가 시각화한 객체 노드의 서브 노드로 시각화하는 서브 모듈;
(c3) 상기 의존성 주입 정보 메모리 모델에 저장된 객체 간 의존 관계 정보 각각에 대하여, 상기 서브 모듈 (c1)와 (c2)가 생성한 노드들 중 해당 의존 관계의 대상 노드 쌍을 판별하고, 해당 노드 쌍을 연결하는 에지로 시각화함으로써 애플리케이션의 구조를 비주얼 스프링 다이어그램에 표현하는 서브 모듈; 을 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The system according to claim 1, wherein the application structure visualization module (c)

(c1) a sub module for generating a new visual spring diagram, reading spring bean object information from the dependency injection information memory model, and visualizing each object as an object node in the visual spring diagram;
(c2) a sub module for reading information of dependency injection constructors and properties from the dependency injection information memory model and visualizing the dependency injection information memory node as a sub node of an object node visualized by the sub module (c1);
(c3) for each inter-object dependency information stored in the dependency injection information memory model, determines a target node pair of a corresponding dependency among the nodes generated by the sub modules (c1) and (c2) A sub-module that visualizes the structure of the application in a visual spring diagram by visualizing it as a connecting edge; And a visual spring development environment system
청구항 1에 있어서, 상기 메소드 호출 시퀀스 시각화 모듈 (d)는,

(d1) 상기 메소드 호출 시퀀스 메모리 모델로부터 메소드 호출 관계가 있는 클라이언트-서버 객체 쌍들의 정보를 읽어내어, 객체 각각을 상기 비주얼 스프링 다이어그램에 객체 노드로 시각화 하는 서브 모듈;
(d2) 상기 메소드 호출 시퀀스 메모리 모델로부터, 상기 서브 모듈 (d1)에 의해 객체 노드로 시각화된 객체들이 포함하고 있는 호출하는 메소드 정보와 호출되는 메소드 정보들을 식별하고, 식별된 메소드 정보들을 상기 객체 노드의 서브 노드로 시각화하는 서브 모듈;
(d3) 상기 메소드 호출 시퀀스 메모리 모델에 저장된 메소드 간 호출 관계 정보 각각에 대하여, 서브 모듈 (d2)가 시각화한 호출하는 메소드 노드와 호출되는 메소드 노드들 중 해당 호출 관계의 대상 노드 쌍을 판별하고, 해당 노드 쌍을 연결하는 에지로 시각화함으로써 애플리케이션의 메소드 호출 시퀀스를 비주얼 스프링 다이어그램에 표현하는 서브 모듈; 을 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method of claim 1, wherein the method call sequence visualization module (d)

(d1) a sub module for reading information of client-server object pairs having a method call relation from the method call sequence memory model, and visualizing each of the objects as an object node in the visual spring diagram;
(d2) from the method call sequence memory model, identifies calling method information and method information included in objects visualized as object nodes by the sub module (d1), and transmits the identified method information to the object node A sub-module that visualizes the sub-node as a sub-node of
(d3) for each of the inter-method call relationship information stored in the method call sequence memory model, determines a target node pair of a calling method node and a calling method relationship among a calling method node visualized by the sub module (d2) A submodule that represents the application's method invocation sequence in a visual spring diagram by visualizing the node pair as the connecting edge; And a visual spring development environment system
청구항 1에 있어서, 상기 비주얼 스프링 편집 모듈 (e)는,

(e1) 애플리케이션의 소스 코드나 라이브러리 파일이 포함하고 있는 클래스들 중, 개발자가 특정 클래스를 선택하면 선택된 클래스를 비주얼 스프링 다이어그램에 객체 노드로 시각화 해주는 서브 모듈;
(e2) 상기 서브 모듈 (e1)에 의해 객체 노드로 시각화된 특정 객체에 대하여, 해당 객체의 의존성 주입용 생성자나 프로퍼티를 선택하면 선택된 생성자 또는 프로퍼티를 상기 객체 노드의 서브 노드로 시각화 해주는 서브 모듈;
(e3) 상기 비주얼 스프링 다이어그램에서, 특정 객체 노드의 의존성 주입용 서브 노드와 객체의 레퍼런스로 주입될 객체 노드를 연결하는 에지를 삽입할 수 있게 하여 객체간 의존성 주입 관계를 시각화하는 서브 모듈;
(e4) 상기 서브 모듈 (e3)가 의존성 주입 관계를 나타내는 에지를 삽입하면, 에지에 의해 연결된 클라이언트-서버 객체의 소스 코드를 분석하여 상호간 메소드 호출 시퀀스 관계를 파악하고, 이 관계를 시각화 해주는 서브 모듈;
(e5) 상기 비주얼 스프링 다이어그램에서 특정 객체 노드를 선택해서 지울 수 있게 하고, 객체 노드를 지우고 나면 해당 객체 노드의 서브 노드들과, 해당 노드들에 연결된 에지들을 모두 찾아 지우는 서브 모듈;
(e6) 상기 비주얼 스프링 다이어그램에서 특정 에지를 선택하여 지울 수 있게 하고, 만약 지운 에지가 의존성 주입 관계를 표시한 에지라면 해당 에지에 의해 연결된 객체간 메소드 호출 관계를 나타내는 그래픽 요소들을 모두 찾아 지우는 서브 모듈;
(e7) 상기 서브 모듈 (e1) 내지 (e6)을 반복 사용하여 완성된 비주얼 스프링 다이어그램을 스프링 프레임워크 설정 정보로 변환해주는 서브 모듈: 을 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method of claim 1, wherein the visual spring editing module (e)

(e1) a sub module for visualizing a selected class as an object node in a visual spring diagram, when a developer selects a specific class among classes included in an application source code or a library file;
(e2) a sub module for visualizing a creator or a property selected for a dependency injection for a specific object visualized as an object node by the sub module e1 as a sub node of the object node;
(e3) a submodule for visualizing an inter-object dependence injection relation by inserting an edge connecting a dependency injection sub-node of a specific object node and an object node to be injected as a reference of the object in the visual spring diagram;
(e4) When the submodule e3 inserts an edge indicating a dependency injection relationship, the source code of the client-server object connected by the edge is analyzed to grasp mutual method call sequence relationship, and a submodule ;
(e5) a sub module for selecting and deleting a specific object node in the visual spring diagram, searching for both sub nodes of the object node and edges connected to the object node after erasing the object node;
(e6) allowing a specific edge to be selected and erased in the visual spring diagram, and if the erased edge is an edge indicating a dependency injection relationship, a submodule that finds all graphical elements indicating the method call relation between objects connected by the edge ;
(e7) a sub-module for converting the completed visual spring diagram to the spring framework setting information by repeatedly using the sub modules (e1) to (e6)
청구항 1에 있어서,
애플리케이션에 산재되어있는 스프링 설정 정보들을 개발자에게 보여주고 개발자가 관심 있는 정보들을 선택하면, 선택된 정보들만 상기 애플리케이션 구조 시각화 모듈 (c)와 메소스 호출 시퀀스 시각화 모듈 (d)에게 넘겨주어 비주얼 스프링 다이어그램으로 시각화할 수 있게 해주는 모듈; 을 더 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method according to claim 1,
When the developer shows the spring configuration information scattered in the application to the developer and selects the information of interest to the developer, only the selected information is passed to the application structure visualization module (c) and the message call sequence visualization module (d) A module that allows you to visualize; Further comprising a visual spring development environment system
청구항 1에 있어서,
애플리케이션에 산재되어있는 스프링 설정 정보들을, 상기 애플리케이션 구조 시각화 모듈 (c)와 메소스 호출 시퀀스 시각화 모듈 (d)에 의해 생성된 현재의 비주얼 스프링 다이어그램에 시각화되어 있는 정보들과 상기 다이어그램에 표현되지 않은 정보들로 구분하여 보여주고, 개발자가 비주얼 스프링 다이어그램에 추가로 시각화하거나 제거할 정보를 선택하면 비주얼 스프링 다이어그램 내용을 개발자의 의도대로 조정하는 모듈; 을 더 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method according to claim 1,
The spring configuration information scattered in the application is stored in the memory of the application that is visualized in the current visual spring diagram generated by the application structure visualization module (c) and the message call sequence visualization module (d) Information, and a module for the developer to adjust the contents of the visual spring diagram according to the intention of the developer when the developer further selects information to be visualized or removed in the visual spring diagram. Further comprising a visual spring development environment system
청구항 1에 있어서,
상기 메소드 호출 시퀀스 시각화 모듈 (d)에 의해 비주얼 스프링 다이어그램으로 시각화된 메소드 호출 시퀀스 정보 중 특정 메소스를 시각화한 서브 노드를 더블 클릭(double click)하면, 개발 환경의 편집창(editor view)에 해당 메소드의 소스 코드를 오픈(open)하여 보여줌으로써 개발자가 메소드 호출 시퀀스를 따라 애플리케이션 분석을 더욱 용이하게 할 수 있게 해주는 모듈; 을 더 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method according to claim 1,
When a sub node that visualizes a specific message among the method call sequence information visualized in the visual spring diagram by the method call sequence visualization module (d) is double-clicked, the corresponding element is displayed in an editor view of the development environment A module that allows a developer to more easily analyze an application following a method call sequence by showing the source code of the method open; Further comprising a visual spring development environment system
청구항 1에 있어서,
상기 애플리케이션 구조 시각화 모듈 (c)와 메소스 호출 시퀀스 시각화 모듈 (d)에 의해 생성된 비주얼 스프링 다이어그램에 시각화된 의존성 주입 정보와 메소드 호출 관계 정보들 중 특정 노드나 에지를 선택하면, 해당 요소와 관련된 정보들을 개발 환경의 속성창(properties view)에 표시함으로써 개발자가 애플리케이션 더욱 용이하게 분석할 수 있게 해주는 모듈; 을 더 포함하는 것을 특징으로 하는 비주얼 스프링 개발 환경 시스템
The method according to claim 1,
When a specific node or edge is selected from visualized dependency injection information and method call relationship information in the visual spring diagram generated by the application structure visualization module (c) and the message call sequence visualization module (d) A module that allows the developer to more easily analyze the application by displaying information in the properties view of the development environment; Further comprising a visual spring development environment system
KR1020140045395A 2014-04-16 2014-04-16 The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence KR101628314B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140045395A KR101628314B1 (en) 2014-04-16 2014-04-16 The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140045395A KR101628314B1 (en) 2014-04-16 2014-04-16 The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence

Publications (2)

Publication Number Publication Date
KR20140071292A KR20140071292A (en) 2014-06-11
KR101628314B1 true KR101628314B1 (en) 2016-06-08

Family

ID=51125782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140045395A KR101628314B1 (en) 2014-04-16 2014-04-16 The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence

Country Status (1)

Country Link
KR (1) KR101628314B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030974A (en) 2017-09-15 2019-03-25 주식회사 티맥스 소프트 Easy-to-use type of compile-time dependency injection method and device in the java platform
KR20190064551A (en) 2019-05-31 2019-06-10 주식회사 티맥스 소프트 Easy-to-use type of compile-time dependency injection method and device in the java platform
US10509796B2 (en) 2017-01-25 2019-12-17 Electronics And Telecommunications Research Institute Apparatus for visualizing data and method for using the same

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280319B2 (en) 2013-10-18 2016-03-08 Microsoft Technology Licensing, Llc Integrated visualization for modeled customizations
US9772822B2 (en) 2015-03-16 2017-09-26 Microsoft Technology Licensing, Llc Visualization framework for customizable types in a development environment
KR101674895B1 (en) * 2015-11-30 2016-11-11 인하대학교 산학협력단 Java Security Analysis Device Based On Java Method Call Graph
KR101866822B1 (en) * 2015-12-16 2018-06-12 유환수 Method for generating operational aspect of game server
KR102191453B1 (en) * 2018-10-10 2020-12-15 (주)에이케이컴즈랩 Method and apparatus for providing plug-in to application developed on spring framework

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066661A1 (en) 2003-09-19 2011-03-17 Lattix, Inc. Apparatus and Methods for Displaying and Determining Dependency Relationships among Subsystems in a Computer Software System

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066661A1 (en) 2003-09-19 2011-03-17 Lattix, Inc. Apparatus and Methods for Displaying and Determining Dependency Relationships among Subsystems in a Computer Software System

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509796B2 (en) 2017-01-25 2019-12-17 Electronics And Telecommunications Research Institute Apparatus for visualizing data and method for using the same
KR20190030974A (en) 2017-09-15 2019-03-25 주식회사 티맥스 소프트 Easy-to-use type of compile-time dependency injection method and device in the java platform
KR20190064551A (en) 2019-05-31 2019-06-10 주식회사 티맥스 소프트 Easy-to-use type of compile-time dependency injection method and device in the java platform

Also Published As

Publication number Publication date
KR20140071292A (en) 2014-06-11

Similar Documents

Publication Publication Date Title
KR101628314B1 (en) The Visual Spring Development Environment System for Visualizing Application Architecture and Method Call Sequence
US8028276B1 (en) Method and system for generating a test file
EP3745256B1 (en) External code integrations within a computing environment
US8630824B1 (en) Comprehending waveforms of a circuit design
US20170177311A1 (en) Service extraction and application composition
US20180189035A1 (en) Application development tool using graphic objects to bind object sets of different distinct divisions of a design pattern
CN104268072A (en) Graphical script editor and method for fast developing communication equipment testing script
Rivero et al. Towards agile model-driven web engineering
García Frey et al. Xplain: an editor for building self-explanatory user interfaces by model-driven engineering
Beck et al. Method Execution Reports: Generating text and visualization to describe program behavior
US8701086B2 (en) Simplifying analysis of software code used in software systems
Chis Moldable tools
Ed-Douibi et al. WAPIml: towards a modeling infrastructure for Web APIs
Mészáros et al. Delivering comprehension features into source code editors through LSP
Bruneliere Generic model-based approaches for software reverse engineering and comprehension
Rivero et al. Improving user involvement through a model-driven requirements approach
Prinz et al. A model-based standard for SDL
Alsarraj et al. Designing and implementing a tool to transform source code to UML diagrams
Kosower et al. Flowgen: Flowchart-based documentation framework for c++
Dumas et al. A graphical editor for the SMUIML multimodal user interaction description language
Juhár et al. Exploring code projections as a tool for concern management
Liu et al. Metamodel recovery from multi-tiered domains using extended MARS
Jakšić et al. Evaluating the usability of a visual feature modeling notation
Pepin et al. Virtual Extension of Meta-models with Facet Tools.
Couto et al. A patterns based reverse engineering approach for java source code

Legal Events

Date Code Title Description
A201 Request for examination
G15R Request for early opening
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190902

Year of fee payment: 4