다음을 통해 공유


레이어 다이어그램: 지침

Visual Studio Ultimate에서 레이어 다이어그램을 만들어 높은 수준에서 앱 아키텍처를 설명할 수 있습니다. 코드가 디자인과 일치하는지 확인하려면 Visual Studio Ultimate 또는 Visual Studio Premium에서 레이어 다이어그램을 사용하여 코드의 유효성을 검사합니다. 빌드 프로세스에 레이어 유효성 검사를 포함할 수도 있습니다. Channel 9 비디오: 레이어 다이어그램을 사용하여 아키텍처 디자인 및 유효성 검사를 참조하세요.

레이어 다이어그램의 정의

전형적인 아키텍처 다이어그램처럼 레이어 다이어그램은 디자인의 주요 구성 요소나 기능 단위와 해당 상호 종속성을 식별합니다. 레이어라고 하는 다이어그램의 각 노드는 네임 스페이스, 프로젝트 또는 다른 아티팩트의 논리 그룹을 나타냅니다. 디자인에 존재해야 하는 종속성을 그릴 수 있습니다. 전형적인 아키텍처 다이어그램과 달리 소스 코드의 실제 종속성이 사용자가 지정한 의도한 종속성에 부합되는지 확인할 수 있습니다. 유효성 검사를 Team Foundation Server에 대한 정기 빌드의 일부로 포함하여 프로그램 코드가 향후 변경되더라도 시스템의 아키텍처와 계속 일치하도록 할 수 있습니다. 레이어 다이어그램: 참조을 참조하세요.

레이어 다이어그램을 사용하여 응용 프로그램을 디자인 또는 업데이트하는 방법

다음 단계는 개발 프로세스 내에서 레이어 다이어그램의 사용 방법을 간단히 설명합니다. 이 항목의 뒷부분에 나오는 섹션에서는 각 단계에 대해 좀 더 자세히 설명합니다. 새 디자인을 개발하는 경우 기존 코드를 참조하는 단계는 생략하도록 합니다.

참고

이러한 단계는 대략적인 순서로 나타납니다.작업을 중복하고 상황에 맞게 순서를 변경하며 프로젝트에서 각 반복이 시작될 때 다시 확인할 수 있습니다.

  1. 전체 응용 프로그램 또는 내부의 레이어에 대해 레이어 다이어그램을 만듭니다.

  2. 응용 프로그램의 주요 기능 영역 또는 구성 요소를 나타내도록 레이어를 정의합니다. 해당 기능에 따라 이러한 레이어의 이름을 지정합니다(예: "프레젠테이션" 또는 "서비스"). Visual Studio 솔루션이 있는 경우에는 각 레이어를 아티팩트(예: 프로젝트, 네임스페이스, 파일 등) 컬렉션에 연결할 수 있습니다.

  3. 레이어 간의 기존 종속성을 검색합니다.

  4. 코드에 반영할 업데이트된 디자인을 나타내도록 레이어 및 종속성을 편집합니다.

  5. 주요 아키텍처 블록 또는 구성 요소를 나타내는 레이어를 만들고 각 레이어가 서로를 사용하는 방식을 나타내는 종속성을 정의하여 응용 프로그램의 새 영역을 디자인합니다.

  6. 동료와 논의할 수 있도록 다이어그램의 레이아웃 및 모양을 편집합니다.

  7. 레이어 다이어그램에 대해 코드 유효성을 검사하여 코드와 필요한 아키텍처 간의 충돌을 강조 표시합니다.

  8. 새 아키텍처에 맞게 코드를 업데이트합니다. 유효성 검사 결과로 충돌이 나타나지 않을 때까지 반복적으로 코드를 개발하고 리팩터링합니다.

  9. 코드가 디자인과 계속 일치하도록 하기 위해 빌드 프로세스에 레이어 유효성 검사를 포함합니다.

레이어 다이어그램 만들기

레이어 다이어그램은 모델링 프로젝트 내에서 만들어져야 합니다. 기존 모델링 프로젝트에 새 레이어 다이어그램을 추가하거나 레이어 다이어그램에 대해 새 모델링 프로젝트를 만들거나 동일한 모델링 프로젝트 내에서 기존 레이어 다이어그램을 복사할 수 있습니다.

중요

한 모델링 프로젝트에서 다른 모델링 프로젝트나 솔루션의 다른 위치로 기존 레이어 다이어그램을 추가하거나 끌어 놓거나 복사하지 않도록 합니다.이러한 방식으로 복사된 레이어 다이어그램은 다이어그램을 수정하더라도 원본 다이어그램과 동일한 참조를 갖게 됩니다.그러면 레이어 유효성 검사가 제대로 작동하지 않고 다이어그램을 열려고 할 때 요소 누락이나 기타 오류 등의 다른 문제가 발생할 수 있습니다.

코드에서 레이어 다이어그램 만들기을 참조하세요.

기능 영역 또는 구성 요소를 나타내도록 레이어 정의

레이어는 아티팩트(예: 프로젝트, 코드 파일, 네임스페이스, 클래스 및 메서드)의 논리적 그룹을 나타냅니다. Visual C# .NET 및 Visual Basic.NET 프로젝트의 아티팩트에서 레이어를 만들거나 문서(예: Word 파일 또는 PowerPoint 프레젠테이션)를 연결하여 사양 또는 계획을 레이어에 연결할 수 있습니다. 각 레이어는 다이어그램에서 직사각형으로 나타나고 그에 연결된 아티팩트의 수를 보여줍니다. 레이어에는 보다 구체적인 작업을 설명하는 중첩된 레이어가 포함될 수 있습니다.

일반적인 지침대로 해당 기능에 따라 레이어의 이름을 지정합니다(예: "프레젠테이션" 또는 "서비스"). 아티팩트가 밀접하게 상호 종속되는 경우 동일한 레이어에 배치합니다. 아티팩트를 개별적으로 업데이트하거나 별도 응용 프로그램에서 사용할 수 있는 경우 다른 레이어에 배치합니다. 레이어링 패턴에 대해 알아보려면 Patterns & Practices 사이트(https://go.microsoft.com/fwlink/?LinkId=145794)를 방문하세요.

레이어에 연결할 수 있지만 레이어 다이어그램의 유효성 검사를 지원하지 않는 특정 유형의 아티팩트가 있습니다.아티팩트가 유효성 검사를 지원하는지 여부를 확인하려면 레이어 탐색기를 열고 아티팩트 링크의 유효성 검사 지원 속성을 검토합니다.레이어 간의 기존 종속성 찾기를 참조하세요.

익숙하지 않은 응용 프로그램을 업데이트할 때 종속성 그래프를 사용하여 코드를 쉽게 탐색하고 이해할 수 있습니다. 이러한 그래프는 코드에서 클러스터 및 종속성을 찾는 데 유용합니다. 아키텍처 탐색기를 사용하여 네임스페이스와 클래스를 탐색할 수도 있습니다. 이러한 요소는 종종 기존 레이어에 대응합니다. 이를 통해 아티팩트를 레이어에 쉽게 할당할 수 있습니다. 그런 다음 레이어 다이어그램을 사용하여 코드를 업데이트할 수 있습니다.

자세한 내용은 다음 항목을 참조하십시오.

레이어 간의 기존 종속성 찾기

한 레이어와 연결된 아티팩트에 다른 레이어와 연결된 아티팩트에 대한 참조가 있을 때마다 종속성이 존재합니다. 예를 들어 한 레이어의 클래스가 다른 레이어의 클래스를 포함하는 변수를 선언하는 경우입니다. 리버스 엔지니어링하여 기존 종속성을 검색할 수 있습니다.

참고

일부 아티팩트 종류의 경우 종속성을 리버스 엔지니어링할 수 없습니다.예를 들어 텍스트 파일에 연결된 레이어를 소스 또는 대상으로 하는 종속성은 리버스 엔지니어링되지 않습니다.리버스 엔지니어링할 수 있는 종속성이 있는 아티팩트를 확인하려면 하나 또는 여러 개의 레이어를 마우스 오른쪽 단추로 클릭하고 링크 보기를 클릭합니다.그런 다음 레이어 탐색기에서 유효성 검사 지원 열을 검토합니다.이 열에 False가 표시된 아티팩트에 대해서는 종속성이 리버스 엔지니어링되지 않습니다.

레이어 간 기존 종속성을 리버스 엔지니어링하려면

  • 하나 또는 여러 레이어를 선택하고 선택한 레이어를 마우스 오른쪽 단추로 클릭한 다음 종속성 생성을 클릭합니다.

일반적으로 존재할 수 없는 일부 종속성이 나타나는데, 이러한 종속성을 편집하여 계획된 디자인에 맞출 수 있습니다.

레이어 및 종속성을 편집하여 계획된 디자인 표시

시스템에 대해 변경할 내용 또는 계획된 아키텍처를 나타내려는 경우 다음 단계에 따라 레이어 다이어그램을 편집합니다. 또한 확장하기 전에 리팩터링을 약간 변경하여 코드의 구조를 향상시키는 것도 고려할 수 있습니다. 코드 구조 개선을 참조하세요.

수행할 단계

있지 말아야 할 종속성 삭제

종속성을 클릭한 다음 Delete 키를 누릅니다.

종속성 방향 변경 또는 제한

방향 속성을 설정합니다.

새 종속성 만들기

종속성양방향 종속성 도구를 사용합니다.

종속성을 여러 개 그리려면 이 도구를 두 번 클릭합니다. 작업을 마쳤으면 포인터 도구를 클릭하거나 Esc 키를 누릅니다.

레이어와 연결된 아티팩트가 지정된 네임스페이스에 종속될 수 없도록 지정합니다.

레이어의 사용할 수 없는 네임스페이스 종속성 속성에 네임스페이스를 입력합니다. 세미콜론(;)을 사용하여 네임스페이스를 구분합니다.

레이어와 연결된 아티팩트가 지정된 네임스페이스에 속하지 않도록 지정합니다.

레이어의 사용할 수 없는 네임스페이스 속성에 네임스페이스를 입력합니다. 세미콜론(;)을 사용하여 네임스페이스를 구분합니다.

레이어와 연결된 아티팩트가 지정된 네임스페이스 중 하나에 속해야 하도록 지정합니다.

레이어의 필요한 네임스페이스 속성에 네임스페이스를 입력합니다. 세미콜론(;)을 사용하여 네임스페이스를 구분합니다.

코드 구조 개선

리팩터링을 변경하면 응용 프로그램의 동작에 영향을 주지 않지만 나중에 코드를 보다 쉽게 변경하고 확장하는 데 도움이 되도록 개선됩니다. 구조가 적절한 코드의 디자인은 레이어 다이어그램으로 추출하기 쉽습니다.

예를 들어 각 네임스페이스에 대한 레이어를 코드에 만든 다음 종속성을 리버스 엔지니어링하면 레이어 간에 최소한의 단방향 종속성만 존재하게 됩니다. 클래스 또는 메서드를 레이어로 사용하여 더 자세한 다이어그램을 만드는 경우에도 같은 특성을 갖게 됩니다.

이러한 경우가 아니면 수명 주기 동안 코드를 변경하기가 더 어려우며 레이어 다이어그램을 사용하여 유효성을 검사하는 것이 적절하지 않게 됩니다.

응용 프로그램의 새 영역 디자인

새 프로젝트의 개발을 시작하거나 새 프로젝트에서 새 영역을 개발하게 될 경우 코드 개발을 시작하기 전에 레이어 및 종속성을 그리면 주요 구성 요소를 식별하는 데 도움이 될 수 있습니다.

  • 가능한 경우 레이어 다이어그램에 식별 가능한 아키텍처 패턴을 표시합니다. 예를 들어 데스크톱 응용 프로그램에 설명하는 레이어 다이어그램에 프레젠테이션, 도메인 논리 및 데이터 저장소와 같은 레이어를 포함할 수 있습니다. 응용 프로그램 내의 단일 기능에 대해 설명하는 레이어 다이어그램에는 모델, 뷰 및 컨트롤러와 같은 레이어가 있을 수 있습니다. 이러한 패턴에 대한 자세한 내용은 Patterns & Practices: 응용 프로그램 아키텍처를 참조하세요.

    비슷한 패턴을 자주 만드는 경우 사용자 지정 도구를 만듭니다. 방법: 사용자 지정 모델링 도구 상자 항목 정의을 참조하세요.

  • 네임스페이스, 클래스 또는 구성 요소와 같은 코드 아티팩트를 각 레이어에 대해 만듭니다. 이렇게 하면 보다 쉽게 코드를 따라가고 코드 아티팩트를 레이어에 연결할 수 있습니다. 각 아티팩트를 만드는 즉시 해당 레이어에 연결합니다.

  • 클래스 및 기타 아티팩트가 레이어에 이미 연결된 네임스페이스와 같은 더 큰 아티팩트에 속하는 경우 이러한 항목을 레이어에 연결할 필요가 없습니다.

  • 새 기능에 대해 새 다이어그램을 만듭니다. 일반적으로 전체 응용 프로그램을 설명하는 하나 이상의 레이어 다이어그램이 있게 됩니다. 응용 프로그램 내에서 새 기능을 디자인하는 경우 기존 다이어그램에 추가하거나 기존 다이어그램을 변경하지 않도록 합니다. 대신 코드의 새 부분을 반영하는 고유한 다이어그램을 만듭니다. 새 다이어그램의 레이어에는 새로운 기능에 대한 프레젠테이션, 도메인 논리 및 데이터베이스 레이어가 포함될 수 있습니다.

    응용 프로그램을 빌드할 경우 전체 다이어그램과 더 자세한 기능 다이어그램에 대해 코드의 유효성을 검사합니다.

프레젠테이션 및 토론을 위한 레이아웃 편집

레이어 및 종속성을 식별하거나 팀 멤버와 논의하는 데 도움이 되도록 다음과 같은 방법으로 모양 및 다이어그램의 레이아웃을 편집합니다.

  • 레이어의 크기, 모양 및 위치를 변경합니다.

  • 레이어의 색과 종속성을 변경합니다.

    • 하나 이상의 레이어 또는 종속성을 선택하고 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 속성 창에서 속성을 편집합니다.

다이어그램에 대해 코드 유효성 검사

다이어그램을 편집한 경우 언제든지 수동으로 또는 로컬 빌드 또는 Team Foundation Build를 실행할 때마다 자동으로 코드에 대해 유효성을 검사할 수 있습니다.

참조

새 아키텍처에 맞게 코드 업데이트

일반적으로 업데이트된 레이어 다이어그램에 대해 코드 유효성을 처음 검사하면 오류가 표시됩니다. 이러한 오류에는 다음과 같은 여러 원인이 있을 수 있습니다.

  • 잘못된 레이어에 아티팩트가 할당되었습니다. 이 경우 아티팩트를 이동합니다.

  • 클래스 등의 아티팩트가 아키텍처에 맞지 않는 방식으로 다른 클래스를 사용합니다. 이 경우 코드를 리팩터링하여 종속성을 제거합니다.

이러한 오류를 해결하려면 유효성 검사 중 더 이상 오류가 나타나지 않을 때까지 코드를 업데이트합니다. 이것은 일반적으로 반복 프로세스입니다. 이러한 오류에 대한 자세한 내용은 레이어 다이어그램에 대해 코드 유효성 검사를 참조하세요.

참고

코드를 개발하거나 리팩터링할 경우 레이어 다이어그램에 연결할 새 아티팩트가 있을 수 있습니다.그러나 예를 들어 기존 네임스페이스를 나타내는 레이어가 있고 새 코드가 해당 네임스페이스에 자료만 더 추가한다면 이러한 아티팩트가 필요하지 않을 수 있습니다.

개발 과정에서 유효성 검사 중 보고된 충돌 문제 중 일부를 표시하지 않을 수 있습니다. 예를 들어 이미 해결되었거나 특정 시나리오와 관계가 없는 오류를 표시하지 않을 수 있습니다. 오류를 표시하지 않는 경우에는 Team Foundation에 작업 항목을 기록하는 것이 좋습니다. 이 작업을 수행하려면 레이어 다이어그램에 대해 코드 유효성 검사를 참조하세요.

빌드 프로세스에 레이어 유효성 검사 포함

나중에 코드를 변경할 때도 레이어 다이어그램을 따르게 하려면 솔루션의 표준 빌드 프로세스에 레이어 유효성 검사를 포함합니다. 다른 팀 멤버가 솔루션을 빌드할 때마다 코드 및 레이어 다이어그램의 종속성 간 차이가 빌드 오류로 보고됩니다. 빌드 프로세스에 레이어 유효성 검사를 포함하는 방법에 대한 자세한 내용은 레이어 다이어그램에 대해 코드 유효성 검사를 참조하세요.

참고 항목

개념

레이어 다이어그램: 참조

코드에서 레이어 다이어그램 만들기