초록
서비스 지향 아키텍처 (Service-Oriented Architecture, SOA)는 독립적으로 실행가능하며, 외부 인터페이스를 통해서만 접근 가능한 서비스를 재사용하는 개발 패러다임이다. 서비스는 기존의 객체 또는 컴포넌트와 다른 특성을 보유하고 있고, 다수의 서비스 소비자들이 재사용할 수 있는 공통적인 기능을 제공해야 한다. 그러므로, 이런 서비스를 개발하기 위한 기법 연구가 필요하다. 대부분의 SOA 방법론은 서비스 요구사항에서부터 서비스를 새롭게 개발하는 기법인 Top-down 접근법을 제안하고 있어 서비스 개발에 비교적 많은 비용과 노력이 요구된다. 그리고, 많은 기업들은 객체 지향 시스템을 보유하고 있기 때문에, 기존의 객체지향 시스템에서 SOA 서비스를 효과적으로 도출하는 기법에 대한 수요가 크다. 객체 지향 시스템은 단일/특정 요구사항을 고려하여 개발되는 반면에, SOA 서비스는 다수의 소비자들의 공통성을 고려하여 개발되어야 하기 때문에. 간단한 매핑 과정을 통하여 객체 지향 시스템을 SOA 서비스로 전이하는 것은 어렵다. 따라서 본 논문에서는 객체지향 시스템의 다양한 산출물과 SOA 서비스의 주요 산출물간의 매핑 관계를 정의하고, 재사용성을 고려하여 객체지향 시스템을 구성하는 다양한 모델들이 서비스의 주요 산출물로 전이되는 체계적인 기법을 제안한다. 각 기법은 입/출력 산출물 간의 관계와 순서화된 상세 절차로 구성되어 있으므로, 보다 쉽게 객체지향 시스템을 서비스로 전이할 수 있도록 도와준다.
Service-Oriented Architecture (SOA) is a development paradigm for reusing services as an independent reuse unit. A service delivers a cohesive functionality through its external interface. Since services have unique characteristics which are not typically presented in conventional development approaches, there is a demand for effective approaches to developing services. Most of the current SOA methodologies presenta process where services are designed and developed from the requirements rather than reusing existing assets, which demands high cost and effort. Hence, a desirable approach is to be able to develop services by migrating from their existing legacy systems such as object-oriented system. A difficulty in this migration is that objects in object-oriented systems reveal characteristics which differ considerably from those of services. That is, objects are designed without considering commonalities among several consumers. In this paper, we first define mapping relationships between key artifacts in object-oriented system and those in SOA services. By these relationships and considering commonalities among several applications in a domain, we propose three systematic methods to migrate from object-oriented system to SOA services. Each method consists of a list of input and output artifacts and detailed guidelines which are performed in order. Through these methods, service developers can easily develop services with less effort.