Przyjmuję moją pierwszą aplikację na poziomie korporacyjnym i chcę, aby mój zespół modelował całą aplikację ASP.NET MVC C #, zanim jeszcze wybieramy jeden wiersz kodu.
AKTUALIZACJA: To nie była filozoficzna dyskusja na temat tego, kiedy dokumentować / modelować aplikację. Podaj tylko odpowiedzi na „jak” dokumentować / modelować.
Prawda jest taka, że zawsze przeglądałem w tym dziale i nigdy tak naprawdę nie modelowałem aplikacji. Jaki jest standardowy sposób to zrobić? Jakiego rodzaju diagramów należy użyć i jak wyglądałaby dokumentacja? Doceniamy linki do przykładowych diagramów i dokumentacji.
Podczas wyszukiwania mogę znaleźć wiele rzeczy w sieci, ale chciałem sprawdzić, czy istnieje obecnie nowoczesny konsensus co do tego, jak to zrobić.
Z góry dziękuję!
Oświadczenie końcowe
Nie miałem pojęcia, że to taki lepki temat. Dziękuję wszystkim, którzy mogli odłożyć oczywiste kontrowersje i udzielić przydatnych odpowiedzi. To była interesująca dyskusja co najmniej :)
Kolejny przydatny link, który odkryłem, to: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519
źródło
Odpowiedzi:
Prawda jest taka: obecnie brakuje tego nowoczesnego oprogramowania - konsensus w sprawie modelowania. UML wydaje się być rodzajem najmniejszego wspólnego dzielnika, ale w rzeczywistości istnieje tylko zgodność co do zapisu, a nie semantyki. Istnieje wiele różnych opinii na temat tego, jak należy interpretować UML do tworzenia kodu (być może znajdziesz jedną interpretację, która jest odpowiednia dla twojego zespołu).
Z drugiej strony toczy się święta wojna między „zwinnymi” ludźmi mówiącymi: „nie twórz formalnych modeli, lepiej pisz działający kod” a tymi „BDUF” (duży projekt z góry), którzy myślą o narzędziach takich jak „ Rozwiązaniem jest MDA ”(architektura oparta na modelu).
Inne osoby (ponownie) odkryły programowanie oparte na przepływie dla nowoczesnego projektowania oprogramowania jako alternatywę dla UML. Przeczytaj tutaj i tutaj, aby dowiedzieć się więcej na ten temat.
źródło
Problem, który zwykle znajduję przy takim podejściu, polega na tym, że moje zrozumienie rozwiązania jest zawsze niepełne na początku. Dopiero dzięki dopracowaniu w miarę postępu pracy dochodzę do ostatecznego rozwiązania.
Próba zaprojektowania całej aplikacji z góry, zanim jakikolwiek kod (we wszystkich, z wyjątkiem najprostszych aplikacji) jest zwykle głupotą.
Czy naprawdę wierzysz, że potrafisz z wyprzedzeniem szczegółowo opisać każdą klasę, metodę i strukturę danych?
Jeśli chodzi o rzeczywiste narzędzia do tworzenia modeli, wypróbowałem kilka i zawsze wracam do Microsoft Visio.
Ze wszystkich produktów, które wypróbowałem, wydaje się to najbardziej proste i faktycznie stabilne (moje doświadczenie z narzędziami do modelowania polega na tym, że są bardzo wadliwe). Szczerze mówiąc, niewiele robię z modelowania, więc weź to zalecenie z odrobiną soli.
EDYCJA: Właściwie powinienem powiedzieć, że większość mojego modelowania odbywa się w notatniku, który leży na moim biurku. Ponieważ mało modeluję, staram się, aby było lekkie i do rzeczy. Szkicowanie diagramu piórem i papierem jest dla mnie znacznie bardziej wydajne niż używanie oprogramowania.
Możesz znaleźć odręczne diagramy przydatne do sformułowania swoich pomysłów, zanim opracujesz je w oprogramowaniu do tworzenia diagramów.
Większość tego, co obecnie modeluję, to diagramy interakcji. Ponownie nie robię dużo modelowania - właśnie tam, gdzie naprawdę czuję ćwiczenie rysowania modelu, pomaga umocnić moje zrozumienie.
źródło
Diagramy UML są dobrym miejscem do rozpoczęcia, istnieje wiele łatwych sposobów, aby to zrobić za pomocą bezpłatnego lub płatnego oprogramowania. Jednym prostym przykładem narzędzia do tworzenia UML jest coś w rodzaju rysunków Google Docs, bardziej zaawansowane pakiety to Visio lub OmniGraffle.
EDYCJA: Jak wielu wspomniało, jeśli pójdziesz ścieżką UML, nie oznacza to, że musisz w pełni modelować wszystko, ale możesz dojść do konsensusu co do tego, co modelujesz i jak szczegółowe modele muszą być. Proste diagramy UML często pomagają rozplanować kod przed jego napisaniem i wyjaśnić niektóre potencjalne problemy, zanim się pojawią.
źródło
Jak sugeruje @Brett, diagramy UML są najlepsze. Dzięki UML dobrze jest mieć diagramy klas i diagramy przepływu pracy. Te dwa pokryłyby większość potrzeb projektowych.
Dzięki diagramowi klas możesz modelować członków każdej jednostki, ich poziom bezpieczeństwa itp.
Za pomocą schematu przepływu pracy można modelować, które wywołanie metody, które wywołanie, jaki jest wynik przepływu pracy i jaki wyjątek może wyskoczyć.
źródło
Chociaż mocno wierzę w wykonanie kilku podstawowych rysunków architektonicznych przed napisaniem kodu, uważam, że wykonanie szczegółowego rysunku całej aplikacji to zbyt wiele pracy.
Zwykle tworzę kilka obrazów konturowych w Visio, często wykorzystując bloki konstrukcyjne „schematu blokowego” do wizualizacji tego, co mam na myśli. Używanie UML często wydaje się sformalizowane i zachęca do zbyt wielu szczegółów. Rysunki Visio pokazują podstawowe elementy składowe aplikacji i jaki rodzaj funkcjonalności idzie gdzie. Jeśli używasz frameworka MVC, najczęściej robisz to, pobierając próbkę z sieci i kopiując ją.
Dobrym pomysłem jest wykonanie kilku rysunków z innych punktów widzenia. Zamiast rysować wszystko, często wolę wziąć jedną konkretną funkcję systemu, a następnie wizualizować ją jako:
Następnie zaczynamy kodować. Podczas kodowania używam doxygen z integracją kropek, aby uzyskiwać w locie diagramy klas, dziedziczenie itp. Przeglądanie przeglądu generowanego doxygen jest często bardzo dobrym sposobem na zobaczenie struktury kodu.
źródło