DOI QR코드

DOI QR Code

Automatic Extraction of Abstract Components for supporting Model-driven Development of Components

모델기반 컴포넌트 개발방법론의 지원을 위한 추상컴포넌트 자동 추출기법

  • 윤상권 (경북대학교 전자전기컴퓨터학부) ;
  • 박민규 (경북대학교 IT 대학 컴퓨터학부) ;
  • 최윤자 (경북대학교 IT 대학 컴퓨터학부)
  • Received : 2012.08.17
  • Accepted : 2013.04.15
  • Published : 2013.08.31

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 언어로 작성되었다.

Keywords

References

  1. B. Selic, "The pragmatics of model-driven development," in IEEE SOFTWARE, Vol.20, pp.19-25, 2003. https://doi.org/10.1109/MS.2003.1231146
  2. Y. Choi and H. Jang, "Reverse Engineering Abstract Components for Model-Based Development and Verification of Embedded Software", in Proc. IEEE 12th Int High-Assurance Systems Engineering (HASE) Symp, pp. 122-131, 2010.
  3. Y. Choi and C. Bunse, "Design verification in model-based ${\mu}$-controller development using an abstract component", Software and System Modeling, pp.91-115, 2008.
  4. D. Gay, "nesC 1.3 Language Reference Manual", 2009.
  5. D. Gay, "Software design patterns for TinyOS," Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems, Vol.40, pp.40-49, 2005.
  6. A. MacDonald, D. Russell and B. Atchison, "Model-driven Development within a Legacy System: An industry experience report," in Proceedings of the 2005 Australian Software Engineering Conference (ASWEC'05), pp.14-22, 2005.
  7. M. Snoeck and G. Dedene, "Experiences with Object Oriented Model-Driven Development," in Software Technology and Engineering Practice, 1997. Proceedings, Eighth IEEE International Workshop on [incorporating Computer Aided Software Engineering], pp.143-153, 1997
  8. H.Jang, M.Park, Y.Choi, "A Model Translator for Checking Behavioral Consistency of Abstract Components", The KIPS transactions. Part D. Vol.18D, No.6, pp.443-450, 2011. https://doi.org/10.3745/KIPSTD.2011.18D.6.443
  9. E. Korshunova, "CPP2XMI: Reverse Engineering of UML Class, Sequence, and Activity Diagrams from C++ Source Code," in Proceedings of the 13th Working Conference on Reverse Engineering (WCRE'06), pp.297-298, 2006.
  10. C. Abbaneo, F. Flammini, A. Lazzaro and P. Marmo, "UML Based Reverse Engineering for the Verification of Railway Control Logics," in Proceedings of the International Conference on Dependability of Computer Systems (DEPCOS-RELCOMEX'06), pp.3-10, 2006.
  11. T. Parr, The Definitive ANTLR Reference, Pragmatic Bookshelf, 2007.
  12. N. Kothari, T. Millstein and R. Govindan, "Deriving State Machines from TinyOS Programs using Symbolic Execution," in 2008 International Conference on Information Processing in Sensor Networks, pp.271-282, 2008.
  13. Chouambe, L., Klatt, B. and Krogmann, K., "Reverse Engineering Software-Models of Component-Based Systems," in 12th European Conference on Software Maintenance and Reengineering. CSMR, pp.93-102, 2008.
  14. E. Cho, C. Kim, "A Design Technique of Meta-Model for Reengineering from Legacy to CBD", Journal of Korea Multimedia Society, Vol.8, No.3, pp.398-412, 2005.
  15. M.Park and Y.Choi, "A tool for scalable verification of multi-component distributed systems", International conference on Computer, Networks, Systems, and industrial Applications, pp.541-545, 2012.