Historia pytania:
W projektach IT z długim cyklem rozwoju wymagania mogą często się zmieniać, a dokumentacja szybko staje się nieaktualna. Prowadzi to do niespójności między programistami a klientem, zwiększa koszt wsparcia i utrudnia wprowadzanie zmian.
Problem:
Polega na tym, że nieprecyzyjny, niekompletny lub przestarzały opis wymagań wystarcza do pojawienia się błędów, nieporozumień w zespole, wzrostu długu technologicznego i niskiej efektywności pracy QA.
Rozwiązanie:
Analityk systemowy wprowadza procesy żywej dokumentacji i regularnego przeglądania artefaktów. Wykorzystanie takich podejść jak Documentation as Code (dokumentacja w repozytoriach git), ścisła integracja z narzędziami zadaniowymi (Jira, Confluence), automatyzacja powiązań wymagań z zadaniami i przypadkami testowymi, organizacja spotkań do przeglądu dokumentacji i przeglądu wymagań. Ważne jest rozwijanie kultury "jednego źródła prawdy" dla wszystkich zainteresowanych stron.
Kluczowe cechy:
Czym różni się Żywa dokumentacja (Living Documentation) od po prostu dobrej specyfikacji?
Żywa dokumentacja to nie tylko aktualność, ale także integracja z narzędziami rozwoju (np. testy BDD mogą same generować aktualny dokument), automatyczna weryfikacja zmian i łatwy audyt historii.
Czy można całkowicie zrezygnować z formalnej dokumentacji, używając tylko user stories i backlog ticketów?
Nie, user stories nie obejmują w maksymalny sposób interfejsów integracyjnych, szczegółów reguł biznesowych i scenariuszy edge cases: potrzebna jest harmonia między zwięzłością a kompletnością specyfikacji.
Jeśli wymagania się zmieniły, czy wystarczy tylko zaktualizować tekst w Confluence?
Nie, ważne jest synchronizowanie tej aktualizacji ze wszystkimi powiązanymi artefaktami: przypadkami testowymi, zadaniami, schematami danych. Dobrą praktyką będzie automatyzacja takich powiązań, w przeciwnym razie pojawia się desynchronizacja i błędy.
Negatywny przypadek:
W dużym projekcie fintech wymagania były utrzymywane w dokumentach Word, wysyłane przez email i nie prowadziły jednolitej historii. Po wydaniu część funkcji nie odpowiadała oczekiwaniom klienta, a część błędów nie była odzwierciedlona w specyfikacjach.
Zalety:
Wady:
Pozytywny przypadek:
W innym projekcie dokumentacja była utrzymywana w tym samym repozytorium co kod (Asciidoc + Gitlab), każda zmiana przechodziła przegląd kodu. Zostały skonfigurowane powiązania między wymaganiami, przypadkami testowymi i zadaniami.
Zalety:
Wady: