Akashic Records

AOP(Aspect Oriented Programming) 본문

오래된글/소프트웨어공학

AOP(Aspect Oriented Programming)

Andrew's Akashic Records 2018. 4. 19. 13:33
728x90

PLT 13 AOP(Aspect Oriented Programming)

AOP 개념

어플리케이션 개발을 더욱 신속하고 유연하게 하면서 결함 비율을 줄이기 위해 중복되거나 예외적인 영역을 하나로 모아 처리함으로써 효율성을 높이고 업무별 재코딩을 지양하고자 하는 프로그래밍 기법이며, 프로그램 내부 여러 곳에서 사용되는 특정함수에 대한 통제를 중앙집중화 함으로써 개발절차를 단순화 할 수 있다.


크로스커팅 관계

관계(concern)이란 특별히 흥미가 있는 개념 또는 분야를 말한다. 예를 들어, 주문 시스템의 주요 관계는 주문 처리 및 제조가 될 수 있고, 시스템의 관계는 트랜잭션 처리 및 보안 관리가 될 수 있다. 크로스커팅 관계란 여러 클래스 또는 모듈에 영향을 미치는 관계, 잘 로컬라이즈되거나 모듈화되지 않는 관계를 말한다. 크로스커팅 관계는 다음과 같은 특징이 있다.


코드 엉킴(tangling) - 모듈 또는 코드 섹션이 여러 관계를 동시에 관리하는 경우

코드 분산(scattering) - 관계가 여러 모듈에 분산되어 있어서 쉽게 로컬라이즈 및 모듈화되지 않는 경우


이러한 특징은 소프트웨어에 여러 가지 영향을 미친다. 예를 들면, 소프트웨어 작성이나 이해를 더 어렵게 할 뿐만 아니라 유지 관리 및 재사용도 더 어렵게 만든다.


관계의 분리

AOP는 모듈 방식 및 제대로 로컬라이즈된 방식으로 관계를 구현할 수 있는 관계의 분리(SOC: separation of concerns)라는 개념을 도입하여 이러한 문제를 해결하려고 한다.AOP는 설계 공간에 별도의 차원을 추가하여 이러한 문제를 해결하고 크로스커팅 관계를 새로운 차원으로 끌어 올려 모듈 방식으로 패키지화하도록 정의할 수 있는 구조를 소개한다.


AOP의 정의

“중복되거나 예외적인 영역을 하나로 모아 처리함으로써 효율성을 높이고 업무별 재코딩을 지양하고자 하는 프로그램 기법”


프로그램 패러다임의 변화

  • 프로그래밍 : 문제해결 프로그래밍

  • 구조화 프로그래밍 : 분할 모듈화 프로그래밍

  • 객체지향 프로그래밍 : 인터페이스 프로그래밍

  • AOP : 운영중심 프로그래밍


AOP의 기능

기능

내용

Linking 제어

코딩 완료 후 프로그램 수행 시 마다 소스에 포함된 Lock과 Unlock 기능을 호출해서 사용

Logging 제어

공통 로그 모듈 작성 후 Log 필요 시마다 호출하여 사용

보안 검사

프로그램 또는 데이터에 대한 보안영역을 별도 설정 후 제어


AOP의 특징

특징

내용

중앙집중

여러 분산 함수의 중앙집중 통제

단 순

개발절차 단순화

고유영역

개발자 자신만의 특정 기능 수행 영역

속 도

빠른 개발 가능

비캡슐화

핵심 비즈니스 영역보다는 주변 업무 중심 공통 모듈만 해당

Aspect 이용

별도의 Aspect라는 구조를 이용한 매커니즘 제공


AOP 전망

  • 객체지향 프로그래밍과 컴포넌트 기반개발 방법론의 재활용성 기능에 기여

  • Well-defined Class 및 컴포넌트 활성화로 프로그래밍 생산성 제고에 기여

  • Aspect J 언어의 교육과 자동화 툴을 활용한 접근방법 다각화 모색으로 AOP 활성화


728x90

'오래된글 > 소프트웨어공학' 카테고리의 다른 글

CBD(Component Based Development)  (0) 2018.04.19
CASE(Computer-Aided Software Engineering)  (0) 2018.04.19
Agile Software Development  (0) 2018.04.19
Agile Practieces  (0) 2018.04.19
프로토타이핑(Prototype) 모델  (0) 2018.04.19
Comments