Umowa o wykonanie programu komputerowego jest często dość złożonym kontraktem. W większości przypadków nie obejmuje tylko samego stworzenia programu komputerowego, ale również takie aspekty jak: udzielenie licencji na stworzony program (lub przeniesienie na nabywcę programu autorskich praw majątkowych), sprzedaż sprzętu komputerowego, wdrożenie powstałego programu do systemów zamawiającego, przeszkolenie pracowników czy świadczenie usług serwisowych. Mamy tu więc do czynienia z umową mieszaną (składa się z elementów innych typów kontraktów). Do wykładni takich umów przede wszystkim znajdą zastosowanie przepisy kodeksu cywilnego oraz ustawy o prawie autorskim i prawach pokrewnych. Postanowienia umów dotyczącewykonania programu komputerowego powinny być wzorowane na regulacjach dotyczących umowy o dzieło.
Umowa o wykonanie programu komputerowego - współdziałanie stron
W przypadku umów o stworzenie i wdrożenie programu komputerowego najważniejsze znaczenie ma współdziałanie zamawiającego i wykonawcy oprogramowania. Zamawiający musi precyzyjnie i dokładnie określić swoje wymagania w stosunku do programu, który ma być dostarczony. Obowiązek wspólnego działania zamawiającego oprogramowanie z wykonawcą wynika nie tylko z art. 354 § 2 k.c., ale także z art. 640 k.c. Dlatego w umowie kwestia współpracy stron musi być poddana szczegółowej regulacji - bez niej trudno jest stworzyć oprogramowanie, które zaspokajałoby potrzeby zamawiającego.
Powszechna jest więc praktyka, że prace nad stworzeniem i wdrożeniem nowego oprogramowania poprzedza analiza potrzeb zamawiającego. W wyniku przeprowadzonego badania powinna powstać specyfikacja wymagań oprogramowania, czyli opis funkcjonalności, ich rozwiązania techniczne i funkcjonalne, zidentyfikowane oraz opisane wszystkie wymagania użytkowników.
Brak współdziałania pomiędzy stronami może być podstawą do odstąpienia od umowy, kiedy wskutek braku współpracy któraś ze stron nie może wykonać swojej części umowy (art. 640 k.c.). W takiej sytuacji uprawnionemu będzie przysługiwać prawo do odszkodowania na zasadach ogólnych (471 k.c.) - o ile oczywiście strony nie postanowią w umowie inaczej rozwiązać tej kwestii.
Umowa o wykonanie programu komputerowego - przedmiot umowy
Strony powinny precyzyjnie i dokładnie określić przedmiot umowy. Jasne opisanie przeznaczenia oprogramowania, warunków, które powinno spełniać i celów, do których będzie wykorzystywane, musi stanowić punkt wyjścia dla stworzenia kontraktu. Nie ma potrzeby, aby specyfikacja dotycząca oprogramowania była zawarta w tekście samej umowy - w kontrakcie wystarczy ogólnie określić, co jest jego przedmiotem z zastrzeżeniem, że dokładne wytyczne stanowią załącznik do umowy. Wszystko to pozwoli uniknąć sporów na etapie wykonywania umowy i należycie zabezpieczy interesy obu stron.
Podsumowując, w specyfikacji warunków oprogramowania powinno się przede wszystkim określić:
- funkcje, jakie ma spełniać zamawiany program komputerowy,
- jego cel/przeznaczenie/zastosowanie,
- warunki i środowisko techniczne, w którym program komputerowy powinien działać,
- specyfikację techniczną programu komputerowego.
Umowa o wykonanie programu komputerowego - kwestie prawne
Zgodnie z obowiązującym prawem przedmiotem prawa autorskiego jest utwór - każdy przejaw działalności twórczej o indywidualnym charakterze, ustalony w jakiejkolwiek postaci, niezależnie od wartości, przeznaczenia i sposobu wyrażenia. Program komputerowy zgodnie z przepisami prawa autorskiego także jest utworem, dlatego jeśli jest wykonywany w ramach umowy o stworzenie programu komputerowego, istotne jest, aby w kontrakcie określić, na jakich zasadach zamawiający program będzie mógł z niego korzystać.
Warto w tym miejscu podkreślić, że na gruncie prawa przez pojęcie “program komputerowy” (czyli program w finalnej postaci, jak również jego kod źródłowy) rozumie się także przygotowawcze prace projektowe prowadzące do rozwoju programu. Ochronie więc podlega również:
-
dokumentacja tworzona przez wykonawcę na potrzeby konkretnego wdrożenia, czyli materiały zawierające koncepcję tego wdrożenia, jego konfigurację techniczną (projekt techniczny systemu) oraz
-
dokumentacja powdrożeniowa, dotycząca eksploatacji systemu.
Nie podlegają natomiast ochronie idee i zasady programu komputerowego, język, w jakim został napisany. Nie ma jednak przeszkód, aby na zasadzie konieczności zachowania tajemnicy objąć ochroną kontraktową np. pomysł na program.
Licencja czy przeniesienie autorskich praw majątkowych do programu?
Twórcy programów komputerowych najczęściej zgadzają się na udostępnienie swoich programów w ramach licencji. Dzieje się tak, ponieważ zastosowanie stworzonych przez nich programów jest najczęściej powtarzalne. Uniwersalność niektórych programów sprawia, że ich twórcy, dokonując odpowiednich modyfikacji, są w stanie dostosować je do potrzeb danego użytkownika. Decydując się na udostępnienie programu w ramach licencji, przy licencjodawcy pozostają więc wszystkie prawa do programu i jego dokumentacji - może je więc dalej modyfikować, ulepszać czy wykorzystywać poszczególne komponenty do tworzenia innego oprogramowania.
Istnieje kilka rodzajów licencji, jednak najważniejsze z nich to:
-
licencja wyłączna - bardzo rzadko udzielana w przypadku programów komputerowych. Stosuje się ją najczęściej, kiedy zawierane są duże kontrakty (np. stworzenie oprogramowania dla banku). Idea takiej licencji sprowadza się do tego, że jedynie zamawiający program może z niego korzystać. Licencjodawca nie może udzielić licencji nikomu innemu. Ponadto, umowa licencyjna wyłączna wymaga zachowania formy pisemnej pod rygorem nieważności.
-
licencja niewyłączna - udzielający licencji może zezwolić na korzystanie z danego programu innym użytkownikom, nie tylko zamawiającemu. Ten rodzaj licencji jest najczęściej stosowany.
-
sublicencja - licencjobiorca może udzielić dalszej licencji na dany program.
W przypadku programów komputerowych najczęściej stosuje się licencje niewyłączne i nieprzenoszalne (licencjobiorca nie może przenieść licencji dalej).
Udzielając licencji, należy w umowie dokładnie określić jej zakres, np. liczbę użytkowników udostępnionego oprogramowania, określenie kto może być użytkownikiem (np. tylko pracownicy danej firmy), określenie miejsca, w którym można będzie korzystać z oprogramowania w firmie (np. wyłącznie w siedzibie przedsiębiorcy). Ustalenie zakresu licencji jest bardzo ważne z punktu widzenia odpowiedzialności licencjobiorcy za korzystanie z programu niezgodnie z umową. Odpowiednie zapisy umowne ograniczające możliwość korzystania z programu tylko w miejscu jego instalacji, na określonym sprzęcie (klauzule CPU - Central Processing Unit) są stosowane także po to, aby licencjodawca mógł zabezpieczyć się przed zarzutem niespełniania przez program określonych funkcji. Warto więc pamiętać, aby w specyfikacji warunków oprogramowania określić wymagania sprzętowe, jakie musi spełniać dany program. Późniejsze zlecanie dostosowywania programu do sprzętu może być dla użytkownika programu bardzo kosztowne.
W przypadku udzielenia licencji warto uregulować w umowie także kwestię dostępu do kodu źródłowego, który w zdecydowanej większości przypadków jest traktowany przez twórców programów komputerowych jako tajemnica przedsiębiorstwa i zamawiający nie powinien mieć do niego dostępu. Z kolei dla zamawiającego dostęp do kodu źródłowego może być potrzebny np. gdy konieczne jest poprawienie błędów programu, dopasowania go do nowych potrzeb lub w sytuacji upadłości licencjodawcy lub niewywiązywania się przez niego z obowiązku uaktualniania programu. Jako kompromis strony mogą przekazać kod źródłowy osobie trzeciej (np. notariuszowi) z określeniem warunków jego udostępnienia licencjobiorcy. Strony mogą również postanowić, że licencjodawca, obowiązany dostarczać aktualizacje programu, będzie musiał przekazywać zmieniony kod źródłowy osobie trzeciej. Należy oczywiście pamiętać, żeby określając zakres licencji nie tylko zastrzec sobie prawo dostępu do kodu źródłowego, ale również możliwość samodzielnego wprowadzania koniecznych zmian w programie, o ile zmian tych nie może z konkretnych powodów dokonać licencjodawca.
Zamiast udzielać licencję, wykonawca programu może przenieść autorskie prawa majątkowe do programu komputerowego na zamawiającego. Choć w praktyce takie rozwiązania należą do rzadkości (wykonawca najczęściej jest zainteresowany dalszym rozwijaniem swojego oprogramowania i udostępniania go osobom trzecim), to jednak są stosowane. Może się tak zdarzyć w przypadku know-how. Polega to na tym, że przedsiębiorca, posiadając jakąś wiedzę fachową, techniczną o charakterze poufnym, zleca stworzenie programu na podstawie tej wiedzy - chce mieć więc pełne prawa majątkowe do stworzonego programu. W takiej sytuacji należy zawrzeć w umowie odpowiednie zapisy dotyczące przeniesienia autorskich praw majątkowych na zamawiającego. Wykonawca powinien również wyrazić zgodę na wprowadzanie modyfikacji w programie, jeśli chcemy mieć taką możliwość. Można również w umowie zobowiązać wykonawcę, aby upoważnił zamawiającego do wykonywania w jego imieniu autorskich praw osobistych, o których mowa w ustawie o prawie autorskim i prawach pokrewnych w art. 16.
Umowa o wykonanie programu komputerowego a wady prawne programu komputerowego
Mając na uwadze powyższe, bardzo ważne jest, aby zawrzeć w umowie zapis o gwarancji wykonawcy, że stworzony przez niego program jest wolny od wad prawnych oraz nieobciążony prawami osób trzecich. Wadami prawnymi mogą być dotknięte poszczególne moduły, a także mniejsze jednostki kodu oprogramowania. Często bowiem twórca danego oprogramowania przy jego realizacji zatrudnia programistów na podstawie umowy zlecenia lub innej umowy cywilnoprawnej. W takiej sytuacji prawa majątkowe do części stworzonego programu komputerowego będą należeć do podwykonawcy, jeśli wykonawca nie zadba o przeniesienie autorskich praw majątkowych. Jeśli zamawiający chce mieć stuprocentową pewność, że nie dojdzie do takiej sytuacji, powinien zamieścić w umowie zapis, że twórca zobowiązuje się wykonywać pracę indywidualnie i nie zleci jej nikomu innemu. Można ponadto wprowadzić do umowy dodatkowe klauzule na wypadek ujawnienia się wad prawnych oprogramowania, np. zobowiązanie wykonawcy do podjęcia działań zmierzających do nabycia praw do korzystania z oprogramowania, w takim zakresie, w jakim prawa majątkowe przysługują podmiotowi trzeciemu lub zobowiązanie do zastąpienia wadliwych modułów niewadliwymi.
Umowa o wykonanie programu komputerowego a wady fizyczne programu komputerowego
Wadami fizycznymi programu będą usterki, które uniemożliwiają spełnienie przez program założonych funkcji, przykładowo niekompatybilność z innymi urządzeniami lub programami, brak umówionych funkcjonalności, modułów, błędy w przebiegu programu. Odpowiedzialność za usterki została uregulowana w art. 55 prawa autorskiego, jednak może być ona niewystarczająca, dlatego nic nie stoi na przeszkodzie, aby strony uregulowały tę kwestię odrębnie, np. poprzez udzielenie przez wykonawcę gwarancji na wykonany program. Dobrym rozwiązaniem jest również współpraca stron w trakcie tworzenia programu przez wykonawcę poprzez wykonywanie przez zamawiającego testów oprogramowania, zgłaszania uwag i poprawek. Pozwala to na jak najdokładniejsze wyeliminowanie usterek.
Umowa o wykonanie programu komputerowego - aktualizacja i serwisowanie oprogramowania
W umowach o stworzenie programu komputerowego bardzo często zawierane są zapisy dotyczące aktualizacji oprogramowania, serwisowania, wsparcia dla użytkowników.
Zapisy o aktualizacji oprogramowania powinny przede wszystkim precyzować, jak często aktualizacja będzie przeprowadzana. Jeśli w jej wyniku dojdzie do istotnych zmian w oprogramowaniu, zamawiający powinien zastrzec w umowie, że wykonawca przeprowadzi dodatkowe szkolenia. Warto mieć też na uwadze, że nowa wersja oprogramowania zwykle jest nowym utworem w rozumieniu prawa autorskiego, dlatego jeśli korzystamy z oprogramowania w ramach licencji, należy pamiętać, aby określając zakres licencji, zastrzec, że licencja obejmuje korzystanie także z nowych, zaktualizowanych wersji programów.
Uregulowanie kwestii serwisowania oprogramowania daje gwarancję praktycznie nieprzerwanego korzystania z oprogramowania i szybkiego usuwania usterek. Zapisy o serwisowaniu powinny więc dotyczyć czasu, w którym wykonawca oprogramowania zobowiązuje się usunąć usterki, przywracając normalne funkcjonowanie programu. Warto również w umowie skategoryzować wady oprogramowania, określając, które z nich będą usterkami całkowicie uniemożliwiającymi korzystanie z oprogramowania, a które są mniejszej wagi. Na podstawie takiej kategoryzacji można określić maksymalny czas, w którym dane usterki będą naprawiane.
Strony mogą również uregulować umownie kwestię wsparcia dla użytkowników, czyli np. udzielanie odpowiedzi na wszelkie pytania dotyczące korzystania z oprogramowania. W zapisach dotyczących wsparcia powinno się określić, za pomocą jakich środków komunikacji można porozumiewać się z wykonawcą oprogramowania, kiedy użytkownicy mogą zadawać pytania (np. określony czas w ciągu dnia), jak długo mają czekać na odpowiedź itd.