AOP. One of the ProgrammingParadigm

An approach to adding functionality to code, both Orthogonality, declarity.

http://aosd.net/

OOP의 대안이라고 여겨지고 있는 프로그래밍 패러다임.

이는 설정이나 런타임 변화를 지원하는 시스템에서 매우 핵심적인 요소이다. 이 패러다임 아래에서 소프트웨어를 일단 개발하지만, 설정에 따라 운영이 다르게 된다. 이에 대한 간단한 예로 윈도우 초기화(INI) 파일에서 정보를 획득하는 프로그램을 들 수 있다. INI 파일을 사용할 때에는 프로그램이 암호를 풀고 필요한 요소를 제공해야 하지만, AOP는 시스템 수준에서 접속 풀(connection pooling)과 같은 요소를 제공하기 때문에, 사용자는 단 한 줄의 코드도 작성할 필요가 없다.

AOP에서는 런타임이나 프로그램이나 설정을 할 때 필요한 시스템 특성을 정할 수 있다. 프로그램할 때, 특정 키워드나 특성을 메소드나 클래스에 추가하면 된다. 하지만 이러한 것들을 지원하기 위해 커스텀 코드를 작성할 수는 없다. 런타임에서는 시스템이 메소드나 클래스에 대한 모든 호출을 차단하고, 이러한 속성(attribute)을 조사하며, 컴포넌트에 사용자에게 필요한 특성을 삽입할 것이다.

프로그램할 때 이러한 속성을 명기하는 대신, 선언을 설정할 때까지 연기할 수도 있다. 이렇게 하면, 설정과 설치를 할 때에 필요한 서비스를 선언할 수 있을 것이다. 이러한 능력이 있기 때문에 동일한 시스템이 다른 방식으로 운영되도록 설정할 수 있으며, 다른 특성을 지원할 수 있다. 다시 말해서, 서로 다른 두 회사가 단지 설정을 달리 선언하기만 하면 동일한 시스템을 사용할 수 있다는 것이다. 시스템이 하나밖에 없어도, AOP 패러다임을 사용하면 시스템의 서로 다른 인스턴스를 설정 시에 초기화할 수 있다. 이것을 개념적인 측면에서 보면, C++에 있는 클래스를 초기화할 수 있다. 하지만 AOP 패러다임에서는 전체 시스템을 초기화할 수 있다.

관련자료


See also : ObjectOrientedProgramming

AspectOrientedProgramming (last edited 2012-08-14 14:23:00 by 182)

web biohackers.net