2013년 12월 5일 목요일

관점지향 프로그래밍 (Aspect Oriented Programming)


관점지향 프로그래밍(AOP)은 객체지향 프로그래밍(OOP)의 단점을 보안하기 위한 개념이다.
절차지향 프로그래밍을 할 때보다는 거대한 프로젝트를 개발하기 위해 객체지향 프로그래밍을 적용하는게 효과가 있었지만 어느 시점에서 객체지향 프로그래밍을 하더라도 중복되는 프로그램 코드가 발생하고,
생산성이 저하되는 등 문제가 발견되었다.

객체(Object)는 "데이터와 절차의 융합체"라고 언급한 바 있다. 그러나 각 객체의 절차마다 공통되는 코드가 포함되어 있기 마련이다.
예를 들어 부가적인 기능인 로깅(Logging)처리나 트랜잭션(Transaction), DB, 보안(Security)처리등을 할 때 각 클래스마다 동일한 코드를 주입하게 된다.


관점지향 프로그래밍이라고 하는 것은 관심의 분리(Separation of Concerns)를 통해 기존 클래스의 비즈니스 핵심로직은 유지하고 변경은 최소화하면서 공통기능의 중복코드를 특수한 기법으로 관통하여 사용할 수 있도록 하는 것이다.

관점지향 프로그래밍(AOP)을 지원하는 환경으로는 AspectJ, AspectWerkz, JBossAOP, SpringAOP등이 있는데 아직 표준이 없기 때문에 여러가지 제품이 존재한다. 가장 많이 쓰이는 것은 AspectJ, SpringAOP이다.

기본적인 관점지향 프로그래밍의 구성 요소로는 다음과 같은 것이 있다.
Aspect
Advice
Joinpoint
Pointcut
Weaving
관점지향 프로그래밍(AOP)은 절차지향 프로그래밍에서 객제지향 프로그래밍으로 넘어오면서 언어가 바뀐 것처럼 완전히 새로운 언어는 아니다. Java 의 객체지향 프로그래밍을 좀 더 효율적이고 멋지게 만들어주는 도구이다.

댓글 없음:

댓글 쓰기