W jakich okolicznościach schematy blokowe są nadal cennym i użytecznym narzędziem?

14

Kiedy zaczynałem programować, polegałem głównie na schematach blokowych (i schematach odstępów między drukarkami). Gdy byłem w klasie COBOL, nie mogłem zacząć pisać żadnego kodu, dopóki mój schemat blokowy nie zostanie podpisany przez instruktora. Wtedy musiałem stworzyć schemat blokowy dla wszystkiego.

Dzisiaj, dwadzieścia pięć lat później, odkrywam, że wykreślam tylko dwa rodzaje rzeczy. Bardzo specyficzne algorytmy, w których logika jest trudna, lub bardzo ogólne pojęcia, aby zapewnić, że wszystkie duże kroki zostaną zdefiniowane i we właściwej kolejności.

Czy są inne przypadki użycia schematów blokowych, które po prostu przeoczyłem?

Michael Riley - AKA Gunny
źródło

Odpowiedzi:

17

Absolutnie.

Ilekroć implementuję coś, czego wcześniej nie robiłem (a algorytm zajmuje więcej niż kilka kroków), wykreślę to. Uważam, że naprawdę zmusza mnie to do przeanalizowania całego rozwiązania na poziomie atomowym i dokładniej, niż gdyby nie zostało to przedstawione na wykresie. Uważam, że ta praktyka ma trzy główne zalety:

  • Mniej „o cholera”, bo przemyślałem cały algorytm
  • Usuwa wszelkie potencjalne powalenia na problemy, które mogą wystąpić w pozostałej części systemu
  • Pozwala mi łatwo przeprowadzić algorytm przez kogoś innego

Dwie różne sytuacje, w których faktycznie ich używam, to:

  • Algorytmy niskiego poziomu (ish). Mam na myśli bardzo konkretne rozwiązanie bardzo konkretnego problemu. Zazwyczaj przekażę je innym użytkownikom przed wdrożeniem.
  • Przepływ użytkowników. Nie tylko mogę tego użyć, aby ominąć równorzędnego użytkownika, ale również użyję go do wyjaśnienia (w bardzo nietechniczny sposób) przepływu ekspertowi ds. Użyteczności.

Powiedziawszy to wszystko, nie tworzę schematów blokowych codziennie (a nawet po ich zakończeniu, jest to zazwyczaj sesja na tablicy, chyba że piszę dokumentację dotyczącą projektu technicznego).

Demian Brecht
źródło
@Cape Cod Gunny: może się okazać, że Dialog Design Diagrams jest nieco bardziej przydatny (wczesna forma diagramu aktywności)
Steven A. Lowe
1
@Cape Cod Gunny: Microsoft SketchFlow może również być interesujący.
Jörg W Mittag,
12

Nigdy

Schematy blokowe - zwłaszcza praktykowane ponad 25 lat temu - zostały zastąpione o wiele bardziej ekspresyjnymi technikami tworzenia diagramów (por. Diagramy akcji, tabele sekwencji, tabele stanu i in.).

Własne badania IBM wykazały, że wykorzystanie schematów blokowych nie miało wpływu na jakość projektu lub implementacji systemu (choć były one nieznacznie przydatne w komunikacji z użytkownikami i innymi programistami) [dokładne odniesienie nie jest łatwo dostępne, ale zostało cytowane w technikach diagramowych Jamesa Martina dla analityków i programistów ].

Steven A. Lowe
źródło
3
Zastąpione to trudne słowo, teraz mamy tylko więcej opcji. Bardziej ekspresyjny nie zawsze jest lepszy. Moi klienci chcą wiedzieć, co robi oprogramowanie i nie chcą tracić czasu na naukę języka UML. Nie mogę ich winić.
wałek klonowy
2
@Steven: +1, ale wykresy przepływu dawno minęły 25 lat temu. Kiedy wszedłem do Carnegie-Mellon w 1975 r., Programowanie badań w CMU odbywało się online w ALGOL, SAIL, PASCAL, LISP, Simula, C i innych językach wysokiego poziomu, głównie przy użyciu EMACS. Nikt nie przejmował się schematami blokowymi. Właśnie napisaliśmy mały kod, przetestowaliśmy go, poprawiliśmy, a potem napisaliśmy trochę więcej.
kevin cline,
5
@Demian: pudełka i strzały są naprawdę wszystkim, czego potrzebujesz ;-)
Steven A. Lowe
1
@Steven Low i Steven Jeuris: przepraszam, oboje macie 100% rację. „Supersede” to zwykła pisownia.
kevin cline,
1
@Steven Jeuris: ja też; Też wyglądałem, ale nic nie znalazłem. Jestem całkiem pewien, że moja pamięć jest poprawna w miejscu, w którym ją czytam, ale niestety w tej chwili wszystkie moje podręczniki są zapakowane w magazyn (przeprowadzka). Badanie utkwiło mi w pamięci, ponieważ zostało przeprowadzone przez IBM na ich własnych ludziach przy użyciu własnego szablonu schematu blokowego!
Steven A. Lowe,
7

Nie rysowałem klasycznego schematu od czasu mojej pierwszej klasy programowania w 1976 roku i nie widziałem, żeby ktoś inny go tworzył od wczesnych lat 80-tych. Schematy blokowe były przydatne do komunikowania się z logiką programu, gdy kod był w języku asemblera. Pod koniec lat sześćdziesiątych programiści w asemblerze używali pseudokodu. Podczas programowania we współczesnych językach OO, ani schematy blokowe, ani pseudokod nie mają żadnej wartości. Równie dobrze możesz napisać kod wysokiego poziomu w języku implementacji.

Od czasu do czasu rysuję diagramy UML, głównie na papierze, aby wyrazić pomysły projektowe, ale te diagramy istnieją tylko do końca dyskusji. Od czasu do czasu rysuję również diagramy przejścia stanu, a następnie przekształcam je w tabelę stanów w języku implementacyjnym.

Kevin Cline
źródło
5

Ciągle używam schematów blokowych z wielu powodów:

  1. Są lepsze niż diagramy przypadków użycia UML. Mogą odzwierciedlać wiele różnych przypadków użycia i ich interakcji, a także wykonują lepszą pracę, łącząc wrażenia użytkowników i decyzje razem.

  2. Są łatwiejsze do zrozumienia i bardziej intuicyjne. Twój umysł naturalnie podąża za strzałkami jak labirynt od początku do końca. Za pomocą schematów blokowych można zakończyć i odwołać się do innego schematu blokowego dla innej historii użytkownika. Zwykle mogę wydrukować je w książce z numerami stron i szybko przewracać strony, aby przejść do następnego schematu.

  3. Są uniwersalne. Niewiele osób spoza inżynierii oprogramowania zna i rozumie diagramy UML, gdzie diagramy Flowchart są znacznie bardziej rozpoznawalne przez użytkowników i analityków biznesowych. Staram się przekazać klientowi skomplikowane przypadki użycia, a czasami próbują to zrozumieć, rysuję schemat blokowy i rozumieją, dlaczego w końcu rozumieją wszystkie niuanse, które sprawiają, że jest WIELE WIĘCEJ, niż im się wydawało.

wałek klonowy
źródło
4
+1 dla schematów blokowych rozpoznawalnych przez użytkowników i licencjatów. Z jakiego narzędzia do schematu blokowego korzystasz?
Michael Riley - AKA Gunny
4
Schematy blokowe w ogóle nie przedstawiają przypadków użycia. Jeśli chcesz skorelować schemat blokowy ze schematem UML, bardziej przypomina to schemat sekwencji, diagram komunikacji lub diagram aktywności. W rzeczywistości diagramy aktywności mają przedstawiać przepływy pracy. Moim zdaniem diagramy aktywności UML są lepsze niż schemat blokowy, ponieważ stosowane symbole i terminologia są znormalizowane, co pozwala każdemu (kto je zna) na łatwe czytanie bez konieczności wyszukiwania znaczeń symboli.
Thomas Owens
@Thomas, Różne pociągnięcia ... Masz rację, że diagramy aktywności są bardziej wyraziste, ale wymagają więcej wkładu, znajomości języka UML i cennego cennego czasu, którego po prostu nie mam, gdy klient potrzebuje diagramu TERAZ TERAZ !!! Mogę stworzyć szybki i brudny schemat blokowy. Dla użytkownika rzeczywisty schemat przypadków użycia UML podpowiada mu zdrowy rozsądek. Schemat blokowy przechodzi do sedna sprawy.
wałek klonowy
2
@Cape, po prostu używam Visio. Z pewnością nie jest to najlepsze narzędzie, ale wiesz, co mówią: Ludzie wybierają znajome wygodne piekło nad nieznanym obcym niebem.
wałek klonowy
@Maple - Dzięki. Jestem zdumiony, ponieważ myślałem, że schematy blokowe nie są już istotne. Czuję się jak struś ;-)
Michael Riley - AKA Gunny
3

Schematy blokowe są przydatne, gdy należy wykonać czynności w określonej kolejności. To, co naprawdę świeci w moich myślach, pokazuje, gdzie podejmowane są decyzje i upewnia się, że każda możliwa decyzja ma swoją ścieżkę. Zapobiega to tworzeniu programów, w których wymagana jest zgoda administratora, ale nie ma możliwości poradzenia sobie z tym, jeśli menedżer (który zatwierdza 98% czasu) odmówi. Przypominają nam, że najczęstsza ścieżka nie jest jedyną ścieżką. Uważam je za przydatne w rozmowach z użytkownikami na temat wymagań, ponieważ często podadzą ci tylko najczęstszą ścieżkę.

HLGEM
źródło
1

Schematy blokowe mogą być przydatne w przypadku bardzo źle ustrukturyzowanego kodu inżynierii wstecznej. Zwłaszcza jeśli ma problemy. Na szczęście ostatnio nie widziałem zbyt wielu zagadek.

Jak zauważyli inni, do komunikowania się z użytkownikami końcowymi. Sortuję uruchomienie nadajnika telewizyjnego udokumentowane schematem blokowym. Sprzęt i oprogramowanie miały wspólną specyfikację do pracy.

Nick Keighley
źródło
0

Diagram aktywności UML i schemat blokowy są przydatne do wykazania niskiej lub średniej złożoności procesu lub algorytmu.

Są bardzo dobre, gdy komunikują się z użytkownikami biznesowymi na temat reguł biznesowych.

Istnieje odmiana w postaci BPMN 2.0, która jest bardzo przydatna w modelowaniu procesów biznesowych.

Niektóre narzędzia BPMN mogą generować działające aplikacje internetowe z wykresów.

Tak więc, schematy blokowe wciąż mają swoje miejsce, ale należy z nich mądrze korzystać.

Bez szans
źródło
-2

Nie jestem programistą. Jestem technikiem inżynierii sprzętu.

Ma dla mnie sens zacząć przynajmniej od komentarzy wyjaśniających logiczne bloki, które zostaną użyte. Następnie, dopracowując szkielet programu z rzeczywistym kodem. Jest to podobne do rozpoczęcia scenariusza filmowego z planszą, a następnie wypełnienia szczegółów akcji i dialogu.

Czy nie warto starannie zaplanować żadnego wartościowego przedsięwzięcia? W dziedzinie sprzętu zaczynamy od dokumentu wymagań klienta, a następnie wypisujemy dokument specyfikacji sprzętu, następnie opracowujemy schemat, następnie rysujemy układ płytki, a następnie opracowujemy dokumentację montażu. Nie tylko zaczynamy chwytać części i lutować je razem, ale wymyślamy pomysły na produkt końcowy.

Nie widzę, jak efektywny kod można napisać w programie 15 KB lub 15 MB bez dużej ilości pracy przygotowawczej przed rozpoczęciem właściwego kodowania.

mobileHman
źródło
1
Wiele osób uważa analogie między sprzętem a oprogramowaniem za niekoniecznie istotne. Cykle projektowania kodu testowego w oprogramowaniu są znacznie szybsze w oprogramowaniu. Tak zwane zwinne metody najpierw napisałyby test, a następnie napisały kod, aby przejść test. <br/> 15K jest dość mały, więc może być wbudowanym oprogramowaniem, które może być „bardzo planowane”, aby upewnić się, że spełnia swoją specyfikację. <br/> Oprogramowanie Space Shuttle zostało napisane przy użyciu zalecanych przez ciebie technik.
Nick Keighley
Również schematy blokowe niekoniecznie są narzędziem wyboru do projektowania oprogramowania!
Nick Keighley,