2023.02.15 TIL 횡단 관심사? AOP? #나중에 개발방법론에 자세히 써보기

2023. 2. 15. 22:20카테고리 없음

728x90

알게 된 점

AOP?

AOP는 Aspect Oriented Programming, 즉 관점 지향 프로그래밍이란, 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임

여기서 중복되는 로직들을

모듈화 하여 관리하는것

 

횡단 관심사(Cross-cutting Concerns)란?



출처 - 위키백과

다른 관심사에 영향을 미치는 프로그램의 애스펙트이다. 이 관심사들은 디자인과 구현 면에서 시스템의 나머지 부분으로부터 깨끗이 분해되지 못하는 경우가 있을 수 있으며 분산(코드 중복)되거나 얽히는(시스템 간의 상당한 의존성 존재) 일이 일어날 수 있다.

 

여기서 관심사 =  하나의 기능이나 모듈

계좌이체, 입출금, 이자 계산을 핵심 관심으로 보고

로깅, 보안, 트랜잭션 (핵심 관심에 들어가야 할 기능들 = 횡단 관심)이라고 한다

 

그럼 기능 구현을 할때

계좌이체의 로깅 

입출금의 로깅

이자계산의 로깅

 

계좌이체의 보안

입출금의 보안

이자계산의 보안

 

계좌이체의 트랜잭션

입출금의 트랜잭션

이자계산의 트랜잭션

 

을 구현 하기보단

 

로깅이면 로깅, 보안이면 보안, 트랜잭션이면 트랜잭션으로 구분을 해서 구현을 해놓고

각각 로직에 맞게 쓰면 코드가 좀더 깨끗하지 않을까 해서 나온것이 AOP 인것 같다

 

 

횡단 관심사 : 다수의 모듈에 공통적으로 나타나는 부분
핵심 관심사 : 모듈별로 다르게 나타나는 부분


코드 = 핵심 관심사 + 횡단 관심사