Udostępnij za pośrednictwem


Diagramy zależności: wskazówki

Opisz architekturę aplikacji na wysokim poziomie, tworząc diagramy zależności w programie Visual Studio. Upewnij się, że kod pozostaje zgodny z tym projektem, sprawdzając kod za pomocą diagramu zależności. W procesie kompilacji można również uwzględnić walidację warstwy.

Aby sprawdzić, które wersje programu Visual Studio obsługują tę funkcję, zobacz Obsługa wersji dla narzędzi do architektury i modelowania.

Uwaga

Diagramy zależności dla projektów platformy .NET Core są obsługiwane począwszy od programu Visual Studio 2019 w wersji 16.2.

Co to jest diagram zależności?

Podobnie jak w przypadku tradycyjnego diagramu architektury, diagram zależności identyfikuje główne składniki lub jednostki funkcjonalne projektu i ich współzależności. Każdy węzeł na diagramie, nazywany warstwą, reprezentuje logiczną grupę przestrzeni nazw, projektów lub innych artefaktów. Możesz narysować zależności, które powinny istnieć w projekcie. W przeciwieństwie do tradycyjnego diagramu architektury można sprawdzić, czy rzeczywiste zależności w kodzie źródłowym są zgodne z określonymi zależnościami. Dzięki dokonaniu weryfikacji części regularnej kompilacji na serwerze Team Foundation Server można upewnić się, że kod programu nadal jest zgodny z architekturą systemu poprzez przyszłe zmiany. Zobacz Diagramy zależności: odwołanie.

Jak projektować lub aktualizować aplikację za pomocą diagramów zależności

Poniższe kroki zawierają omówienie sposobu używania diagramów zależności w procesie programowania. W kolejnych sekcjach w tym temacie opisano więcej szczegółów na temat poszczególnych kroków. Jeśli tworzysz nowy projekt, pomiń kroki odwołujące się do istniejącego kodu.

Uwaga

Te kroki są wyświetlane w przybliżonej kolejności. Prawdopodobnie chcesz nakładać się na zadania, zmienić ich kolejność, aby odpowiadały własnej sytuacji, i ponownie przejrzeć je na początku każdej iteracji w projekcie.

  1. Utwórz diagram zależności dla całej aplikacji lub warstwy w niej.

  2. Zdefiniuj warstwy do reprezentowania podstawowych obszarów funkcjonalnych lub składników aplikacji. Nazwij te warstwy zgodnie z ich funkcją, na przykład "Prezentacja" lub "Usługi". Jeśli masz rozwiązanie programu Visual Studio, możesz skojarzyć każdą warstwę z kolekcją artefaktów, takich jak projekty, przestrzenie nazw, pliki itd.

  3. Odnajdź istniejące zależności między warstwami.

  4. Edytuj warstwy i zależności , aby pokazać zaktualizowany projekt, który ma odzwierciedlać kod.

  5. Projektuj nowe obszary aplikacji , tworząc warstwy reprezentujące główne bloki architektury lub składniki i definiując zależności, aby pokazać, jak każda warstwa używa innych.

  6. Zmodyfikuj układ i wygląd diagramu , aby ułatwić omówienia go współpracownikom.

  7. Zweryfikuj kod względem diagramu zależności, aby wyróżnić konflikty między kodem a wymaganą architekturą.

  8. Zaktualizuj kod, aby był zgodny z nową architekturą. Iteracyjne opracowywanie i refaktoryzacja kodu do momentu, gdy walidacja nie pokaże żadnych konfliktów.

  9. Uwzględnij walidację warstwy w procesie kompilacji, aby upewnić się, że kod będzie nadal zgodny z projektem.

Tworzenie diagramu zależności

Diagram zależności musi zostać utworzony wewnątrz projektu modelowania. Możesz dodać nowy diagram zależności do istniejącego projektu modelowania, utworzyć nowy projekt modelowania dla diagramu zależności lub skopiować istniejący diagram zależności w ramach tego samego projektu modelowania.

Ważne

Nie należy dodawać, przeciągać ani kopiować istniejącego diagramu zależności z projektu modelowania do innego projektu modelowania lub do innej lokalizacji w rozwiązaniu. Diagram zależności, który jest kopiowany w ten sposób, będzie miał takie same odwołania jak oryginalny diagram, nawet jeśli zmodyfikujesz diagram. Uniemożliwi to prawidłowe działanie walidacji warstwy i może powodować inne problemy, takie jak brakujące elementy lub inne błędy podczas próby otwarcia diagramu.

Zobacz Tworzenie diagramów zależności na podstawie kodu.

Definiowanie warstw do reprezentowania obszarów funkcjonalnych lub składników

Warstwy reprezentują logiczne grupy artefaktów, takie jak projekty, pliki kodu, przestrzenie nazw, klasy i metody. Warstwy można tworzyć na podstawie artefaktów z projektów Visual C# i Visual Basic albo dołączać specyfikacje lub plany do warstwy, łącząc dokumenty, takie jak pliki programu Word lub prezentacje programu PowerPoint. Każda warstwa jest wyświetlana jako prostokąt na diagramie i przedstawia liczbę połączonych z nim artefaktów. Warstwa może zawierać zagnieżdżone warstwy, które opisują bardziej szczegółowe zadania.

Ogólnie rzecz biorąc, warstwy nazw zgodnie z ich funkcją, na przykład "Prezentacja" lub "Usługi". Jeśli artefakty są ściśle zależne, umieść je w tej samej warstwie. Jeśli artefakty mogą być aktualizowane oddzielnie lub używane w oddzielnych aplikacjach, umieść je w różnych warstwach.

Napiwek

Istnieją pewne typy artefaktów, które można połączyć z warstwami, ale nie obsługują walidacji względem diagramu zależności. Aby sprawdzić, czy artefakt obsługuje walidację, otwórz Eksploratora warstwy, aby sprawdzić właściwość Obsługuje walidację linku artefaktu. Zobacz Odnajdywanie istniejących zależności między warstwami.

Podczas aktualizowania nieznanej aplikacji można również tworzyć mapy kodu. Te diagramy mogą ułatwić odnajdywanie wzorców i zależności podczas eksplorowania kodu. Użyj Eksplorator rozwiązań, aby eksplorować przestrzenie nazw i klasy, które często odpowiadają dobrze istniejącym warstwom. Przypisz te artefakty kodu do warstw, przeciągając je z Eksplorator rozwiązań do diagramów zależności. Następnie możesz użyć diagramów zależności, aby ułatwić aktualizowanie kodu i zachowanie ich spójności z projektem.

Zobacz:

Odnajdywanie istniejących zależności między warstwami

Zależność istnieje wszędzie tam, gdzie artefakt, który jest skojarzony z jedną warstwą zawiera odwołanie do artefaktu skojarzonego z inną warstwą. Na przykład klasa w jednej warstwie deklaruje zmienną, która zawiera klasę w innej warstwie. Istniejące zależności można odnaleźć przez ich odwrotną inżynierię.

Uwaga

Zależności nie mogą być odtwarzane dla niektórych rodzajów artefaktów. Na przykład nie zostaną odtworzone żadne zależności z lub do warstwy, która jest połączona z plikiem tekstowym. Aby zobaczyć, które artefakty mają zależności, które można odtworzyć, kliknij prawym przyciskiem myszy jedną lub wiele warstw, a następnie kliknij polecenie Wyświetl łącza. W Eksploratorze warstw sprawdź kolumnę Obsługuje walidację. Zależności nie będą odtwarzane dla artefaktów, dla których ta kolumna zawiera wartość False.

Aby odtworzyć istniejące zależności między warstwami

Wybierz jedną warstwę lub wiele warstw, kliknij prawym przyciskiem myszy wybraną warstwę, a następnie kliknij polecenie Generuj zależności.

Zazwyczaj zobaczysz niektóre zależności, które nie powinny istnieć. Możesz edytować te zależności, aby dopasować je do zamierzonego projektu.

Edytowanie warstw i zależności w celu pokazania zamierzonego projektu

Aby opisać zmiany, które mają być wprowadzane do systemu lub zamierzonej architektury, wykonaj następujące kroki, aby edytować diagram zależności. Możesz również rozważyć wprowadzenie pewnych zmian refaktoryzacji, aby poprawić strukturę kodu przed jego rozszerzeniem. Zobacz Ulepszanie struktury kodu.

Do Wykonaj te kroki
Usuwanie zależności, która nie powinna istnieć Kliknij zależność, a następnie naciśnij klawisz DELETE.
Zmień lub ogranicz kierunek zależności Ustaw właściwość Direction .
Tworzenie nowych zależności Użyj narzędzi zależności i zależności dwukierunkowych.

Aby narysować wiele zależności, kliknij dwukrotnie narzędzie. Po zakończeniu kliknij narzędzie Wskaźnik lub naciśnij klawisz ESC .
Określanie, że artefakty skojarzone z warstwą nie mogą zależeć od określonych przestrzeni nazw Wpisz przestrzenie nazw we właściwości Zależności przestrzeni nazw zabronionej warstwy. Użyj średnika (;), aby oddzielić przestrzenie nazw.
Określanie, że artefakty skojarzone z warstwą nie mogą należeć do określonych przestrzeni nazw Wpisz przestrzenie nazw we właściwości Zabronione przestrzenie nazw warstwy. Użyj średnika (;), aby oddzielić przestrzenie nazw.
Określanie, że artefakty skojarzone z warstwą muszą należeć do jednej z określonych przestrzeni nazw Wpisz przestrzeń nazw we właściwości Wymagane przestrzenie nazw warstwy. Użyj średnika (;), aby oddzielić przestrzenie nazw.

Ulepszanie struktury kodu

Zmiany refaktoryzacji to ulepszenia, które nie wpływają na zachowanie aplikacji, ale ułatwiają zmianę i rozszerzanie kodu w przyszłości. Dobrze ustrukturyzowany kod ma projekt, który można łatwo wyodrębnić z diagramu zależności.

Jeśli na przykład utworzysz warstwę dla każdej przestrzeni nazw w kodzie, a następnie odwrotnie utworzysz zależności, między warstwami powinien istnieć minimalny zestaw zależności jednokierunkowych. Jeśli utworzysz bardziej szczegółowy diagram przy użyciu klas lub metod jako warstw, wynik powinien również mieć te same cechy.

Jeśli tak nie jest, kod będzie trudniejszy do zmiany w całym jego życiu i będzie mniej odpowiedni do walidacji przy użyciu diagramów zależności.

Projektowanie nowych obszarów aplikacji

Podczas tworzenia nowego projektu lub nowego obszaru w nowym projekcie można narysować warstwy i zależności, aby ułatwić zidentyfikowanie głównych składników przed rozpoczęciem opracowywania kodu.

  • Pokaż możliwe możliwe do zidentyfikowania wzorce architektury na diagramach zależności. Na przykład diagram zależności opisujący aplikację klasyczną może zawierać warstwy, takie jak Prezentacja, Logika domeny i Magazyn danych. Diagram zależności, który obejmuje jedną funkcję w aplikacji, może zawierać warstwy, takie jak Model, Widok i Kontroler.

  • Utwórz artefakt kodu dla każdej warstwy , takiej jak przestrzeń nazw, klasa lub składnik. Ułatwia to obserwowanie kodu i łączenie artefaktów kodu z warstwami. Po utworzeniu każdego artefaktu połącz go z odpowiednią warstwą.

  • Nie trzeba łączyć większości klas i innych artefaktów z warstwami , ponieważ należą one do większych artefaktów, takich jak przestrzenie nazw, które zostały już połączone z warstwami.

  • Utwórz nowy diagram dla nowej funkcji. Zazwyczaj istnieje co najmniej jeden diagram zależności opisujący całą aplikację. Jeśli projektujesz nową funkcję w aplikacji, nie dodawaj ani nie zmieniaj istniejących diagramów. Zamiast tego utwórz własny diagram, który odzwierciedla nowe części kodu. Warstwy na nowym diagramie mogą obejmować prezentację, logikę domeny i warstwy bazy danych dla nowej funkcji.

    Podczas tworzenia aplikacji kod zostanie zweryfikowany zarówno na ogólnym diagramie, jak i na bardziej szczegółowym diagramie funkcji.

Edytowanie układu prezentacji i dyskusji

Aby ułatwić identyfikowanie warstw i zależności lub omawianie ich z członkami zespołu, zmodyfikuj wygląd i układ diagramu w następujący sposób:

  • Zmień rozmiary, kształty i pozycje warstw.

  • Zmień kolory warstw i zależności.

    • Wybierz co najmniej jedną warstwę lub zależności, kliknij prawym przyciskiem myszy, a następnie kliknij polecenie Właściwości. W oknie Właściwości edytuj właściwość Color.

Weryfikowanie kodu względem diagramu

Po zmodyfikowaniu diagramu możesz go zweryfikować ręcznie w dowolnym momencie lub automatycznie za każdym razem, gdy tworzysz.

Zobacz:

Aktualizowanie kodu w celu zachowania zgodności z nową architekturą

Zazwyczaj błędy są wyświetlane po raz pierwszy podczas weryfikowania kodu na zaktualizowanym diagramie zależności. Te błędy mogą mieć kilka przyczyn:

  • Artefakt jest przypisany do niewłaściwej warstwy. W takim przypadku przenieś artefakt.

  • Artefakt, taki jak klasa, używa innej klasy w sposób, który powoduje konflikt z architekturą. W tym przypadku zrefaktoryzuj kod, aby usunąć zależność.

Aby rozwiązać te błędy, aktualizuj kod, dopóki nie przestaną pojawiać się błędy podczas walidacji. Jest to zwykle proces iteracyjny. Aby uzyskać więcej informacji na temat tych błędów, zobacz Weryfikowanie kodu za pomocą diagramów zależności.

Uwaga

Podczas opracowywania lub refaktoryzacji kodu mogą istnieć nowe artefakty służące do łączenia się z diagramem zależności. Jednak może to nie być konieczne, na przykład w przypadku warstw reprezentujących istniejące przestrzenie nazw, a nowy kod dodaje tylko więcej materiałów do tych przestrzeni nazw.

Podczas procesu projektowania możesz pominąć niektóre konflikty zgłoszone podczas walidacji. Na przykład możesz pominąć błędy, które są już poprawiane lub które nie są istotne w konkretnym scenariuszu. W przypadku pomijania błędu dobrym rozwiązaniem jest zarejestrowanie elementu roboczego w programie Team Foundation. Aby wykonać to zadanie, zobacz Weryfikowanie kodu za pomocą diagramów zależności.

Uwzględnij walidację warstwy w procesie kompilacji

Aby zapewnić, że przyszłe zmiany w kodzie są zgodne z diagramami zależności, uwzględnij walidację warstwy w standardowym procesie kompilacji rozwiązania. Za każdym razem, gdy inni członkowie zespołu tworzą rozwiązanie, wszelkie różnice między zależnościami w kodzie a diagramem zależności będą zgłaszane jako błędy kompilacji. Aby uzyskać więcej informacji na temat dołączania walidacji warstw w procesie kompilacji, zobacz Weryfikowanie kodu za pomocą diagramów zależności.