Jaki jest standard modelowania nowoczesnych aplikacji przed opracowaniem?

9

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

Chev
źródło
6
Chcesz zrobić wodospad?
Etienne de Martel
1
@Etienne, wodospad? Jeśli to jakiś wulgarny odnośnik, to nie rozumiem. Doceniana jest konstruktywna krytyka / sugestie. Co powiesz na to, żeby zamiast głosować bezużyteczny komentarz, dodajesz własne komentarze, które pomogą mi zrozumieć problem.
6
„Chcę, aby mój zespół wymodelował całą aplikację ASP.NET MVC C #, zanim jeszcze wybijemy jeden wiersz kodu”. Nienawidzę tego mówić, ale prawie zaczynasz popełniać porażkę, zanim jeszcze zaczniesz. Pełny zakres użyteczności, wymagania użytkownika, łatwość konserwacji są całkowicie niewidoczne, dopóki nie zaczniesz pisać kodu; jeśli nalegasz na duży projekt z przodu, poświęcisz znacznie więcej czasu na aktualizację swoich projektów niż na pisanie aplikacji. Projekty na wysokim poziomie są w porządku , ale dokumentujesz całą aplikację? Absolutnie nie.
Julia
3
@Chevex: Waterfall to metoda rozwoju, która wymaga wielu projektów z góry. Wydaje się, że społeczność twórców oprogramowania akceptuje fakt, że ta metoda programowania działa w najlepszym przypadku źle.
quentin-starin
1
touche @Chevex, touche ... cicho odchodzi
mcgrailm

Odpowiedzi:

6

obecny nowoczesny konsensus

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.

Doktor Brown
źródło
Świetny Scott! To jak dotąd najlepsza odpowiedź na to pytanie. Fajny zwięzły przegląd modelowania w branży i jej aktualnej pozycji. Dzięki, doktorze! +1.21 dżiggawatów!
7

Chcę, aby mój zespół wymodelował całą aplikację ASP.NET MVC C #, zanim jeszcze dotkniemy jednego wiersza kodu

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?

Chcę tylko poznać dobre rozwiązania modelarskie.

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.

Jakiego rodzaju diagramów należy użyć i jak wyglądałaby dokumentacja?

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.

quentin-starin
źródło
W miarę upływu czasu możemy dostosowywać nasze modelowanie. W każdym razie nie o to chodzi, chcę tylko poznać dobre rozwiązania modelarskie.
Zamierzacie więc zsynchronizować swoje modele i kod. To nie działa dla większości. Nieuchronnie się rozejdą, a rozbieżności spowodują problemy. Dodatkowo spędzisz dużo czasu na próbach
quentin-starin
Przeczytaj zaktualizowane pytanie.
@Chevex: Dodałem wszystko, co mogłem, w odniesieniu do edytowanego pytania.
quentin-starin
@qes, chodziło mi o to, że odpowiadasz na pytanie, którego nie zamierzałem zadawać. Zobacz sekcję „AKTUALIZACJA” pytania.
3

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ą.

Brett
źródło
Słyszałem o UML. Czy masz jakieś zalecenia dotyczące miejsca rozpoczęcia? Jakieś dobre narzędzia, które polecasz?
@Chevex - właśnie wykonałem szybkie wyszukiwanie w Google i znalazłem to: agilemodeling.com/artifacts/classDiagram.htm Wygląda na przyzwoity punkt wyjścia
Brett
@qes - W zależności od tego, ile czasu / zainteresowania / inwestycji poświęca na przejście takiej ścieżki, może to być zarówno dobre doświadczenie edukacyjne, jak i pomóc mu zrozumieć niektóre fragmenty jego kodu, zanim go napisze (nawet jeśli jest to po prostu prosty UML) ... Ale zgadzam się, prawdopodobnie powinien mieć wystarczająco dużo czasu i osobistego zainteresowania, aby to zrobić.
Brett
@qes, przeczytaj zaktualizowane pytanie.
2
@Chevex - Prawdopodobnie chcesz zacząć od przeczytania typów diagramów i tego, co mają się komunikować. UML to język modelowania, który może być bardzo opisowy, ale ma również wiele niuansów. UML w pigułce bardzo mi pomógł ( oreilly.com/catalog/9781565924482 ). Biorąc to pod uwagę, często można sobie poradzić z zredukowanymi wersjami pełnego zestawu diagramów. Tak długo, jak ludzie tworzący diagramy i ludzie czytający diagramy zgadzają się, co mają na myśli.
2

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ć.

SaravananArumugam
źródło
Dziękuję za tę odpowiedź. Polecić jakieś przydatne narzędzia? Czy Visual Studio w jakikolwiek sposób obsługuje UML?
Visual Studio zapewnia pomoc w tworzeniu diagramu klas. Nie nadaje się do przepływu pracy. Racjonalne narzędzia są najlepsze do takiego projektowania / modelowania UML. Rational modeler oprogramowania jest tym, co znam. Słyszałem, że Rational Rose będzie kolejnym doskonałym narzędziem.
2

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:

  • Diagram przypadków użycia (UML)
  • Schemat blokowy lub UML Swim-lane (bardzo wysoki poziom)
  • Przegląd komponentów architektonicznych.

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.

Anders Abel
źródło