방법: UML 모델 탐색

이 항목에서는 UML 모델의 주요 형식을 소개합니다.

모델 요소, 모델 및 모델 저장소

Microsoft.VisualStudio.Uml.Interfaces.dll 어셈블리에 정의된 형식은 UML 사양 버전 2.1.2에 정의된 형식과 일치합니다.

UML 사양의 형식은 Visual Studio Ultimate에서 인터페이스로 구현됩니다.이를 나타내기 위해 각 형식의 이름 앞에 'I'가 추가됩니다.예를 들면 IElement, IClass, IInteractionIOperation과 같습니다.

IElement를 제외한 모든 형식은 하나 이상의 상위 형식에서 속성을 상속합니다.

Ee330925.collapse_all(ko-kr,VS.110).gif관계

UML 사양에 정의된 속성 및 관계는 .NET 속성으로 구현됩니다.

대부분의 관계는 양방향으로 탐색 가능합니다.관계는 양쪽 형식에 대한 속성의 쌍에 해당합니다.예를 들어 IElement.Owner 속성과 IElement.OwnedElements 속성은 관계의 양쪽을 나타냅니다.따라서 다음 식은 항상 true가 됩니다.

IElement c; ... c.OwnedElements.All(x => x.Owner == c)

IAssociation과 같은 많은 관계는 자체의 속성을 가질 수 있는 개체로도 표현됩니다.

모델에서 요소를 삭제하면 해당 요소가 관련된 모든 관계가 자동으로 삭제되고 다른 쪽의 속성이 업데이트됩니다.

UML 사양에서 속성에 0..1의 복합성을 할당하면 값이 null이 될 수 있습니다.최대 복합성이 1보다 크면 .NET 속성에 IEnumerable<Type> 형식이 있음을 의미합니다.

관계를 탐색하는 방법에 대한 자세한 내용은 방법: UML API와의 관계 탐색을 참조하십시오.

Ee330925.collapse_all(ko-kr,VS.110).gif소유권 트리

모델에는 IElement 개체의 트리가 포함됩니다.모든 요소에는 OwnedElements 및 Owner 속성이 있습니다.

대부분의 경우 Owner 및 OwnedElements 속성의 대상은 좀 더 구체적인 이름을 사용하는 다른 속성에서도 참조됩니다.예를 들어 모든 UML 작업은 UML 클래스에서 소유합니다.따라서 IOperation에는 Class라는 속성이 있으며, 모든 IOperation 개체에서 Class == Owner입니다.

트리의 최상위 요소, 즉 소유자가 없는 요소는 IModel입니다.IModel은 IModelStore 내에 Root로 포함됩니다.

모든 모델 요소는 소유자와 함께 만들어집니다.자세한 내용은 방법: 요소 및 관계 만들기을 참조하십시오.

클래스 다이어그램: 모델, 다이어그램, 도형 및 요소

모양 및 다이어그램

UML 모델의 요소는 다이어그램에 표시될 수 있습니다.다이어그램의 각 형식은 IElement의 각기 다른 하위 형식을 표시할 수 있습니다.

일부 경우에는 한 요소가 둘 이상의 다이어그램에 나타날 수 있습니다.예를 들어 IUseCase 요소에는 몇 개의 IShape가 있으며 이러한 요소는 한 개 또는 여러 개의 다이어그램에 나타날 수 있습니다.

모양은 트리에 정렬되어 표시됩니다.트리의 가장자리는 ParentShape 및 ChildShapes 속성으로 표현됩니다.다이어그램은 부모 요소가 없는 유일한 모양입니다.다이어그램 화면의 모양은 보다 작은 여러 부분으로 구성됩니다.예를 들어 클래스 모양에는 특성 및 작업에 대한 구획이 있습니다.

모양에 대한 자세한 내용은 방법: 다이어그램에 모델 표시를 참조하십시오.

확장에서 모델 액세스

MEF 구성 요소로 정의된 Visual Studio 확장에서는 확장이 실행되는 컨텍스트에서 정보를 가져오는 속성을 선언할 수 있습니다.

특성 형식

액세스가 제공되는 대상

추가 정보

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

(Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll의 경우)

현재 포커스 다이어그램

방법: 모델링 다이어그램의 메뉴 명령 정의

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

(Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)에서

변경 내용을 트랜잭션으로 그룹화할 수 있게 해 줍니다.

방법: 트랜잭션을 사용하여 모델 업데이트 연결

Microsoft.VisualStudio.Shell .SVsServiceProvider

(Microsoft.VisualStudio.Shell.Immutable.11.0.dll)에서

호스트 Visual Studio.여기에서 파일, 프로젝트 및 기타 요소에 액세스할 수 있습니다.

방법: Visual Studio API를 사용하여 UML 모델 열기

Ee330925.collapse_all(ko-kr,VS.110).gif컨텍스트를 가져오려면

확장 클래스 내에 다음 인터페이스 중 하나 또는 둘 다를 선언합니다.

[Import] public IDiagramContext DiagramContext { get; set; }

MEF(Managed Extensibility Framework)는 현재 다이어그램, 모델 저장소, 루트 개체 등을 가져올 수 있는 정의에 이러한 인터페이스를 바인딩합니다.

IDiagram diagram = this.DiagramContext.CurrentDiagram;
IClassDiagram classDiagram = diagram as IClassDiagram;
       // or diagrams of other types
IModelStore modelStore = diagram.ModelStore;
IModel model = modelStore.Root;
foreach (IDiagram diagram in modelStore.Diagrams) {...}
foreach (IElement element in modelStore.AllInstances<IUseCase>) {...}

Ee330925.collapse_all(ko-kr,VS.110).gif현재 선택 항목을 가져오려면

// All selected shapes and their elements
foreach (IShape shape in diagram.SelectedShapes)
{  
   IDiagram selectedDiagram = shape as IDiagram;
   if (selectedDiagram != null)
   { // no shape selected - user right-clicked the diagram
     ... Context.CurrentDiagram ...
   }
   else
   {
     IElement selectedElement = shape.Element;
   ...}
// All selected shapes that display a specfic type of element
foreach (IShape<IInterface> in 
   diagram.GetSelectedShapes<IInterface>()) 
{...}

다른 모델 또는 다이어그램에 액세스

다음과 같은 작업을 수행할 수 있습니다.

참고 항목

개념

UML 모델 및 다이어그램 확장

UML API를 사용한 프로그래밍