에이전트 지향 프로그래밍

에이전트 지향 프로그래밍(Agent-oriented programming, AOP)은 소프트웨어 에이전트의 개념을 중심으로 소프트웨어의 구성이 이루어지는 프로그래밍 패러다임이다. 핵심에 (가변 파라미터를 가진 메서드를 제공하는) 객체를 두는 객체 지향 프로그래밍과 달리, AOP는 (인터페이스와 메시징 기능을 가진) 외부에 지정된 에이전트를 핵심에 둔다. 이는 객체의 추상화로 생각할 수 있다. 교환된 메시지는 수신 "에이전트"에 의해 해당 에이전트 클래스에 특정한 방식으로 해석된다.

 역사 
역사적으로, 에이전트 지향 프로그래밍의 개념과 에이전트 개념을 중심으로 소프트웨어를 구성하는 아이디어는 1990년 요아브 쇼햄이 자신의 인공지능 연구에서 도입했다. 그의 에이전트들은 하나의 파라미터를 가진 하나의 메서드만을 가지므로 그의 패러다임에 특화되어 있다. 1990년 쇼햄의 논문에서 AOP와 OOP의 기본적인 차이점을 인용하면 다음과 같다:

   OOP  AOP 기본 단위 객체  에이전트 기본 단위의 상태를 정의하는 매개변수 제약 없음  신념, 약속, 능력, 선택, ... 계산 과정 메시지 전달 및 응답 메서드  메시지 전달 및 응답 메서드 메시지 유형 제약 없음  알림, 요청, 제안, 약속, 거절, ... 메서드에 대한 제약 없음  정직성, 일관성, ...

 프레임워크 
쇼햄의 프로그래밍 패러다임을 구현하는 여러 AOP '프레임워크'가 있으며, 이를 에이전트 플랫폼이라고도 한다. 다음 예시들은 기본 에이전트가 헬로월드 프로그램으로 어떻게 프로그래밍되는지 보여준다.

 JADE 
자바 플랫폼을 위한 프레임워크 중 하나는 JADE이다.
다음은 코드를 실행하는 에이전트의 매우 기본적인 예시이다.
package helloworld;
import jade.core.Agent;

public class Hello extends Agent {

	protected void setup() {
		System.out.println("Hello World. ");
		System.out.println("My name is "+ getLocalName());
	}

	public Hello() {
		System.out.println("Constructor called");
	}

}
JADE의 AOP 모델의 핵심은 API가 표준 FIPA 에이전트 통신 언어를 지원한다는 것이다.

 Agent Speak (Jason) 
에이전트 스피크는 논리 프로그래밍과 신념-욕망-의도 소프트웨어 모델 (BDI) 아키텍처를 기반으로 하는 에이전트 지향 프로그래밍 언어이다.

JADE와 같이 자바 및 객체 지향성 뒤에 숨겨지지 않고 에이전트 지향 개념을 문자 그대로 번역한 Agent SpeakAnand S. Rao, 1996. AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language. Proceedings of Seventh European Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW-96). (Jason)는 에이전트를 위한 "자연어"를 제공한다.
	started.

	+started <- .print("Hello World. ").

 GOAL 
GOAL은 인지 에이전트를 프로그래밍하기 위한 프로그래밍 언어이다. GOAL 에이전트는 자신의 신념과 목표로부터 행동 선택을 도출한다. 이 언어는 에이전트의 신념과 목표를 조작하고 의사결정을 구조화하는 것을 허용하고 용이하게 하는 프로그래밍 구성을 통해 인지 에이전트를 설계하고 구현하기 위한 기본적인 빌딩 블록을 제공한다. 이 언어는 상식 또는 실용적 추론을 기반으로 하는 직관적인 프로그래밍 프레임워크를 제공한다.

 SARL 언어 
SARL은 다중 에이전트 시스템 코딩을 위한 기본적인 추상화를 제공한다.SARL 웹사이트 이는 스크립트와 유사한 구문(스칼라 및 루비에서 영감을 얻음)을 사용한다.
package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
        on Initialize {
             println("Hello World.")
        }
}

 PADE (Python Agent DEvelopment framework) 
PADE는 파이썬 언어로 지능형 에이전트를 개발하기 위한 파이썬 패키지이다. 이 프레임워크는 FIPA 및 ACL 표준을 준수한다.
class AgenteHelloWorld(Agent):
    def __init__(self, aid):
        super(AgenteHelloWorld, self).__init__(aid=aid)
        display_message(self.aid.localname, "Hello World!")

 미들웨어 
모듈식 또는 확장 가능한 AOP 지원을 구현하는 한 가지 방법은 그 자체로 소프트웨어 에이전트로 구현되는 미들웨어 함수에 표준 AOP API를 정의하는 것이다. 예를 들어, 디렉토리 서비스는 FIPA 디렉토리 퍼실리테이터 또는 DF 소프트웨어 에이전트로 구현될 수 있다. 에이전트를 시작, 중지, 일시 중단 및 재개하는 생명 주기 관리는 FIPA 에이전트 관리 서비스 또는 AMS 에이전트로 구현될 수 있다. AOP 접근 방식의 이점은 다양한 응용 프로그램, 서비스 및 네트워크의 사용자 및 제공자 간에 더 동적인 역할을 지원한다는 것이다. 예를 들어, 전통적으로 네트워크 및 서비스는 일반적으로 고객을 대신하여 네트워크 및 서비스 제공자에 의해 관리되었고 단일 가상 네트워크 서비스로 제공되었지만, 고객 자신도 자신의 서비스를 통합하고 관리하는 데 더 많은 권한을 얻고 있다. 이는 AOP 및 유연하고 동적으로 통신을 관리할 수 있는 미들웨어 에이전트에 대한 API를 통해 달성될 수 있다.

 같이 보기 





 각주 

분류:에이전트 기반 소프트웨어