Checklista handoveru aplikacji webowej: kryteria odbioru i warunki odbioru systemu

Odbiór aplikacji po tworzeniu aplikacji to nie formalność, tylko moment, w którym firma przejmuje realną odpowiedzialność za utrzymanie, bezpieczeństwo i rozwój systemu. Jeśli kryteria sign-off są nieprecyzyjne, koszty pojawiają się później: w postaci „niewidocznej” pracy utrzymaniowej, zależności od wykonawcy i długich wdrożeń nowych osób. Poniższa checklista porządkuje to, co warto zweryfikować przed odbiorem: od zgodności z umową, przez architekturę i dokumentację, po dostęp do CI/CD i kwestie licencyjne.

Hubert Olkiewicz[email protected]
LinkedIn
6 min czytania

Co oznacza „handover” w praktyce operacyjnej

Handover ma sens wtedy, gdy zespół klienta jest w stanie, bez udziału wykonawcy:

  • uruchomić system od zera w nowym środowisku,

  • wdrożyć go przez własne CI/CD,

  • zrozumieć architekturę i kluczowe procesy biznesowe,

  • obsłużyć incydent (logi, metryki, znane tryby awarii),

  • rozwijać system bez „wiedzy w głowach” pierwotnego zespołu.

Jeśli te warunki nie są spełnione, odbiór przenosi ryzyko, ale nie przenosi kontroli.

Zakres umowy a realnie dostarczone funkcje

Cel jest prosty: da się jednoznacznie porównać to, co było w umowie (lub backlogu), z tym, co działa w produkcie.

Co powinno istnieć w formie weryfikowalnej:

  • Mapa wymagań do funkcji: zapis z umowy → konkretne zachowanie w systemie → dowód (testy, demo, zrzuty ekranu, release notes).

  • Lista zmian po podpisaniu umowy: kto zainicjował, kiedy uzgodniono, co zastąpiono, jaki jest wpływ na termin/budżet/zakres.

  • Jawnie opisane braki i odstępstwa: elementy pominięte lub przesunięte muszą być opisane jako decyzja, nie „niedopatrzenie”.

  • Weryfikacja detali UX/edge cases: przykładowo paginacja tabel, filtrowanie, stany puste, uprawnienia, eksporty — drobiazgi często generują najwięcej zgłoszeń po starcie.

Jeśli nie da się prześledzić ścieżki „wymaganie → dostarczenie → akceptacja”, odbiór jest podatny na spory i ukryte koszty.

Architektura: udokumentowana i zgodna z tym, co faktycznie działa

W rozmowach z firmy programistyczne i firmy informatyczne często padają deklaracje: „monolit”, „moduły”, „mikroserwisy”. Przy odbiorze liczy się to, co realnie jest uruchomione i wdrażane.

Minimalny pakiet:

  • Opis architektury: komponenty, granice odpowiedzialności, przepływy danych, integracje zewnętrzne.

  • Topologia wdrożeniowa: co jest deployowane jako jedna jednostka, co skaluje się niezależnie, jakie są zależności runtime.

  • Najważniejsze decyzje architektoniczne: dlaczego tak, jakie są konsekwencje, co jest „świadomym kompromisem”.

Pytania kontrolne, które szybko ujawniają rozjazdy:

  • Czy deklarowane „mikroserwisy” są niezależnie wdrażalne i mają sensowne granice, czy to jeden system pocięty organizacyjnie?

  • Czy moduły mają realną separację odpowiedzialności (interfejsy, kontrakty), czy to tylko foldery w repo?

  • Czy da się wskazać, gdzie w kodzie i w architekturze żyje kluczowy proces biznesowy — bez konsultacji z wykonawcą?

Brak zgodności między deklaracją a rzeczywistością to nie problem semantyczny. To ryzyko kosztowe.

Dokumentacja, która zostaje w firmie po handoverze

Brak dokumentacji nie jest „estetycznym minusem”. To bezpośrednia przyczyna kosztów utrzymania i zależności od wykonawcy — zwłaszcza gdy zmienia się zespół lub rośnie system.

Minimalny sensowny zestaw:

  • Instrukcja uruchomienia od zera: nowy dev / nowe środowisko, krok po kroku, z oczekiwanymi rezultatami i typowymi błędami.

  • Opis konfiguracji: zmienne środowiskowe, sekrety, integracje, zależności zewnętrzne, wersje kluczowych komponentów.

  • Dokumentacja API: najlepiej w formie kontraktu (np. OpenAPI) + przykłady dla krytycznych endpointów.

  • Opis kluczowych procesów biznesowych: co jest „sukcesem”, jakie są wyjątki, stany przejściowe, scenariusze awarii.

  • Runbook operacyjny: wdrożenie, rollback, podstawowa diagnostyka, gdzie są logi i metryki, jak eskalować.

Jeśli ten pakiet nie istnieje, firma w praktyce „kup system” razem z ukrytym abonamentem na wiedzę wykonawcy.

Środowiska, deploy i dostępność zespołu klienta

Odbiór powinien potwierdzić, że klient ma realne możliwości operacyjne, a nie tylko „dostęp do kodu”.

Kryteria decyzyjne:

  • Pełny dostęp do repozytoriów, CI/CD, środowisk (oraz narzędzi typu monitoring/logowanie, jeśli są używane).

  • Powtarzalny deploy: da się postawić środowisko i wdrożyć aplikację bez ręcznych, nieudokumentowanych kroków oraz bez udziału wykonawcy.

  • Kontrola uprawnień: wiadomo, kto może wdrażać, kto zatwierdza, jak zarządzane są sekrety i dostęp do systemów zewnętrznych.

Jeżeli pipeline jest „zrobiony”, ale tylko wykonawca potrafi go uruchomić, to jest to ryzyko operacyjne, nie automatyzacja.

Testy, stabilność i lista znanych problemów

Najbardziej użyteczny model na odbiór to nie „czy mamy testy”, tylko „co dokładnie zostało sprawdzone i co świadomie akceptujemy”.

Co powinno być dostarczone:

  • Opis zakresu testów: jakie typy testów istnieją i jak je uruchomić, najlepiej w CI.

  • Lista scenariuszy: happy path oraz edge cases dla kluczowych procesów (np. limity paginacji, konflikty równoległe, retry, importy, uprawnienia).

  • Rejestr znanych błędów i ograniczeń: kroki odtworzenia, wpływ, obejście, decyzja o akceptacji i właściciel ryzyka.

Jeśli kompromisy nie są opisane, nie znikają. Zmienią tylko formę: w incydenty i koszty po starcie.

Bezpieczeństwo i compliance: minimum, które warto umieć obronić

Nie chodzi o audyt „dla papieru”. Chodzi o podstawy, które redukują typowe ryzyka aplikacji webowych i ułatwiają późniejsze zarządzanie.

Elementy praktyczne:

  • przegląd obszarów ryzyka (uwierzytelnianie, autoryzacja, walidacja danych, zarządzanie sesją, dane wrażliwe),

  • sposób trzymania i rotacji sekretów,

  • logowanie zdarzeń istotnych z perspektywy bezpieczeństwa i audytu.

W wielu firmach do tego dochodzi „rodo w firmie” jako wymóg procesowy. Jeśli ma to znaczenie w Twoim przypadku, warto doprecyzować odpowiedzialności i zakres danych, ale bez dopowiadania czegokolwiek „z automatu” — to powinno wynikać z umowy i dokumentacji.

Prawa do kodu, dostęp do kont i licencje zewnętrzne

Tu nie wystarczy deklaracja. Odbiór powinien zamknąć temat w sposób jednoznaczny, bo ryzyka prawne i operacyjne zwykle wychodzą dopiero przy zmianie dostawcy lub podczas audytu.

Do weryfikacji:

  • przekazanie kodu źródłowego (wraz z historią i skryptami/infrastrukturą, jeśli są częścią dostawy),

  • jednoznaczne prawa do korzystania i modyfikacji (zgodnie z umową),

  • inwentaryzacja bibliotek i usług zewnętrznych oraz ich licencji,

  • przekazanie własności kont (cloud, domeny, certyfikaty, narzędzia analityczne, monitoring) i rotacja kluczy po handoverze.

To obszar, w którym „stworz system” bez uporządkowania licencji i dostępu potrafi później kosztować najwięcej czasu.

Trade-offs i kompromisy, które warto podjąć świadomie

Kompromisy są normalne. Problem zaczyna się wtedy, gdy nikt nie potrafi powiedzieć, jakie są i gdzie uderzą.

Przykłady sensownych kompromisów (o ile są opisane i mają właściciela):

  • szybsze dowiezienie zakresu kosztem ograniczenia edge cases, z jasnym planem domknięcia,

  • prostsza architektura (np. modularny monolit) zamiast mikroserwisów, jeśli organizacja nie ma zasobów na złożoną operacyjność,

  • częściowa automatyzacja wdrożeń jako etap przejściowy, ale z dokumentacją i datą „wygaśnięcia” manualnych kroków.

Kompromis jest akceptowalny, gdy da się go zmierzyć (jak poznamy, że przestał działać) i gdy ma plan zarządzania ryzykiem.

Anti-patterny, które zwykle kończą się zależnością od wykonawcy

To sygnały ostrzegawcze, które powinny podnieść próg ostrożności przy odbiorze:

  • „Działa u nas” zamiast powtarzalnego uruchomienia na czystym środowisku,

  • konfiguracja i sekrety „rozproszone” po ręcznych instrukcjach albo prywatnych notatkach,

  • brak listy zależności zewnętrznych i właścicieli kont/billingu,

  • architektura w prezentacji, a inna w kodzie i pipeline,

  • brak rejestru znanych problemów (czyli brak świadomej akceptacji ryzyk),

  • CI/CD formalnie istnieje, ale klient nie ma kontroli nad wdrożeniami.

Im więcej takich punktów, tym większe prawdopodobieństwo, że po odbiorze utrzymanie przejmie obsługa informatyczna w trybie gaszenia pożarów, zamiast planowego rozwoju.

Warunki odmowy odbioru: co powinno blokować sign-off

To typowe „twarde” blokery, które uzasadniają wstrzymanie odbioru do czasu usunięcia braków albo formalnego waivera:

  • nie da się postawić środowiska i wdrożyć systemu bez udziału wykonawcy,

  • brak pełnego dostępu do repozytoriów, CI/CD i kluczowych narzędzi operacyjnych,

  • brak działającej instrukcji uruchomienia od zera oraz dokumentacji konfiguracji,

  • nieudokumentowana lub sprzeczna z deklaracją architektura dla krytycznych obszarów,

  • krytyczne problemy bezpieczeństwa lub brak podstawowej audytowalności zdarzeń,

  • niejednoznaczne przekazanie praw do kodu lub brak przekazania kont/usług,

  • brak inwentaryzacji bibliotek/usług i ich licencji,

  • krytyczne błędy bez pisemnej, świadomej akceptacji i opisanych obejść.

Checklisty decyzyjne na spotkanie handoverowe

Checklista dla wykonawcy

  • Bootstrapping od zera (lokalnie + świeże środowisko) bez „ukrytych kroków”.

  • Architektura: diagramy + kluczowe decyzje + wskazanie w repo, gdzie co jest.

  • CI/CD: pokaz wdrożenia i rollbacku z pipeline’u, do którego klient ma dostęp.

  • Dokumentacja API i integracji (kontrakty, błędy, retry/timeouts).

  • Rejestr znanych błędów i ograniczeń + informacja, co zaakceptowano.

  • Lista zależności i licencji + plan przekazania kont i rotacji kluczy.

  • Potwierdzenie przekazania kodu i praw zgodnie z umową.

Checklista dla zespołu klienta

  • Klon repo, build, uruchomienie lokalne bez konsultacji.

  • Postawienie środowiska i deploy na świeżej instancji.

  • Uruchomienie testów i interpretacja wyników.

  • Przejście przez krytyczny proces biznesowy end-to-end.

  • Weryfikacja: gdzie są logi/metriki, jak diagnozować problem, jak cofnąć wdrożenie.

  • Mała zmiana funkcjonalna jako „próba utrzymaniowa” (czy system jest rozwijalny bez pierwotnego wykonawcy).

Podsumowanie

Dobry handover po tworzenie aplikacji daje firmie kontrolę: nad kodem, wdrożeniami, środowiskami i wiedzą o systemie. Jeśli brakuje dokumentacji, dostępu do CI/CD albo da się uruchomić aplikację tylko „z pomocą wykonawcy”, ryzyko kosztowe i organizacyjne zostaje po stronie klienta. W praktyce sign-off ma sens wtedy, gdy możesz utrzymać i rozwijać system bez pierwotnego zespołu — a wyjątki są zapisane jako świadome decyzje, nie domysły.

Źródła

  1. https://martinfowler.com/bliki/TechnicalDebt.html

  2. https://12factor.net/

  3. https://owasp.org/www-project-top-ten/

  4. https://docs.github.com/en/actions

  5. https://cloud.google.com/architecture

  6. https://sre.google/books/

  7. https://choosealicense.com/

  8. https://www.atlassian.com/incident-management

Artykuły i aktualności

Dowiedz się więcej i poznaj szczegóły przy wdrażaniu innowacyjności

Software delivery6 min

From idea to tailor-made software for your business

A step-by-step look at the process of building custom software.

AI5 min

Hosting your own AI model inside the company

Running private AI models on your own infrastructure brings tighter data & cost control.

Hej!
Porozmawiajmy o Twoim pomyśle.

Przemysław Szerszeniewski's photo

Przemysław Szerszeniewski

Client Partner

LinkedIn