W ciągu ostatnich kilku semestrów brałem udział w kursach projektowania oprogramowania i choć widzę wiele korzyści z formalizmu, wydaje mi się, że nie mówi mi to nic o samym programie:
- Nie można określić, jak program będzie działał na podstawie specyfikacji Przypadku użycia, nawet jeśli omawia on możliwości programu.
- Nie można powiedzieć nic o doświadczeniu użytkownika z dokumentu wymagań, nawet jeśli może on zawierać wymagania dotyczące jakości.
- Diagramy sekwencji są dobrym opisem działania oprogramowania jako stosu wywołań, ale są bardzo ograniczone i dają bardzo częściowy obraz całego systemu.
- Diagramy klas doskonale nadają się do opisania budowy systemu, ale są całkowicie bezużyteczne, pomagając ustalić, jakie oprogramowanie powinno być.
Gdzie w całym tym formalizmie jest sedno: jak wygląda program, jak działa i jakie daje doświadczenie? Czy nie ma większego sensu projektowanie tego? Czy nie lepiej jest dowiedzieć się, jak program powinien działać za pomocą prototypu i starać się go wdrożyć naprawdę?
Wiem, że prawdopodobnie cierpię na naukę inżynierii przez teoretyków, ale muszę zapytać, czy robią to w branży? Jak ludzie rozumieją, czym właściwie jest program, a nie czym powinien być zgodny? Czy ludzie dużo prototypują, czy najczęściej używają formalnych narzędzi, takich jak UML, a ja po prostu nie miałem ochoty ich używać?