1.HLA (High Level Architecture)란?
 - 상이한 조직에서 상이한 목적으로 개발된 개별 시뮬레이션들을 하나의 커다란 시뮬레이션으로

  결합시켜주는 SW구조
 - 재사용성과 상호 운용성 유지를 위한 미국방성의 표준규격 & IEEE 표준 규격
 - Federate : Federation 구성을 위해 결합된 개별 시뮬레이션 시스템
 - Federation : Federate들이 결합된 시뮬레이션 시스템

2. Federation의 구성요소
 - 지원 SW : RunTime Ifrastructure (RTI)
 - 하나의 Federation에서 각 Federate들 사이의 데이터 교환을 위한 공통객체모델

  (FOM : Federation Object Model)
 - Federation에 가입(Join)된 다수의 Federate

3. Federation Object Model (FOM)
 - Federation 개발자에 의해 생성되는 자료
 - 하나의 Federation Execution에서 각 Federate간 교환하는 데이터의 종류 및 관계성에 대해 정의

4. 기능 분산 구현
 - Federate는 모델 또는 시뮬레이션 관련 행위를 구현
 - RTI는 시뮬레이션의 상호 운용성 관련 모든 기능을 구현


 4.1. RTI Ambassador
  - RTI가 개별 Federate에게 제공해주는 인터페이스
  - Federate는 RTI 서비스를 요청하기 위해 RTI Ambassador operation을 호출

 4.2. Federate Ambassador
  - Feserate가 RTI에게 제공해주는 인터페이스
  - RTI는 Feserate에게 정보를 전달하기 위해 Federate Ambassador operation을 호출

5. Federation 규칙
 - Federation은 OMT(Object Model Template)에 의해 작성된 하나의 HLA FOM을 갖는다.
 - FOM에 있는 모든 객체들의 표현은 RTI가 아닌 Federate에 있어야 한다.
 - Federation이 실행되는 동안 Federate간 모든 FOM 자료의 교환은 RTI를 통해 이루어진다.
 - Federation이 실행되는 동안 Federate는 HLA 인터페이스 명세에 따라 RTI와 상호작용(Interaction) 한다.
 - Federation이 실행되는 동안 객체 인스턴스 속성의 소유권은 단 하나의 Federate가 갖는다.


6. Federate 규칙
 - Federate는 OMT에 의해 작성된 하나의 SOM(Simulation Object Model)을 갖는다.
 - Federate는 자신의 SOM에 있는 객체의 속성을 갱신하거나 반영할 수 있으며, 상호작용을 외부적으로

  보내거나 받을 수 있다.
 - Federate는 자신의 SOM에 명시된대로 Federation이 실행되는 동안 속성의 소유권을 동적으로 주고 받을수 있다.
 - Federate는 자신의 SOM에 명시된대로 객체 속성의 갱신을 제공하는 조건을 변경할 수 있다.
 - Federate는 Federation의 다른 멤버들과 데이터 교환을 가능하게 하기 위해 자신의 Local Time을 관리할 수 있다.

7. Federation 실행 시퀀스
 1) RTIExec.exe 실행 : RTI 시작
 2) Federate.exe 실행 : Federate 시작
 3) Federation 생성 및 가입 : CreateFederationExecution() / JoinFederationExecution()
 4) 그 외 나머지 Federate들의 Federation 가입 : JoinFederationExecution() x n
 5) 시간 스위치 설정 (Regulating / Constrained)
 6) Publish / Subscribe 선언
 7) 객체 생성, 등록 및 갱신
 ============== 시뮬레이션 반복 루프 ==============
 8) 시뮬레이션 시간진행 요청
 9) 외부사건 처리 : Subscribe로 수신한 인스턴스 내용 시뮬레이션에 반영
 10) 내부사건 처리 : Publish한 인스턴스 정보 갱신
 ============== 시뮬레이션 반복 루프 ==============
 11) Federation 탈퇴 요청
 12) 시뮬레이션 실행 종료

8. Publish와 Subscribe
 - Publish : 하나의 Federate가 객체 인스턴스를 등록하여 해당 인스턴스의 속성을 갱신하고 상호작용을 전송
 - Subscribe : Publish된 객체 인스턴스를 구독하여 해당 인스턴스의 갱신된 속성값을 반영하며 상호작용을 수신