A Scalable and Modular Approach to Understanding of Real-time Software: An Architecture-based Software Understanding(ARSU) and the Software Re/reverse-engineering Environment(SRE)

실시간 소프트웨어의 조절적${\cdot}$단위적 이해 방법 : ARSU(Architecture-based Software Understanding)와 SRE(Software Re/reverse-engineering Environment)

  • 이문근 (전북대학교 컴퓨터과학과)
  • Published : 1997.12.01

Abstract

This paper reports a research to develop a methodology and a tool for understanding of very large and complex real-time software. The methodology and the tool mostly developed by the author are called the Architecture-based Real-time Software Understanding (ARSU) and the Software Re/reverse-engineering Environment (SRE) respectively. Due to size and complexity, it is commonly very hard to understand the software during reengineering process. However the research facilitates scalable re/reverse-engineering of such real-time software based on the architecture of the software in three-dimensional perspectives: structural, functional, and behavioral views. Firstly, the structural view reveals the overall architecture, specification (outline), and the algorithm (detail) views of the software, based on hierarchically organized parent-chi1d relationship. The basic building block of the architecture is a software Unit (SWU), generated by user-defined criteria. The architecture facilitates navigation of the software in top-down or bottom-up way. It captures the specification and algorithm views at different levels of abstraction. It also shows the functional and the behavioral information at these levels. Secondly, the functional view includes graphs of data/control flow, input/output, definition/use, variable/reference, etc. Each feature of the view contains different kind of functionality of the software. Thirdly, the behavioral view includes state diagrams, interleaved event lists, etc. This view shows the dynamic properties or the software at runtime. Beside these views, there are a number of other documents: capabilities, interfaces, comments, code, etc. One of the most powerful characteristics of this approach is the capability of abstracting and exploding these dimensional information in the architecture through navigation. These capabilities establish the foundation for scalable and modular understanding of the software. This approach allows engineers to extract reusable components from the software during reengineering process.

본 논문은 매우 방대하고 복잡한 실시간 소프트웨어를 이해하기 위한 하나의 방법론과 도구의 개발 연구에 대하여 보고한다. 대부분 본 논문의 저자에 의하여 개발된 이 방법론과 도구는 ARSU(Architecture-based Real-time Software Understanding)과 SRE(Software Re/reverse-engineering Environment)이다. 재공학과정중에 실시간 소프트웨어의 이해한다는 것은 방대한 규모와 복잡성 때문에 일반적으로 매우 어려운 일이다. 그러나 이러한 어려움을 극복하기 위하여 본 논문에서는 architecture에 근거하여 구조적 ${\cdot}$ 기능적 ${\cdot}$ 행위적 측면에서 3차원적인 이해를 가능하게 한다. 이 방법을 통하여 실시간 소프트웨어를 점진적이며 체계적으로 재${\cdot}$역공학할 수 있게 한다. 첫째, 구조적인 관점은 부모-자식간의 관계에 기초한 상하 층충적으로 이루어진 소프트웨어의 전체적 구조, 그리고 명세와 알고리즘 뷰들을 통하여 관측할 수 있다. 여기에서 구조를 구성하는 기본단위는 SWU(Software Unit)이며 이 SWU는 특정 기준에 준하여 추출된다. 이 구조는 상하 또는 그 역방향으로 소프트웨어를 항해(navigation) 할 수 있게 한다. 이는 소프트웨어에 대한 개요와 상세에 관한 정보를 분리하여 상호간에 연관성이 있게 보여준다. 구조의 어떤 단계, 즉 어떤 추상화 단계에서라도 소프트웨어에 대한 기능적 ${\cdot}$ 행위적 대한 정보를 얻을 수 있게 한다. 둘째, 기능적 뷰는 자료와 제어의 흐름, 입력과 출력, 정의와 사용, 변수와 참조 등을 보여준다. 이 뷰의 각 사항들은 소프트웨어에 대한 특정 기능 정보를 제공하여 준다. 셋째, 행위적 뷰는 상태도, IEL(interleaved event list) 등을 들 수 있다. 이 뷰는 소프트웨어에 대한 실행시 동적 성질을 보여준다. 이 뷰들 외에도 각 측면과 뷰들을 위한 기능, 접속, 주석, 코드 등의 다수의 서류들이 제공된다. 본 연구의 가장 큰 장점은 구조를 항해하면서 여러 차원의 정보를 추상화하거나 세부적으로 확장할 수 있는 기능이다. 이러한 기능들은 이러한 실시간 소프트웨어를 이해 할 수 있는 토대를 마련해 준다. 그리고 이러한 장점은 재사용 가능한 요소를 체계적으로 식별하거나 검증할 수 있게 한다.

Keywords