KR20000031432A - 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법 - Google Patents

절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법 Download PDF

Info

Publication number
KR20000031432A
KR20000031432A KR1019980047477A KR19980047477A KR20000031432A KR 20000031432 A KR20000031432 A KR 20000031432A KR 1019980047477 A KR1019980047477 A KR 1019980047477A KR 19980047477 A KR19980047477 A KR 19980047477A KR 20000031432 A KR20000031432 A KR 20000031432A
Authority
KR
South Korea
Prior art keywords
program
oriented
information
oriented program
language
Prior art date
Application number
KR1019980047477A
Other languages
English (en)
Other versions
KR100280828B1 (ko
Inventor
박성희
신규상
Original Assignee
정선종
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정선종, 한국전자통신연구원 filed Critical 정선종
Priority to KR1019980047477A priority Critical patent/KR100280828B1/ko
Publication of KR20000031432A publication Critical patent/KR20000031432A/ko
Application granted granted Critical
Publication of KR100280828B1 publication Critical patent/KR100280828B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 방법에 관한 것이다.
본 발명은 원시 절차지향 프로그램 코드를 파싱하여 어떤 프로그래밍 언어에도 적용할 수 있도록 언어 독립적인 매개 언어 형식(Internal Program Representation)으로 변환한 후 각 프로그램 부분간의 관계를 추출하여 기존의 IPR에 포함하여 저장하고, 저장된 IPR로부터 객체를 추출하여 프로그램을 시각화하거나 객체지향 프로그램 코드를 생성하기 위해 필요한 정보를 라이브러리 형태로 제공한다.
본 발명에 따른 방법으로 얻어진 정보와 라이브러리를 통해서 얻어지는 정보는 다양한 절차지향 프로그래밍 언어로 쓰여진 프로그램을 분석하는데 활용할 수 있으며, 이렇게 구현된 분석 방법이 재공학시에 사용된다면 소프트웨어 재사용과 유지보수면에서 많은 장점을 제공할 수 있다.

Description

절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 방법
본 발명은 절차지향 프로그램(procedure oriented program)을 객체지향 프로그램(object oriented program)으로 변환하기 위한 분석 방법에 관한 것으로, 특히 절차지향 프로그램으로부터 객체지향 프로그램을 생성하기 위해 스택을 이용하여 각 절차지향 프로그래밍 언어의 생성룰에 따라 파싱될 때 언어 독립적인 매개 언어로 변환하고, 이를 바탕으로 필요한 정보를 생성하는 방법에 관한 것이다.
최근 들어 소프트웨어 재사용성에 대한 중요성이 점점 증가하면서 기존의 절차지향 프로그램으로부터 객체지향 프로그램으로의 변환에 관한 연구가 활발하게 진행되고 있다. 이러한 변환에는 반드시 절차지향 프로그램에 대한 분석이 필수적인데 기존의 연구는 주로 언어에 의존적인 방법, 즉 특정 언어를 분석하여 필요한 정보만을 추출하는 방식을 취하였다.
그러나 이러한 분석 방식은 다른 언어를 사용한 프로그램을 분석할 때 같은 작업을 반복해야 하는 등의 문제점이 있다. 공통적인 절차지향 프로그램에 대한 분석 방법이 있으면 기존의 절차지향 프로그램을 객체지향 프로그램으로 재공학하는데 도움을 줄 뿐만 아니라, 프로그램을 이해 혹은 재사용하기 위한 역공학에도 큰 도움을 줄 것이다.
따라서, 본 발명은 상술한 문제점을 해결하기 위해 스택을 이용하여 각 절차지향 프로그래밍 언어의 생성룰에 따라 파싱될 때 언어 독립적인 매개 언어 형식으로 변환하고, 이를 바탕으로 필요한 정보를 생성하는 방법을 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명은 절차지향 프로그램 소스 코드로부터 토큰을 생성하는 단계와, 상기 생성된 토큰을 스택에 저장하는 단계와, 상기 스택에 저장된 토큰의 내용을 절차지향 프로그래밍 언어의 다양한 생성룰에 따라 언어 독립적인 매개 언어 형식으로 변환하는 단계와, 상기 변환된 언어 독립적인 매개 언어 형식으로부터 객체지향 프로그램으로의 변환, 프로그램의 시각화 또는 객체 추출을 위해 공통적으로 필요한 정보를 추출하는 단계와, 프로그램 시각화 모듈, 객체 추출 모듈 또는 객체지향 코드 생성 모듈의 정보 요구에 따라 이에 해당하는 정보를 라이브러리를 통해 추출하는 단계를 포함하여 이루어진 것을 특징으로 한다.
도 1은 본 발명에 따른 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 수단의 구성도.
도 2는 도 1의 IPR 번역기의 상세 구성도.
도 3은 도 1의 정보 분석기의 상세 구성도.
도 4는 본 발명에 따른 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 방법을 설명하기 위한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 분석 수단 101 : 절차지향 프로그램 소스 코드
102 : IPR 번역기 103 : IPR
104 : 정보 분석기 105 : 프로그램 시각화
106 : 객체 추출 107 : 객체지향 프로그램 코드 생성
첨부된 도면을 참조하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명에 따른 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 수단(100)의 구성도이다.
원시 절차지향 프로그램 소스 코드(101)는 언어 독립적인 매개 언어 형식인 내부 프로그램 표현(Internal Program Representation: 이하 IPR라 함) 번역기(102)를 거쳐 IPR(103)로 변환된다. 이때, 절차지향 프로그램 소스 코드(101)는 토큰 발생기(도시안됨)에서 토큰으로 변환된 후 IPR 번역기(102)내의 생성룰에 따라 그에 맞는 형식의 IPR(103)로 변환된다. 이 IPR(103)은 프로그램을 시각화(105)하거나 객체 추출(106), 객체지향 프로그램 코드를 생성(107)하는데 필요한 정보를 찾아내기 위한 라이브러리의 집합인 정보 분석기(104)을 통해 이들 정보를 제공하게 된다.
도 2는 도 1의 IPR 번역기의 상세 구성도이다.
IPR 번역기(201)는 파싱을 위한 스택(203)과 각 생성룰마다 IPR로의 변환 방법을 알리는 변환기(204), 생성된 IPR(206)을 바탕으로 관계를 추출하는 관계 추출기(205)로 구성되어 있다. IPR 번역기의 결과로서 관계를 포함하는 IPR(207)이 생성된다.
원시 절차지향 프로그램 소스 코드(202)는 먼저 파싱 스택(203)에 쌓이게 된다. 가장 위쪽에 쌓인 토큰(token)들이 변환기(204)에 있는 생성룰과 부합되면 각 생성룰에 달린 IPR 변환 알고리즘을 수행하게 된다. 이렇게 생성된 IPR(206)은 각 문장의 스코프(scope)에 따라 블록이 형성되어 있다. 이로부터 관계 추출기(205)를 통해 각 문장간의 관계를 찾아낸다. 스코프(scope)를 제외한 각 프로그램 문장간의 관계는 함수와 함수의 관계, 즉 어떤 함수가 다른 함수를 호출하였을 때 생기는 두 함수간의 관계, 변수의 정의된 부분과 사용된 부분간의 관계, 자료형 정의 부분과 변수를 정의하기 위해 사용된 부분과의 관계, 함수의 정의 부분과 상술(specification) 부분, 제어 관계 즉 분기문이 있을 때 분기문과 목적 문장의 관계들로부터 찾아낸다.
도 3은 도 1의 정보 분석기의 상세 구성도이다.
정보 분석기(301)는 공통 정보 추출기(303)와 프로그램 시각화를 위한 라이브러리(304), 객체 추출을 위한 라이브러리(305), 객체 지향 프로그램 코드 생성을 위한 라이브러리(306)로 구성되어 있다.
IPR 번역기를 통해 생성된 관계 정보까지 포함되어 있는 IPR(302)은 프로그램 시각화(307)와 객체 추출(308), 객체 지향 프로그램 코드 생성(309)을 위해 공통으로 필요한 정보, 즉 변수, 함수, 자료형에 관한 기본적인 정보를 공통 정보 추출기(303)를 통해 추출한다. 공통 정보가 생성된 후 정보 분석기는 프로그램 시각화와 객체 추출, 객체지향 프로그램 코드 생성을 위해 각각 필요한 정보들을 제공하기 위한 라이브러리들(304, 305, 306)을 제공한다. 이들 정보들은 상기 목적을 이루기 위한 방법이 달라지더라도 또다른 조합을 통해 원하는 정보를 얻을 수 있다.
도 4는 본 발명에 따른 절차지향 프로그램으로부터 객체지향 프로그램으로의 변환을 위한 분석 방법을 설명하기 위한 흐름도로서, 절차지향 소스 프로그램을 분석하여 프로그램을 시각화하고 객체를 추출, 객체지향 코드 생성까지의 기능 흐름이 나타나 있다.
토큰 분석기에서 절차지향 프로그램 소스 코드로부터 토큰을 생성하여(401) 스택에 저장하고(402) 스택의 내용이 절차지향 프로그래밍 언어의 다양한 생성룰에 적합한지를 확인한다(403). 다양한 생성룰중 어느 하나도 적합한 것이 없으면 단계 (401)로 복귀하여 상기 과정을 수행한다. 다양한 생성룰중 적합한 생성룰이 있다면 그 생성룰에 따른 알고리즘을 수행하여 IPR로 변환한다(404). 변환된 IPR로부터 프로그램 문장간의 관계를 찾고(405), 객체지향 프로그램으로 변환하거나 프로그램의 시각화하는데 공통적으로 필요한 정보를 추출한다(406). 각 프로그램 시각화 모듈, 객체 추출 모듈 또는 객체지향 코드 생성 모듈 등에서 필요한 정보를 요구하면 그 요구에 따라 라이브러리를 통해 각 모듈에서 원하는 정보들을 추출한다(407).
이상에서 설명된 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에 있어 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것은 아니다.
본 발명에 의하면 절차지향 프로그램 소스 코드로부터 매개 언어로의 번역이 이루어지고 이로부터 정보를 분석하여 프로그램 시각화, 객체 추출, 객체지향 프로그램 코드 생성에 필요한 정보를 생성할 수 있게 된다. 이는 매개 언어를 통해 이루어지므로 절차지향 프로그래밍 언어에 독립적으로 각 언어마다 다른 생성룰에 따른 변환기만 교체하면 같은 방법으로 원하는 정보를 얻을 수 있게 된다. 또한 분석된 정보들은 라이브러리를 통해 제공하므로 원하는 정보가 달라지더라도 라이브러리를 달리 조합하여 사용하면 되므로 다시 모든 코드를 프로그래밍해야 하는 번거로움을 피할 수 있다. 또한, 얻어진 정보와 라이브러리를 통해서 얻어지는 정보는 다양한 절차지향 프로그래밍 언어로 쓰여진 프로그램을 분석하는데 활용할 수 있으며, 이렇게 구현된 분석 방법이 재공학시에 사용된다면 소프트웨어 재사용과 유지보수면에서 많은 장점을 제공할 수 있다.

Claims (2)

  1. 절차지향 프로그램 소스 코드로부터 토큰을 생성하는 단계와,
    상기 생성된 토큰을 스택에 저장하는 단계와,
    상기 스택에 저장된 토큰의 내용을 절차지향 프로그래밍 언어의 다양한 생성룰에 따라 언어 독립적인 매개 언어 형식으로 변환하는 단계와,
    상기 변환된 언어 독립적인 매개 언어 형식으로부터 객체지향 프로그램으로의 변환, 프로그램의 시각화 또는 객체 추출을 위해 공통적으로 필요한 정보를 추출하는 단계와,
    프로그램 시각화 모듈, 객체 추출 모듈 또는 객체지향 코드 생성 모듈의 정보 요구에 따라 이에 해당하는 정보를 라이브러리를 통해 추출하는 단계를 포함하여 이루어진 것을 특징으로 하는 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석 방법.
  2. 스택에 저장된 토큰으로 변환된 절차지향 프로그램 소스 코드를 절차지향 프로그래밍 언어의 다양한 생성룰에 따라 언어 독립적인 매개 언어 형식으로 변환하기 위한 수단과,
    상기 변환된 언어 독립적인 매개 언어 형식으로부터 객체지향 프로그램으로의 변환, 프로그램의 시각화 또는 객체 추출을 위해 공통적으로 필요한 정보를 추출하기 위한 수단과,
    프로그램 시각화 모듈, 객체 추출 모듈 또는 객체지향 코드 생성 모듈의 정보 요구에 따라 이에 해당하는 정보를 라이브러리를 통해 추출하기 위한 수단을 기능시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019980047477A 1998-11-06 1998-11-06 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법 KR100280828B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980047477A KR100280828B1 (ko) 1998-11-06 1998-11-06 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980047477A KR100280828B1 (ko) 1998-11-06 1998-11-06 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법

Publications (2)

Publication Number Publication Date
KR20000031432A true KR20000031432A (ko) 2000-06-05
KR100280828B1 KR100280828B1 (ko) 2001-02-01

Family

ID=19557350

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980047477A KR100280828B1 (ko) 1998-11-06 1998-11-06 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법

Country Status (1)

Country Link
KR (1) KR100280828B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030018720A (ko) * 2001-08-31 2003-03-06 (주) 소프트4소프트 소프트웨어 유지보수를 위한 소스 코드 브라우저 자동생성 방법 및 시스템
KR100463833B1 (ko) * 2001-12-29 2004-12-29 한국전자통신연구원 컴포넌트 자동 변환 시스템 및 방법
KR100496868B1 (ko) * 2001-12-28 2005-06-22 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법
KR101403298B1 (ko) * 2012-11-14 2014-06-05 (주)큐브젠소프트 프로그램 소스 특성 자동인식 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030018720A (ko) * 2001-08-31 2003-03-06 (주) 소프트4소프트 소프트웨어 유지보수를 위한 소스 코드 브라우저 자동생성 방법 및 시스템
KR100496868B1 (ko) * 2001-12-28 2005-06-22 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법
KR100463833B1 (ko) * 2001-12-29 2004-12-29 한국전자통신연구원 컴포넌트 자동 변환 시스템 및 방법
KR101403298B1 (ko) * 2012-11-14 2014-06-05 (주)큐브젠소프트 프로그램 소스 특성 자동인식 방법

Also Published As

Publication number Publication date
KR100280828B1 (ko) 2001-02-01

Similar Documents

Publication Publication Date Title
US6516461B1 (en) Source code translating method, recording medium containing source code translator program, and source code translator device
Wile Abstract syntax from concrete syntax
CN102830975B (zh) 一种汇编语言到高级语言的代码转换方法和装置
CN103077064B (zh) 一种解析并执行程序语言方法及解释装置
CN103218294A (zh) 一种嵌入式系统的调试方法、调试转换装置和系统
Costagliola et al. Design pattern recovery by visual language parsing
CN112379917A (zh) 浏览器兼容性提升方法、装置、设备及存储介质
KR100280828B1 (ko) 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법
JPH1165832A (ja) ソースコード変換方法及び記録媒体
JP5399601B2 (ja) 実装コード開発システム、及び実装コード開発プログラム
JPH07182179A (ja) オブジェクト指向データベース管理装置
JPS6349856A (ja) 隣接構成デ−タベ−スを生成する方法
JP3390471B2 (ja) 仕様書自動生成装置
JPH10124382A (ja) 記憶領域管理装置
JPH0210434A (ja) プログラム言語トランスレータ
CN118331991B (zh) 一种sql建表语法解析和生成的方法
JP3003459B2 (ja) プログラム作成支援装置
Tirri et al. ALCHEMIST/spl minus/an object-oriented tool to build transformations between heterogeneous data representations
KR100301115B1 (ko) 추상화 수준이 다른 객체 모델 간의 매핑 방법
JP3190377B2 (ja) 関数名変換装置
Moessenboeck A convenient way to incorporate semantic actions in two‐pass compiling schemes
JPH0695890A (ja) コンパイラにおける名前置換方式
JPH10105387A (ja) Sdl/プログラムコード相互変換方式
JP2001005655A (ja) アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法
CN115455910A (zh) 一种waf规则转ips规则的方法和系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101101

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee