본문 바로가기

Development Note

AOP (Aspect Oriented Programming)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
소프트웨어 개발 방법론들을 살펴보면 여러가지 방법론들이 있는것을 살펴볼 수가 있는데, 먼저 자바를 시작 했기때문에 가장 먼저 듣게 된 방법론은 OOP(Object Oriented Programming) 였다. 이후에 OOP라는 개념 이외에 이전에 나왔던 여러 방법론들에 대한 것을 접했다.

최근에 알게된 AOP(Aspect Oriented Programming)는 너무 생소했고, 특히나 Aspect 라는 단어에 대해서 아는바가 없었기 때문에 먼저 사전적인 의미부터 알아보았다.
‡aspect [ǽspekt] n.

① C,U 양상, 모습, 외관, (사람의) 얼굴 생김새(appearance).
② 국면, 정세(phase). [SYN.] ⇨ PHASE.
③ 견지, 견해.
④ (집의) 방향, 전망.
⑤ 〖천문학〗 성위(星位); 〖점성〗 별의 상(相), 성위, 시좌(視座); 〖항공〗 애스펙트(진로면에 대한 날개의 투영면).
⑥ U 〖문법〗 (동사의) 상(相), 애스펙트(러시아어 등의 동사의 뜻의 계속·완료·기동(起動)·종지·반복 등의 구별을 나타내는 문법 형식).

관점이나 시점이라는 뉘앙스가 강하게 풍기는 이 AOP 라는 개발 방법론은 우리말로는 '관점 지향 프로그래밍' 이라고 불리운다고 한다. 관점이 중점이 된다는건데 어떠한 의미를 의미하는지에 대해서 약간의 조사를 해보았다.

소프트웨어 시스템은 여러가지 관점에서 바라볼 수 있다, 또는 여러 가지 단면을 가지고 있고 있다. 예를 들어, 자금 이체를 하는 프로그램을 작성한다고 생각해 보자. 출금계좌와 입금계좌, 그리고 이체금액을 입력받아 SQL 문장 또는 함수 한 번 돌리는 것으로 끝나는가? 절대 아니다. 먼저, 해킹을 방지하기 위해 사용자가 적절한 보안 프로그램을 설치했는지 점검하는 코드도 있어야 하고, 사용자가 인증되었는지 점검하는 코드도 써야 하고, 상대방 은행에서 적절하게 처리되었는지도 점점해야 하고, 혹시 사용자가 이체버튼을 두 번 누른 것은 아닌가 체크해야 하고, 시스템 로그도 남겨야 한다.

- 출처 : http://network.hanbitbook.co.kr/view.php?bi_id=968
소프트웨어에서 필요한 기능들을 여러가지 관점에서 개발을 해야한다는 것이다. 이 프로그램이 어떤 사람이 사용하는 입장에서 어떻게 되겠는가는 감안하여 개발하는 방법론이라고 한다. 즉, 구현하고자 하는 기능 내부에는 그 구현하려는 기능 이외에 것들도 구현 되어야 한다. 이렇게 관점을 놓고 보면 실제로 구현하고 하는 기능 이외의 것들이 생기게 되는 것을 알 수 있다. 이런 산재 되어있는 기능들을 Cross-cutting concern이라고 부르며, 이런 Cross-cutting concern들을 어떻게 잘 다룰 것인가가 AOP의 새로운 패러다임이라고 말할 수 있다.