KR20090056525A - 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법 - Google Patents

객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법 Download PDF

Info

Publication number
KR20090056525A
KR20090056525A KR1020070123717A KR20070123717A KR20090056525A KR 20090056525 A KR20090056525 A KR 20090056525A KR 1020070123717 A KR1020070123717 A KR 1020070123717A KR 20070123717 A KR20070123717 A KR 20070123717A KR 20090056525 A KR20090056525 A KR 20090056525A
Authority
KR
South Korea
Prior art keywords
methods
dependency
dependent
module
graph
Prior art date
Application number
KR1020070123717A
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 KR1020070123717A priority Critical patent/KR20090056525A/ko
Publication of KR20090056525A publication Critical patent/KR20090056525A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템은, 소스코드를 로딩시키는 로딩모듈; 로딩모듈로부터 인가받은 소스코드를 독출하고, 분석DB에 기저장된 분석데이터를 참조하여 객체로부터 호출되는 메소드를 색인하는 분석모듈; 분석모듈로부터 색인된 메소드들을 인가받고, 메소드들간의 종속관계에 따라 제어종속 간선 및 데이터종속 간선을 관계트리 형태로 나타내는 종속그래프를 생성하는 종속그래프 생성모듈; 종속그래프 생성모듈로부터 인가받은 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할하는 객체 분할모듈; 및 객체 분할 모듈로부터 분할된 메소드들을 인가받고, 분할된 메소드들의 관계트리에 따라 종속그래프내의 모든 메소드 호출지점에 대해 종속여부를 검사하여 부분종속그래프를 생성하는 객체 검사모듈; 을 포함한다.
객체, 메소드, 분할, 관계트리, 종속그래프, 제어종속 간선, 데이터종속 간선

Description

객체 분할을 이용한 객체지향프로그램의 동적 분할시스템 및 그 방법{DYNAMIC SLICING SYSTEM AND METHOD OF PROGRAMS USING OBJECT SLICING}
본 발명은 객체지향프로그램의 소스코드에 대한 종속그래프 생성을 통해 하위 클래스에서 재정의된 가상 메소드를 호출하는 상속된 메소드를 명확히 구분하고, 상속된 메소드를 효율적으로 재사용할 수 있도록 객체를 분할ㆍ확장하는 기술에 관한 것이다.
객체지향프로그래밍(OOP: Object Oriented Programming)은 모든 데이터를오브젝트(Object, 객체)로 정의하고, 이 오브젝트에 클래스의 개념을 적용하여 상ㆍ하위 관계를 갖는데, C, Pascal, Cobol, BASIC 등과 같은 절차형 언어(Procedure-Oriented Programming)의 문제점인 크고 복잡한 프로그램을 구축하기 어렵다는 점에 착안하여 개발되었다.
기존의 절차형 언어에서는 코드 전체를 여러 개의 기능부분 즉, 인쇄하는 기능부분과 유저로부터의 입력을 받는 기능부분 등으로 분할하는데, 이와 같이 각 기능부분을 구성하는 코드를 모듈이라고 한다. 절차형 언어에서는 프로그램을 여러 기능으로 나누고 이들 모듈을 편성하여 프로그램을 작성할 경우, 각 모듈이 처리하 는 데이터에 대해서는 전혀 고려하지 않는다. 즉, 데이터 취급이 완전하지 않고 현실 세계의 문제를 프로그램으로서 표현하는 것이 곤란하다.
한편, 객체지향프로그래밍은 객체라는 작은 단위로서 모든 처리를 기술하는 프로그래밍 방법으로서, 모든 처리는 객체에 호출(call) 형태로 표현되며, 요구를 받는 객체는 자기 자신 내에 기술되어 있는 처리를 실행한다. 이와 같은 방법으로 프로그램을 작성할 경우 프로그램이 단순화 되고, 생산성과 신뢰성이 높은 시스템을 구축함과 아울러 객체의 구현을 객체 안에서 한정시킴으로써 한번 작성한 코드를 재사용하기 쉽게 해주고, 상속에 의해 기존의 프로그램을 용이하게 확장할 수 있다.
이러한 객체지향프로그래밍을 효율적으로 사용하기 위해 Horwitz, Larsen과 Harrold, Tonella는 다양한 프로그래밍언어들의 특징을 표현하는 시스템 종속 그래프를 확장하는 방법을 제안하였는데[1], 이와 같은 시스템 종속 그래프는 각각의 프로시져(절차, procedure)에 대해 한 개의 프로시져 종속 그래프를 포함하며, 정점들이 문장 또는 술어부 표현식을 그래프로서 프로시져를 표현한다[2].
하지만, 이와 같은 시스템 종속 그래프는 단순히 프로그램 소스코드를 그래프로 나타낸 것에 불과하기 때문에, 소스코드 내에 포함된 객체와 메소드들 간의 제어종속 관계 및 데이터 종속 관계에 대한 식별이 어려울뿐더러, 객체의 분할ㆍ확장을 재공하지 않아 상속된 메소드를 명확히 구분할 수 없어 프로그램의 재사용에 어려움을 초래하는 문제점이 있었다.
선행 문헌 정보
[1] Frank Tip, "A survey of program slicing techniques", Journal of ProgrammingLanguages, Vol 3(3), Swptember 1995, pp.121-189
[2] S.Horwitz,T.Reps,andD.Binkley, "Interprocedural Slicing Using Dependence Graphs, "ACM Transactions on Programming Languages and S-ystems pages.
본 발명은 상기와 같은 문제점을 해소하고자 안출된 것으로서, 객체지향프로그램의 소스코드에 대한 종속그래프를 생성하여 하위 클래스에서 재정의된 가상 메소드를 호출하는 상속된 메소드를 명확히 구분하고, 객체를 분할ㆍ확장하여 상속된 메소드를 효율적으로 재사용할 수 있게 한다.
이러한 기술적 과제를 달성하기 위한 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템은, 소스코드를 로딩시키는 로딩모듈; 로딩모듈로부터 인가받은 소스코드를 독출하고, 분석DB에 기저장된 분석데이터를 참조하여 객체로부터 호출되는 메소드를 색인하는 분석모듈; 분석모듈로부터 색인된 메소드들을 인가받고, 메소드들간의 종속관계에 따라 제어종속 간선 및 데이터종속 간선을 관계트리로 나타내는 종속그래프를 생성하는 종속그래프 생성모듈; 종속그래프 생성모듈로부터 인가받은 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할하는 객체 분할모듈; 및 객체 분할 모듈로부터 분할된 메소드들을 인가받고, 분할된 메소드들의 관계트리에 따라 종속그래프내의 모든 메소드 호출지점에 대해 종속여부를 검사하여 부분종속그래프를 생성하는 객체 검사모듈; 을 포함한다.
한편, 본 발명에 따른 객체 분할을 이용한 객체지향프로그램의 동적 분할방법은, 소스코드를 로딩하는 제1 과정; 소스코드를 독출하고, 분석DB에 기저장된 분 석데이터를 참조하여 객체로부터 호출되는 메소드들을 색인하는 제2 과정; 색인된 메소드들을 기반으로 종속그래프를 생성하는 제3 과정; 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할하는 제4 과정; 및 분할된 메소드들을 인가받고, 분할된 메소드들의 관계트리에 따라 종속그래프 내의 모든 메소드 호출지점에 대해 종속여부를 검사하여 부분종속그래프를 생성하는 제5 과정; 으로 이루어진다.
상기와 같은 본 발명에 따르면, 객체지향프로그램의 소스코드에 대한 제어종속 간선 및 데이터종속 간선을 나타내는 종속그래프를 생성함으로써, 상속된 메소드를 명확히 구분할 수 있다.
또한, 객체를 분할ㆍ확장함으로써, 상속된 메소드를 효율적으로 재사용할 수 있다.
본 발명의 구체적인 특징 및 이점들은 첨부도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 발명자가 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 할 것이다. 또한, 본 발명에 관련된 공지 기능 및 그 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는, 그 구체적인 설명을 생략하였음에 유의해야 할 것이다.
도 1를 참조하면, 본 발명의 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템(100)은, 로딩모듈(110)과, 분석모듈(120), 종속그래프 생성모듈(130)과, 객체 분할모듈(140)과, 객체 검사모듈(150) 및 출력모듈(160)을 포함한다.
구체적으로 로딩모듈(110)은 도 2에 도시된 바와 같은 프로그램 소스코드(10)(이하, '소스코드')를 미도시된 컴퓨터의 메모리(Memory)로 로딩(Loading)한다. 이하에서는 그 언급을 생략하겠으나, 본 발명에 따른 소스코드의 참조는 객체가 메소드를 통해서만 접근될 수 있다고 상정하고, 메소드 호출로써 객체에 대한 직접적인 참조를 대신하는 것으로 한다.
분석모듈(120)은 도 3에 도시된 바와 같이, 로딩모듈로부터 인가받은 소스코드(10)를 독출하고, 분석DB(121)에 기저장된 분석데이터(20)를 참조하여 객체로부터 호출되는 메소드(Method)들을 색인한다. 여기서 객체란, 소프트웨어 프로그램의 모델을 의미하며, 메소드는, 프로그램 상에서 객체의 호출에 따라 작동하는 기능을 정의한 함수로 이해할 수 있다.
종속그래프 생성모듈(130)은 분석모듈로부터 색인된 메소드들을 인가받고, 메소드들간의 종속관계에 따라 첨부도면 도 4에 도시된 바와 같이, 제어종속 간선 및 데이터종속 간선을 관계트리의 형태로 나타내는 종속그래프를 생성한다. 제어종속 간선이란, 객체가 호출하는 메소드와 호출된 메소드간의 직접적인 종속을 나타내는 관계선이며, 데이터종속 간선은, 객체와 메소드들간의 데이터 관계를 나타내는 관계선이다.
객체 분할모듈(140)은 도 5에 도시된 바와 같이, 종속그래프 생성모듈로부터 인가받은 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할한다.
객체 검사모듈(150)은 객체 분할모듈로부터 분할된 메소드들을 인가받고, 이 분할된 메소드들의 관계트리에 따라 종속그래프내의 모든 메소드 호출지점에 대해 종속 여부를 검사하여 첨부도면 도 6에 도시된 바와 같은 부분종속그래프를 생성한다. 여기서 종속 여부 검사란, 종속그래프의 관계트리에 따라 각 메소드들을 실행하는 것으로 이해할 수 있다.
그리고, 출력모듈(160)은 로딩된 소스코드와, 소스코드로부터 독출되어 색인된 메소드와, 종속그래프와, 제어종속ㆍ데이터종속 간선에 따라 분할된 메소드, 메소드 종속여부 검사, 및 부분종속그래프를 포함하는 일련의 처리들을 출력하는 기능을 수행한다.
이하, 본 발명의 객체 분할을 이용한 객체지향프로그램의 동적 분할방법에 대해 살펴본다. 도 4를 참조하면, 먼저 로딩모듈(110)은 입력받은 소스코드(10)를 로딩한다(S110).
이어서, 분석모듈(120)은 로딩모듈로부터 인가받은 소스코드를 독출하고, 분석DB(121)에 기저장된 분석데이터(20)를 참조하여 객체로부터 호출되는 메소드들을 색인한다(S120).
종속그래프 생성모듈(130)은 분석모듈로부터 인가받은 색인된 메소드들을 기반으로 종속그래프를 생성한다(S130).
객체 분할모듈(140)은 종속그래프 생성모듈로부터 인가받은 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할한다(S140).
뒤미처, 객체 검사모듈(150)은 객체 분할모듈로부터 분할된 메소드들을 인가받고, 이 분할된 메소드들의 관계트리에 따라 종속그래프내의 모든 메소드 호출지점에 대해 종속 여부를 검사(S150)하여 부분종속그래프를 생성한다(S160).
그리고, 출력모듈(160)은 상기 로딩된 소스코드와, 소스코드로부터 독출되어 색인된 메소드와, 종속그래프와 제어종속ㆍ데이터종속 간선에 따라 분할된 메소드, 메소드 종속여부 검사, 및 부분종속그래프를 출력한다(S170).
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서, 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.
도 1은 본 발명에 따른 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템을 도시한 구성도,
도 2는 본 발명에 따라 로딩된 소스코드를 도시한 도면,
도 3은 본 발명에 따른 소스코드의 메소드들이 색인된 것을 도시한 도면,
도 4는 본 발명에 따라 생성된 종속그래프를 도시한 도면,
도 5는 본 발명의 종속그래프에 따라 분할된 메소드들을 도시한 도면,
도 6은 본 발명에 따라 생성된 부분종속그래프를 도시한 도면,
도 7은 본 발명에 따른 객체 분할을 이용한 객체지향프로그램의 동적 분할방법을 나타내는 흐름도.
** 도면의 주요 부분에 대한 부호의 설명 **
100: 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템
110: 로딩모듈 120: 분석모듈
121: 분석DB 130: 종속그래프 생성모듈
140: 객체 분할모듈 150: 객체 검사모듈
160: 출력모듈 10: 프로그램 소스코드
20: 분석데이터

Claims (5)

  1. 객체와 메소드로 구성된 객체지향프로그램의 소스코드를 분할하는 시스템으로서,
    상기 소스코드를 로딩시키는 로딩모듈;
    상기 로딩모듈로부터 인가받은 소스코드를 독출하고, 분석DB에 기저장된 분석데이터를 참조하여 상기 객체로부터 호출되는 상기 메소드를 색인하는 분석모듈;
    상기 분석모듈로부터 색인된 메소드들을 인가받고, 메소드들간의 종속관계에 따라 제어종속 간선 및 데이터종속 간선을 관계트리로 나타내는 종속그래프를 생성하는 종속그래프 생성모듈;
    상기 종속그래프 생성모듈로부터 인가받은 종속그래프의 메소드들을 색인하여 상기 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할하는 객체 분할모듈; 및
    상기 객체 분할 모듈로부터 분할된 메소드들을 인가받고, 분할된 메소드들의 관계트리에 따라 종속그래프내의 모든 메소드 호출지점에 대해 종속여부를 검사하여 부분종속그래프를 생성하는 객체 검사모듈; 을 포함하는 것을 특징으로 하는 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템.
  2. 청구항 1에 있어서,
    상기 소스코드와, 상기 소스코드로부터 독출되어 색인된 메소드와, 상기 종 속그래프와, 상기 제어종속ㆍ데이터종속 간선에 따라 분할된 메소드, 및 상기 부분종속그래프를 출력하는 출력모듈; 을 더 포함하는 것을 특징으로 하는 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템.
  3. 청구항 1에 있어서,
    상기 제어종속 간선은, 상기 객체가 호출하는 메소드와 호출된 메소드간의 직접적인 종속을 나타내는 관계선이며,
    상기 데이터종속 간선은, 상기 객체와 상기 메소드들간의 데이터 관계를 나타내는 관계선인 것을 특징으로 하는 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템.
  4. 객체와 메소드로 구성된 객체지향프로그램의 소스코드를 분할하는 방법으로서,
    소스코드를 로딩하는 제1 과정;
    상기 소스코드를 독출하고, 분석DB에 기저장된 분석데이터를 참조하여 상기 객체로부터 호출되는 상기 메소드들을 색인하는 제2 과정;
    상기 색인된 메소드들을 기반으로 종속그래프를 생성하는 제3 과정;
    상기 종속그래프의 메소드들을 색인하여 제어종속 간선 및 데이터종속 간선에 따라 메소드들을 분할하는 제4 과정; 및
    상기 분할된 메소드들을 인가받고, 분할된 메소드들의 관계트리에 따라 종속 그래프내의 모든 메소드 호출지점에 대해 종속여부를 검사하여 부분종속그래프를 생성하는 제5 과정; 으로 이루어지는 것을 특징으로 하는 객체 분할을 이용한 객체지향프로그램의 동적 분할방법.
  5. 청구항 4에 있어서,
    상기 소스코드와, 상기 소스코드로부터 독출되어 색인된 메소드와, 상기 종속그래프와, 상기 제어종속ㆍ데이터종속 간선에 따라 분할된 메소드, 및 상기 부분종속그래프를 출력하는 제6 과정; 을 더 포함하는 것을 특징으로 하는 객체 분할을 이용한 객체지향프로그램의 동적 분할방법.
KR1020070123717A 2007-11-30 2007-11-30 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법 KR20090056525A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070123717A KR20090056525A (ko) 2007-11-30 2007-11-30 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070123717A KR20090056525A (ko) 2007-11-30 2007-11-30 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법

Publications (1)

Publication Number Publication Date
KR20090056525A true KR20090056525A (ko) 2009-06-03

Family

ID=40987918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070123717A KR20090056525A (ko) 2007-11-30 2007-11-30 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법

Country Status (1)

Country Link
KR (1) KR20090056525A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013108161A1 (en) * 2012-01-16 2013-07-25 International Business Machines Corporation Manipulating source code patches
KR20150106458A (ko) * 2013-02-06 2015-09-21 구글 인코포레이티드 소스 위치가 결여된 코드 세그먼트들을 가지는 소스 코드를 모델링하기 위한 방법
KR20180052799A (ko) * 2016-11-10 2018-05-21 한국과학기술원 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013108161A1 (en) * 2012-01-16 2013-07-25 International Business Machines Corporation Manipulating source code patches
GB2513058A (en) * 2012-01-16 2014-10-15 Ibm Manipulating Source Code Patches
KR20150106458A (ko) * 2013-02-06 2015-09-21 구글 인코포레이티드 소스 위치가 결여된 코드 세그먼트들을 가지는 소스 코드를 모델링하기 위한 방법
KR20180052799A (ko) * 2016-11-10 2018-05-21 한국과학기술원 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템

Similar Documents

Publication Publication Date Title
US11036614B1 (en) Data control-oriented smart contract static analysis method and system
US9891900B2 (en) Generation of specialized methods based on generic methods and type parameterizations
US9772890B2 (en) Sophisticated run-time system for graph processing
EP3745256A1 (en) External code integrations within a computing environment
US10394694B2 (en) Unexplored branch search in hybrid fuzz testing of software binaries
US9304835B1 (en) Optimized system for analytics (graphs and sparse matrices) operations
Spies et al. Transfinite Iris: resolving an existential dilemma of step-indexed separation logic
US10133871B1 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
Wang et al. Demadroid: Object Reference Graph‐Based Malware Detection in Android
US20140058995A1 (en) Efficient rule execution in decision services
US11036527B2 (en) Class splitting in object-oriented environments
WO2016183211A1 (en) Machine-based normalization of machine instructions
KR20090056525A (ko) 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법
US8769498B2 (en) Warning of register and storage area assignment errors
US9146750B2 (en) Mechanism for replacing an array creation routine within code
CN113721928B (zh) 一种基于二进制分析的动态库裁剪方法
US9201936B2 (en) Rapid provisioning of information for business analytics
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US9858056B1 (en) Accelerated content analytics based on a hierarchical data-flow-graph representation
CN117421252B (zh) 代码检测方法、装置及计算机可读存储介质
CN111273956B (zh) 一种程序模块加载方法、装置、设备及存储介质
CN112148364B (zh) 一种嵌入式微内核操作系统分区链接方法及系统
Drechsler et al. Automated and quality-driven requirements engineering
Kaur et al. Implementation and analysis of a refactoring tool for detecting code smells

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application