AspectC++CC++ 언어의 관점 지향 확장이다. AspectC++ 소스 코드를 호환 C++로 번역하는 소스 대 소스 컴파일러를 보유하고 있다. 이 컴파일러는 GNU GPL 하에서 이용할 수 있으나 일부 마이크로소프트 윈도우에 특화된 확장들은 순수 시스템 GmbH를 통해서만 이용이 가능하다.

AspectC++ 컴파일러
개발자Olaf Spinczyk (프로젝트 리더), Georg Blaschke, Christoph Borchert, Benjamin Kramer, Daniel Lohmann, Horst Schirmeier, Ute Spinczyk, Reinhard Tartler, Matthias Urban[1]
발표일2001년 11월 6일(23년 전)(2001-11-06)[2]
안정화 버전
2.2 / 2017년 3월 10일(7년 전)(2017-03-10)
프로그래밍 언어C++
운영 체제크로스 플랫폼
종류소스 대 소스 컴파일러
라이선스GPL 2+
웹사이트www.aspectc.org

관점 지향 프로그래밍은 횡단 관심사를 하나의 모듈, 즉 관점(애스펙트, aspect)로 모듈화하는 것을 허용한다. 애스펙트는 기존의 클래스를 수정할 수 있지만 대체적으로는 기존 기능의 이전(before), 이후(after), 주변(around)에 실행할 "어드바이스"(advice)를 제공한다.

특정 기능에 대한 모든 호출들은 'cerr'이나 인쇄문을 여러 곳에 삽입하지 않고 애스펙트를 사용하여 추적할 수 있다:

aspect Tracer
{
   advice call("% %Iter::Reset(...)") : before()
   {
      cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl;
   }
};

Tracer 애스펙트는 %Iter::Reset에 대한 호출 이전에 메시지를 출력한다. %Iter 문법은 Iter로 끝나는 모든 클래스와 일치시킨다는 것을 의미한다.

소스 코드 내에서 각각의 '일치된' 위치는 조인 포인트라 부르며, 어드바이스는 해당 코드와 결합된다. AspectC++은 조인 포인트 API를 제공함으로써 해당 조인 포인트에 대한 정보를 제공하고 접근할 수 있게 한다. 이를테면 다음의 함수가 있다고 하면,

JoinPoint::signature()

호출될 함수의 이름(%Iter::Reset와 일치되는)을 반환한다.

각주

편집

외부 링크

편집