Ostatnimi czasu wziąłem się za diagramy stanu jako jeden z elementów projektowania nieco większego systemu
Ten nieco większy system, to coś co jest przedmiotem umowy z klientem, czy to jest Twoja prywatna inicjatywa do portfolio/szuflady/kosza? Jeśli prywatnie coś tworzysz, to projekt dla jednoosobowego zespołu generuje raczej narzut niż wartość dodaną.
Jeśli z klientem, to umowa reguluje co ma być dostarczone i kiedy, np. "Projekt systemu". W takiej sytuacji diagramy stanu mogą być elementem dokumentacji projektowej, która będzie wykorzystywana przez innych interesariuszy, np. przez ekspertów domenowych do weryfikacji, czy cykl życia zamówienia faktycznie tak wygląda jak to zostało zilustrowania na diagramie. Daje to możliwość korekcji projektu, jeszcze zanim powstanie jakikolwiek kod.
Co modelujesz z wykorzystaniem diagramów stanu? Może są inne/lepsze sposoby prezentacji danego aspektu?
zastanawiam się na ile wdrożenie danego systemu w fazie kodowania ukaże mi błędy i niedociągnięcia wynikające z fazy projektowej ?
Co to znaczy 'wdrożenie systemu w fazie kodowanie'? Chodzi Ci, że masz jakaś instalację roboczą i tam dorzucasz inkrementalnie funkcjonalności w ramach dostarczania rozwiązania docelowego? Jeśli tak, to jest szansa, że takie niedociągnięcia wyjdą, ale raczej wynikające z implementacji, a nie projektu. Natomiast czy wyjdą, to będzie zależało np. od klienta i umowy, czy będziesz od tego klienta mógł wyegzekwować wcześniejsze sprawdzenie takiej "roboczej" funkcjonalności. Klient może powiedzieć, "zgodnie z umową ma być dostarczone tak i tak, nie planujemy wcześniejszych testów, ludzi są zajęci innymi sprawami". Umowa wymusi jakiś model pracy, tak, że możesz sobie wewnętrznie dłubać iteracyjnie, a klient i tak ma przewidziane np. testy integracyjne z +N miesięcy.
Moim zdaniem tworzenie projektu jest niezbędne w złożonych systemach. Jest to punkt odniesienia do różnych późniejszych dyskusji, n/t integracji, funkcjonalności, zarządzania zmianą. Piszę tu o złożonych systemach, gdzie np. masz nie tylko "swoje pudełko" do developmentu, ale i interakcje z dziesiątkami zewnętrznych systemów. Zespołom od tych zewnętrznych systemów przecież nie pokażesz swojego kodu, bo to ich nie interesuje.