Software-ul personalizat (“la cerere” sau “customizat”) este creat pentru a raspunde nevoilor specifice ale unui client, acesta obtinand beneficii financiare si cresterea eficientei in activitatea desfasurata.

Asa cum am mentionat intr-un articol anterior, dezvoltarea unui software personalizat implica negocierea unui contract de prestari servicii dezvoltare software personalizat (Custom Software Development Agreement)- denumit in continuare “Contractul”, intre Client si Prestator.

In cadrul acestui articol voi prezenta cateva aspecte vizate de Clauzele generale din Contract (cea de-a doua categorie prezentata in articolul anterior), intens discutate si negociate de parti in cadrul Contractului:

 

  1. Specificatiile sau cerintele (Specifications/Requierments)

 

Exista doua categorii de specificatii:

  • specificatiile functionale descriu software-ul din punctul de vedere al Clientului: ce presupune a realiza acel software sau problema care se poate rezolva prin acel software.
  • specificatiile tehnice privesc aspecte precum arhitectura sistemului si limbajul de programare (in unele contracte, specificatiile tehnice reprezinta termenii cei mai importanti).

In practica pot exista doua situatii:

a) Specificatiile sunt stabilite inca de la semnarea Contractului si acestea se mentioneaza in anexele parte integranta a Contractului. In Contract pot fi regasite clauze care stipuleaza, spre exemplu:

  • ca software-ul va respecta specificatiile din anexa […];
  • daca software-ul nu trece testul de acceptare, Clientul va trimite informarea scrisa continand abaterile de la specificatiile enumerate in anexa […] si Prestatorul va repara software-ul astfel incat sa functioneze semnificativ in conformitate cu toate aceste specificatii.

Totusi, in timpul procesului de dezvoltare (software development process), Clientul ajunge sa cunoasca mai bine problema/necesitatile lui si astfel pot aparea schimbari de specificatii.

In Contract pot exista clauze care vor reglementa mecanismul schimbarii specificatiilor, pot fi organizate sesiuni periodice in care Clientul poate sa propuna schimbarile, se vor discuta costurile si durata acestora si se va decide daca schimbarile se vor implementa sau nu.

b) Specificatiile nu vor exista decat dupa semnarea Contractului.

In unele contracte vizand dezvoltarea software, partile nu vor putea cunoaste exact ceea ce ar trebui sa faca acel software decat dupa faza de descoperire (“discovery phase”). In aceasta faza, Prestatorul studiaza sistemele si nevoile existente ale Clientului. Specificatiile detaliate nu vor fi disponibile pana la finalizarea acestei etape de descoperire.

Partile trebuie sa aiba o viziune/o idee asupra software-ului atunci cand semneaza Contractul, care ar trebui surprinsa in Contract sub forma unor specificatii globale (“high level specifications”). Specificatiile mai detaliate urmeaza mai tarziu , reprezentand livrabile si vor deveni parte a Contractului, imediat ce au fost acceptate.

 

  1. Termenul de realizare (Schedule or End Date)

In general, in Contract se mentioneaza in mod expres un termen de realizare sau un program de finalizare, aparand intr-o clauza de planificare.

In cazul in care Contractul vizeaza un proiect lung sau complex, sunt necesare mai multe termene sau repere. Adesea, unul dintre repere este „Acceptarea” sau supunerea la „Testarea de acceptare”.

Avand in vedere ca este esentiala cooperarea Clientului pentru ca Prestatorul sa poata finaliza software-ul la timp, ar trebui introduse in Contract niste clauze care sa vizeze ipoteza in care Clientul nu coopereaza si sa se acorde Prestatorului dreptul de a rezilia Contractul, precum si dreptul la daune-interese.

 

  1. Documentatia suport (Documentation)

 

Utilizarea corecta a software-ului necesita uneori documentie suport, care poate varia de la manuale de utilizare pana la descrieri de proiectare pentru personalul IT.

 

Daca documentatia este necesara, in Contract poate exista o clauza potrivit careia Prestatorul elaboreaza si furnizeaza Clientului documentatia necesara in mod rezonabil pentru a opera software-ul personalizat la livrarea software-ului personalizat si va revizui documentatia in mod rezonabil in caz de modificari ale software-ului personalizat.

 

  1. Testarea de acceptare sau testarea pentru acceptanta (User Acceptance Testing)

 

Testarea de acceptare/pentru acceptanta vizeaza testarea pe care o poate face Clientul asupra software-ului, iar Contractul poate contine clauze privind criteriile de acceptare (acceptance criteria), locul de implementare, configurare, testare a software-ului.

Spre exemplu, in cazul unui program, testarea de acceptare are drept scop stabilirea faptului ca programul satisface cerintele viitorilor utilizatori si se efectueaza in mediul in care urmeaza sa functioneze programul, utilizandu-se date reale. Prin testarea de acceptare pot fi descoperite si erori, mecanismul remedierii acestora fiind stabilit prin Contract.

Pentru a elimina riscul ca testarea realizata de Client sa dureze prea mult timp si eventual sa aiba si un impact financiar, se poate insera in Contract clauza de acceptare tacita dupa trecerea unui anumit interval de timp.

 

  1. Confidentialitate (Non-Disclosure/Confidentiality)

 

Clauza de confidentialitate poate functiona in dublu sens cu privire la anumite tipuri de informatii tehnice, inclusiv la secrete comerciale, planuri, strategii de afaceri. Partile pot semna si un Acord de confidentialitate separat –NDA (Non-Disclosure Agreement).

 

  1. Declaratii/Reprezentari si Garantii (Representations and Warranties)

 

Contractele, inclusiv cele din domeniul IT, guvernate de legea romana au preluat de-a lungul timpului clauze din contractele guvernate de legea engleza. Prin urmare, in multe contracte, partile „declara” si “garanteaza” o serie de fapte.

Desi acesti doi termeni au semnificatii diferite („representantion” este o declaratie cu privire la un anumit fapt prezent, in timp ce “warranty” este o promisiune cu privire la un anumit fapt care va exista in viitor), aceasta distinctie a inceput sa aiba un rol nesemnificativ deoarece ambele sunt menite sa convinga cealalta parte sa incheie un contract.

O atentie sporita trebuie acordata acestor clauze daca exista in contract clauza de Despagubire (“Indemnity”) pentru ca se pot face niste corelari cu aceasta.

 

  1. Drepturile de proprietate intelectuala (Intellectual Property)

 

In functie de intelegerea partilor, pot exista clauze in Contract care sa stipuleze:

  • fie ca drepturile de proprietate intelectuala se transfera Clientului (se cesioneaza drepturile de autor);
  • fie ca drepturile de proprietate intelectuala raman Prestatorului, Clientului acordandu-i-se o licenta de utilizare.

 

Poate exista in Contract si clauza care vizeaza garantia privind drepturile de proprietate intelectuala, prin care se promite uneia dintre parti ca niciun tert n-o va impiedica sa utilizeze software-ul si nici nu va reclama vreo incalcare a vreunui drept de autor, iar aceasta clauza se poate corobora cu dreptul partii vatamate de a fi despagubita in cazul incalcarii unei asemenea garantii.

 

  1. Clauza privind limitarea de raspundere a Prestatorului (Limitation of liability)

 

Poate exista in Contract si o clauza prin care se limiteaza raspunderea Prestatorului la un anumit plafon financiar, care se negociaza de parti.

 

  1. Exclusivitatea (Exclusivity)

 

Poate exista in Contract si clauza privind exclusivitatea, Clientul obligandu-se sa acorde exclusivitate Prestatorului in realizarea software-ului.

Prezentarea de mai sus nu este exhaustiva, existand si alte aspecte negociate de parti, in functie de specificul proiectului.