실시간 객체 지향 모델링
Real-Time Object-Oriented ModelingROOM(Real-Time Object-Oriented Modeling)은 도메인별 언어다.
ROOME은 실시간 시스템 모델링을 위해 1990년대 초에 개발되었다.[1]어떤 이벤트 중심의 실시간 시스템에도 ROOM을 적용할 수 있음에도 불구하고, 초기에는 통신에 중점을 두었다.
ROOME은 ObjectTime Developer(상업)가 지원하였으며, 현재 Eclipse 공식 프로젝트 eTrace에서[2] 시행하고 있다.
UML2가 정의되었을 때(실시간 확장 UML 버전 2), ROOM의 많은 요소가 채택되었다.
ROOM의 개념과 주요 개념
ROOME은 소프트웨어 시스템의 정의를 위한 모델링 언어다.모델로부터 전체 시스템에 대한 완전한 코드 생성을 가능하게 한다.ROOME은 그래픽 표기법뿐만 아니라 텍스트와 함께 제공된다.일반적으로 생성된 코드는 수동으로 작성한 코드(예: 그래픽 사용자 인터페이스(GUI))와 함께 제공된다.코드는 기본 클래스와 기본 서비스(예: 메시징)를 제공하는 런타임 라이브러리에 대해 컴파일되고 링크된다.
ROOME은 구조, 행동, 상속의 3차원에 따른 소프트웨어 시스템을 설명한다.다음 절에서는 이 세 가지 측면을 더 자세히 설명할 것이다.
구조
ROBE의 구조 뷰는 배우나 캡슐로 구성되어 있다.배우들은 포트를 이용하여 서로 의사소통을 할 수 있다.그 포트들은 바인딩으로 연결되어 있다.배우들은 포트와 바인딩을 통해 비동기적으로 메시지를 교환한다.각 포트에 고유한 프로토콜이 할당된다.ROOM의 프로토콜은 송신 메시지 집합과 수신 메시지 집합을 정의한다.포트는 동일한 프로토콜에 속하고 서로 결합되는 경우 바인딩으로 연결할 수 있다.그것은 하나의 포트가 프로토콜의 발신 메시지를 보내고 들어오는 메시지를 수신하고 있다는 것을 의미한다.이 항구를 정항이라고 한다.그것의 피어 포트인 결합 포트는 발신 메시지를 수신하고 프로토콜의 수신 메시지를 전송한다.즉, 포트는 한 역할의 필수 인터페이스와 제공된 인터페이스의 조합이다(하나의 동일한 프로토콜은 행위자의 여러 포트에 의해 사용될 수 있기 때문이다).
배우는 다른 배우들을 (작곡으로) 포함할 수 있다.ROBE에서 이것들은 배우 추천서 또는 짧게 배우 추천서라고 불린다.이를 통해 임의 깊이의 구조적 계층 구조를 만들 수 있다.
배우의 포트는 인터페이스의 일부(외부에서 볼 수 있음) 또는 구조물의 일부(자체에서 사용됨) 또는 둘 다일 수 있다.인터페이스의 일부일 뿐인 포트를 릴레이 포트라고 한다.그들은 하위 배우의 포트에 직접 연결되어 있다(그들은 하위 배우에게 위임하고 있다).구조의 일부일 뿐인 포트를 내부 엔드 포트라고 한다.구조와 인터페이스 둘 다에 속하는 포트를 외부 엔드 포트라고 한다.
행동
ROBE의 각 행위자는 계층적 유한 상태 기계, 또는 간단히 말해서 단지 상태 기계에 의해 정의되는 행동을 가진다.상태 기계는 상태라고 불리는 노드와 전환이라고 불리는 가장자리로 구성된 방향 그래프다.상태 전환은 내부 또는 외부 엔드 포트에서 수신되는 메시지에 의해 트리거된다.이러한 맥락에서 메시지를 이벤트 또는 신호라고도 한다.전환이 특정 트리거를 지정하면 상태 기계가 전환의 소스 상태에 있고 트리거에 의해 지정된 유형의 메시지가 도착하면 점화한다고 한다.이후 전환의 목표 상태로 상태가 변경된다.
상태 변경 중에 특정 코드 조각이 실행된다.프로그래머(또는 모델러)는 그것들을 상태와 전환에 부착할 수 있다.ROOM에서 이 코드는 소위 세부 수준 언어로 작성되며, 대개 코드 생성의 대상 언어로 작성된다.주에는 진입 코드와 출구 코드가 있을 수 있다.상태 변경 중에 먼저 소스 상태의 종료 코드가 실행된다.그런 다음 사격 전환의 동작 코드가 실행되고 마지막으로 대상 상태의 입력 코드가 실행된다.그러한 코드의 대표적인 부분은 배우의 포트를 통해 메시지를 보내는 것이다.
ROOM에 있는 상태 기계에는 UML 상태 차트와 유사한 그래픽 표기법도 있다.이 섹션의 다이어그램에 예가 나와 있다.
상태 기계는 또한 상태가 하위 상태 기계를 가질 수 있다는 의미에서 계층을 가질 수 있다.구조와 유사하게 이것은 임의의 깊이까지 확장될 수 있다.계층적 상태 기계의 의미에 대한 자세한 내용은 원본 책을 참조하십시오.[3]
상태 기계의 맥락에서 중요한 개념은 완성까지 실행 모델이다.그것은 배우가 다음 메시지를 받아들이기 전에 메시지를 완전히 처리하고 있다는 것을 의미한다.실행-완성 의미제는 실행 환경에 의해 보장되기 때문에 프로그래머/모델러는 고전적인 스레드 동기화를 다룰 필요가 없다.그리고 이것은 비동기 통신 때문에 전형적인 ROOM 시스템이 매우 동시적이라는 사실에도 불구하고.그리고 아마도 ROOM 시스템의 비동기성은 우연에 의한 것이 아니라 소프트웨어에 의해 제어되는 기계와 같은 고유의 비동기성을 반영한다는 것을 강조할 가치가 있을 것이다.분명히 이것은 동기식 시스템의 기능 프로그래밍에 필요한 마음보다 다른 마음을 필요로 한다.그러나 잠시 익숙해진 후에 비동기적으로 통신하는 상태 기계가 제어 소프트웨어에 완벽하게 적합하다는 것은 명백할 것이다.
상속
다른 객체지향 프로그래밍 언어와 마찬가지로 ROOM은 클래스 개념을 사용한다.배우는 시스템에서 여러 번 사물로 인스턴스화할 수 있는 계급이다.물론 배우 클래스의 각 인스턴스는 자체 상태에 있으며 같은 클래스와 다른 클래스의 다른 인스턴스와 통신할 수 있다.
다른 현대 프로그래밍 언어와 유사하게 ROOM은 배우 수업의 상속을 허용한다.배우 클래스가 다른 배우 클래스(기본 클래스)에서 파생될 수 있어 단일 상속이다.포트나 배우 ref와 같은 베이스 클래스의 모든 특징을 이어받지만, 국가 기계도 계승한다.파생된 배우 클래스는 더 많은 상태와 상속된 상태로의 전환을 추가할 수 있다.
레이어링
ROOME의 마지막 강력한 개념은 레이어링이다.이 개념은 서비스와 그들의 고객으로 구성된 소프트웨어 시스템의 수직 계층을 가리킨다.ROOM은 클라이언트 측의 서비스 액세스 포인트(SAP) 개념과 서버 측의 서비스 제공 포인트(SPP) 개념을 소개한다.행위자 구현의 관점에서 SAP와 SPP는 포트와 같이 작동한다.포트와 마찬가지로 그것들은 프로토콜과 연관되어 있다.그러나 포트 이외에 그들은 명시적으로 구속될 필요가 없고 심지어 구속될 수도 없다.오히려, 행위자는 계층 연결에 의해 구체적인 서비스에 구속되고 서비스의 이 구속력은 이 행위자의 모든 하위 행위자에게 재귀적으로 전파된다.이 개념은 의존성 주입과 매우 유사하다.
문학
- 브란 셀릭, 가르스 걸렉슨, 폴 T워드: "실시간 객체 지향 모델링" 뉴욕, John Wiley & Sons Inc., 1994, ISBN978-0-471-59917-3[4]
참조
- ^ 책 "실시간 객체 지향 모델링" 요약
- ^ eTrace - ROOME 오픈 소스 도구
- ^ 브란 셀릭, 가르스 걸렉슨, 폴 T워드: "실시간 객체 지향 모델링" 뉴욕, 존 와일리 & 선스 주식회사, 1994, ISBN 978-0-471-59917-3
- ^ 책 "실시간 객체 지향 모델링" 요약