시퀀스 다이어그램에서 코드 시각화
코드가 특정 메서드를 구현하는 방법을 시각화하려면 Visual Studio Ultimate에서 메서드에 시퀀스 다이어그램을 만듭니다. 시퀀스 다이어그램은 개체 간의 상호 작용을 일련의 수명선과 메시지로 보여줍니다. 수명선은 개체 인스턴스를 나타내고 메시지는 이러한 개체 간의 메서드 호출을 나타냅니다. Visual C# .NET 또는 Visual Basic .NET 코드에서는 시퀀스 다이어그램을 생성할 수 있지만 여러 앱 간에 코드를 공유하는 프로젝트에서는 만들 수 없습니다.
생성된 시퀀스 다이어그램에 나타나는 요소는 UML 시퀀스 다이어그램의 요소와 비슷합니다. 프로그램 코드에서 생성되는 시퀀스 다이어그램은 UML 모델과 별개로 존재하며 .NET 프로젝트에 추가할 수 있습니다. 이와 달리 직접 그리는 UML 시퀀스 다이어그램은 항상 모델의 일부로 만들어집니다. 자세한 내용은 UML 시퀀스 다이어그램: 참조를 참조하세요.
소스 코드에서 시퀀스 다이어그램 생성
시퀀스 다이어그램에서 코드 탐색
디자인 변경 내용을 제안하기 위해 다이어그램 편집
다이어그램에서 코드로 이동
시퀀스 다이어그램을 작업 항목에 연결
다른 다이어그램과의 관계
시퀀스 다이어그램 문제 해결
소스 코드에서 시퀀스 다이어그램 생성
Visual Studio Ultimate에서 메서드 정의가 포함된 코드 파일을 엽니다.
메서드 정의로 이동하여 편집기 내부를 마우스 오른쪽 단추로 클릭하고 시퀀스 다이어그램 생성을 선택합니다.
최대 호출 깊이 상자에 표시할 호출의 최대 수준을 지정합니다. 예를 들어 첫 번째 호출 수준만 나타내려면 최대 호출 깊이 수준을 1로 지정합니다.
참고
시퀀스 다이어그램에는 두 번째 호출 수준이 대상 수명선이 없는 메시지, 즉 손실 메시지로 표시됩니다.다이어그램을 생성한 후 특정 손실 메시지를 확장할 수 있습니다.손실 메시지에 대한 자세한 내용은 UML 시퀀스 다이어그램: 참조를 참조하세요.
다음 표를 참조하여 호출 포함에서 범위를 선택합니다.
나타낼 호출
Choose
직계 프로젝트의 항목에 대한 호출
현재 프로젝트
솔루션의 항목에 대한 호출
현재 솔루션(기본값)
솔루션 내부 및 외부 항목에 대한 호출
솔루션 및 외부 참조
예를 들어 직계 프로젝트의 항목에 대한 메서드 호출만 검토하여 간단한 시퀀스 다이어그램으로 시작할 수 있습니다. 또한 솔루션 전체의 항목에 대한 호출을 보여 주는 새 시퀀스 다이어그램을 생성하여 다이어그램 범위를 확장할 수 있습니다. 솔루션에 없는 항목에 대한 호출을 나타내려면 외부 참조를 포함하는 다이어그램을 생성해야 합니다.
호출 제외에서 다음 항목에 대한 호출을 생략하여 다이어그램을 더 단순화할 수 있습니다.
생략할 호출
Select
속성 및 이벤트
속성 및 이벤트(기본값)
System 네임스페이스
시스템 네임스페이스(기본값)
특정 네임스페이스
기타 네임스페이스를 선택하고 상자에 네임스페이스를 입력합니다. 이때 쉼표(,)를 사용하여 각 네임스페이스를 구분합니다. 와일드카드(*) 문자는 지원되지 않으므로 사용하지 마십시오.
이러한 항목에 대한 호출을 포함하려면 해당 확인란의 선택을 취소하십시오.
현재 프로젝트에 다이어그램을 추가하려는 경우 상자를 선택합니다.
완료되면 확인을 선택하여 시퀀스 다이어그램을 생성합니다.
시퀀스 다이어그램 생성과 관련된 문제에 대한 자세한 내용은 시퀀스 다이어그램 문제 해결을 참조하십시오.
참고
배열 선언은 생성된 시퀀스 다이어그램에 나타나지 않습니다.
코드에 영향을 주지 않고 적용할 변경 내용을 식별하고 전달하기 위해 생성된 시퀀스 다이어그램을 탐색하고 수정할 수 있습니다. 예를 들어 새 수명선, 메시지, 상호 작용 사용 및 조각을 추가할 수 있습니다. 해당 코드에서 수행할 작업을 위해 세부 작업을 만들고 추적하기 위해 작업 항목을 만들거나 다이어그램 요소에 연결할 수 있습니다. 자세한 내용은 모델 요소 및 작업 항목 연결을 참조하세요.
중요
다이어그램을 생성한 후에는 다이어그램 변경 내용이 코드에 나타나지 않으며 코드 변경 내용도 다이어그램에 나타나지 않습니다.이러한 변경 내용을 표시하려면 새 시퀀스 다이어그램을 생성해야 합니다.같은 메서드에서 원하는 만큼 새 시퀀스 다이어그램을 생성할 수 있습니다.
시퀀스 다이어그램에서 코드 탐색
시퀀스 다이어그램을 사용하면 코드를 탐색하고 다른 사람에게 제공할 수 있습니다. 이러한 목적을 위해 가장 유용한 다이어그램을 만들려면 다이어그램을 생성할 때 다양한 범위를 적용하여 테스트해 보십시오. 또한 다이어그램을 생성한 후에 수정할 수도 있습니다. 예를 들어 디자인을 제공하고 논의하는 것과 관련이 없는 메시지를 삭제할 수 있습니다.
다음과 같이 시퀀스 다이어그램을 변경할 수 있습니다.
후 |
수행할 단계 |
---|---|
다음 호출 수준 표시 |
대상 수명선이 없는 메시지의 바로 가기 메뉴를 연 다음 보내는 수명선 확장을 선택합니다. |
새 다이어그램의 메시지 확장 |
메시지에 대한 바로 가기 메뉴를 열고 시퀀스 다이어그램 생성을 선택합니다 새 다이어그램이 현재 프로젝트에 추가됩니다. |
메시지 그룹을 한 수명선으로 축소 |
그룹화할 수명선을 선택하고 선택 항목에 대한 바로 가기 메뉴를 연 다음 축소를 선택합니다. 그룹 이름을 바꿀 수 있지만 그룹을 확장하면 이름이 없어집니다. 그룹을 확장하려면 바로 가기 메뉴를 열고 확장을 선택합니다. |
요소 삭제 |
모양에 대한 바로 가기 메뉴를 연 다음 삭제를 선택합니다. |
레이아웃 개선 |
다이어그램의 빈 영역에 대한 바로 가기 메뉴를 연 다음 레이아웃 다시 정렬을 선택합니다. 이 명령을 실행 취소할 수도 있습니다. |
선택한 요소 강조 |
요소에 대한 바로 가기 메뉴를 열고 속성을 선택합니다. 그런 다음 속성 창에서 색 필드를 설정합니다. |
다이어그램에 주석 달기 |
주석 도구를 선택하고 다이어그램을 클릭한 다음, 주석에 메모를 입력합니다. 그런 다음 주석 링크 도구를 사용하여 수명선 또는 조각에서 하나 이상의 지점에 주석을 연결할 수 있습니다. |
디자인 변경 내용을 제안하기 위해 다이어그램 편집
요소를 추가하고 삭제하는 등 다이어그램을 변경하여 대체 디자인을 고려할 수 있습니다. 또한 다이어그램의 일부를 UML 모델링 프로젝트에 만든 UML 시퀀스 다이어그램에 복사할 수도 있습니다. 이렇게 하면 수명선을 UML 모델의 형식, 구성 요소 및 행위자와 연결할 수 있습니다.
다음 표에서는 디자인 제안을 기술하는 데 유용한 변경 내용을 요약하여 보여줍니다. 자세한 내용은 UML 시퀀스 다이어그램: 지침을 참조하세요.
후 |
수행할 단계 |
---|---|
수명선, 메시지 및 기타 요소 강조 |
요소의 색 속성을 변경합니다. 또는 요소에 주석을 연결합니다.
|
수명선 이동 |
수명선을 다이어그램의 다른 영역으로 끌어 옵니다. 손실 또는 찾기 메시지가 있는 수명선 그룹을 이동하려면 먼저 수명선을 선택해야 합니다.
|
메시지 이동 및 다시 정렬 |
다이어그램에서 메시지를 위 또는 아래로 끌어 옵니다.
|
수명선 추가 |
도구 상자에서 수명선을 선택하고 다이어그램을 선택합니다. |
메시지 추가 |
|
다른 다이어그램에 또는 다른 다이어그램에서 수명선과 메시지 복사 |
수명선을 복사하여 붙여넣습니다. 수명선 사이의 메시지도 자동으로 복사됩니다. 참고 모델링 프로젝트에서 UML 시퀀스 다이어그램의 수명선을 생성된 시퀀스 다이어그램에 복사하면 수명선 헤더만 나타나거나 색을 조정해야 할 수 있습니다.이 문제를 해결하려면 붙여넣은 수명선을 선택하고 색 속성을 설정합니다. |
결합 조각에 메시지 포함 |
결합 조각을 사용하면 메시지의 대체 시퀀스, 루프 및 기타 컴퍼지션을 나타낼 수 있습니다. |
새 다이어그램으로 메시지 이동 |
메시지에 대한 바로 가기 메뉴를 열고 다이어그램으로 이동을 선택합니다 메시지 및 보조 메시지를 포함하는 새 다이어그램이 만들어집니다. 원래 다이어그램의 메시지는 상호 작용 사용으로 바뀝니다. |
다이어그램 복사 |
솔루션 탐색기에서 다이어그램을 복사하거나 Windows 탐색기에서 파일을 복사합니다. 각 다이어그램과 연결된 파일이 두 개 있습니다. 생성된 시퀀스 다이어그램은 Visual Studio Ultimate 인스턴스를 사용하여 편집할 수 있으며 Visual Studio Ultimate 또는 Visual Studio Premium을 사용하여 읽을 수 있습니다. |
추가, 이름 변경 등과 같은 특정 수동 변경 내용을 강조 안 함 |
|
다이어그램에서 코드로 이동
후 |
수행할 단계 |
---|---|
수명선이나 메시지에서 클래스 또는 메서드 정의로 각각 이동 |
수명선 또는 메시지에 대한 바로 가기 메뉴를 연 다음 정의로 이동을 선택합니다. |
아키텍처 탐색기에서 클래스 또는 메서드 찾기 |
수명선 또는 메시지에 대한 바로 가기 메뉴를 연 다음 아키텍처 탐색기에 표시를 선택합니다. 자세한 내용은 종속성 그래프를 사용하여 코드 전체에서 종속성 매핑를 참조하세요. |
시퀀스 다이어그램을 작업 항목에 연결
변경 내용 구현 작업을 계획하는 경우 시퀀스 다이어그램의 요소를 종류에 관계없이 Team Foundation Server의 작업 항목에 연결하면 도움이 됩니다. 시작하기 전에 Team Foundation Server에 연결되어 있는지 확인하십시오. 자세한 내용은 모델 요소 및 작업 항목 연결을 참조하세요.
후 |
수행할 단계 |
---|---|
새 작업 항목을 만들어 수명선, 메시지 또는 다른 요소에 연결 |
|
수명선, 메시지 또는 다른 요소를 작업 항목에 연결 |
나중에 이 명령을 반복하여 같은 모델 요소에 작업 항목 링크를 더 추가할 수 있습니다. |
연결된 작업 항목 보기 |
하나 이상의 요소에 대한 바로 가기 메뉴를 연 다음 작업 항목 보기를 선택합니다. |
작업 항목 링크 제거 |
모델 요소와 선택한 작업 항목 사이의 링크가 삭제됩니다. 작업 항목과 모델 요소는 제거되지 않습니다. |
생성된 시퀀스 다이어그램 사용 지침
다음 지침은 생성된 시퀀스 다이어그램을 사용하여 코드를 탐색하는 경우에 유용합니다.
코드 탐색
종속성 다이어그램을 생성하여 큰 코드 본문에서 주요 그룹화 및 종속성을 전체적으로 기술합니다. 그런 다음 시퀀스 다이어그램을 생성하여 디자인의 개별 파트에 초점을 맞춥니다. 자세한 내용은 종속성 그래프를 사용하여 코드 전체에서 종속성 매핑를 참조하세요.
다이어그램 해석
다이어그램을 만드는 알고리즘은 기호화된 코드 실행을 수행합니다. 경우에 따라 이 기법이 적용되지 않을 수 있습니다. 특히 다음과 같은 경우가 포함됩니다.
실행 코드가 인스턴스를 하나만 처리하는 다이어그램에서 둘 이상의 수명선이 나타나는 경우. 일반적으로 각 메시지에 대해 별도의 대상 수명선이 생성됩니다.
코드에서 항상 하위 형식을 사용하더라도 수명선 형식이 프로그램 코드에 선언된 형식인 경우
디자인 측면에 집중
디자인에서 중점을 둘 한 가지 측면을 선택합니다. 서로 다른 측면에 중점을 두기 위해 다양한 다이어그램을 생성하고 어떤 작업 단계에서라도 다이어그램 파일의 복사본을 만들 수 있습니다.
디자인 측면을 명확하게 노출하는 유용한 다이어그램을 만들기 위해 네임스페이스 필터 및 생성을 사용하여 테스트해야 할 수도 있습니다.
중심 측면과 관계가 없는 메시지를 삭제하고 관련 메시지를 확장하여 세부 정보를 표시합니다.
내부 상호 작용이 현재 중점을 두고 있는 측면과 관계가 없으면 축소 명령을 사용하여 공동 개체 그룹을 나타내는 수명선을 그룹화합니다.
디자인 업데이트
버전 제어를 사용하여 다이어그램에서 공동으로 작업할 수 있습니다. 다이어그램을 편집할 때는 한 번에 한 사람만 편집할 수 있도록 다이어그램을 잠그는 것이 좋습니다.
생성된 시퀀스 다이어그램을 사용하면 변경 또는 조정을 어렵게 하는 기존 코드 기능을 종종 확인할 수 있습니다. 예를 들어 한 수명선이 모든 메시지를 보내지만 다른 수명선은 대부분 자신의 메시지를 보내지 않고 응답만 한다는 것을 알 수 있습니다. 이 개체에서 수행하는 작업을 다른 개체에 효과적으로 나눌 수 있는지 검토해야 합니다. 개체의 각 클래스는 명확하게 정의된 단일 작업을 가져야 합니다. 일반적으로 이 정책을 사용하면 사용자의 요구가 바뀔 때 프로그램에서 변경해야 할 파트를 식별하거나 다른 응용 프로그램 변형에서 파트를 다시 정렬하기가 쉽습니다.
디자인의 특정 측면에 중점을 두는 다이어그램을 사용하는 경우 다이어그램 복사본을 만들고 편집하여 다른 변경 제안을 만듭니다.
생성된 시퀀스 다이어그램의 요소를 UML 시퀀스 다이어그램에 복사할 수 있습니다. 먼저 UML 모델링 프로젝트 내에 UML 시퀀스 다이어그램을 만들어야 합니다. 여기에서는 업데이트된 디자인의 여러 뷰를 모델링할 수 있으며 모델의 구성 요소 또는 클래스에 수명선을 연결할 수 있습니다. 또한 상호 작용을 확장하여 외부 행위자를 포함할 수도 있습니다.
시퀀스 다이어그램 문제 해결
다음 표에서는 시퀀스 다이어그램 생성 시 발생할 수 있는 문제와 가능한 해결 방법에 대해 설명합니다.
문제 |
해결 방법 |
---|---|
시퀀스 다이어그램이 생성되지 않습니다. |
System 네임스페이스가 제외되어 있으며 코드가 ref 또는 out 매개 변수를 사용하는 COM 메서드에 대한 호출을 포함하고 new 키워드를 사용하여 매개 변수를 전달하는 경우 시퀀스 다이어그램이 생성되지 않을 수 있습니다. 이러한 문제가 발생하지 않게 하려면 코드를 변경하거나, 다이어그램을 생성할 때 System 네임스페이스를 포함합니다. |
다음 메시지가 표시된 후 빈 시퀀스 다이어그램이 생성됩니다. "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 시퀀스 다이어그램이 인터페이스 메서드의 명시적 구현에서 생성되고 소스 프로젝트에 자동으로 추가되지 않을 때 이 문제가 발생합니다. 명시적 구현 시 메서드 이름 앞에는 인터페이스 이름과 마침표(.)가 붙습니다. 예를 들어 다음 시그니처에서 시퀀스 다이어그램을 생성하고 프로젝트에 자동으로 추가하지 않으면 이 문제가 발생합니다.
|
가능하면 인터페이스 이름과 마침표(.)를 포함하지 마십시오. 또는 시퀀스 다이어그램 생성 대화 상자에서 프로젝트에 시퀀스 다이어그램을 자동으로 추가합니다. |
시퀀스 다이어그램을 생성하는 데 시간이 너무 오래 걸립니다. 또는 시퀀스 다이어그램을 다시 열 때 작동이 중단됩니다. 컴퓨터 구성에 따라 시퀀스 다이어그램이 빠른 시간 내에 생성하기에 너무 커서 다이어그램을 닫았다가 다시 열 때 메모리 부족으로 Visual Studio 작동이 중단될 수 있습니다. 예를 들어 시퀀스 다이어그램의 수명선이 390개이고 메시지가 19,000개일 경우 다이어그램 파일은 85MB를 초과합니다. |
호출 수준을 낮추고, 불필요한 네임스페이스를 필터링하고, 속성과 이벤트를 제거하는 등의 작업을 통해 다이어그램의 범위를 줄입니다. |