01(767-774) SAV12-04.hwp



Similar documents
À±½Â¿í Ãâ·Â

3. 클라우드 컴퓨팅 상호 운용성 기반의 서비스 평가 방법론 개발.hwp

Journal of Educational Innovation Research 2017, Vol. 27, No. 3, pp DOI: (NCS) Method of Con

02( ) CSTV11-22.hwp

1. 서 론

학습영역의 Taxonomy에 기초한 CD-ROM Title의 효과분석

IT현황리포트 내지 완

05( ) CPLV12-04.hwp

45-51 ¹Ú¼ø¸¸

<31325FB1E8B0E6BCBA2E687770>

DBPIA-NURIMEDIA

<333820B1E8C8AFBFEB2D5A B8A620C0CCBFEBC7D120BDC7BFDC20C0A7C4A1C3DFC1A42E687770>

Service-Oriented Architecture Copyright Tmax Soft 2005

30이지은.hwp

<5B D B3E220C1A634B1C720C1A632C8A320B3EDB9AEC1F628C3D6C1BE292E687770>

PowerPoint 프레젠테이션

Journal of Educational Innovation Research 2018, Vol. 28, No. 3, pp DOI: NCS : * A Study on

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

°í¼®ÁÖ Ãâ·Â

06_ÀÌÀçÈÆ¿Ü0926

Intro to Servlet, EJB, JSP, WS

untitled

<B1DDC0B6C1A4BAB8C8ADC1D6BFE4B5BFC7E228C1A63836C8A3292E687770>

Output file

<30362E20C6EDC1FD2DB0EDBFB5B4EBB4D420BCF6C1A42E687770>

인문사회과학기술융합학회

03.Agile.key

Journal of Educational Innovation Research 2018, Vol. 28, No. 1, pp DOI: * A Analysis of

Software Requirrment Analysis를 위한 정보 검색 기술의 응용

08원재호( )

±èÇö¿í Ãâ·Â

13 Who am I? R&D, Product Development Manager / Smart Worker Visualization SW SW KAIST Software Engineering Computer Engineering 3

<35335FBCDBC7D1C1A42DB8E2B8AEBDBAC5CDC0C720C0FCB1E2C0FB20C6AFBCBA20BAD0BCAE2E687770>


1224_2008forecast.hwp

High Resolution Disparity Map Generation Using TOF Depth Camera In this paper, we propose a high-resolution disparity map generation method using a lo

08김현휘_ok.hwp

1

<31352DB0ADB9AEBCB32E687770>

Journal of Educational Innovation Research 2017, Vol. 27, No. 2, pp DOI: : Researc

#Ȳ¿ë¼®

歯_ _ 2001년도 회원사명단.doc

Journal of Educational Innovation Research 2018, Vol. 28, No. 4, pp DOI: * A S

ePapyrus PDF Document

230 한국교육학연구 제20권 제3호 I. 서 론 청소년의 언어가 거칠어지고 있다. 개ㅅㄲ, ㅆㅂ놈(년), 미친ㅆㄲ, 닥쳐, 엠창, 뒤져 등과 같은 말은 주위에서 쉽게 들을 수 있다. 말과 글이 점차 된소리나 거센소리로 바뀌고, 외 국어 남용과 사이버 문화의 익명성 등

정보기술응용학회 발표

장양수

.. IMF.. IMF % (79,895 ). IMF , , % (, 2012;, 2013) %, %, %

<353020B9DAC3E1BDC42DC5ACB6F3BFECB5E520C4C4C7BBC6C3BFA1BCADC0C720BAB8BEC820B0EDB7C1BBE7C7D7BFA120B0FCC7D120BFACB1B82E687770>

DBPIA-NURIMEDIA

<313120C0AFC0FCC0DA5FBECBB0EDB8AEC1F2C0BB5FC0CCBFEBC7D15FB1E8C0BAC5C25FBCF6C1A42E687770>

09오충원(613~623)

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE Feb.; 29(2), IS

Á¦1-1ºÎ

Model Investor MANDO Portal Site People Customer BIS Supplier C R M PLM ERP MES HRIS S C M KMS Web -Based

<BACFC7D1B3F3BEF7B5BFC7E22D3133B1C733C8A BFEB2E687770>


03-최신데이터

박선영무선충전-내지

정진명 남재원 떠오르고 있다. 배달앱서비스는 소비자가 배달 앱서비스를 이용하여 배달음식점을 찾고 음식 을 주문하며, 대금을 결제까지 할 수 있는 서비 스를 말한다. 배달앱서비스는 간편한 음식 주문 과 바로결제 서비스를 바탕으로 전 연령층에서 빠르게 보급되고 있는 반면,

<B3EDB9AEC1FD5F3235C1FD2E687770>

07_À±ÀåÇõ¿Ü_0317

04-다시_고속철도61~80p

untitled

Microsoft Word - USW 英語課清單 Fall 2009

원고스타일 정의

Journal of Educational Innovation Research 2018, Vol. 28, No. 4, pp DOI: A Study on Organizi

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: * Suggestions of Ways

1. KT 올레스퀘어 미디어파사드 콘텐츠 개발.hwp

170

006- 5¿ùc03ÖÁ¾T300çÃâ

04 최진규.hwp

<C7D1B9CEC1B7BEEEB9AEC7D03631C1FD28C3D6C1BE292E687770>

SchoolNet튜토리얼.PDF

<353420B1C7B9CCB6F52DC1F5B0ADC7F6BDC7C0BB20C0CCBFEBC7D120BEC6B5BFB1B3C0B0C7C1B7CEB1D7B7A52E687770>

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

07.045~051(D04_신상욱).fm

09È«¼®¿µ 5~152s

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE Dec.; 27(12),

Journal of Educational Innovation Research 2017, Vol. 27, No. 4, pp DOI: * A Study on Teache

공연영상

12권2호내지합침

歯1.PDF

지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월

UPMLOPEKAUWE.hwp

*BA_01

초보자를 위한 ASP.NET 2.0


DBPIA-NURIMEDIA

<BED6C7C3BCD2BDBA5F4B5350BBFDBBEABCBA31C0E5312D32302E70312E504446>

03-ÀÌÁ¦Çö

Journal of Educational Innovation Research 2018, Vol. 28, No. 4, pp DOI: 3 * The Effect of H


(5차 편집).hwp

., (, 2000;, 1993;,,, 1994), () 65, 4 51, (,, ). 33, 4 30, 23 3 (, ) () () 25, (),,,, (,,, 2015b). 1 5,

2: [9] 3 3: [9] 4 3 1, 3 (Seifert Surfaces) 3

위해 사용된 기법에 대해 소개하고자 한다. 시각화와 자료구조를 동시에 활용하는 프로그램이 가지는 한계와 이를 극복하기 위한 시도들을 살펴봄으로서 소셜네트워크의 분석을 위한 접근 방안을 고찰해 보고자 한다. 2장에서는 실험에 사용된 인터넷 커뮤니티인 MLBPark 게시판

Web Services 와 EAI

04서종철fig.6(121~131)ok

2Q SWG Teleweb Business Plan & 1Q Recovery Plan April 2, 2003

Transcription:

XML 관점 명세를 이용한 관점지향 프로그래밍의 개선 767 XML 관점 명세를 이용한 관점지향 프로그래밍의 개선 (Improving Aspect Oriented Programming with Aspect Specification using XML) 김 은 선 이 병 정 이 재 호 (Eunsun Kim) (Byungjeong Lee) (Jaeho Lee) 요 약 관점 지향 프로그래밍(AOP)의 개념을 활용하면 프로그램의 구조를 보다 명확하게 모듈화할 수 있다. 그러나 관점 지향 프로그래밍의 도입이 객체 지향 프로그래밍(OOP)의 코드 흩어짐(code scattering) 과 코드 얽힘(code tangling)문제를 반드시 해결하지는 않으며, 추가적인 문제가 발생할 수 있다. 이러한 문제에는 관심사의 분리 문제, 포인트 컷 문제, 위빙 문제 등의 AOP문제가 있다. 따라서 우리는 이를 해 결하기 위해 XML을 활용하여 관점을 명세하고 시스템 중개자를 통해 관점을 조정하는 XML기반 관점지 향 기법을 제안한다. 키워드 : 관점 명세, 동적 위빙, AOP, XML Abstract Utilizing the concept of aspect-oriented programming can modularize the structure of programs clearly. However, the introduction of AOP always does not resolve the code scattering and code tangling of object oriented programming and additional problems may occur. These problems are AOP problems as separation of concerns, pointcut, weaving problem and so on. Therefore we propose an XML based aspect oriented technique that specificates and adjusts the aspects through system intermediary using XML. Key words : Aspect Specification, Dynamic Weaving, AOP, XML 1. 서 론 프로그램은 요구사항 동작이나 관심사들을 분리하여 이 논문은 2011년도 정부(교육과학기술부)의 재원으로 한국연구재단의 지원을 받아 수행된 기초연구사업임(No. 2011-0026461) 이 논문은 2012 한국 소프트웨어공학 학술대회에서 XML 기반 신뢰성 있는 관점 지향 기법 의 제목으로 발표된 논문을 확장한 것임 학생회원 : 서울시립대학교 컴퓨터과학부 eskim1208@gmail.com 종신회원 : 서울시립대학교 컴퓨터과학부 교수 bjlee@uos.ac.kr (Corresponding author임) 종신회원 : 서울시립대학교 전자전기컴퓨터공학부 교수 jaeho@uos.ac.kr 논문접수 : 2012년 4월 10일 심사완료 : 2012년 7월 10일 CopyrightC2012 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작 물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처 를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다. 정보과학회논문지: 소프트웨어 및 응용 제39권 제10호(2012.10) 코드의 가독성을 높이고, 변경에 의한 영향을 최소화하 여야 한다. 관심사의 분리는 모듈화 프로그래밍 방식을 통해 달 성되어 왔다. 이처럼 객체 지향 프로그래밍(OOP)과 서 비스 지향 설계(SOD) 등과 같은 분해(decomposition) 패러다임은 아직까지 현재 소프트웨어 공학에서 지배적 이다. 그러나 객체지향 프로그래밍을 사용함에도 불구하고 인증, 로깅 등과 같은 횡단관심사(crosscutting concerns) 와 관련된 코드들이 핵심 기능 코드 사이 사이에 있어 가독성이 떨어지며, 유지보수하는데 어려움을 주는 등 완전한 해결책을 제공하지 않는다. 이 밖에도 코드가 중 복되는 문제와 재사용의 저하 문제뿐만 아니라, 요구사 항의 변경으로 인한 수정 또한 힘든 문제가 존재한다. 이처럼 객체지향 프로그래밍을 적용하여 클래스를 설계 하여도 분리할 수 없는 부분이 존재한다. 관점지향 프로그래밍(AOP)는 횡단 관심사에 대해 다 루는 프로그래밍 패러다임으로서 객체지향 프로그래밍 에 비해 상대적으로 나중에 나온 개념이며, 앞에서 언급

768 정보과학회논문지 : 소프트웨어 및 응용 제 39 권 제 10 호(2012.10) 된 문제에 대한 해법을 제시할 수 있다. 하지만 이 기술 은 객체지향 프로그래밍을 대체하기 위해 등장한 기술 은 아니며, 객체지향 프로그래밍을 더욱 객체지향적으로 만들어 준다. AOP는 베이스 프로그램의 횡단관심사(로깅, 보안, 인 증, 퍼시스턴스 등)를 추출하여 관점(aspect)를 생성한 다. 관점은 횡단관심사를 구현한 코드인 어드바이스 (advice)와 어드바이스를 핵심 비즈니스 코드의 어느 위 치에 둘지 정의하는 포인트 컷(point cut)으로 구성된다. 관점은 베이스 프로그램 내의 횡단관심사가 필요한 위치 (joinpoint)에 다시 위빙(weaving)된다. AOP를 이용하 면 개발자들은 횡단 관심 모듈을 각각 독립된 모듈로 중 복 없이 작성하고 위빙을 통해 핵심 관심 모듈과 결합시 키기 때문에 서로 독립된 모듈로 작성을 할 수 있다. AOP의 많은 연구가 진행됨에 따라 AOP를 지원하는 도구들도 출시되었다. 대표적인 도구로는 AspectJ, JBossAOP, SpringAOP 등이 있다. 이 중 AspectJ는 가장 오래되고 가장 많이 사용되는 AOP도구이며, 다양한 기능 제공과 확장성이 뛰어난 장 점을 가지고 있다. AspectJ는 관점 전용 코드를 사용하 며 컴파일 및 로딩 타임(compile/load-time)시에 위빙 이 일어난다. 하지만 자바 언어를 확장했기 때문에 새로 운 문법과 언어를 이해할 필요가 있고 프로젝트 빌드 시 특별한 컴파일러를 사용해야 하는 불편함이 있다. 또 한 위빙이 컴파일 시에 일어나기 때문에 포인트 컷에 의해 선택된 모든 클래스들은 관점이 바뀔 때마다 모두 다시 컴파일이 되어야 한다. SpringAOP는 현장에서 가장 빠른 속도로 적용되어 사용되는 AOP솔루션 중 하나이다. 스프링 프레임워크 의 핵심 기능 중의 한 가지로 스프링의 DI 컨테이너에 서 동작하는 엔터프라이즈 서비스에서 주로 사용된다. SpringAOP는 다른 AOP와 달리 기존 클래스의 바이트 코드를 수정하지 않고 대신 JDK의 동적 프록시를 사용 해서 AOP의 기능을 지원한다. 하지만 AOP의 적용을 위해서 스프링 프레임워크 기반으로 프로그램을 설계해 야 한다. 또한 조인포인트의 종류가 메소드 기반으로 제 한되며 같은 클래스 안의 메소드 호출이나 콜백 코드를 사용했을 시 프록시를 적용할 수 없는 단점이 있다. 실제로 관점 위빙은 항상 원하는 결과를 산출하지 않 는다. 관점 위빙에 관련된 많은 의미적 문제들이 식별되 어 왔다[1]. 여기에는 관점 충돌 문제, 관심사의 명확하 지 않은 분리, 포인트 컷 중복 문제 등 다양한 문제들이 존재한다. 따라서 본 논문에서는 AOP를 도입함으로써 발생할 수 있는 다양한 AOP 문제들을 살펴본다. 또한 이러한 AOP 문제를 해결하고 기존 도구보다 쉬운 사용과 신뢰 성있는 관점의 위빙을 지원하는 XML 기반 관점지향 기법을 제안한다. 본 논문의 구성은 다음과 같다. 2장은 AOP 문제를 다루고 분류한 연구들과 이를 해결하기 위해 진행된 연 구들을 살펴본다. 3장은 AOP를 도입함으로써 발생되는 문제에 대해 알아보며, 4장에서는 문제를 해결함과 동시 에 시스템을 견고하게 만들기 위해서 필요한 시스템 설 계 요구사항에 대해 설명한다. 5장에서는 신뢰성있는 관 점의 위빙을 지원하는 XML 기반 관점지향 기법을 제 안하고, 6장에서 결론을 맺는다. 2. 관련 연구 AOP는 횡단관심사들을 시스템의 모듈이나 컴포넌트 로 분리하고, 이것을 위빙 프로세스에 조합한다. 그러나 불행하게도, AOP 어플리케이션 동작의 정확성은 항상 보장되지 않는다. 특히 관점은 함께 위빙될 때 충돌할 가능성을 내재하고 있다. 예를 들어, 텍스트 문서 안에 적절하지 못한 단어를 검색하고 제거하는 관점과 정보 를 암호화하는 관점이 함께 위빙될 경우 의미적 간섭이 발생한다[2]. 관점 간섭(aspect interference)은 실제적인 문제이므로 관점 상호작용(aspect interactions)을 검출 하는 것을 지원하기 위한 기법들과 연구들이 그 동안 진행되어 왔다. 특히 우선순위와 의존관계를 관리하는 것은 관점을 조합하는데 중요한 이슈이다. 이에 따라 관점의 충돌 및 간섭 문제에 관한 연구들 과 이를 해결하기 위한 연구들이 진행되었다. 먼저 충 돌, 간섭에 관련된 연구는 다음과 같다. Chengwan의 연구[3]는 관점의 충돌 문제를 구조적 / 동작 충돌로 구 분하였으며, 관점들 간의 상호작용을 관리하는 문제에 대해 집중하였다. Yuan-Chih의 연구[4]은 사용한 가능한 기존의 AOP 프레임워크가 C++, Java와 같은 정형적인 언어 사용에 모든 초점이 맞춰져 있음을 지적하고, PHP, JSP, ASP 와 같은 웹 프로그래밍 언어의 AOP의 도입을 주장하였 다. 그리고 관심사 간의 중첩 가능성을 판단하기에 충분 히 지능적이고 자동화된 프레임워크의 필요성을 인지하 였다. 이 연구의 JSP-AOP 프레임워크는 2단계 위빙 (Jboss AOP위빙과 JSP위빙)으로 나누어 처리하였다. 그러나 위빙의 트랜잭션 문제를 야기할 수 있다. Kun의 연구[5]는 관점 위빙 문제(Aspect Weaving Problems : AWPs)의 분류에 대해 명확하게 조직화된 체계를 제공한다. AWPs를 검출하고 정의하는 단일화된 모델링 접근법은 다양한 AOP언어에 재사용이 가능하며, AWPs 검출을 자동화하기 위해 각 언어마다 관점 위버 를 제공하였다. 그러나 각 언어에 대한 모든 위빙을 다루기 때문에 자칫 시스템이 무겁고 복잡해질 가능성이 크다.

XML 관점 명세를 이용한 관점지향 프로그래밍의 개선 769 Kellens의 연구[6]은 불안전한 포인트 컷 문제를 개념 적 수준(conceptual level)으로 전환하는 모델 기반 포 인트 컷 정의를 제안한다. 포인트 컷과 베이스 프로그램 사이의 개념적 수준에 적응형 메소드가 추가됨으로써, 포인트 컷과 베이스 프로그램 간의 효과적인 감결합을 달성하였다. 그러나 프로그래머가 개념적 수준상에 기술 할 언어를 사용하고 학습해야 함으로써 프로그래머의 부담이 증가되고, 관점의 정의를 위해 개념적 수준의 요 소(elements)를 사용해야 함에 따른 AOP통합의 문제가 발생한다. Marot의 연구[7]은 다양한 관점의 조합문제를 해결하 기 위한 내용을 다룬다. 컴포지션 관심사의 모듈화 문제 와 의미적 충돌 문제를 인지하고 관점 조합을 표현하기 위해 AspectJ를 확장한 AO언어인 Oarta를 제안한다. 하지만 의존 관계에 따른 순서 문제를 다루고 있지 않다. 3. AOP 문제 전통적인 객체 지향 프로그래밍(OOP)은 소프트웨어 개발에 있어서 코드 흩어짐(code scattering)과 코드 얽 힘(code tangling)문제를 야기한다. AO 패러다임은 관 점에 의해 횡단 관심사를 분리함으로써 문제를 해결하 는 새로운 프로그래밍 패러다임이다. 이러한 문제를 해 결하기 위하여 관점 지향 프로그래밍(AOP)의 개념을 활용하여 프로그램의 구조를 보다 명확하게 모듈화할 수 있다. 그러나 AOP의 도입이 반드시 위의 문제를 해 결하지는 않으며, 추가적인 문제가 발생할 수 있다. 이 절에서는 관심사의 분리 문제, 포인트 컷 문제, 위빙 문 제와 같은 AOP 문제를 살펴본다. 3.1 관심사 분리 문제 관점 지향의 가장 근본적인 핵심은 관심사의 분리 (separation of concerns)이다. 기능적 관심사와 비기능 적 관심사의 명확한 분리가 프로그램의 재사용과 모듈 화를 가능하게 한다. 그러나 기능적인 요소와 비기능적 인 요소의 분리가 제대로 되지 않는다면, 코드 의존성 (code dependencies)이 증가하는 결과를 초래한다[8]. 그리고 하나의 관점은 하나의 관심사와 연관되는 것이 바람직하며 어드바이스는 복잡하지 않아야 한다. 그림 1 은 한 관점 내에 여러 관심사가 연관된 예를 보여준다. preparestage 관점은 리허설을 하기 전에 필요한 무대 준비에 관련된 관심사를 다루며, forrehearsal 포인트컷 과 before 어드바이스를 구현한다. 이 관점은 singsong 메소드가 호출되기 전에 위빙이 된다. 어드바이스에는 직원, 컨트롤러, 프로듀서와 관련된 내용이 처리되고 있 다. 이처럼 하나의 관점 내에 다수의 관심사가 연관될 경우 약간의 수정에도 큰 영향을 받으며 모듈간의 의존 성이 커진다. 또한 동일한 조인포인트에 이와 같은 관점 그림 1 여러 관심사가 연관된 하나의 관점 예 과 같은 시점에서 위빙된다면 프로그래머가 의도했던 결과가 산출되지 못할 가능성이 크다. 따라서 그림 1의 관점은 하나의 관심사만을 표현하도록 분리되어야 한다. 3.2 포인트 컷 문제 포인트 컷을 잘 정의하고 사용하는 것은 프로그래머 의 몫이다. 그러나 관점을 정의할 때 주의를 기울이지 않는다면, 포인트 컷 정의 문제가 발생할 수 있다. 첫째로, 포인트 컷이 의도했던 조인포인트와 매치가 되지 않는 경우이다. 그림 2는 베이스 코드에 있는 메소 드명(getDelete)과 관점의 포인트 컷에 정의된 조인포인 트(callDelete)가 매치되지 않는 것을 보여준다. 이와 같 은 경우는 프로그래머가 존재하지 않는 메소드를 조인 포인트로 명세하는 경우와 다른 메소드명과 혼동하여 명세할 때 발생한다. 둘째로, 포인트 컷이 중복되는 경우이다. 관점을 정의 하고 그의 포인트 컷을 정의할 때 이미 기존의 다른 관 점에서 정의한 포인트컷을 중복해서 정의한다면 이는 요구사항의 중복과도 관계가 있다. 그림 3은 이와 같은 문제를 나타낸다. countperson 관점과 calcperson 관점 그림 2 조인포인트와 메소드가 매치되지 않는 예

770 정보과학회논문지 : 소프트웨어 및 응용 제 39 권 제 10 호(2012.10) 그림 3 포인트 컷이 중복되는 예 은 서로 다른 관점이지만, 내부에 정의되어 있는 포인트 컷은 동일하다. 앞의 예와 더불어 이러한 오류를 방지하 기 위한 장치가 필요하다. 3.3 위빙 문제 각자 적용될 때 올바르게 동작하는 관점이 둘 이상이 함께 적용될 경우 바람직하지 않은 방법으로 상호작용 하는 것을 관점 간섭이라 한다[2]. 관점 간섭은 다음과 같은 이유로 발생한다. 위빙 시, 한 관점의 조인포인트 집합(포인트 컷)이 또 다른 관점에 의해 변경되는 경우 위빙 시, 위빙 순서에 따라 프로그램의 정적 구조를 변경시키는 관점이 결과적으로 다른 프로그램으로 만 들어 버리는 위빙을 발생시키는 경우[9] 런타임 시, 한 관점이 변수나 멤버필드를 변경하여 또 다른 관점의 동작에 영향을 주는 경우 런타임 시, 한 관점이 시스템의 흐름 제어를 변경하여 또 다른 관점의 조인 포인트가 도달되지 못하는 경우 또한 다수의 관점이 동일한 조인포인트에 함께 위빙 될 경우도 마찬가지로 관점 간섭이 발생한다. 만약 어드 바이스의 실행 순서가 프로그래머에 의해 정의되지 않 았다면, 시스템의 위빙 결과는 예상치 못한 동작을 초래 할 수 있다. 그림 4는 서로 아무 관계 없는 관점들이 각 클래스의 savechanges 메소드를 도입하고 있다. PersistenceImpl 관점은 인터페이스 Persistent를 구현하는 모든 클래스 에 savechanges 메소드를 도입한다. 반면에 ObjectImpl 관점은 BusinessObject 클래스에 savechanges 메소드 를 도입한다. 이는 관점들 서로간에 충돌이 일어난다. 왜냐하면, BusinessObject 클래스는 Persistent 인터페 이스를 구현하고, 두 관점은 같은 클래스에 같은 이름의 메소드를 도입하기 때문이다. 그림 5는 동일한 조인포인트에 서로의 존재를 모르는 관점들이 함께 적용되는 상황을 나타낸다. 로깅(logging) 관점과 암호화(encryption) 관점이 아래와 같이 동일한 조인포인트에 동일한 시점으로 위빙을 하게 되는 경우 를 생각해보자. 만약에 로깅 관점이 암호화 관점이 위빙 되기 전에 동작을 한다면, 프로그래머가 의도한 대로 원 래의 메시지가 출력될 것이다. 그러나, 암호화 관점이 로깅 관점보다 먼저 위빙된다면 의도하지 않은 결과가 나온다. 따라서 이와 같은 위빙 시의 관점 간섭 문제를 고려해야 할 필요가 있다. 그림 5 동일한 조인포인트에서의 관점 간섭 4. 시스템 설계 요구 사항 그림 4 상속관계에서의 관점 간섭 우리는 앞의 절에서 객체지향(OO)을 더욱 모듈화하 기 위해 관점지향(AO) 패러다임을 사용했지만, 관심사 의 분리나 포인트 컷, 위빙 문제와 같은 AOP 문제가 발생됨을 알 수 있었다. 따라서 본 논문에서는 앞에서 언급된 문제들을 해결함과 동시에 시스템을 더욱 견고 하게 만들기 위해 관심사의 분리(Separation of Con-

XML 관점 명세를 이용한 관점지향 프로그래밍의 개선 771 cerns)과 맞춤화(customization) 및 신뢰성(reliability) 을 강조하고자 한다. 첫째로, 객체지향의 모듈화와 마찬가지로 관점지향의 관심사의 분리(Separation of Concerns) 문제는 중요한 문제이다. 우리는 이러한 문제를 요구분석 단계부터 관 심사를 분리해야 하며, 이에 대한 산출물로 설계 및 구 현을 해야 한다. 앞의 그림 1에서 볼 수 있듯이, 하나의 관점에 다수의 관심사가 얽혀 있으면 약간의 수정에도 큰 영향을 받으며 모듈간의 의존성이 커진다. 만약에 요 구분석이 제대로 이루어지지 않아 최종 결과물이 강한 결합(coupling)을 갖는 상태라면, 프로그래머는 관점을 리팩토링해야 할 것이다. 관심사의 분리가 잘 되어 있다 면, 위빙 시 각 관점이 서로를 잘 모르는 상태일지라도 충돌에 대한 위험이 줄어들 것이며, 수정 또한 용이할 것이다. 따라서 우리는 프로그래머가 관심사의 분리 문 제에 대해 실수하지 않도록 관심사의 유형과 동작에 대 해 관점 명세를 하게 한다. 둘째로, 맞춤화(customization)는 사용편의성 및 재사 용을 높이기 위한 특성이다. AOP를 위해 수 많은 도구 들이 지원되고 개발되어 왔다. 하지만 도구를 사용하기 위해서 새로운 문법을 습득해야 하는 등의 어려움이 따 른다. 따라서 우리는 XML을 활용하여 관점의 구성을 맞 춤화하며 동적인 관점지향을 위한 실행 시간(run-time) 위빙 방식을 실현한다. XML을 활용하는 이유는 사용자 중심의 관점 명세를 하기 위함이다. 사용자가 관점 명세 스키마에 맞추어 생성하면 이 정보는 중개자로 넘겨져 분석되어 웹 어플리케이션에 위빙된다. 관점의 요소를 추가하거나 삭제하는 등의 수정이 가능하며, 수정 후에 는 중개자의 관점 분석기 역시 수정되어야 한다. 셋째로, 신뢰성(reliability)은 실행중인 시스템의 관점 을 수정하는 경우에 대한 요구사항이다. 컴파일 시간 (compile-time) 위빙 방식은 수정되는 소스 코드의 오 류나 결함을 검사하지만, 실행 시간(run-time) 위빙 방 식은 결함이 있어도 시스템의 실행에는 문제가 없거나 원하는 결과를 산출하지 않는다. 앞의 절에서 설명하였 듯이, 실행 시간에 관점의 포인트 컷이 의도했던 조인포 인트와 매치가 되지 않거나 중복된 포인트 컷을 선언하 는 경우, 상속 관계에서 관점 간섭이 일어나는 것에 대 한 안전 장치가 필요하다. 따라서 우리는 중개자를 통해 실행 시에 관점의 명확한 수정을 지향하고 결함을 수정 한다. 점을 XML파일에 명세하고 이를 실행중인 시스템에 중 개자를 거쳐 위빙한다. 중개자를 통함으로써 사용자가 명세한 관점의 각 요소들을 검증하여 신뢰성있는 위빙 을 가능하게 한다. 5.1 관점 명세 런타임 시 시스템에 관점을 위빙할 때 앞에서 언급된 AOP 문제를 고려해야 한다. 그렇지 않으면 관점 간섭 이나 중복 포인트 컷 문제 등을 야기하여 원하는 결과 를 산출하지 못한다. 따라서 본 논문에서는 관점을 XML 파일로 명세하여 이를 중개자에서 분석한 후에 리스트 형태로 관점을 관 리하여 안정적인 위빙을 하도록 제안한다. XML로 정의 함으로써 관심사의 분리 문제를 고려할 수 있으며, 필요 에 따라 요소를 추가 삭제하여 맞춤화할 수 있다. 그림 6은 관점 명세를 보여준다. [Aspect] 내에는 [PointCut], [Advice], [Related Aspects] 요소 등이 있 으며, 해당 관점의 정보를 포함한다. Aspect의 name 요소는 관점의 이름을 나타내며, concern 요소는 관심사 의 유형을 나타낸다. 유형에는 로깅, 보안, 예외처리 등 과 같은 횡단관심사를 포함한다. PointCut의 joinpoint 요소는 베이스 프로그램의 위빙이 일어날 위치(메소드, 생성자) 등을 표현하며, 다수의 조인포인트 명세가 가능 하다. 그리고 paramlist 는 해당 위치에 필요한 파라메터들 을 포함한다. Advice의 weaving point 는 위빙 시점을 의미하고 before, after, around 가 있다. 이는 PointCut 5. 신뢰성 있는 관점 지향 기법 이 절에서는 앞에 언급되었던 관점의 각 문제들을 해 결하고 관심사의 분리, 맞춤화, 신뢰성 등의 시스템 설 계 요구 사항을 반영하는 관점지향 기법을 제안한다. 관 그림 6 관점 명세의 예

772 정보과학회논문지 : 소프트웨어 및 응용 제 39 권 제 10 호(2012.10) 의 joinpoint 보다 먼저 위빙 되는가, 나중에 위빙되는 가, 대체하는가를 표현한다. Related Aspects는 관점과 연관된 관점에 대한 정보를 포함한다. aspect 요소는 의 존관계인 관점의 이름을 나타내며, 이는 동일한 조인포 인트에 동일한 위빙 포인트를 갖는 다른 관점들을 의미 한다. 다음으로 priority 요소는 이들 관점들 가운데 해 당 관점이 몇 번째로 위빙이 되는가에 우선순위를 나타 낸다. 나중에 이를 기반으로 관점 저장소(Aspect Repository)의 리스트가 구성된다. 그리고 inheritance 요소 는 해당 관점이 위빙될 클래스의 상속 관계 유무를 설 정함으로써, 상속 관계인 클래스들에 위빙될 관점 어드 바이스의 충돌 가능성이 있는 관점 간섭을 피한다. 예를 들어 위빙될 클래스들이 상속관계일 경우, 자식 클래스 의 관점 위빙을 우선시한다. 5.2 중개자와 관점 저장소 본 연구에서는 AOP를 적용하여 웹 어플리케이션을 위한 신뢰성 있는 관점지향 기법을 제안한다. 웹 어플리 케이션의 지속적인 실행 및 신뢰성 있는 위빙을 보장하 기 위해 웹 어플리케이션과 관점 명세 파일 사이에 중 개자를 구성하였다. 사용자가 실행중인 시스템에 관점을 명세한 XML파 일을 작성하면 이 파일은 웹 어플리케이션으로 바로 넘 어가지 않고 중개자를 거치게 된다. 중개자는 관점 분석기(Aspect analyzer)와 관점 검사 기(Aspect inspector)를 포함하고 있다. 관점 분석기는 사용자에 의해 작성된 관점 명세 파일을 각 요소별로 나 누는 역할을 한다. 그리고 이 정보를 관점 검사기로 보 낸다. 관점 검사기는 앞의 3절에서 언급된 관점 문제들 을 다룬다. 특히 포인트 컷의 매칭 문제와 중복 문제, 위 빙 시 관점 간섭 문제 등이 생기지 않도록 내부 프로세 스를 이용하여 방지한다. 만약 처리 중에 요구 조건을 만족하지 않는다면 사용자에게 경고 메시지를 띄워 AOP 문제가 발생하지 않도록 다시 작성하도록 한다. 그 리고 관점 명세 파일이 관점 검사기의 내부 프로세스를 통과하면 관점 저장소에 조인포인트별로 관점 리스트가 구성되며 웹 어플리케이션의 해당 위치에 위빙된다. 그림 7은 중개자의 내부 처리를 표현한 액티비티 다 이어그램이다. 앞에서 설명하였듯이, 관점 분석기와 관 점 검사기로 나뉘어진다. 먼저 관점 분석기에서는 관점 의 명세 데이터를 받아서 각 요소들을 추출하여 관점 검사기에 넘긴다. 관점 검사기는 넘겨 받은 정보를 이용 해서 명세된 조인포인트가 실제 클래스에 존재하는지 등의 매칭 여부를 확인한다. 매칭이 되었다면 포인트 컷 명의 중복 여부를 검사하게 된다. 이 검사는 관점 저장 소에 저장되어 있는 관점 리스트를 토대로 확인된다. 포인트 컷명이 중복되어 있다면, 다시 사용자가 수정 그림 7 중개자 내부 프로세스 하도록 하며, 유일하다면 다음 단계로 넘어간다. 이 단 계에서는 동일한 조인포인트에 어드바이스가 동일한 위 빙 시점으로 명세되었는지 검사한다. 만약 다른 관점과 동일한 위빙 시점을 가지고 있다면, Related Aspects 의 priority 요소를 근거로 하여 각 관점의 위빙 순서를 정하는 작업을 한 후 관점 저장소 에 관점 리스트를 생성 및 수정한다. 그렇지 않은 경우 에는, 위빙 순서를 정하는 작업을 건너뛰고 관점 저장소 에 접근하여 관점 리스트 생성 작업을 한다. 우선 순위 작업 시 암호화 관점과 잘못된 문자를 교정하는 관점의 관계처럼 위빙 순서가 명확한 경우는 자동화로 처리한 다. 리스트로부터 해당 조인포인트의 최종 순위를 가져 오며, 프로그래머가 개입하지 않으면 자동적으로 제일 후순위가 된다. 그렇지 않은 경우는 프로그래머의 개입 으로 우선순위를 직접 설정하게 된다. 관점 저장소는 관점의 위빙을 지원하며, 조인포인트별 로 관점을 관리한다. 관점은 리스트형태로 관리되며, 조 인포인트별로 어드바이스의 위빙순서가 결정되어 있기 때문에 빠른 검색과 적용이 가능하다. 그림 8은 ExceptionReplace 조인포인트에 각 어드바이스들이 위빙시점 별로 관리되고 있다. 각 조인포인트에 여러 유형의 어드

XML 관점 명세를 이용한 관점지향 프로그래밍의 개선 773 그림 8 관점 저장소의 관점 관리 바이스를 관리함으로써 원하는 위빙 결과가 출력될 수 있도록 한다. 예를 들어, 한 조인포인트에 before 어드 바이스를 갖는 관점이 둘 이상 존재할 경우, 앞에서 소 개한 그림 6의 XML스키마의 Related aspects 의 priority 정보를 참고하여 어떤 관점을 먼저 위빙 시킬 것인지에 대해 결정한다. 실행 중인 시스템의 관점을 추 가하거나 삭제할 때에는 중개자의 관점 검사기를 통해 이루어진다. 자바 기반의 웹 어플리케이션은 서비스의 핵심 기능 을 제공하는 등 이미 기능적 관심사가 잘 분리되어 있 는 상태로 관점이 필요한 시점에 동적인 위빙을 한다. 리스너(Listener)와 어댑터(Adaptor)의 구현으로 실행 중에 관점과 위빙이 가능하며, 위빙이 필요한 조인포인 트가 있는 클래스에 리스너를 구현한다. 6. 토 의 AOP는 OOP를 보완하는 프로그래밍 기법으로 코드 흩어짐과 코드 얽힘 문제를 완화한다. 그러나 AOP는 학습 자체가 어려우며 실제 개발에 있어 그만큼 위험성 이 뒤따르고 있다는 점도 사실이다. 특히 실행시간 위빙 방식이 갖는 위빙에 대한 신뢰성 문제, 학습의 어려움, 프로그램이 무거워지는 문제 등이다. 그리하여 2장에서도 소개하였듯이, 많은 연구가 진행 되었지만 AOP 적용의 신뢰성과 시스템이 다소 무거워 지는 문제를 한꺼번에 잡기란 쉽지가 않다. 우리는 본 연구를 통해 AOP를 적용함으로써 발생되 는 문제를 세 가지로 구분하여 이 문제들을 해결하기 위한 방법을 제안하였다. Kun의 연구에서 웹 프로그래밍을 위한 AOP 도입의 부재를 지적하여 JSP-AOP프레임워크를 제안하였지만 위빙의 트랜잭션 문제가 남아 있다. 그리고 Havinga의 연구에서는 관점의 조합 문제를 제시하여 이에 대한 기 법을 제시하였지만 관점의 순서 문제를 다루지 않았다. 이에 대해 본 연구에서는 중개자를 통해 관점의 위빙 순서를 관리하였다. Marot의 연구에서 각 언어마다 관점 위버(aspect weaver)를 제공하였고 Netinant의 연구에서는 개념적 수준으로 전환하는 모델 기반 기법을 제안하였다. 하지 만 시스템이 다소 무거워질 수 밖에 없는 한계를 갖는 다. 본 연구에서는 XML로 관점을 명세하여 각 요소를 읽어 들여 관점을 적용한다. 다소 학습에 어려움을 갖는 AOP를 쉬운 XML을 이용해서 관점 지향 프로그래밍을 가능케 한다. 또한 프로그래머의 필요에 의한 관점 요소 의 추가 및 삭제가 비교적 자유로워 유연성이 높고, 사 용하기 쉽다는 장점을 갖는다. 이는 결과적으로 AOP를 적용하더라도 쉬운 사용과 가벼운 시스템, 그리고 높은 신뢰성으로 어플리케이션을 개발할 수 있음을 의미한다. 7. 결 론 기존의 객체지향의 문제점을 보완하기 위해 관점지향 (AO) 패러다임이 등장하였지만, AOP를 도입함으로써 새로운 문제가 야기되었다. 다시 말하면, 한 관점에 다수 의 관심사가 얽혀있거나 포인트 컷의 매칭 및 중복 문제, 위빙 시 관점 간섭문제 등 다양한 문제가 발생한다. 기존의 AOP 지원 도구인 AspectJ나 SpringAOP는 강력한 도구이며 다양한 기능을 제공하지만, 여러 어려 움들이 산재하였다. 따라서 본 논문에서는 위에서 언급된 AOP 문제들을 해결하고 런타임 위빙이 가능한XML을 사용한 신뢰성 있는 관점지향 기법을 제안하였다. 본 기법에서는 XML 을 사용함으로써 사용자 중심의 동적인 관점 생성이 가 능하다. 관점에 관한 정보를 XML 형태로 저장하여 이 를 중개자에 넘긴다. 중개자는 이 정보를 요소별로 분석 한 후 내부 프로세스를 거쳐 관점 저장소에 리스트 형 태로 저장을 하며 웹 어플리케이션에 위빙한다. 따라서 실행중인 시스템에 동적으로 관점을 위빙시킬 경우, 보다 안정적이고 신뢰성있는 위빙을 실현할 수 있 다. 그러나 기존 AOP 지원 도구에서 제공하는 다양한 기능들을 제공하는 데는 아직 어려운 점이 있다. 참 고 문 헌 [1] T. Kun, K. Cooper and Z. Kang, "A Classification of Aspect Composition Problems," Proc. of International Conference on Secure Software Integration and Reliability Improvement, pp.101-109, 2009. [2] M. Aksit, A. Rensink and T. Staijen, "A Graph- Transformation-Based Simulation Approach for Analysing Aspect Interference on Shared Join Points," Proc. of ACM International Conference on Aspect-Oriented Software Development, pp. 39-50, 2009. [3] He. Chengwan, Li. Zheng and He. Keqing, "Towards Trusted Aspect Composition," Proc. of International Conference on Computer and Information Technology Workshop, pp.643-648, 2008. [4] Y. Yuan-Chih, D. Shing-chern and T. Dwen-Ren,

774 정보과학회논문지 : 소프트웨어 및 응용 제 39 권 제 10 호(2012.10) "An intelligent Aspect-Oriented Framework for Web Application," Proc. of International Conference on Networked Computing (INC), pp.1-5, 2010. [5] T. Kun, K. Cooper and Z. Kang, "A Framework Based Approach for Unified Detection of Aspect Weaving Problems," Proc. of IEEE International Conference on Information Reuse and Integration, pp.132-140, 2010. [6] A. Kellens, K. Mens and J. Brichau, K. Gybels, "Managing the Evolution of Aspect-Oriented Software with Model-based Pointcuts," Lecture Notes in Computer Science, vol.4067, pp.501-525, 2006. [7] A. Marot and R. Wuyts, "Composing Aspects with Aspects," Proc. of international conference on Aspect-Oritented Software Development, pp.157-168, 2010. [8] P. Netinant, "Separation of Concerns for Multithreads Object-Oriented Programming," Proc. of International Conference on Electrical Engineering/Electronics Computer Telecommunications and Information Technology, vol.02, pp.718-721, 2009. [9] W. Havinga, I. Nagy, L. Bergmans and M. Aksit, "A Graph-Based Approach to Modeling and Detecting Composition Conflicts Related to Introductions," Proc. of International Conference on Aspect-Oriented Software Development, Vancouver, pp.85-95, 2007. 이 재 호 1985년 2월 서울대학교 계산통계학과 학 사. 1987년 2월 서울대학교 계산통계학 과 석사. 1997년 미국 University of Michigan컴퓨터공학 박사. 1998년~현재 서울시립대학교 전자전기컴퓨터공학부 교 수. 주요 관심분야는 인공지능, 지능형 서 비스 로봇, 오토노머스 시스템 김 은 선 2008년 2월 경원대학교 전자거래학과 학 사. 2010년 9월~현재 서울시립대학교 컴퓨터과학과 석사과정. 주요 관심분야는 소프트웨어 방법론, SOA, AOP, 소프트 웨어 진화 이 병 정 1990년 2월 서울대학교 계산통계학과 학 사. 1998년 2월 서울대학교 전산과학과 석사. 2002년 2월 서울대학교 전기컴퓨 터공학부 박사. 1990년 1월~1998년 1월 현대전자(주) 소프트웨어 연구소 근무. 2002 년 3월~현재 서울시립대학교 컴퓨터과 학부 부교수. 주요 관심분야는 소프트웨어공학, 소프트웨어 진화, 웹 공학