UML 1.x와
UML 2.0의 차이점
주제
이 페이지는 RUP 컨텍스트와 관련된 UML 1.x와 UML 2.0에서
일부 차이점을 설명합니다. 이는 모든 UML([UML04])
인프라스트럭처 및 수퍼스트럭처 스펙을 다루려는 의도는 아니지만 대신 관련 UML
성능의 개요를 제공하는 것입니다. 또한 자세한 정보는 [RUM05]
및 [ERI04]를 참조하십시오.
"UML 1.x"가 UML 1.0에서 UML 1.5 버전을 나타낸다는 것을
참고하십시오.
UML 2.0 기능 세트의 가장 중요한 다이어그램적 변경은
작동 다이어그램(특히, 활동 다이어그램과 상호작용 다이어그램의
세트)에 있습니다(아래의 활동 다이어그램,
순서 다이어그램 및 의사소통
다이어그램 참조).
합성 구조 다이어그램 및 구조화된 클래스 또한 새 UML 2.0
기능입니다(아래 합성 구조 다이어그램
참조).
소개
활동 모델링이 UML 2.0에서 완전한 개정이 이루어졌습니다. 최소한
임시로 사용하는 경우에는 효과 및 모양이 매우
유사합니다. 그러나 UML 1.5(및 이전 버전)의 모델링
형식에 따라, UML 1.x 규칙에 따라 구성된 모델의
실행 결과와 엄격한 해석이 UML 2.0에서 동일하지는
않습니다. 따라서 UML 1.x 활동 모델을 변경하지 않고
UML 2.0에 적용할 수 있는 것처럼 보이는 경우라도 특히
동시성과 관련된 보다 복잡한 모델의 경우 동일하게 실행되지
않습니다. 자세한 정보는 [UML04]를
참조하십시오.
[UML04]가 정의하는 대로
활동(활동 다이어그램에 표시)은 개별 요소가 조치인
조정된 순서의 종속 장치로서의 작동 스펙입니다. UML 1.x 활동 다이어그램의
개별 실행 단계를 비공식적으로 활동, 활동 상태 또는 정확하게 조치 상태로
부를 수도 있습니다. 이제 UML 2.0 활동의 이러한 단계는 조치라고
부르며 이러한 조치는 활동 내에서 더 이상 분해되지 않습니다. 상태의 함축은
UML 1.x과는 다르게 활동이 더 이상 일종의 상태 시스템이 아니므로 UML 2.0에서
없어집니다. UML 2.0에서 활동은 노드(활동은 일종의 노드)로 구성됩니다.
기타로는 아래에서 자세히 설명된 제어 노드와
객체 노드가 있습니다.
플로우 의미론
활동에는 이제 토큰 플로우를 기반으로 한 페트리 네트 의미론이 있습니다.
해당 플로우에서 한 노드의 실행이 플로우라는 직접 연결을 통해 다른 노드의
실행에 영향을 줍니다. 객체 또는 제어 궤적을 포함하는 토큰은
이러한 연결에 걸친 노드 사이에서 순환합니다. 노드는 입력 토큰의 지정된 조건이
충족되면 실행을 시작할 수 있습니다. 실행이 완료되면 입력 플로우에
토큰을 제공하여 하향스트림 노드가 실행을 시작할 수 있게
합니다. 노드를 연결하는 플로우가 제어와 데이터 또는 객체 플로우와, 예상한
바와 같이, 제어 플로우에 걸쳐 이동하는 제어 토큰 및 객체, 또는 객체
플로우에 걸쳐 전달되는 데이터 토큰으로 보다 정제됩니다.
이는 UML 1.x와 대조됩니다. 여기서 노드는 플로우의 모델링을 제한하는
노드 간의 변환이 있는 상태(pseudo 상태)입니다.
동시성 모델링
UML 2.0의 모델링 성능이 제한되지 않은 병행론을 허용합니다. 반면,
UML 1.x에서 전체 상태 시스템(활동)이 완료시까지 실행 단계를 수행하고
가장 완료된 양식의 UML 2.0 성능이 노드 및 활동의 플로우 커넥터를 통해
이동하는 토큰의 다중 스트림으로 단일 실행에 의해 처리되는 활동의 여러
호출을 허용합니다. 이로써,
모델 작성자에게 진행 조건 및 상호작용을 알아야 하는 부담이 가중됩니다. 또한 토큰 플로우 의미론의 동시성 모델링에 대한 영향의 기타 예는 아래
의미론 차이점 섹션을 참조하십시오.
표기법
조치 및 제어 노드
아래 다이어그램이 여러 UML 2.0 요소를 설명하며 직사각형 프레임과
상단 왼쪽의 구획에 이름이 있는 UML 2.0의 일반적인 방식으로
표시됩니다. 이 다이어그램을 아래 표시된 UML 1.x 버전과
비교하십시오. 모양은 유사하며(다른 방향 및 색상 규약을
허용하며 이는 의미론상으로는 중요하지 않음) 이 모델의 실행 결과는
UML 1.x 및 UML 2.0에서 동일합니다. 제어 노드(결정, 병합, 분기, 결합, 초기
및 최종)가 UML 1.x 등가물과 비슷하고 플로우 제어가 화살표, UML 1.x 전이
화살표와 시각적 동등물로 표시됨을 참고하십시오.
UML 2.0 활동 다이어그램 예
UML 1.x 활동 다이어그램 예
UML 2.0에는 플로우 최종([UML04]에서
가져온 다이어그램 아래에 표시)라는 추가 제어 노드 유형이 있으며 이 유형은
활동 최종 노드를 활성화하여 플로우를 종료하는 대안으로 사용됩니다. UML 2.0에서 제어가 활동 최종 노드의 임의의 인스턴스에
도달하는 경우 전체 활동(모든 플로우 포함)이 종료되므로 이 노드가 필요합니다.
플로우 최종이 단순히 첨부된 플로우를 종료합니다. 이는
run-to-completion 의미론으로 인해 UML 1.5에서는
문제가 되지 않지만 UML 2.0에서는 무한 병렬로 인해 모든
플로우를 중지하거나 모든 토큰을 삭제할 수 없습니다.
플로우 최종 제어 노드
객체 노드
UML 2.0 활동 모델링이 객체 노드도 지원합니다. 객체
노드는 예를 들어 특정 상태의 특정 분류자 인스턴스를 활동
내 특정 지점(예: 출력 원본 또는 조치에 입력)에서 사용할 수
있음을 나타내는 활동 노드입니다. 객체 노드는 예를 들어
특정 상태의 특정 유형 객체와 송수신하는 컨테이너 기능을
수행합니다. UML 2.0에서는 객체 노드에 대해 pin이라는
새로운 표기법을 사용합니다. Pin은 조치로의 입력 또는 조치로부터의 입력을 표시하며
아래에 표시된 대로 조치 직사각형에 첨부된 작은 직사각형으로서
그려집니다.
pin 표기법
화살표는 객체 플로우를 표시합니다. 이는 UML 1.x의 객체 플로우 상태 간의
전이에 사용된 단선과 달리 실선입니다. 조치의 결과 pin에 연결된 조치의
입력 pin과 동일한 이름이 있는 경우, 출력 및 입력 pin은 독립형 pin을 제공하기
위해 병합될 수도 있습니다. 이로써, 다시
UML 1.x의 객체 플로우에 대한 시각적 동등물을 제공합니다.
독립형 pin 표기법
구조화된 활동 노드
구조화된 활동 노드는 종속 활동 노드로의 확장이 있을 수 있는 실행 가능 활동
노드입니다. 종속 노드는 오직 한 구조화된 활동 노드에만 속하지만
중첩되지는 않을 수 있습니다. 연결된 제어 플로우와 접속된 PIN이 있을 수
있습니다. 구조화된 활동 노드가 맨 위에 <<구조화>> 키워드와 함께
노드 및 플로우를 포함하는 구석이 둥근 단선으로 된 직사각형으로
그려집니다.
활동 파티션
활동 파티션은 특정 공유 특성에 따라 활동의 노드 및
플로우를 그룹화하는 방법입니다. UML 1.x에서 스윔레인의 개념은(파티션으로
간주)은 활동 다이어그램에서 사용되어 일부 기준에 따라 조치를 그룹화합니다(예:
비즈니스 모델링에서 조직 수행). UML 2.0은 이 파티션 나누기 성능을 활동 다이어그램의 다중
차원으로 확장하고 추가 표기법을 제공함으로써, 예를 들어 개별 조치가
속한 파티션의 이름으로 레이블될 수 있도록 합니다. 아래 다이어그램이
UML 2.0에 따라 표시될 때 다차원의 스윔레인의 예로 표시됩니다. 여기서,
조치는 위치 및 책임에 따라 그룹화됩니다.
2차원 스윔레인을 사용하는 활동 파티션 예
의미론적 차이점
UML 2.0 활동 모델의 제한되지 않은 병행 및 토큰 플로우 의미론이
실행 결과가 의도한 내용과 같은지 확인하도록 새 모델 구성 또는 기존
모델 전이시 주의를 수행하는 UML 1.x에 익숙한 모델러를 필요로
합니다. 예를 들어, 위의 processPassenger 예제에서 체크인하는
탑승객이 우수 고객 구성원일 수 있습니다. 이런 경우, 에이전트는
아래 UML 1.x 모델 단편에 표시된 대로 탑승객 우수 고객 마일리지 혜택을 받아야 합니다.
보호된 동시 트랜잭션 사용
선택사항 동시 전이에서 보호를 두는 것은 UML 1.x에서 전이를 절대
시작하지 않고, 전이가 모델에 표시되지 않을 경우에 작동됩니다.
따라서 기타 두 전이가 완료되면 결합 후에 실행을 계속합니다. UML 2.0에서 우수 고객이 아닌 경우, 토큰이 해당 플로우와 함께 절대 결합에
도달하지 않으며 결합이 계속되기 전에 모든 플로우의 토큰에 대기하므로
모델이 정체됩니다.
모델은 수하물 처리 플로우와 동일한 방식으로 처리되는 조건으로 아래 표시된
대로 구성되어야 합니다. 동시 플로우에 의존하는 하향스트림이 없음을 확신하는
한 동시 플로우에 직접 보호를 두는 것은 허용 가능합니다.
보호된 동시 플로우 대신 결정 및 병합 노드 사용
UML 2.0에서는 UML 1.x의 협업 다이어그램이 의사소통 다이어그램으로
바뀌었습니다. 이전 버전과 의미론적으로 차이점이 없습니다. 의사소통
다이어그램은 이전 공동 작업 다이어그램을 기반으로 하며 여전히 상호작용
다이어그램의 한 유형입니다.
표기법
의사소통 다이어그램은 라이프라인 간의 상호작용에 초점을 맞춥니다. 해당 노드가
구조화된 클래스의 일부 또는 공동 작업의 역할을 표시하는 직사각형인 그래프로
표시됩니다. 상단 왼쪽 구석의 구획에 이름이 있는 다이어그램을 둘러싼 직사각형
프레임이 사용됩니다. 이는 이전 UML 버전과는 다른 표기상의 변경입니다.
노드는 반복에서 라이프라인에 대응합니다.
파트 간의 라인은 의사소통 경로를 형성하는 커넥터를 표시합니다.
다양성이 커넥터에 표시될 수도 있습니다.
파트 간의 메시지는 커넥터 라인 근처의 레이블된 화살표로 표시됩니다.
의사소통 다이어그램이 조작 또는 유스 케이스의 구현을 표시하는 상호작용을
모델화하는데 사용합니다.
다음은 의사소통 다이어그램의 예입니다.

주문 시스템의 의사소통 다이어그램 예
UML 2.0에서 컴포넌트는 UML 1.4에서 정의된 두 개의 튀어나온 사각형이 없는
클래스 기호로 표기됩니다. 대신 <<component>> 스테레오타입이
사용됩니다. 선택적으로, UML 1.4 아이콘과 유사한 컴포넌트 아이콘이
컴포넌트 기호의 오른쪽 상단에서 여전히 사용됩니다.
UML 2.0이 컴포넌트를 구조화된 클래스가 되도록 정의합니다. 즉, 내부
구조(파트)의 요소 간의 공동 작업이 해당 작동을 더 잘 설명하도록
모델화될수 있음을 의미합니다. 파트는 커넥터를 통해 연결됩니다. 포트는
제공된 필수 인터페이스를 통해 컴포넌트의 캡슐화 레벨을 증가시키는데
사용할 수 있습니다. 자세한 정보는 개념:
컴포넌트 및 개념:
구조화된 클래스를 참조하십시오.
이전 UML 버전에서는 인터페이스를 사용하는 패키지로 모델링된
서브시스템이라는 특수 모델링 요소를 정의했습니다. 또한 컴포넌트가 실제 구조의 모델을 구성하는데
사용됩니다. UML 2.0에서 컴포넌트는 모델의 모든 파트에 걸쳐
넓은 의미로 사용됩니다. 따라서 특수 요소가 서브시스템을
더 이상 모델화할 필요가 없습니다. UML 1.x의 서브시스템 구현
및 서브시스템 스펙에 대한 별도의 구획이 UML 2.0의 컴포넌트에 적용된
별도의 스테레오타입이 되었습니다(각각 <<realization>> 및
<<specification>>). 또다른 새 컴포넌트 스테레오타입은 대형 컴포넌트의
모델화를 표시하는 <<subsystem>>입니다.
RUP가 컴포넌트를 사용하여 서브시스템을 모델화하도록 제안합니다(자세한 정보는 가이드라인:
설계 서브시스템 참조).
구조에는 파트가 있는 요소와 설계시 반드시 알려진 것은 아닌 커넥터 간의 특정
공동 작업이 있습니다. 일반적 클래스 다이어그램(기타
정적 다이어그램 포함)이 이러한 요소에 적용되는 역할, 책임,관계 및 규칙을
명확히 표현하는데는 충분하지 않습니다.
이러한 사안을 설명하기 위해 UML 2.0에 합성 구조 다이어그램이 추가되었습니다.
이 다이어그램은 구조화된 클래스와 시스템의 기타 부분과의 상호작용
위치를 포함하여 구조화된 클래스의 내부 구조(예: 컴포넌트 또는 클래스)를
보여줍니다. 포함하는 구조된 클래스의 작동을 공동으로 수행하는 파트의
구성을 표시합니다.
합성 구조 다이어그램은 구조된 클래스의 내부 컨텐츠를 그리는데 사용합니다(합성 구조
다이어그램의 세부사항 및 예제는 개념:
구조화된 클래스 참조).
UML 2.0에는 순서 다이어그램에 대한 다음과 같은 몇 가지 새 기능이 있습니다.
단편은 작동이 순서 다이어그램에서 발생하는 방법에 대한 보다 명확한
의미론을 제공합니다. 결합된 단편이 순서 다이어그램의 여러 부분을 캡슐화합니다.
해당 다이어그램에서 별도의 플로우가 모델화되어 조건으로 실행의 대체 경로가 생기는
방법을 표시합니다.
상호작용 발생으로 상호작용의 분해를 재사용 가능하게 합니다.
여러 다른 상호작용 사이에 상호작용의 일부를 공유하는 유용한
방법입니다.
UML 1.x에서 루프 표시는 참고 안에 작성된 루프 조건을 사용하는
것입니다. 참고사항은 루프 조건이 참인 동안 실행될 메시지 또는 메시지 세트에
첨부됩니다. UML 2.0에는 루프에 대한 특정 표시가
있습니다.
UML 2.0에서 순서 다이어그램은 객체가 작성되고 파기되는 방법을 표시할 수 있습니다.
발생의 실행은 객체가 시간 상의 일정 지점(메시지 수신시 실행하는 제어의
중점)을 표시합니다.
단편, 상호작용 발생 및 루프를 표시하는 새 기능을 사용하여
순서 다이어그램이 다음 두 양식으로 사용될 수 있습니다.
인스턴스 양식: 조건, 분기 또는 루프없이 가능한 하나의 상호작용을 문서화하여
특정 시나리오를 자세히 설명합니다. 이 양식은 하나의 유스 케이스 시나리오를
나타내는 데 사용됩니다. 동일한 유스 케이스의 다른 시나리오가 다른
순서 다이어그램에 표시됩니다. UML 1.x 의미론을 지원하는 모델링 도구는
이 양식의 표현만을 허용합니다.
일반 양식: 조건, 분기 및 루프와 같은 새 UML 2.0 성능을 이용하여 시나리오에서
가능한 모든 대안을 설명합니다. 이 양식을 사용하면
가능한 경우 고유한 순서 다이어그램의 동일한 유스
케이스에 대한 여러 가지 시나리오를 나타낼 수 있습니다.
아래 그림은 다른 시나리오를 모델화하는 순서 다이어그램의 예를
표시합니다. alt 단편은 조건이 만족되는지 여부에 따라
메시지 순서 배열의 다음과 같은 두 가지 가능한 대안을 표시합니다.

예: 분기, 루프 및 조건을 표시하는 순서 다이어그램
|