KR100519698B1 - 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법 - Google Patents

객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법 Download PDF

Info

Publication number
KR100519698B1
KR100519698B1 KR10-1999-0056756A KR19990056756A KR100519698B1 KR 100519698 B1 KR100519698 B1 KR 100519698B1 KR 19990056756 A KR19990056756 A KR 19990056756A KR 100519698 B1 KR100519698 B1 KR 100519698B1
Authority
KR
South Korea
Prior art keywords
class
compared
classes
object model
similarity
Prior art date
Application number
KR10-1999-0056756A
Other languages
English (en)
Other versions
KR20010055538A (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 KR10-1999-0056756A priority Critical patent/KR100519698B1/ko
Publication of KR20010055538A publication Critical patent/KR20010055538A/ko
Application granted granted Critical
Publication of KR100519698B1 publication Critical patent/KR100519698B1/ko

Links

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/51Source to source

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은, 절차적 프로그램을 객체지향 프로그램으로 변환함에 있어 로컬메모리(M3)를 구비한 시스템의 자동 추출기에서 추출된 객체 모델을 보다 객체 지향적으로 만들기 위하여, 비교하려는 임의의 클래스(C1)를 선택하는 제1단계와, 비교 대상이 되는 객체 모델(O2)에서 아직 비교되지 않은 클래스(C2)를 하나 선택하는 제2단계와, 클래스의 단어 정보를 활용하여 상기 비교하려는 클래스(C1)와 상기 비교대상 클래스(C2)간의 유사도 값을 측정하여, 상기 로컬메모리(M3)에 추가하여 저장하는 제3단계와, 상기 비교 대상이 되는 객체 모델(O2)에 아직 비교하지 않은 클래스가 있으면 상기 제2, 3단계를 반복하는 제4단계와, 모든 클래스에 대해서 유사도를 구했을 경우, 상기 로컬메모리(M3)에 저장된 각각의 클래스들간의 유사도값을 오름차순으로 정렬하여, 제일 먼저 나타나는 순서대로 상기 클래스(C1)와 가장 유사한 클래스로 판단하는 제5단계로 이루어진다.

Description

객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법{A method for estimating similarity between object-oriented models by using word informations of identifiers}
본 발명은 C 프로그래밍 언어(이하 C라 한다)로 작성된 프로그램을 C++ 프로그래밍 언어(이하 C++라 한다)로 변환하는 시스템에서 있어서, 시스템의 자동 추출기에서 추출된 객체 모델을 보다 객체 지향적으로 만들기 위하여 자동 추출된 객체 모델에 포함된 클래스와 사용자가 만들어낸 객체 모델에 포함된 클래스 사이의 유사성을 측정하는 방법에 관한 것이다.
구형의 소프트웨어의 구조를 현대화시키는 것은 유지보수 비용에 대한 이득을 얻을 수 있고, 시스템 성능을 증대시키며, 분산환경 또는 더욱 효율적인 환경으로의 이전을 도와준다.
따라서, 기존의 절차적 소프트웨어를 객체지향 구조로 변환시키는 것에 대한 연구가 진행되고 있으며, C 코드를 C++ 코드로 변환하는 것 또한 절차적 소프트웨어를 객체지향 구조로 변환시키는 것 중 하나이다.
도 1은 C 코드를 C++코드로 변환하는 시스템에서의 코드 변환 과정을 나타낸 도면이다.
먼저, C 프로그래밍 언어로 작성된 소스코드(1)는 자동 추출기(2)를 통하여 자동 추출 객체 모델(3)로 변환된다. 이때, 자동 추출된 객체 모델의 예는 도 2와 같다.
한편, 사용자는 C로 작성한 소스코드가 작동하는 과정을 이해하여 이를 바탕으로 영역 객체 모델(4)을 만든다. 이때, 영역 객체 모델의 예는 도 3과 같다.
사용자가 작성한 영역 객체 모델(4)과 자동 추출기(2)를 사용하여 자동 추출한 자동 추출 객체 모델(3)은 편집과정(5)을 통해서 편집된 객체 모델(6)을 만든다. 이 객체 모델을 바탕으로 코드 생성 과정(7)을 통해서 C++ 소스코드(8)로 변환한다.
상술한 상기한 편집과정(5)에서 자동 추출 객체 모델(3)과 영역 객체 모델(4)을 비교하기 위해 두 객체 모델에 속한 클래스간의 유사성을 측정하는 방법이 필요하다.
이와 관련된 선행 기술로는 H. Gall 등이 제안한 절차적 프로그램을 객체 지향 프로그램으로 변환하기 위하여 소스코드로부터 설계문서를 생성하여 사용자가 작성한 영역 지식을 내용을 포함시켜 객체 지향 구조로 변환하는 것이 있다.
[참조문헌]
1. "Object Oriented Rearchitecturing"; Fifth European Software Engineering Conference (ESEC '95); pp. 499-519,; September 1995
2. "Managing Uncertainty in an Object Recovery Process"; 5th International Conference on Information Processing and Management of Uncertainty in Knowledge-Based Systems, IPMU '94; July 1994
그러나, 이와 같은 선행 논문은 사용자의 확인을 통한 수작업으로 두 객체 모델에 속한 클래스 상호 비교하여 비슷한 클래스를 찾아내었다. 이는 비교하려는 객체 모델에 클래스가 10개 이하의 소규모일 경우에는 그다지 문제되지 않으나 많은 수의 클래스를 수작업으로 비교하여 비슷한 클래스를 찾아내고자 할 때 많은 노력과 시간이 소요된다.
따라서, C 코드를 C++ 코드로 변환함에 있어 자동 추출 객체 모델과 사용자가 작성한 영역 객체 모델 사이의 클래스간 유사성을 측정할 수 있는 기술의 개발이 요구되었다.
본 발명은 C 코드를 C++ 코드로 변환함에 있어, 객체 모델의 단어 정보를 활용하여, 자동으로 선택한 클래스와 유사한 클래스를 찾아내는 클래스간 유사성 측정 방법을 제공하는 데 그 목적이 있다.
객체 모델에 나타나는 클래스는 클래스의 행위를 의미하는 오퍼레이션(operation)과 애트리뷰트(attribute)의 멤버들로 이루어져 있고, 멤버들의 이름은 의미 있는 단어들로 이루어져 있다. 그리고 일반적으로 이러한 단어들은 언더스코어(_)문자와 같은 구분자나 중간에 대문자를 넣는 등의 방법으로 이어져 있는 경우가 많다. 본 발명에서는 이와 같은 기존의 관행적인 코딩 형식을 감안하여, 두개의 객체 모델을 비교하기 위해서 클래스에 속해 있는 멤버들의 이름을 의미 있는 단어들로 분리해낸 후, 이러한 단어들을 다른 클래스의 분리된 이름들과 비교한다. 그리고 비교 결과 동일한 이름이 나타나는 빈도를 계산하여 가장 높은 빈도가 나타나는 클래스를 찾아 유사하다고 판정한다.
본 발명에서 언급하는 객체 모델은 UML(Unified Modeling Language)에서 정의하는 "Static Structure Diagram"을 말한다.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다.
도 4는 본 발명에 따른 단어 분리를 통한 유사성 측정을 나타낸 도면이다.
동 도면에 있어서, W1은 클래스 C1을 구성하는 모든 멤버들의 이름을 나타내는 문자열을 단어별로 분리한 것이다. 각각의 W2, W3, W4, W5는 예시된 클래스 C2, C3, C4, C5를 이루는 모든 멤버들의 이름을 나타내는 문자열을 단어별로 분리한 것이다. 이때 클래스 C1과 다른 클래스 C2, C3, C4, C5 들 중에서 가장 유사한 클래스를 구하기 위해서 W1에 나타난 단어와 W2에 나타난 단어 중에서 일치하는 단어의 개수를 구하고, 또한 W1과 W3, W1과 W4 및 W1과 W5에 대해서도 일치하는 단어의 개수를 각각 구한다. W1과 다른 W2, W3, W4, W5와 직선에 표시된 숫자는 각각 일치되는 단어의 수를 나타낸다. 이 결과 값을 토대로 이 중에서 일치되는 단어 수가 높은 순서인 C3, C2, C4, C5 순으로 클래스 C1과 유사한 순서를 구한다.
삭제
도 5는 본 발명에 따른 객체 모델의 단어 분리 과정을 단계별로 나타낸 순서도이다. 여기서, 객체 모델 클래스의 멤버들의 이름을 구성하는 단어를 언더스코어 캐릭터(_), 또는 대문자를 구분자로 이용하여 분리한다.
삭제
먼저, 기 설정된 컴퓨터 메모리 장치에 저장된 문자열에서 글자 하나를 가져온다(S1).가져온 글자가 언더스코어 캐릭터(_)인지 확인한다(S2).단계 S2의 확인 결과, 언더스코어 캐릭터(_)이면 이것을 구분자로 인식하고, 이 글자 이전에 나타난 글자들을 모두 잘라내어 이것을 단어목록에 추가한다(S5).
반면, 단계 S2의 확인결과, 언더스코어 캐릭터(_)가 아니면, 문자열에서 가져온 글자가 대문자인지 확인한다(S3).
단계 S3의 확인 결과, 문자열에서 가져온 글자가 대문자이면 이 대문자를 구분자로 인식하여, 대문자 글자 이전에 나타난 글자들을 모두 잘라내어 이것을 단어목록에 추가한다(S5).
문자열의 끝에 도달할 때까지 상기의 단계들을 반복함으로써 객체 모델 클래스 멤버들의 이름을 구성하는 단어의 분리를 완료한다(S4).
도 6은 본 발명에 따른 두 클래스간의 유사도 계산을 위한 비교 과정을 단계별로 나타낸 순서도이다.
먼저, 비교하려는 클래스 C1의 멤버들의 이름을 기 설정된 로컬메모리 M1에 저장한다(S11).로컬 메모리 M1에 저장된 모든 이름들을 구성하는 문자열에 대해서 상술한 도 5에서의 단어 분리 루틴을 호출하여 클래스 C1의 멤버 이름을 단어별로 분리하여 단어 목록을 작성한다(S12).
다른 비교하려는 클래스 C2에 대해서도 멤버들의 이름들을 로컬메모리 M2에 저장한다(S13).M2에 저장된 모든 이름들을 구성하는 문자열에 대해서 상술한 도 5에서의 단어 분리 루틴을 호출하여 단어별로 분리하여 단어 목록을 작성한다(S14).
로컬메모리 M1과 M2에 있는 단어들 중에서 같은 단어의 개수의 수를 계산하여 이것을 두 클래스 C1, C2와의 유사도의 값으로 정한다(S15).
도 7은 본 발명에 따른 객체 모델에서 임의의 클래스와 가장 유사한 클래스를 찾는 과정을 단계별로 나타낸 순서도이다.
먼저, 비교하려는 임의의 클래스를 C1이라고 정의한다(S21).
비교 대상이 되는 객체 모델 O2에서 아직 비교되지 않은 클래스를 하나 선택하여 C2라고 정의한다(S22).
상술한 도 6에서 설명한 클래스간의 비교 루틴을 호출하여 C1과 C2간의 유사도 값을 구한다(S23).C1과 C2간의 유사도 값을 기 설정된 로컬메모리 M3에 추가하여 저장한다(S24).그 다음 객체 모델 O2에 아직 비교하지 않은 클래스가 있으면 상기 S22 단계부터 반복한다(S25).
반면, 모든 클래스에 대해서 유사도를 구했을 경우 로컬 메모리 M3에 들어있는 각각의 클래스들간의 유사도값을 오름차순으로 정렬한다(S26). 이와 같이 정렬한 순서에서 제일 먼저 나타나는 순서대로 클래스 C1과 가장 유사한 클래스를 객체 모델 O2에서 찾아낼 수 있다.
상술한 본 발명은 C 언어로 작성된 대규모의 소스코드를 C++언어로 변환하는데 있어서, 객체 모델로 표현할 때 나타나는 많은 수의 클래스들간의 비교 시에 수작업으로 가장 유사한 클래스를 검색해야 하는 문제점을 해결한다. 본 발명에 사용된 방법은 특정 컴퓨터 프로그래밍 언어에 국한된 방법이 아니므로, UML 형식으로 표현된 객체 모델을 비교하려고 할 때 모두 응용될 수 있다.
이상에서 본 발명에 대한 기술사상을 첨부도면과 함께 서술하였지만 이는 본 발명의 바람직한 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술분야의 통상의 지식을 가진 자라면 누구나 본 발명의 기술사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.
도 1은 C 코드를 C++코드로 변환하는 시스템에서의 코드 변환 과정을 나타낸 도면,
도 2는 도 1에 도시된 자동 추출기를 통해서 추출된 객체 모델의 예시를 나타낸 도면,
도 3은 도 1에 도시된 사용자가 작업한 영역 객체 모델의 예시를 나타낸 도면,
도 4는 본 발명에 따른 단어 분리를 통한 유사성 측정을 나타낸 도면,
도 5는 본 발명에 따른 객체 모델의 단어 분리 과정을 단계별로 나타낸 순서도,
도 6은 본 발명에 따른 두 클래스간의 유사도 계산을 위한 비교 과정을 단계별로 나타낸 순서도,
도 7은 본 발명에 따른 객체 모델에서 임의의 클래스와 가장 유사한 클래스를 찾는 과정을 단계별로 나타낸 순서도.

Claims (3)

  1. 절차적 프로그램을 객체지향 프로그램으로 변환함에 있어 로컬메모리(M3)를 구비한 시스템의 자동 추출기에서 추출된 객체 모델을 보다 객체 지향적으로 만들기 위하여,
    비교하려는 임의의 클래스(C1)를 선택하는 제1단계와,
    비교 대상이 되는 객체 모델(O2)에서 아직 비교되지 않은 클래스(C2)를 하나 선택하는 제2단계와,
    클래스의 단어 정보를 활용하여 상기 비교하려는 클래스(C1)와 상기 비교대상 클래스(C2)간의 유사도 값을 측정하여, 상기 로컬메모리(M3)에 추가하여 저장하는 제3단계와,
    상기 비교 대상이 되는 객체 모델(O2)에 아직 비교하지 않은 클래스가 있으면 상기 제2, 3단계를 반복하는 제4단계와,
    모든 클래스에 대해서 유사도를 구했을 경우, 상기 로컬메모리(M3)에 저장된 각각의 클래스들간의 유사도값을 오름차순으로 정렬하여, 제일 먼저 나타나는 순서대로 상기 클래스(C1)와 가장 유사한 클래스로 판단하는 제5단계
    를 포함하는 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법.
  2. 제1항에 있어서,
    상기 제3단계의 클래스간 유사도 측정은,
    상기 비교하려는 클래스(C1)의 멤버들의 이름을 기 설정된 로컬메모리(M1)에 저장하고, 저장된 모든 멤버 이름들을 구성하는 문자열에 대해서 단어별로 분리하여 단어 목록을 작성하는 제21단계와,
    상기 비교 대상 클래스(C2)에 대해 멤버들의 이름들을 기 설정된 로컬메모리(M2)에 저장하고, 저장된 모든 멤버 이름들을 구성하는 문자열에 대해서 단어별로 분리하여 단어 목록을 작성하는 제22단계와,
    상기 로컬메모리 M1과 M2에 있는 단어들 중에서 같은 단어의 개수의 수를 계산하여 이를 상기 두 클래스 C1, C2와의 유사도의 값으로 정하는 제23단계
    를 포함하는 것을 특징으로 하는 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법.
  3. 제2항에 있어서,
    상기 제21, 22단계에서의 멤버 이름들을 구성하는 문자열에 대한 단어 분리와 단어 목록 작성은,
    저장된 멤버 이름 문자열에서 글자하나를 가져오는 제31단계와,
    상기 가져온 글자가 언더스코어 캐릭터(_)인지 확인하는 제32단계와,
    상기 제32단계의 확인 결과, 언더스코어 캐릭터(_)이면 이것을 구분자로 인식하고, 언더스코어 캐릭터(_) 이전에 나타난 글자들을 모두 잘라내어 단어목록에 추가하는 제33단계와,
    상기 제32단계의 확인결과, 언더스코어 캐릭터(_)가 아니면, 문자열에서 가져온 글자가 대문자인지 확인하여, 대문자이면 상기 대문자를 구분자로 인식하여, 대문자 글자 이전에 나타난 글자들을 모두 잘라내어 단어목록에 추가하는 제34단계
    를 포함하며,
    상기 문자열의 끝에 도달할 때까지 상기의 제31 내지 제34단계를 반복하는 것을 특징으로 하는 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법.
KR10-1999-0056756A 1999-12-10 1999-12-10 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법 KR100519698B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-1999-0056756A KR100519698B1 (ko) 1999-12-10 1999-12-10 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-1999-0056756A KR100519698B1 (ko) 1999-12-10 1999-12-10 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법

Publications (2)

Publication Number Publication Date
KR20010055538A KR20010055538A (ko) 2001-07-04
KR100519698B1 true KR100519698B1 (ko) 2005-10-12

Family

ID=19625055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-0056756A KR100519698B1 (ko) 1999-12-10 1999-12-10 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법

Country Status (1)

Country Link
KR (1) KR100519698B1 (ko)

Also Published As

Publication number Publication date
KR20010055538A (ko) 2001-07-04

Similar Documents

Publication Publication Date Title
US20210099336A1 (en) Fault root cause analysis method and apparatus
CN112149399B (zh) 基于rpa及ai的表格信息抽取方法、装置、设备及介质
US6839665B1 (en) Automated generation of text analysis systems
JP2624753B2 (ja) 上位仕様書作成方法
JPH05324726A (ja) 文書データ分類装置及び文書分類機能構築装置
JP2009099124A (ja) データ構築方法とシステム
JP2007157058A (ja) 分類モデル学習装置、分類モデル学習方法、及び分類モデルを学習するためのプログラム
CN106547765B (zh) 基于sql的数据库管理方法及装置
CN112597034A (zh) 测试用例的生成方法、装置及计算机可读存储介质
CN114398315A (zh) 一种数据存储方法、系统、存储介质及电子设备
CN109325217B (zh) 一种文件转换方法、系统、装置及计算机可读存储介质
CN113254024A (zh) 代码继承关系优化方法、装置、设备及存储介质
Buchmann et al. Managing Variability in Models and Derived Artefacts in Model-driven Software Product Lines.
KR100519698B1 (ko) 객체 모델에서 단어 정보를 활용한 클래스간의 유사성 측정방법
EP1155364A1 (en) A method of performing a system reverse engineering process
CN113448852A (zh) 一种测试案例的获取方法、装置、电子设备及存储介质
CN116113939A (zh) 一种软件信息组织方法、装置和计算机可读介质
CN105930453A (zh) 重复性分析方法及装置
CN112257719A (zh) 一种文字识别方法、系统及存储介质
JP2003280943A (ja) 試験データ作成支援システム
KR20080008573A (ko) Xml 데이터로부터 연관규칙을 추출하기 위한 방법
JP2007072749A (ja) データベース変更点検索方法および装置
CN1841372A (zh) 帮用户根据非结构化信息源形成结构化图表的方法和设备
JP4134824B2 (ja) 情報処理装置及びプログラム
Park Framework of design interface module in ERP

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: 20090901

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee