Visual Studio에서 종속성 다이어그램 을 만들어 앱의 아키텍처를 개략적으로 설명합니다. 종속성 다이어그램을 사용하여 코드의 유효성을 검사하여 코드가 이 디자인과 일관되게 유지되는지 확인합니다. 빌드 프로세스에 계층 유효성 검사를 포함할 수도 있습니다.
이 기능을 지원하는 Visual Studio 버전을 확인하려면 아키텍처 및 모델링 도구에 대한 Edition 지원을 참조하세요.
비고
.NET Core 프로젝트에 대한 종속성 다이어그램은 Visual Studio 2019 버전 16.2부터 지원됩니다.
종속성 다이어그램이란?
기존 아키텍처 다이어그램과 마찬가지로 종속성 다이어그램은 디자인의 주요 구성 요소 또는 기능 단위와 상호 종속성을 식별합니다. 계층이라고 하는 다이어그램의 각 노드는 네임스페이스, 프로젝트 또는 기타 아티팩트 논리 그룹을 나타냅니다. 디자인에 있어야 하는 종속성을 그릴 수 있습니다. 기존 아키텍처 다이어그램과 달리 소스 코드의 실제 종속성이 지정한 의도한 종속성을 준수하는지 확인할 수 있습니다. Team Foundation Server에서 정기적인 빌드의 유효성 검사를 수행하면 프로그램 코드가 향후 변경을 통해 시스템 아키텍처를 계속 준수하도록 할 수 있습니다. 종속성 다이어그램: 참조를 참조하세요.
종속성 다이어그램을 사용하여 앱을 디자인하거나 업데이트하는 방법
다음 단계에서는 개발 프로세스 내에서 종속성 다이어그램을 사용하는 방법에 대한 개요를 제공합니다. 이 항목의 뒷부분에 나오는 섹션에서는 각 단계에 대해 자세히 설명합니다. 새 디자인을 개발하는 경우 기존 코드를 참조하는 단계를 생략합니다.
비고
이러한 단계는 대략적인 순서로 표시됩니다. 작업을 겹치고, 사용자 고유의 상황에 맞게 순서를 변경하고, 프로젝트의 각 반복을 시작할 때 다시 확인하려고 할 것입니다.
전체 애플리케이션 또는 그 안에 있는 계층에 대한 종속성 다이어그램을 만듭니다.
애플리케이션의 기본 기능 영역 또는 구성 요소를 나타내는 레이어를 정의합니다. 함수에 따라 이러한 레이어의 이름을 지정합니다(예: "Presentation" 또는 "Services"). Visual Studio 솔루션이 있는 경우 각 계층을 프로젝트, 네임스페이스, 파일 등의 아티팩트 컬렉션과 연결할 수 있습니다.
레이어 간의 기존 종속성을 검색합니다.
레이어 및 종속성을 편집 하여 코드가 반영할 업데이트된 디자인을 표시합니다.
귀하의 애플리케이션의 새로운 영역을 설계하십시오 주 아키텍처 블록 또는 구성 요소를 나타내는 레이어를 만들고, 각 레이어가 다른 레이어를 어떻게 사용하는지 보여주기 위해 종속성을 정의하십시오.
다이어그램의 레이아웃과 모양을 편집 하여 동료와 토론할 수 있습니다.
종속성 다이어그램에 대해 코드의 유효성 을 검사하여 필요한 코드와 아키텍처 간의 충돌을 강조 표시합니다.
새 아키텍처를 준수하도록 코드를 업데이트합니다. 유효성 검사에서 충돌이 표시되지 않을 때까지 반복적으로 코드를 개발하고 리팩터링합니다.
코드가 디자인을 계속 준수하도록 빌드 프로세스에 계층 유효성 검사를 포함합니다.
종속성 다이어그램 만들기
종속성 다이어그램은 모델링 프로젝트 내에 만들어야 합니다. 기존 모델링 프로젝트에 새 종속성 다이어그램을 추가하거나, 종속성 다이어그램에 대한 새 모델링 프로젝트를 만들거나, 동일한 모델링 프로젝트 내에서 기존 종속성 다이어그램을 복사할 수 있습니다.
중요합니다
기존 종속성 다이어그램을 모델링 프로젝트에서 다른 모델링 프로젝트 또는 솔루션의 다른 위치로 추가, 끌기 또는 복사하지 마세요. 이러한 방식으로 복사되는 종속성 다이어그램은 다이어그램을 수정하더라도 원래 다이어그램과 동일한 참조를 갖습니다. 이렇게 하면 계층 유효성 검사가 제대로 작동하지 않으며 다이어그램을 열려고 할 때 누락된 요소 또는 기타 오류와 같은 다른 문제가 발생할 수 있습니다.
기능 영역 또는 구성 요소를 나타내는 레이어 정의
레이어는 프로젝트, 코드 파일, 네임스페 이스, 클래스 및 메서드와 같은 아티팩트 논리 그룹을 나타냅니다. Visual C# 및 Visual Basic 프로젝트의 아티팩트에서 레이어를 만들거나 Word 파일 또는 PowerPoint 프레젠테이션과 같은 문서를 연결하여 사양 또는 계획을 레이어에 연결할 수 있습니다. 각 레이어는 다이어그램에 사각형으로 나타나고 연결된 아티팩트 수를 보여 줍니다. 계층에는 보다 구체적인 작업을 설명하는 중첩된 계층이 포함될 수 있습니다.
일반적인 지침으로, 해당 함수에 따라 계층의 이름을 지정합니다(예: "Presentation" 또는 "Services"). 아티팩트가 밀접하게 상호 의존적이면 동일한 계층에 배치합니다. 아티팩트가 별도로 업데이트되거나 별도의 애플리케이션에서 사용될 수 있는 경우 다른 계층에 배치합니다.
팁 (조언)
레이어에 연결할 수 있지만 종속성 다이어그램에 대한 유효성 검사를 지원하지 않는 특정 유형의 아티팩트가 있습니다. 아티팩트가 유효성 검사를 지원하는지 확인하려면 계층 탐색기를 열어 아티팩트 링크의 Supports Validation 속성을 검사합니다. 레이어 간의 기존 종속성 검색을 참조하세요.
익숙하지 않은 애플리케이션을 업데이트할 때 코드 맵을 만들 수도 있습니다. 이러한 다이어그램은 코드를 탐색하는 동안 패턴 및 종속성을 검색하는 데 도움이 될 수 있습니다. 솔루션 탐색기를 사용하여 기존 계층에 적합한 네임스페이스 및 클래스를 탐색합니다. 이러한 코드 아티팩트들을 솔루션 탐색기에서 종속성 다이어그램으로 끌어 계층에 할당합니다. 그런 다음 종속성 다이어그램을 사용하여 코드를 업데이트하고 디자인과 일관성을 유지할 수 있습니다.
See:
레이어 간의 기존 종속성 검색
종속성은 한 레이어와 연결된 아티팩트가 다른 레이어와 연결된 아티팩트를 참조하는 위치에 존재합니다. 예를 들어 한 계층의 클래스는 다른 계층에 클래스가 있는 변수를 선언합니다. 기존 종속성을 리버스 엔지니어링하여 검색할 수 있습니다.
비고
특정 종류의 아티팩트에서는 종속성을 리버스 엔지니어링할 수 없습니다. 예를 들어 종속성은 텍스트 파일에 연결된 계층에서 또는 계층으로 리버스 엔지니어링되지 않습니다. 리버스 엔지니어링할 수 있는 종속성이 있는 아티팩트가 있는지 확인하려면 하나 이상의 레이어를 마우스 오른쪽 단추로 클릭한 다음 링크 보기를 클릭합니다. 계층 탐색기에서 지원 유효성 검사 열을 검사합니다. 종속성은 이 열에 False가 표시되는 아티팩트용으로 리버스 엔지니어링되지 않습니다.
레이어 간의 기존 종속성을 리버스 엔지니어링하려면
레이어 하나 또는 여러 레이어를 선택하고 선택한 레이어를 마우스 오른쪽 단추로 클릭한 다음 종속성 생성을 클릭합니다.
일반적으로 존재하지 않아야 하는 일부 종속성이 표시됩니다. 이러한 종속성을 편집하여 원하는 디자인에 맞출 수 있습니다.
레이어 및 종속성을 편집하여 의도한 디자인을 표시합니다.
시스템 또는 의도한 아키텍처에 대한 변경 내용을 설명하려면 다음 단계를 사용하여 종속성 다이어그램을 편집합니다. 또한 확장하기 전에 코드의 구조를 개선하기 위해 일부 리팩터링 변경을 고려할 수 있습니다. 코드 구조 향상을 참조하세요.
| 에서 | 다음 단계 수행 |
|---|---|
| 존재하지 않아야 하는 종속성 삭제 | 종속성을 클릭한 다음 DELETE 키를 누릅니다. |
| 종속성 방향 변경 또는 제한 | Direction 속성을 설정합니다. |
| 새 종속성 만들기 |
종속성 및 양방향 종속성 도구를 사용합니다. 여러 종속성을 그리려면 도구를 두 번 클릭합니다. 완료되면 포인터 도구를 클릭하거나 ESC 키를 누릅니다. |
| 계층과 연결된 아티팩트가 지정된 네임스페이스에 의존할 수 없게 지정 | 레이어의 사용할 수 없는 네임스페이스 종속성 속성에 네임스페이스를 입력합니다. 세미콜론(;)을 사용하여 네임스페이스를 구분합니다. |
| 레이어와 연결된 아티팩트가 지정된 네임스페이스에 속하지 않도록 지정 | 레이어의 사용할 수 없는 네임스페이스 속성에 네임스페이스를 입력합니다 . 세미콜론(;)을 사용하여 네임스페이스를 구분합니다. |
| 레이어와 연결된 아티팩트가 지정된 네임스페이스 중 하나에 속하도록 지정 | 계층의 필수 네임스페이스 속성에 네임스페이스를 입력합니다 . 세미콜론(;)을 사용하여 네임스페이스를 구분합니다. |
코드 구조 개선
리팩터링 변경은 애플리케이션의 동작에 영향을 미치지 않지만 나중에 코드를 더 쉽게 변경하고 확장할 수 있도록 하는 향상된 기능입니다. 잘 구성된 코드에는 종속성 다이어그램으로 추상화하기 쉬운 디자인이 있습니다.
예를 들어 코드에서 각 네임스페이스에 대한 계층을 만든 다음 종속성을 리버스 엔지니어링하는 경우 레이어 간에 최소 단방향 종속성 집합이 있어야 합니다. 클래스 또는 메서드를 레이어로 사용하여 보다 자세한 다이어그램을 만드는 경우 결과에도 동일한 특성이 있어야 합니다.
그렇지 않은 경우 코드는 수명 내내 변경하기가 더 어렵고 종속성 다이어그램을 사용하는 유효성 검사에 덜 적합합니다.
애플리케이션의 새 영역 디자인
새 프로젝트 또는 새 프로젝트의 새 영역 개발을 시작하면 코드 개발을 시작하기 전에 주요 구성 요소를 식별하는 데 도움이 되는 계층 및 종속성을 그릴 수 있습니다.
가능한 경우 종속성 다이어그램에 식별 가능한 아키텍처 패턴을 표시합니다. 예를 들어 데스크톱 애플리케이션을 설명하는 종속성 다이어그램에는 프레젠테이션, 도메인 논리 및 데이터 저장소와 같은 계층이 포함될 수 있습니다. 애플리케이션 내의 단일 기능을 다루는 종속성 다이어그램에는 모델, 뷰 및 컨트롤러와 같은 계층이 있을 수 있습니다.
네임스페이스, 클래스 또는 구성 요소와 같은 각 계층에 대한 코드 아티팩트를 만듭니다. 이렇게 하면 코드를 더 쉽게 따르고 코드 아티팩트 계층에 연결할 수 있습니다. 각 아티팩트가 만들어지자마자 적절한 계층에 연결합니다.
레이어에 이미 연결한 네임스페이스와 같은 더 큰 아티팩트 내에 속하기 때문에 대부분의 클래스 및 기타 아티팩트가 레이어에 연결할 필요가 없습니다.
새 기능에 대한 새 다이어그램을 만듭니다. 일반적으로 전체 애플리케이션을 설명하는 하나 이상의 종속성 다이어그램이 있습니다. 애플리케이션 내에서 새 기능을 디자인하는 경우 기존 다이어그램에 추가하거나 변경하지 마세요. 대신 코드의 새 부분을 반영하는 고유한 다이어그램을 만듭니다. 새 다이어그램의 레이어에는 새 기능에 대한 프레젠테이션, 도메인 논리 및 데이터베이스 계층이 포함될 수 있습니다.
애플리케이션을 빌드할 때 전체 다이어그램과 보다 자세한 기능 다이어그램에 대해 코드의 유효성이 검사됩니다.
프레젠테이션 및 토론용 레이아웃 편집
레이어 및 종속성을 식별하거나 팀 구성원과 토론하는 데 도움이 되도록 다음 방법으로 다이어그램의 모양과 레이아웃을 편집합니다.
레이어의 크기, 도형 및 위치를 변경합니다.
레이어 및 종속성의 색을 변경합니다.
- 하나 이상의 레이어 또는 종속성을 선택하고 마우스 오른쪽 단추를 클릭한 다음 속성을 클릭합니다. 속성 창에서 Color 속성을 편집합니다.
다이어그램에 대한 코드 유효성 검사
다이어그램을 편집한 경우 언제든지 또는 빌드할 때마다 자동으로 코드에 대해 유효성을 검사할 수 있습니다.
See:
새 아키텍처를 준수하도록 코드 업데이트
일반적으로 업데이트된 종속성 다이어그램에 대해 코드의 유효성을 처음으로 검사할 때 오류가 표시됩니다. 이러한 오류에는 다음과 같은 몇 가지 원인이 있을 수 있습니다.
아티팩트가 잘못된 계층에 할당됩니다. 이 경우 아티팩트 이동
클래스와 같은 아티팩트에서는 아키텍처와 충돌하는 방식으로 다른 클래스를 사용합니다. 이 경우 코드를 리팩터링하여 종속성을 제거합니다.
이러한 오류를 해결하려면 유효성 검사 중에 더 이상 오류가 나타나지 않을 때까지 코드를 업데이트합니다. 이는 일반적으로 반복적인 프로세스입니다. 이러한 오류에 대한 자세한 내용은 종속성 다이어그램을 사용하여 코드 유효성 검사를 참조하세요.
비고
코드를 개발하거나 리팩터링할 때 종속성 다이어그램에 연결할 새 아티팩트가 있을 수 있습니다. 그러나 예를 들어 기존 네임스페이스를 나타내는 계층이 있고 새 코드가 해당 네임스페이스에 더 많은 재질만 추가하는 경우 필요하지 않을 수 있습니다.
개발 프로세스 중에 유효성 검사 시 보고된 충돌 중 일부를 억제하고 싶을 수 있습니다. 예를 들어, 이미 해결 중이거나 특정 시나리오에 맞지 않는 오류를 숨기고 싶을 수 있습니다. 오류를 무시할 때, Team Foundation에서 작업 항목을 기록하는 것이 바람직한 방법입니다. 이 작업을 수행하려면 종속성 다이어그램을 사용하여 코드 유효성 검사를 참조하세요.
빌드 프로세스에 계층 유효성 검사 포함
코드의 향후 변경 내용이 종속성 다이어그램을 준수하도록 하려면 솔루션의 표준 빌드 프로세스에 계층 유효성 검사를 포함합니다. 다른 팀 구성원이 솔루션을 빌드할 때마다 코드의 종속성과 종속성 다이어그램 간의 차이는 빌드 오류로 보고됩니다. 빌드 프로세스에 계층 유효성 검사를 포함하는 방법에 대한 자세한 내용은 종속성 다이어그램을 사용하여 코드 유효성 검사를 참조하세요.