Większość, jeśli nie wszyscy informatycy, których znam, uważają, że przed kodowaniem korzystne jest modelowanie oprogramowania za pomocą UML lub innych typów diagramów. (Moje pytanie nie dotyczy konkretnie UML, może to być dowolny graficzny lub tekstowy opis projektu oprogramowania).
Nie jestem tego taki pewien. Głównym powodem jest: Kod nie kłamie. Jest sprawdzany przez kompilator lub tłumacza. Mam nadzieję, że ma zautomatyzowane testy i musi przejść analizę kodu statycznego. Jeśli moduł nie komunikuje się poprawnie z innym modułem, zwykle jest to oczywiste w kodzie, ponieważ pojawia się komunikat o błędzie.
Nie można tego wszystkiego zrobić za pomocą diagramów i innych dokumentów. Tak, istnieją narzędzia sprawdzające UML, ale wszystko, co do tej pory widziałem, jest bardzo ograniczone. Dlatego dokumenty te są zwykle niekompletne, niespójne lub fałszywe.
Nawet jeśli same diagramy są spójne, nie możesz być pewien, że kod faktycznie je implementuje. Tak, istnieją generatory kodu, ale nigdy nie generują całego kodu.
Czasami mam wrażenie, że obsesja na punkcie modelowania wynika z założenia, że kod nieuchronnie musi być jakimś niezrozumiałym bałaganem, z którym architekci, projektanci lub inni dobrze opłacani ludzie, którzy dostają duży obraz, nie powinni mieć do czynienia. W przeciwnym razie byłoby o wiele za drogo. Dlatego wszystkie decyzje projektowe należy odejść od kodu. Kod należy pozostawić specjalistom (małpy kodowe), które potrafią go napisać (i być może przeczytać), ale nie muszą zajmować się niczym innym. Prawdopodobnie miało to sens, gdy asembler był jedyną opcją, ale współczesne języki pozwalają na kodowanie na bardzo wysokim poziomie abstrakcji. Dlatego tak naprawdę nie widzę już potrzeby modelowania.
Jakich argumentów przemawiających za modelowaniem systemów oprogramowania brakuje?
Nawiasem mówiąc, uważam, że diagramy to świetny sposób na dokumentowanie i komunikowanie niektórych aspektów projektowania oprogramowania, ale to nie znaczy, że powinniśmy na nich opierać projektowanie oprogramowania.
Wyjaśnienie:
Pytanie zostało zawieszone jako niejasne. Dlatego dodam kilka wyjaśnień:
Pytam, czy warto używać dokumentów (niekodujących), które modelują oprogramowanie jako podstawowe źródło prawdy o projektowaniu oprogramowania. Nie mam na myśli przypadku, w którym znaczna część kodu jest generowana automatycznie z tych dokumentów. Gdyby tak było, uważałbym same dokumenty za kod źródłowy, a nie za model.
Wymieniłem wady tej procedury, które sprawiają, że zastanawiam się, dlaczego tak wiele osób (z mojego doświadczenia) uważa ją za preferowany sposób projektowania oprogramowania.