문맥 (context)
BPEL은 서비스 지향 컴퓨팅 환경에서 조건에 따른 작업의 흐름과 웹 서비스의 호출을 기술할 수 있어 다양한 도메인에서 사용되고 있다. 하지만 특정 도메인에서는 BPEL 문법에 없는 새로운 기능이 요구된다. 일반적으로 기존 언어에 없는 새로운 기능을 추가한 경우에 도메인 특화 언어를 새롭게 정의하고 개발해야 하는데, 이를 위해서는 많은 개발 비용이 소요된다. 따라서 새로운 기능이 추가된 도메인 특화언어를 개발하는 대신에 새로운 기능을 추가하여 사용해야 한다. 그러나 이 방법들은 단일 기능을 추가할 수 있을 뿐이고, 필요에 따라 새로운 기능을 설계하고 추가하기 어렵다. 본 논문에서는 필요에 따라 새로운 기능을 추가하기 위해 XML 스키마를 통해 BPEL의 문법적 기능을 확장할 수 있는 XAS4B 문서를 정의하고, 이 문서를 처리하여 기능이 추가된 BPEL 엔진을 생성하는 BPEL 엔진 생성기를 제안한다.XAS4B 문서는 BPEL에 추가되는 문법을 XML 스키마로 작성하고 추가된 문법의 기능을 JAVA 프로그램으로 작성할 수 있도록 한다. 그리고 추가된 기능을 관점지향 프로그래밍의 JAVA 구현체인 AspectJ를 이용하여 새로운 기능의 처리 모듈을 BPEL 엔진에 추가하는 방법을 보인다. 제안하는 시스템은 AspectJ를 이용하여 BPEL 엔진을 수정하지 않고 새로운 기능을 추가할 수 있으며, 요구되는 새로운 기능에대해 동일한 방법을 사용하여 손쉽게 추가할 수 있으므로, 다양한 분야에서 적은 비용으로 새로운 기능을 제공할 수 있다. 워크플로우의 표준인 BPEL은 프로그래밍 언어에 대한 이해도가 낮은 도메인 전문가도 손쉽게 비즈니스 흐름을 작성할 수 있다. 하지만 특정 도메인에서는 BPEL 문법에 없는 새로운 기능이 요구된다. BPEL 엔진이 새로운 기능을 처리하기 위해서는 새로운 BPEL 엔진을 개발하거나 기존의 BPEL 엔진에 기능을 추가해야 하는데, 이를 위해서는 많은 비용이 요구된다. 본 논문에서는 XML 스키마를 확장하여 XAS4B 문서를 제안하고 관점지향 프로그래밍 기법을 이용하여 BPEL 엔진에 새로운 기능을 추가하는 방법을 보인다. 관점지향 프로그래밍 기법은 직조를 이용하여 핵심관심사를 수정하지 않고 횡단관심사를 추가할 수 있다. 본 연구에서는 기존의 BPEL 엔진으로 B2J를 사용하는데, 이 엔진은 BPEL 문서를 JAVA 프로그램으로 변환하고 이를 실행한다. 본 시스템은 B2J 엔진이 생성한 JAVA 프로그램을 핵심관심사로 두고, 새로운 기능을 처리하는 프로그램을 횡단관심사로 하여, 두 프로그램을 직조함으로써 BPEL 흐름에 새로운 기능의 흐름을 추가한다. 제안하는 시스템은 프로그래머, 도메인 전문가, 그리고 최종 사용자의 3개 계층으로 구분된 사용자 계층을 갖는다. 프로그래머는 도메인에서 요구되는 새로운 기능의 문법과 기능을 XAS4B 문서를 이용하여 정의한다. XAS4B 문서는 본 시스템의 컴파일러 생성기를 통해 새로운 기능을 추가하기 위한 컴파일러를 생성한다. 그리고 도메인 전문가는 해당 도메인에서 요구되는 비즈니스 흐름을 새로운 기능과 BPEL을 이용하여 기술한다. 이렇게 작성된 비즈니스 흐름은 최종 사용자에게 서비스로 제공된다. 본 시스템은 새로운 문법과 기능을 잘 설계하고 개발하였을 경우에, 기존 BPEL 엔진에 손쉽게 추가할 수 있는 방법을 제공하고 있다. 즉, 추상적으로 잘 정의된 문법을 설계하고 기능을 개발하는 부분은 프로그래머의 능력에 해당하는 부분이다. 또한 프로그래머가 요구되는 기능을 사용하는 도메인을 잘 이해해야만 좋은 문법과 기능을 설계하고 개발할 수 있다. 프로그램 개발자에 의해 잘 설계되고 개발된 좋은 문법과 기능은 한 번의 개발로 도메인 전문가에게 추상적인 문법을 제공하여, BPEL을 이용한 워크플로우 문서를 작성하기 손쉽고 이해하기 쉽게 한다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
제안하는 시스템이 효과적으로 작동하기 위해 전제되어야 하는 프로그래머의 역량 측면에서의 제약 사항은 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretation제안된 시스템의 성공적인 활용을 위해 프로그래머에게 요구되는 조건이나 한계점을 파악한다.
-
2정보 추출
information_extraction시스템의 설계 및 개발 단계에서 프로그래머의 역할과 책임에 관한 내용을 추출한다.
- 추상적으로 잘 정의된 문법을 설계하고 기능을 개발하는 부분은 프로그래머의 능력에 해당하는 부분이다.
- 또한 프로그래머가 요구되는 기능을 사용하는 도메인을 잘 이해해야만 좋은 문법과 기능을 설계하고 개발할 수 있다.
-
3근거 선택
evidence_selection프로그래머의 능력과 도메인 이해도가 시스템의 품질을 결정한다는 핵심 근거를 선별한다.
- 추상적으로 잘 정의된 문법을 설계하고 기능을 개발하는 부분은 프로그래머의 능력에 해당하는 부분이다.
- 프로그래머가 요구되는 기능을 사용하는 도메인을 잘 이해해야만 좋은 문법과 기능을 설계하고 개발할 수 있다.
-
4논리 통합
logical_integration시스템이 손쉽게 기능을 추가할 수 있는 환경을 제공하더라도, 그 기초가 되는 문법과 기능의 설계 품질은 프로그래머의 역량에 의존한다는 인과관계를 도출한다.
-
5결론 도출
conclusion_formulation프로그래머가 추상적인 문법을 잘 설계할 수 있는 능력과 해당 도메인을 깊이 있게 이해하는 능력을 갖추어야 한다는 결론을 도출한다.
- 추상적으로 잘 정의된 문법을 설계하고 기능을 개발하는 부분은 프로그래머의 능력에 해당하는 부분이다.
- 프로그래머가 요구되는 기능을 사용하는 도메인을 잘 이해해야만 좋은 문법과 기능을 설계하고 개발할 수 있다.
-
6답변 생성
answer_generation질문에 대해 프로그래머의 설계 능력과 도메인 이해도가 필수적이라는 점을 명시하여 답변을 작성한다.
- 추상적으로 잘 정의된 문법을 설계하고 기능을 개발하는 부분은 프로그래머의 능력에 해당하는 부분이다.
- 프로그래머가 요구되는 기능을 사용하는 도메인을 잘 이해해야만 좋은 문법과 기능을 설계하고 개발할 수 있다.
최종 답변 (final_answer)
제안하는 시스템이 잘 작동하기 위해서는 프로그래머가 추상적으로 잘 정의된 문법을 설계하고 기능을 개발할 수 있는 능력을 갖추어야 하며, 동시에 요구되는 기능을 사용하는 도메인을 잘 이해하고 있어야 한다는 제약이 있다.
핵심 해석 (core_interpretation)
제안하는 시스템이 효과적으로 작동하기 위해서는 프로그래머가 추상적으로 잘 정의된 문법을 설계하고 기능을 개발할 수 있는 능력과 도메인에 대한 깊은 이해를 갖추어야 한다.