Abstract
Model-Driven Development(MDD) helps developers verify requirements and design issues of a software system in the early stage of development process by taking advantage of a software model which is the most highly abstracted form of a software system. In practice, however, many software systems have been developed through a code-centric method that builds a software system bottom-up rather than top-down. So, without support of appropriate tools, it is not easy to introduce MDD to real development process. Although there are many researches about extracting a model from code to help developers introduce MDD to code-centrically developed system, most of them only extracted base-level models. However, using concept of abstract component one can continuously extract higher level model from base-level model. In this paper we propose a practical method for automatic extraction of base level abstract component from source code, which is the first stage of continuous extraction process of abstract component, and validate the method by implementing an extraction tool based on the method. Target code chosen is the source code of TinyOS, an operating system for wireless sensor networks. The tool is applied to the source code of TinyOS, written in nesC language.
모델 중심 개발 방법론은 시스템 개발의 추상화 수준을 높임으로써 구현 세부 사항과는 독립적으로 중요한 요구사항과 설계 문제 등을 개발 단계 초기에 점검할 수 있도록 해준다. 그러나 현재까지 많은 소프트웨어가 코드중심, 상향식 개발방식을 통해 개발되어 왔고, 따라서 적절한 도구의 지원 없이는 이러한 모델 중심 개발 방법을 도입하는 것이 쉽지 않다. 현재 코드 중심으로 개발된 시스템에 모델 중심 개발 방법론을 도입할 수 있도록 코드로부터 모델을 생성하는 역공학적인 접근방법이 연구되고 있으나 대부분 코드에서 일차적인 모델을 추출하는 데 그치고 있다. 하지만 추상컴포넌트 개념을 이용하면 이러한 모델을 일차적으로 추출에 그치지 않고, 추출된 일차 모델을 상위수준의 추상화 단계로 연속적으로 추출할 수 있다. 본 연구에서는 이러한 추상컴포넌트의 연속적인 추출 과정 중 첫 번째 단계인 코드로부터 최하위 기반(base) 추상컴포넌트를 추출하는 과정을 자동화할 수 있는 기법을 제안하고, 실제 도구 구현을 통해 그 기법의 타당성을 평가한다. 실험 대상으로 선택된 코드는 무선센서 네트워크 운영체제인 TinyOS의 소스 코드이며, 해당 소스 코드는 nesC 언어로 작성되었다.