lut 05

Jednym z najważniejszych aspektów oprogramowania na zamówienie jest podpisanie dobrze skonstruowanej umowy licencyjnej lub umowy na stworzenie oprogramowania. To w nich zawarte są bardzo istotne zapisy, które ujmują między innymi prawne obszary wykorzystania napisanej aplikacji. To niezwykle ważne, gdyż zakup oprogramowania dalece różni się od zakupu telewizora w markecie a zamówienie i zapłacenie za tego typu program nie oznacza automatycznie możliwości nieograniczonego wykorzystania.
Umowa licencyjna na oprogramowanie na zamówienie powinna chronić obie strony. Często jest tak, że ważne zapisy nie znajdują się w umowie lub ich brzmienie pozwala na różne interpretacje. Nierzadko mają miejsce niekorzystne zapisy w licencji dla jednej ze stron.

Zwykle umowa przedstawiana jest przez firmę IT i po zatwierdzeniu przez zleceniodawcę zostaje podpisana. Najczęściej są to standardowe umowy zmienione co najwyżej o zapisy, które indywidualnie wynegocjował zleceniodawca (np. dłuższy termin płatności). Poniższa tabela przedstawia częste, niekorzystne zapisy przygotowywane przez jedną ze stron.

Firma IT Zleceniodawca
Konieczność zamawiania późniejszych modyfikacji u twórcy oprogramowania Odpowiedzialność twórcy programu za wszystkie jego dysfunkcje, nawet takie na które nie miał wpływu (np. awaria komputera zleceniodawcy)
Ograniczenie wykorzystania programu do określonej liczby stanowisk komputerowych Długi termin płatności lub niejasno sformułowany sposób odbioru aplikacji przez zleceniodawcę, od którego liczony jest termin płatności
Konieczność przeszkolenia u twórcy każdej osoby używającej program Znaczne kary umowne za niedotrzymanie terminów
Zawiłe stwierdzenie umożliwiające dowolną interpretację Zapisy wymuszające na firmie IT wykonanie dodatkowych czynności (np. bezpłatne szkolenie)
Brak terminu wykonania oprogramowania Zapisy o tajemnicy handlowej, które skutecznie uniemożliwiają napisanie aplikacji
Drogie usługi posprzedażne (szkolenia, usuwanie usterek)
Konieczność zakupu sprzętu komputerowego od twórcy aplikacji

Tabela 1: Niekorzystne zapisy w umowach na stworzenie aplikacji

W zasadzie wiele aspektów regulują przepisy prawa obowiązujące w kraju. Przykładowo, firma IT jest zobowiązana do wykonania usługi zgodnie z zawodowym charakterem prowadzonej działalności. Mimo, że na prowadzenie firmy IT nie jest wymagana koncesja czy pozwolenie, osoba prowadząca taką firmę ma obowiązek posiadania faktycznych umiejętności lub wymaganych kwalifikacji a wykonywane przez nią usługi muszą charakteryzować się starannością.

Z drugiej strony, zleceniodawca ma obowiązek zapłacić za wykonaną usługę zgodnie z umową, a także dostarczyć firmie IT wszelkich niezbędnych informacji do wykonania oprogramowania.

Dobrze jest w umowie licencyjnej umieścić zapisy, które do pewnego stopnia regulują zachowanie stron. Przykładem mogą być zapisy dotyczące ceny późniejszych modyfikacji za oprogramowanie na zamówienie. Z jednej strony, wyznaczenie uniwersalnego cennika jest niewykonalne, gdyż nie wiadomo, co będzie podlegać modyfikacjom i ile czasu zajmie ich wykonanie. Z drugiej strony, pozostawienie tego obszaru bez jakiegokolwiek zapisu może spowodować, że zleceniodawca nie będzie mógł uzyskać modyfikacji lub będą one bardzo drogie. Warto zawrzeć zapis o „uwzględnieniu przy wycenie modyfikacji ceny początkowej aplikacji”. Podstawą tego zapisu jest założenie, że modyfikacja stanowiąca 10% czasu poświęconego na napisanie programu powinna kosztować w przybliżeniu 10% ceny początkowej. Oczywiście, nie będzie tyle kosztować, choćby ze względu na upływ czasu i inflację, ale jest w tym zapisie zachowana pewna uczciwa proporcja.

Często modyfikacje oprogramowania na zamówienie zgodnie z zapisami licencji muszą być wykonywane przez twórców aplikacji. Zleceniodawca najczęściej w pierwszym rzędzie zwróci się o modyfikacje do firmy IT i zleci je, nawet jeśli będą droższe niż w innych firmach. Zależność ta spowodowana jest faktem, iż twórcy najlepiej znają program i najszybciej oraz w najbardziej optymalny sposób są w stanie wykonać modyfikacje. Poza tym, zleceniodawca zna już twórcę programu, więc jeśli nie pojawiły się między nimi poważne nieporozumienia w trakcie pisania, musi być między nimi nawiązany jakiś stopień zaufania. Z tych powodów zapis o konieczności zamawiania modyfikacji u twórcy aplikacji wydaje się zbędny.

W przypadku szkoleń dotyczących użytkowania programu zleceniodawca również będzie wolał, aby przeprowadził je raczej twórca niż firma zewnętrzna z omawianych już powyżej względów.

Zleceniodawca nie powinien być ograniczony co do ilości stanowisk, na jakich może wykorzystywać oprogramowanie na zamówienie, gdyż to właściwie nie wpływa na czas, jaki firma IT poświęciła na napisanie programu. Są oczywiście wyjątki. Przykładem może być sytuacja, gdy zleceniodawca zacznie używać aplikacji na takiej ilości stanowisk, że nie wytrzyma tego serwer bazodanowy. Warto więc nie ograniczać zleceniodawcy komputerów, lecz na przykład zapisać, że aplikacja działa optymalnie dla X komputerów. Wtedy zleceniodawca ma świadomość możliwości aplikacji a firma IT zabezpiecza się przed zarzutem np. spowolnienia działania aplikacji w pewnych sytuacjach.

Umowa licencyjna powinna chronić również firmę IT. Jeśli błędy w działaniu aplikacji wynikają z winy systemu operacyjnego, sprzętu komputerowego czy błędów w użytkowaniu aplikacji na zamówienie, odpowiedzialność twórcy powinna być ograniczona. Ze względu na powyższe ograniczenie usuwanie usterek przez twórcę powinno być płatne, lecz tym samym jest on zobowiązany do ich usunięcia, gdyż zleceniodawca – nawet jeśli zawinił – nie może pozostać z niedziałającym oprogramowaniem, za które zapłacił sporo pieniędzy. W celu rozstrzygnięcia czy firma IT ponosi odpowiedzialność za usterkę można zawierzyć firmie IT lub wynająć zewnętrznego konsultanta. Nieprzyznanie się do winy twórcy aplikacji, gdy zawinił stanowi jednak naruszenie prawa i może pociągać za sobą konsekwencje prawne, dlatego takie zachowanie należy do rzadkości.

Tagged with:
lut 05

Oprócz umowy na stworzenie oprogramowania na zamówienie czy umowy licencyjnej zleceniodawca często otrzymuje warunki gwarancji na oprogramowanie. Dokument ten, wyznacza zakres odpowiedzialności za usterki twórcy oprogramowania. Najważniejsze punkty zawarte w takiej umowie gwarancyjnej to:

Nazwa Opis
Okres gwarancji Zwykle trwa od roku do kilku lat. Generalnie, jeśli oprogramowanie na zamówienie  funkcjonuje kilka miesięcy to jest mała szansa na to, że po tym czasie przestanie funkcjonować z winy wadliwie wykonanego kodu (zwykle powodem jest wtedy system operacyjny, sprzęt komputerowy, błąd użytkownika). Błędy programistyczne pojawiają się zazwyczaj w pierwszym okresie użytkowania
Zakres gwarancji Wyznacza obszary odpowiedzialności firmy IT za oprogramowanie na zamówienie. Może być tak, że różne moduły programu mają różny zakres (np. dlatego, że oprogramowanie łączy się z innym programem/serwisem a te mogą zostać zmodyfikowane)
Podmiot gwarancji Określa, kto może się ubiegać o naprawę usterki. Najczęściej podmiotem gwarancji jest zleceniodawca
Czas reakcji na problem Ustawowe 14 dni to w tym przypadku to za długi okres. Problemy krytyczne powinny być rozwiązywane natychmiast a takie, które nie uniemożliwiają korzystania z aplikacji, w możliwie krótkim czasie. Ze względu na różną wagę problemów trudno jest w tym przypadku określić maksymalny czas, dlatego określa się czas reakcji na problem (czas, w którym firma IT przystępuje do rozwiązania problemu)
Zapisy wyłączające odpowiedzialność Czasem w gwarancji występują zapisy stanowiące o tym, za co firma IT nie odpowiada
Inne zapisy Czasem umieszcza się zapis o możliwości przedłużenia gwarancji, o możliwości realizacji gwarancji przez inne podmioty na prośbę firmy IT lub zleceniodawcy, występuje wiele zapisów ogólnikowych np. o konieczności użycia aplikacji zgodnie z jej przeznaczeniem

Tabela 2: Najważniejsze zapisy gwarancji na oprogramowanie

Zleceniodawca powinien negocjować jak najdłuższy okres gwarancji oraz jak najkrótszy czas reakcji na problem. Nawet bez umowy licencyjnej firma IT jest zobowiązana usuwać wady oprogramowania zgodnie z obowiązującym prawem, jednak gwarancja daje zawsze lepsze warunki (dłuższy czas trwania, doprecyzowana odpowiedzialność, inne zapisy specyficzne dla produktu jakim jest oprogramowanie na zamówienie).

Tagged with:
sty 30

Zleceniodawca powinien zdawać sobie sprawę jakiego typu połączeń będzie wymagało jego oprogramowanie na zamówienie. Sieć intranetowa to sieć, w której połączenie między komputerami nie jest realizowane z użyciem łącz internetowych dostawcy internetu. Jest to możliwe np. w jednym biurze, choć nie tylko. Obecnie sieci radiowe mają zasięg kilku kilometrów, tak więc teoretycznie taką siecią można połączyć wszystkie biura firmy w większym mieście. Oczywiście, jest to rzadko realizowane. Zwykle komputery w biurze połączone są ze sobą lokalnie a ze światem – w tym z innymi oddziałami firmy – za pomocą łącza internetowego.

Najlepiej, gdy możliwe jest funkcjonowanie aplikacji poprzez intranet ze względów zamieszczonych w poniżej tabeli, jednak często istnieje potrzeba działania takiej aplikacji z wykorzystaniem internetu (znacznie oddalone od siebie oddziały czy też części firmy np. centrala i magazyn). W takim przypadku program bazodanowy działa wolniej, jest mnie bezpieczny, zależny od dostawców internetu, na których firma ma ograniczony wpływ jednak wtedy może być realizowany dla komputerów rozmieszczonych na całym świecie.

Połączenie intranetowe Połączenie internetowe
Szybsze – jego prędkość to 54 Mb/s dla łącza radiowego (przesłanie filmu zajmuje niecałe 2 minuty) i nawet 1 Gb/s w przypadku łącza kablowego (przesłanie filmu w czasie 6 sekund) Wolne- obecnie prędkość tego łącza to w Polsce od 1 Mb/s do 8 Mb/s, czyli to łącze jest nawet o 1000 razy wolniejsze niż intranetowe.
Tanie – jego koszt to koszt okablowania, urządzeń podtrzymujących sieć (zwykle routera) i prądu Drogie – koszt to comiesięczna opłata za internet wynosząca nawet kilkaset złotych w przypadku najszybszych łącz
Jakość zależna od firmy Jakość zależna od dostawcy internetu
Siecią zarządza firma Siecią zarządza dostawca internetu
Większe możliwości konfiguracyjne Możliwości konfiguracyjne zależne w znacznej części od dostawcy internetu
Bezpieczniejsze – połączenia realizowane są wewnątrz firmy. Wymagany jest najczęściej fizyczny dostęp do sieci aby dokonać włamania Mało bezpieczny- połączenie z bazą danych przechodzi przez wiele zewnętrznych i niekontrolowanych przez firmę punktów, gdzie nastąpić może przejęcie informacji. Najpopularniejszy protokół Ethernet do realizacji takich połączeń nie umożliwia wybrania drogi przesyłu danych (jest ona wybierana automatycznie przez urządzenia na „świecie”)
Dostępny jedynie na małe odległości Poprzez Internet możliwe jest obecnie połączenie niemal z każdym komputerem na świecie
Tagged with:
sty 30

Schemat funkcjonowania programu bazodanowego

Na świecie są programy różnego typu. Występują na przykład programy do odtwarzania filmów, dźwięku, gry, edytory tekstu i inne. Znaczna jednak część oprogramowania na zamówienie to aplikacje bazodanowe, gdyż w ich działaniu wymagana jest obsługa dużej ilości danych a do tego niezbędna jest baza danych. Tworzenie na przykład programu magazynowego, który dane zapisywałby w plikach tekstowych byłoby nieefektywne, gdyż taki plik nie zapewniałby bezpieczeństwa danych oraz ich szybkiej obsługi.

Baza danych to specjalne oprogramowanie, które zapisuje dane w określonej strukturze dając do nich szybki i bezpieczny dostęp. Umożliwia ona wiele czynności, jak choćby dostęp przez internet do danych dla wielu użytkowników jednocześnie.

Istnieje wiele różnych baz danych, zarówno komercyjnych jak i darmowych. Niektóre osiągają ceny kilkudziesięciu tysięcy złotych. To, jaka baza danych zostanie wybrana zależy od potrzeb. Dla większości zastosowań wystarczy jedna z darmowych baz danych. Wyboru bazy danych zwykle dokonuje firma IT i z reguły wybiera jedną z baz, których sama używa.

Najczęściej używanymi darmowymi bazami danych są Firebird i PostgreSQL. Do najpopularniejszych komercyjnych baz danych należą MySQL i MS SQL Server (występuje także w wersji bezpłatnej z ograniczeniami)

Funkcjonowanie programu bazodanowego wygląda tak, że za pomocą GUI oprogramowanie na zamówienie wyświetla dane, które pobiera za pomocą swojego kodu z aktualnie używanej bazy danych. Schemat takiego działania wygląda następująco:

Schemat komputerów z lokalnymi bazami danych

W przypadku firm, najczęściej mamy do czynienia z pierwszą możliwością, gdyż niezbędne jest, aby wszyscy użytkownicy mieli dostęp do tych samych danych. Przykładowo, dział magazynowy zatwierdza w programie otrzymanie materiałów na podstawie czego dział księgowości płaci fakturę. Czasem jednak wystarczy baza lokalna, przykładowo dla programu księgowego tworzonego dla jedynej księgowej w firmie.

Jeśli do programu będzie potrzebna centralna baza danych zwykle tworzy się ją na osobnym komputerze (wtedy taki komputer nazywa się serwerem bazodanowym). Co ciekawe, serwer taki może mieć darmowy system operacyjny Linux, podczas gdy wszystkie komputery użytkowników będą miały program działający pod systemem Windows. Z tych powodów zwykle serwer bazodanowy nie jest kosztownym rozwiązaniem, jeśli korzystamy z bezpłatnej bazy danych, gdyż jego koszt sprowadza się do zakupu komputera a do zastosowań normalnych wystarczy obecnie nawet komputer o słabszych parametrach.

Schemat komputerów z centralną bazą danych

Tagged with:
sty 30

Oprogramowanie na zamówienie zawsze ma stanowić pomoc w funkcjonowaniu firmy. Zwykle potrzeba jego stworzenia wynika ze zwiększonej ilości klientów/transakcji/procesów wykonywanych przez firmę. W ten sposób przykładowo występuje duże zapotrzebowanie na programy magazynowe, gdyż firma nie jest w stanie zapanować nad swoimi stanami towarowymi. Gdy już zdecyduje się na program, stara się rozstrzygnąć czy nie potrzebuje pomocy także w innych obszarach działalności.

Jeden z klientów z branży meblarskiej dysponował oprogramowaniem do ewidencjonowania produktów gotowych i półproduktów oraz sprzedaży, jednak program ten nie miał możliwości dbania o dostawy do magazynu. Brak tej funkcji powodował daleko idące konsekwencje, choćby w postaci kradzieży wykonywanej poprzez zamawianie większej ilości materiałów niż było to konieczne do produkcji i wyprowadzanie ich. Właściciel stwierdził, że przydałaby się też funkcja rozpatrywania i kontroli przebiegu reklamacji, zarówno w obszarze zamówień materiałów, jak i tych zgłaszanych przez klientów kupujących wyroby firmy. W ten sposób powstały produkt łączył funkcje kontroli stanu materiałów na magazynie oraz reklamacji a po zintegrowaniu go z już istniejącym oprogramowaniem sprawił, że firma jako całość działała efektywniej.


Tworząc spis obszarów w jakich program ma pomóc należy wziąć pod uwagę poniższe:

  • Często zleceniodawca nie jest w stanie określić, w czym oprogramowanie na zamówienie może pomóc, dlatego powinien uwzględnić nawet obszary, w których z pozoru pomoc programu komputerowego wydaje się niemożliwa. Istnieje bowiem prawdopodobieństwo, że firma IT znajdzie rozwiązanie części z tych problemów
  • W tworzeniu opisu powinni brać udział wszyscy pracownicy, którzy będą użytkownikami programu a przynajmniej wskazane by było aby posiadali oni możliwość zgłoszenia swoich uwag, jeśli liczba takich osób jest znaczna. To oni najlepiej wiedzą, jaka funkcjonalność jest dla nich niezbędna
  • Powstający program powinien rozwiązywać wszystkie problemy przedsiębiorstwa a nie tylko niektóre. Jeśli okaże się przykładowo zbyt rozbudowany a więc drogi, zawsze można zrezygnować z części oferowanych rozwiązań
  • Należy poznać metody pracy pracowników. Często jest tak, że pracownik nie zgłasza problemów, jednak pewne czynności wykonuje poprzez długotrwałe uzupełnianie arkusza Excel, co odpowiedni program mógłby zrobić o wiele szybciej
  • Dobrze jest poprosić firmę IT o udzielenie wskazówek co do obszarów działania aplikacji. Zazwyczaj firmy takie miały wcześniej klientów z danej branży lub podobnej i mogą zaproponować użyteczne funkcje, które zleceniodawca mógłby przeoczyć. Zwykle firmy IT nie robią tego standardowo, gdyż wymaga to zwiększonej ilości pracy w przygotowaniu oferty a dodatkowe funkcje – choć pożyteczne – zwiększają cenę, która znajduje się w wycenie aplikacji

Przykładowa tabela ułatwiająca definiowanie obszarów teoretycznego funkcjonowania dla wspomnianej firmy meblarskiej może wyglądać następująco:

Dział Nazwa problemu Opis problemu Osoba zgłaszająca Obecne rozwiązanie Postulowane rozwiązanie Inne
Magazyn Zakup materiałów Nie ma właściwej kontroli nad ilością zamawianych materiałów Kierownik magazynu, właściciel Właściwie brak Program powinien weryfikować zamówione materiały z potrzebami obliczanymi na podstawie wcześniej zapisanych składów materiałowych każdego wyrobu gotowego
Sprzedaż Kontrola reklamacji Nie ma kontroli nad reklamacjami klientów (czas wykonania, obecny stan) Dział sprzedaży Arkusz Excel ze zgłoszonymi reklamacjami. Gdy towar przychodzi z naprawy, wysyłany jest klientowi Możliwość wpisania czasu rozpatrzenia reklamacji, szybki podgląd stanu zgłoszenia gdy klient zadzwoni, informacja o zmianie stanu na e-mail klienta
Magazyn Kontrola reklamacji Nie ma kontroli nad reklamacjami materiałów Właściciel Brak Ewidencja reklamowanych towarów. Żaden materiał nie może pójść do reklamacji zanim właściciel nie wyda elektronicznej zgody w programie. Statystyka reklamowanych materiałów co do wartości dla każdego magazyniera


Tagged with:
preload preload preload