Dostawca oprogramowania na zamówienie - od czego zależy wybór

Dostawca oprogramowania na zamówienie odpowiada za cały łańcuch od analizy po utrzymanie, więc jego wybór jest decyzją na lata, a nie na jeden projekt. System pisany pod konkretny proces staje się częścią pracy firmy. Zmiana wykonawcy po dwóch latach kosztuje tyle, ile przejęcie cudzego kodu, a to zależy od decyzji podjętych przy pierwszej umowie.

Ten tekst zajmuje się jednym pytaniem: jak ocenić kandydatów według kryteriów, które da się sprawdzić, a nie według wrażenia z prezentacji. Zakres pojęcia opisuje strona o software house, a ogólny przegląd rynku - artykuł o dostawcy oprogramowania dla firm. Tutaj chodzi o samą procedurę wyboru.

Rodzaje dostawców i związane z nimi ryzyko

Na rynku działają wykonawcy o różnym profilu. Każdy profil ma inną mocną stronę i inne typowe ryzyko.

Typ dostawcyMocna stronaTypowe ryzyko
Programista indywidualnyNiski koszt, szybki startZależność od jednej osoby, brak zastępstwa
Mała pracownia programistycznaBezpośredni kontakt z zespołemOgraniczona zdolność do równoległych prac
Software houseZespół z podziałem ról i proces testowyWyższy koszt wejścia, formalna umowa
Integrator z własnym produktemGotowe moduły i wiedza branżowaSkłonność do dopasowania projektu do produktu
Typy dostawców oprogramowania na zamówienie i typowe ryzyka.

Żaden z typów nie jest zły z definicji. Pytanie brzmi, czy profil dostawcy pasuje do skali i ryzyka projektu. System obsługujący magazyn przez całą dobę wymaga innej organizacji utrzymania niż wewnętrzny moduł raportowy używany przez trzy osoby.

Zapytanie ofertowe i porównywalność ofert

Oferty da się porównać tylko wtedy, gdy każdy kandydat odpowiada na to samo zapytanie. Zamawiający, który rozmawia z trzema wykonawcami na podstawie trzech różnych opisów potrzeb, dostaje trzy wyceny na trzy różne projekty. Zapytanie ofertowe powinno zawierać opis procesów i listę integracji. Dopisuje się do niego wymagania niefunkcjonalne oraz oczekiwany sposób rozliczenia.

Dobrą praktyką jest także krótka faza rozpoznawcza przed wyceną. Może być płatna albo bezpłatna, zależnie od skali projektu. Analiza przedwdrożeniowa, opisana w artykule o analizie przedwdrożeniowej, pokazuje, czy wykonawca zadaje pytania o proces, czy tylko o termin i budżet. Kandydat, który wycenia projekt po jednej rozmowie, zwykle wycenia własne założenia, a nie potrzeby zamawiającego.

Pytania do każdego oferenta

Poniższe cztery pytania należy zadać wszystkim kandydatom i zapisać odpowiedzi w tej samej formie.

  • Kto wykona pracę - imiona i role osób przypisanych do projektu oraz zastępstwo na wypadek nieobecności.
  • Jak wygląda odbiór - kto pisze scenariusze testowe, kiedy zamawiający widzi działającą wersję i według jakich kryteriów przyjmuje etap.
  • Co zawiera cena - czy cena obejmuje dokumentację i szkolenia. Trzeba też wiedzieć, czy zawiera migrację danych oraz kod źródłowy, czy są one wyceniane osobno.
  • Co dzieje się po odbiorze - zakres gwarancji, warunki umowy serwisowej i sposób zgłaszania błędów.

Model rozliczenia i jego konsekwencje

Ten sam zakres prac można rozliczyć na kilka sposobów, a wybór modelu zmienia rozkład ryzyka między zamawiającego i wykonawcę. Przy stałej cenie ryzyko przekroczenia kosztów spada na wykonawcę, ale każda zmiana wymaga aneksu. Przy rozliczeniu według czasu pracy zamawiający zachowuje elastyczność, lecz sam pilnuje budżetu.

Czworo współpracowników przy wspólnym stole z laptopem i notatkami na tle pomarańczowych i niebieskich wzorów geometrycznych, ilustracja omawiania warunków rozliczenia
Model rozliczenia ustala się przed podpisaniem umowy, razem z zasadami zmiany zakresu.
ModelKiedy pasujeGłówne ryzyko zamawiającego
Cena stała za zakresZakres znany i opisany w specyfikacjiSztywny zakres, każda zmiana wymaga aneksu
Czas i materiałZakres niepewny, prace iteracyjneBrak górnej granicy kosztu bez limitu budżetowego
Ryczałt miesięczny za zespółRozwój ciągły, wiele drobnych zmianPłatność także w miesiącach o małej liczbie zadań
Model mieszanyFaza projektowa stała, rozwój według czasuPotrzeba jasnej granicy między fazami
Modele rozliczenia projektu na zamówienie i ryzyko po stronie zamawiającego.

Niezależnie od modelu warto żądać raportu z postępu prac w formie zgodnej z ofertą. Zamawiający, który płaci za czas, widzi wtedy, na co go poświęcono, a ten, który płaci za etap, widzi, ile zostało do odbioru.

Limit budżetowy i zmiany

Przy rozliczeniu według czasu warto ustalić limit, po przekroczeniu którego wykonawca wstrzymuje prace do decyzji zamawiającego. Limit chroni obie strony: zamawiający nie dowiaduje się o przekroczeniu po fakcie, a wykonawca nie pracuje bez potwierdzenia budżetu.

Referencje i próba pracy dostawcy

Referencje mają wartość, gdy dotyczą podobnego procesu i zbliżonej skali. List polecający od klienta z innej branży mówi o kulturze współpracy, ale nie o zdolności do zbudowania systemu magazynowego czy rozliczeniowego. Zamawiający może poprosić o kontakt do osoby, która korzystała z dostarczonego systemu, i zadać jej kilka konkretnych pytań.

Programista przy biurku z trzema monitorami wypełnionymi kodem, na tle pomarańczowo-niebieskiej abstrakcji, ilustracja przeglądu pracy dostawcy
Próbka kodu i przegląd sposobu pracy zespołu mówią o dostawcy więcej niż prezentacja handlowa.

Pytania do klienta referencyjnego powinny dotyczyć faktów: czy projekt zakończył się w uzgodnionym zakresie, jak wykonawca reagował na błędy po wdrożeniu i czy zmiana zakresu przebiegała według ustalonych zasad. Odpowiedź „jesteśmy zadowoleni” jest mniej użyteczna niż informacja, że po pierwszej awarii wykonawca przekazał opis przyczyny i zmianę w kodzie tego samego dnia.

Przegląd kodu i demonstracja

Wykonawca powinien pokazać nie tylko gotowy ekran, lecz także sposób pracy: repozytorium z historią zmian oraz procedurę przeglądu kodu przed scaleniem. Ważne są też testy automatyczne i skrypty wdrożeniowe. Zamawiający bez wiedzy technicznej może poprosić niezależnego specjalistę o ocenę fragmentu kodu. Kilka godzin przeglądu ujawnia więcej niż tygodnie rozmów handlowych.

Reguła: referencja liczy się dopiero po rozmowie z osobą, która używa dostarczonego systemu, a nie wyłącznie z osobą, która podpisała umowę.

Tabela oceny ofert z wagami

Tabela oceny zamienia wrażenia na liczby i chroni przed decyzją opartą wyłącznie na cenie. Kryteria i wagi ustala zamawiający przed otwarciem ofert, tak aby wynik nie był dopasowywany do faworyta. Poniższe wagi są przykładowe i wymagają dostosowania do ryzyka konkretnego projektu.

KryteriumWagaCo oceniamy
Zrozumienie procesu25%Jakość pytań w fazie rozpoznawczej, trafność uwag do zapytania
Referencje i próbka pracy20%Podobieństwo projektów, wynik rozmowy z klientem, przegląd kodu
Kod i prawa20%Przekazanie kodu, przeniesienie praw, lista komponentów
Gwarancja i serwis20%Zakres gwarancji, poziomy usług, sposób zgłaszania błędów
Cena i harmonogram15%Jasność wyceny, ryzyka założone w harmonogramie
Przykładowa tabela oceny dostawców z wagami kryteriów.

Ocenę każdego kryterium wystawia zespół co najmniej dwuosobowy, a średnia z ocen jest mnożona przez wagę. Zamawiający, który chce policzyć wynik automatycznie, może zapisać oceny w arkuszu albo w bazie. Poniższe zapytanie T-SQL jest przykładowe i pokazuje sumę ważoną dla każdego oferenta.

SELECT o.Nazwa,
       SUM(k.Waga * s.Ocena) / SUM(k.Waga) AS WynikWazony
FROM   dbo.Oferent AS o
JOIN   dbo.OcenaKryterium AS s ON s.OferentId = o.OferentId
JOIN   dbo.Kryterium AS k      ON k.KryteriumId = s.KryteriumId
GROUP BY o.Nazwa
ORDER BY WynikWazony DESC;

Kryteria odrzucające i punktowane

Nie wszystkie wymagania nadają się do punktowania. Część z nich to warunki konieczne: bez zgody na przekazanie kodu źródłowego albo, gdy wykonawca ma dostęp do danych osobowych, bez umowy powierzenia ich przetwarzania oferta odpada niezależnie od liczby punktów. Punktuje się dopiero to, co podlega stopniowaniu, na przykład jakość referencji albo szczegółowość harmonogramu.

Rozdzielenie obu grup zapobiega sytuacji, w której wysoka ocena za cenę i harmonogram kompensuje brak zgody na podstawowe zapisy umowy.

Wynik liczbowy nie zastępuje rozmowy. Pomaga natomiast wykryć sytuację, w której dostawca z najlepszą ceną ma najsłabsze oceny w kryteriach dotyczących kodu i serwisu, czyli tam, gdzie błędy wychodzą po wdrożeniu.

Gwarancja i odpowiedzialność za wady

Gwarancja na oprogramowanie na zamówienie dotyczy zgodności systemu ze specyfikacją. Obejmuje naprawę błędów wykonawcy, ale nie obejmuje nowych funkcji ani zmian wynikających z decyzji biznesowych zamawiającego. Umowa powinna rozdzielać te dwie kategorie, bo w praktyce większość sporów zaczyna się od pytania, czy zgłoszenie jest błędem, czy życzeniem.

Ważny jest także rozdział między czasem reakcji a czasem naprawy. Reakcja oznacza potwierdzenie zgłoszenia i podjęcie diagnozy, naprawa oznacza dostarczenie poprawki. Wykonawca może dotrzymać pierwszego terminu, nie mając żadnego zobowiązania co do drugiego, jeśli umowa tego nie rozdziela.

PriorytetPrzykład zgłoszeniaCo ustala umowa
KrytycznySystem nie uruchamia się, magazyn stoiCzas reakcji, dostępność w godzinach pracy i poza nimi
WysokiBłędny wynik w raporcie rozliczeniowymCzas reakcji i termin poprawki lub obejścia
ŚredniFunkcja działa, ale nie zgodnie ze specyfikacjąPoprawka w najbliższym wydaniu
NiskiLiterówka w komunikaciePoprawka razem z kolejną zmianą
Priorytety zgłoszeń, które umowa serwisowa powinna rozdzielać.

Umowa serwisowa i utrzymanie po wdrożeniu

Gwarancja wygasa, a system nadal działa i wymaga opieki. Umowa serwisowa opisuje, kto przyjmuje zgłoszenia i w jakich godzinach. Wskazuje też kanał zgłoszeń oraz priorytety. Określa także zakres aktualizacji platformy, na przykład SQL Server i systemu operacyjnego, oraz zasady wykonywania i sprawdzania kopii zapasowych. Podział obowiązków między dostawcę a zamawiającego jest szerzej omówiony w tekście o oprogramowaniu na zamówienie a obsłudze IT.

Utrzymanie systemu można oprzeć na umowie ryczałtowej, pomocy zdalnej albo doraźnych zleceniach, czyli tych samych formach, w jakich rozliczają się firmy świadczące obsługę informatyczną. Porównanie takich modeli znajduje się na stronie o obsłudze informatycznej firm. Dla zamawiającego ważne jest, aby umowa serwisowa nie uzależniała dostępu do kodu od jej przedłużania.

Wsparcie wdrożenia przez dostawcę

Okres tuż po uruchomieniu generuje najwięcej zgłoszeń, bo użytkownicy zderzają się z systemem w warunkach rzeczywistych. Rolę dostawcy w tej fazie opisuje artykuł wsparcie wdrożenia systemu - rola dostawcy. Kandydat powinien wskazać, kto z jego zespołu będzie dostępny w pierwszych tygodniach i w jakim trybie.

Bezpieczeństwo, prawa do kodu i czerwone flagi

Kryteria techniczne uzupełnia ocena bezpieczeństwa. Zamawiający może wymagać, aby aplikacja webowa była budowana z uwzględnieniem wymagań weryfikacji bezpieczeństwa aplikacji publikowanych przez organizację OWASP, w tym standardu Application Security Verification Standard. Wykonawca powinien odpowiedzieć, które wymagania standardu uwzględnia i jak je testuje.

Drugim obszarem są prawa do kodu i jego przekazanie. Szczegóły opisuje artykuł o dedykowanym oprogramowaniu na zamówienie, w którym omówiono specyfikację i prawa do kodu. W tabeli oceny odpowiada im osobne kryterium, bo błąd w zapisach kosztuje najwięcej wtedy, gdy zamawiający chce zmienić wykonawcę.

Plan wyjścia z umowy

Umowa z dostawcą powinna przewidywać zakończenie współpracy, zanim do niego dojdzie. Plan wyjścia wskazuje, w jakim terminie wykonawca przekazuje kod oraz dokumentację i dane, a także jak wygląda okres przejściowy, w którym nowy zespół poznaje system. Taki zapis niewiele kosztuje przy podpisaniu umowy, a przy sporze bywa jedynym, który zapobiega paraliżowi pracy.

Czerwone flagi w ofercie

Cztery sygnały warto potraktować jako powód do dodatkowych pytań przed podpisaniem umowy.

  • Brak opisu zakresu - oferta składa się z kwoty i terminu, bez listy funkcji i kryteriów odbioru.
  • Niechęć do pokazania kodu - wykonawca odmawia przeglądu próbki albo dostępu do repozytorium w trakcie projektu.
  • Brak imion w zespole - oferta nie wskazuje osób, a tylko „zespół programistów”.
  • Serwis bez zakresu - umowa serwisowa nie rozdziela błędów od zmian i nie określa priorytetów.

Ponieważ różne firmy mają inne zasady współpracy, przydaje się porównanie z wymaganiami opisanymi w artykule o dostawcy oprogramowania z doświadczeniem oraz o wyborze dostawcy i integracjach. Pytanie o styl pracy zespołu i o podział ról warto uzupełnić wnioskiem z projektu pilotażowego. Jeśli decyzja dotyczy wyboru między własnym systemem a gotowym rozwiązaniem, pomaga tekst o oprogramowaniu dedykowanym i rozwiązaniach masowych.

SoftwareStudio opisuje w ofercie zespół, w którym pracują analitycy, programiści, specjaliści od baz danych oraz wdrożeniowcy, i wycenia projekty indywidualnie. Zakres współpracy przy oprogramowaniu na zamówienie znajduje się na stronie oferty oprogramowania na zamówienie, a kontakt w sprawie wyceny jest dostępny pod numerem +48 533 322 626.