Ostatnio natknąłem się na prace Kartezjusza* “Rozprawa metodzie”. Czytając to dzieło w rozdziale w części drugiej przeczytałem opis metody, którą niemalże bez zmian stosuje się dziś w procesie analizy i projektowaniu systemów.
“… Jak mnogość praw dostarcza często usprawiedliwienia występkom, tak iż w państwie o wiele większy jest ład wówczas, gdy przy niewielkiej ilości praw są one bardzo ściśle przestrzegane, podobnie, zamiast wielkiej liczby prawideł, z których składa się logika, sądziłem, iż wystarczą mi następujące cztery, bylebym postanowił raz na zawsze i niezłomnie nie zaniedbać ani razu ich przestrzegania.
Pierwszym było nie przyjmować nigdy żadnej rzeczy za prawdziwą, zanim jej nie poznam z całą oczywistością jako takiej: to znaczy unikać starannie pośpiechu i uprzedzeń i nie obejmować swoim sądem niczego poza tym, co się przedstawi memu umysłowi tak jasno i wyraźnie, iż nie miałbym żadnego powodu podania tego w wątpliwość.
Drugim – podzielić każde z rozpatrywanych zagadnień na tyle cząstek, na ile się da i ile będzie tego wymagać lepsze rozwiązanie.
Trzecim – prowadzić myśli po porządku, zaczynając od przedmiotów najprostszych i najłatwiejszych do poznania, aby następnie wznosić się pomału, jak gdyby po stopniach, aż do poznania bardziej złożonych; należy się przy tym domniemywać prawidłowych związków nawet między tymi, które nie tworzą naturalnego szeregu.
Ostatnim – czynić wszędzie wyszczególnienia tak dokładne i przeglądy tak ogólne, abym był pewny, iż nic nie opuściłem. …”
Otóż ten XVII filozof opisał to co dziś realizuję w praktyce w swojej pracy.
Po pierwsze analizując wymagania sprawdzam źródła, porównuję i upewniam się czy to co nam klient opisuje jest prawą. Po drugie dokonuję dekompozycji by podzielić to co trudne na mniejsze klocki, moduły, procesy itd.., Po trzecie wizję systemu przedstawiam w różnych perspektywach na różnych poziomach abstrakcji. Zaczynam od ogółu i idę do szczegółu. I po czwarte. elementy łączę, mapuję, buduję zależności by móc nie tylko odnotowywać zależności ale także by móc dobrze dokumentować system nie pominąwszy ważnych dla systemy szczegółów.
Czyżby Kartezjusz by praojcem inżynierii oprogramowania? Raczej nie , ale zasady jakie opracował w XVII wieku mogą być pryncypialnymi zasadami metodycznego podejścia do fazy analizy i projektowania systemów informatycznych.
*Kartezjusz – francuski filozof, matematyk i fizyk, jeden z najwybitniejszych uczonych XVII wieku, uważany za prekursora nowożytnej kultury umysłowej (podaję za Wikipiedią)