Showing posts with label depanare programe. Show all posts
Showing posts with label depanare programe. Show all posts

Friday, December 1, 2017

Erorile utilizatorului


Erorile utilizatorului sunt numeroase în interacțiunea sa cu programul și acestea se resimt acum în mediul online cel mai mult. Programele cele mai puternice sunt construite în așa fel încât:
- atenționează pe utilizator prompt că a greșit la introducerea datelor;
- efectuează automat corecții și cere acordul utilizatorului;
- propune valori introduse anterior de utilizator și acesta alege.
Am văzut programe care nu fac așa ceva și atunci când a terminat și utilizatorul apasă butonul SEND îi apar tot felul de mesaje de omul săracul de el se ia de cap. Eu cred că era mai bine dacă introducea data nașterii i se valida că nu este corect să scrie 34.15.-1900 căci luna are cel mult 31 de zile, anul are cel mult 12 luni, iar an negativ n-am prea pomenit. Dacă la introducerea datei i se oferă posibilitatea de a selecta din cele trei seturi de variante corelând chiar lunile era excepțional. Se știe că la  numărul cardului trebuie introduse 16 cifre, drept care la trecerea către un câmp următor, utilizatorul trebuie atenționat că are mai puțin de 16 cifre. dacă este tentat să introducă altceva decât cifre acest lucru să nu fie posibil. În plus, există o cifră de control ce se calculează, drept care i se va spune utilizatorului că cele 16 cifre ale lui nu sunt număr de card. Scriu toate acestea că am interacționat cu aplicații așa de proaste încât chiar am avut probleme, iar băncile nu iartă deși greșeala era le ele în curte.
Cel mai tare program în vremurile de demult era acela care nu-l ierta pe client și-i semnala orice eroare, mai ales că acesta pierdea timp. De fiecare dată trebuia să-și perforeze cartelele cu date corecte și să ducă încă și încă o dată programul la dispecerat pentru a-i fi rulat.
Să nu uităm că în FORTRAN era cartela FORMAT care spunea clar în ce coloane ale cartelei trebuie perforat câmpul. Dacă programatorul deplasa aiurea numărul mai la stânga sau mai la dreapta, nu se făceau conversiile de azi și erorile de citire a datelor curgeau gârlă. Acum se citesc datele ca șiruri de caractere, se fac validări, se fac alinieri, se fac conversii și micile erori se trec cu vederea prin mărinimia programatorului.
Pe vremuri componentele de validare erau esențiale și se testau:
- caracterul numeric;
- apartenența la un interval;
- apartenența la o mulțime;
- caracterul alfabetic;
- codurile identice;
- corectitudinea codului prin calculul cifrei de control;
- dacă numărul este pozitiv;
- dacă numărul este divizibil prin ceva;
- dacă numărul este prim.
La un moment dat programatorii scriseseră programe de validare și parametrizând câmpuri reuțeau să nu mai se obosească cu scrisul de secvențe. Cartelele se rulau cu acel program și rezulta noianul de erori. Programatorul uneori sau utilizatorul cel mai adeasea făceau corecțiile și se rula efectiv programul dacă nu erau erori.
Programul era de-a dreptul puer dacă mai făcea și teste în interior și semnala erori pe care o validare de doi bani oricât de sofisticată ar fi fost nu era în stare să le scoată în evidență. Să ne amintim de grafurile care aveau noduri ce nu se legau cu nimic. Să ne amintim de articolele care nu sunt utilizate în niciun fel. Se ne amintim de optimizările sau de calculul cu iterații care nu se mai sfârșesc. Toate acestea trebuie marcate prin erori ale programului. Mî gândeam la replica lui Gheorghe DINICĂ din filmul Filantropica:  mâna întinsă care nu spune o poveste nu primește pomană. Fii profesionist, ce dracu! Acela nu este un program, dacă nu se încheie cu mesaje proprii și nu semnalizează toate erorile.
Erorile utilizatorului sunt nenumărate, iar utilizatorul este cel care decide soarta programarul este bun sau prost. Utilizatorul dă vina pe alții, deci pe programator și atunci când el a definit incorect datele, iar programul nu-i arată erorile din date, din superficialitatea programatorului, care a crezut și crede că toți sunt ca el.





(01 decembrie 2017)

Tuesday, October 17, 2017

Implementatorii

Implementatorii sunt cei care, evident, implementează programele la beneficiari. Față de ce înseamnă acum a implementa un program, un sistem informatic, a implementa acum 50 sau 40 de ani însemna cu totul altceva.
În ipoteza că erau achiziționate centalizat mașini de facturat cu călăreți pentru a se face programare pe ele, se proceda astfel:
- se stabilea ce aplicații se vor face pe acele mașini de facturat:
- se construiau programele, stabilind poziția fi funcțiile călăreților;
- erau verificate acele tablouri pe seturi de date;
- dacă rezultatele erau corecte se proceda la implementare.
Cei ce făceau implementarea mergeau la toate centrele unde se achiziționaseră mașinile de facutrat de același tip:
- realizau programele cu călăreți;
- instruiau operatorii de introducere date după formulare;
- instruiau personalul operativ să completeze documente direct utilizate în perforare;
- făceau demonstrații convingându-se că totul este înțeles;
- asistau un timp pe cei care vor lucra pe mașinile de facturat;
- defineau ce înseamnă date inițiale corecte și complete;
- arătau care sunt locurile unde există riscuri de a se face erori;
- instruiau pe beneficiari cum să utilizeze paginile imprimate.
În cazul aplicațiilor care se realizau pe tabulatoare, cei ce doreau să implementeze această tehnologie în centrele de calcul veneau cu cunoștințe solide astfel încât să fie convingători față de cei ce vor utiliza în mod curent maqșinile de perforat, mașinile de sortat și tabulatorul însuși. Ei parcurgeau obligatoriu următorii pași:
- instruiau personalul care opera cu echipamentele;
- aduceau cartelele matrițe pentru diferitele lucrări;
- efectuau legarea fișelor la tablou ca să se facă prelucrările;
- făceau teste convingătoare cu pachete de cartele deja perforate;
- duceau cap-coadă un flux să se convingă că lucrurile sunt învățate;
- explicau variantele de erori și moduri de îndreptare;
- prezentau specialiștilor de execuție cum se folosesc rezultatele obținute;
- defineau ce înseamnă date inițiale corecte și complete;
- arătau care sunt locurile unde există riscuri de a se face erori;
- se convingeau că prelucrările în viitor respectă toate procedurile explicate.
Mecanografia nu era deloc un lucru simplu și managementul cutiilor de cartele trebuia să asigure reproductibilitatea rezultatelor. ceea ce acum se numesc fișiere, atunci tot fișiere se numeau. Ceea ce acum se cheamă foldere, în acele vremuri se numeau rafturi distincte de cutii de cartele. Tot ce se întâmplă acum cu managementul defectuos al fișierelor, se întâmpla și în vremurile de mult apuse, căci a încurca sau a distruge cartele era tot atât de grav ca acum cât sunt șterse fișiere sau sunt alterate ireversibil.
Implementatorii de sisteme informatice în vremurile când la putere erau calculatoarele FELIX C-256 etrau personaje de primă mărime în ciclul de dezvoltare a aplicațiilor informatice, căci nimic nu avea valoare dacă nu era pus în funcțiune de implementatori. beneficiarii apreciau numai și numai ce era în uz curent și nu poveștile frumoase despre ceva fi undeva, cândva, cumva. Implementatorii veneau cu întregul know-how al aplicației și ei trebuiau săștie analiză, programare, testare și depanare la un nivel foarte ridicat pentru a face tot ce trebuie ca aplicația de care se ocupau să intre în funcțiune rapid și fără incidente. Ei erau interfața reală dintre client și dezvoltator. Implementatorii prezentau:
- documentația aferentă aplicației;
- modul de lucru cu aplicația;
- cum se introduc datele de intrare;
- cum se interpretează rezultatele;
- cerințele de instruire a operatorilor;
- procedurile ce trebuie respectate;
- cazurile în care apar erori de prelucrare;
- cum se depanează erorile de execuție;
- mosul de instalare a aplicației;
- fluxurile de prelucrare;
- cum se obțin datele ce vor fi perforate în cartele;
- condițiile de completitudine și corectitudine a datelor;
- modul de interpretare a rezultatelor de pe listinguri.
Nu era deloc simplu de implementat un produs software în vremurile de demult pentru că ceea ce acum se numește executabil era cumva mai diferit de ceea ce este scum, mai ales din faptul că trebuia stocat fie pe bandă magnetică, fie pe disc magnetic, iar frecvența de utilizare și dimensiunile impuneau anumite reguli de management în sensul încărcării repetate în sistemul de fișiere al calculatorului de pe suportul extern. Nu de puține rori cel ce făcea implementarările trebuia să aibă persoane de contact la centrele de calcul unde se utiliza produsul pentru a da consiliere atunci când se produceau întreruperi ale prelucrărilor din cele mai variate cauze, unele obiective, altele bizare. 
Și acum implementarea este tot atât de importantă căci utilizatorii sunt cei care resping un porgram chiar dacă el este excepțional doar pe considerente că ei, utilizatorii nu-l consideră ceea ce le trebuie, doar din simplul fapt că nterfața nu este prietenoasă sau pur și simplu că sunt obișnuiți cu un alt produs cu care au lucrat anterior și cel nou nu le-a fost explicat suficient.
Implementatorii au fost și sunt cei ce duc în masa de clienți elementele concrete legate de un produs software pe care ei doresc să fie utilizat și pentru că se obțin rezultate superioare și pentru a aduce venituri dezvoltatorilor care trebuie să-și recupereze costurile de producție.


(17 octombrie 2017)

Thursday, October 12, 2017

Depanatorii de programe

Depanatorii de programe sunt cei care desoperă cauzele care au condus la erori în:
- textul sursă identificate la compilare;
- în alocarea de resurse identificate în editarea de legături;
- în execuție prin lucrul defectuos cu  operanzi.
Despre erorile de compilare și de editare de legături fiecare programator avea istoria lui și uneori el însuși roșea în fața avalanței de erori făcute din neglijență, dar care îi mâncau mult timp la depanare. Erorile de execuție erau nenumărate, cu nenumărate cauze. de aceea, programatorul trebuia să ia niște măsuri preventive precum:
- introducerea de instrucțiuni pentru tipărirea de rezultate intermediare;
- activarea opțiunii de tipărire a urmei programului;
- introducerea de teste suplimentare înaintea unor expresii unde se făceau împărțiri;
- verivicarea concordanței de tip și de poziție a parametrilor reali și formali;
- și multe altele care defineau însăși arta depanatorului.
Existau algoritmi misterioși de identificare a poziției instrucțiunii buclucașe care a generat eroarea de execuție folosind modulul obiect, conținutul unui anumit registru care conținea adresa de început a programului executabil și o zonă din cuvântul de stare program. Scîzând în baza 16 doi operanzi se alfa deplasarea și eau în hexazecimal, adică instrucțiunea cu pricina urmărind contorul cu adresele relative ale alocării instrucțiunilor. Mergând în detaliu la instrucțiunea cod mașină se știa exact de la ce operație, de la care operand de la care registru. Numai că toate acestea erau pour les connaisseurs cum spunem noi chinezii, căci numai cei ce știau limbajul de asamblare al calculatorului se descurcau în așa grozăvii. Restul priveau spectatori pe margine, ca și acum și o iau pe ghicite.
Cu cât creștea experiența programatorului, cu atât intervenea rutina și riscul de a face erori în scrierea programelor scădea. În plus, a apărut o specializare a programatorilor de FORTRAN, respectiv, de COBOL și depanarea programelor se făcea diferențiat căci programele COBOL rareori foloseau subprograme și matrice, ca să apară erorile cele mai frecvente din programele FORTRAN. Programele COBOL conțineau erori datorate:
- neconcordanțelor dintre cele declarate la crearea de fișiere cu cele de la exploatare;
- construcției expresiilor cu operatori relaționali;
- delimitării paragrafelor care se activau prin PERFORM;
- inițializării incorecte sau neinițializării variabilelor.
Es vorbea de o artă, arta depanării, ceea ce era cam pe aceleași principii ca în medicină în a găsi cauza unei suferințe, ținând seama de probabilitatea de apariție a erorilor pe cauze. Se stabilesc erorile, cauzele și frecvențele de apariție, după care se calculează probabilități. Depanatorii cu experiență fac acest lucrun instinctiv. Dacă au o bună ierarhizare a cauzelor, exact ca medicii care stabilesc diagnostice, în procesul de depanare se vor găsi și cauzele care au generat  anumite erori. La compilare apar erori datorate neglijării ortogonalității operanzilor sau a alegerii de operanzi neadecvat definiți. În COBOL numele variabilelor trebuie să nu depășească 30 de caractere, litere sau cifre și cratimă. Dacă programatorul flosește pentru variabile nume foarte apropiate sau are variabile precum CANT-PLAN și CANTPLAN și CANTPL cu siguranță va folosi variabila CANTPL fără să o fi definit sau CANT-PL în loc de CANT-PLAN, de exemplu.
Depanarea programelor FORTRAN este cu atât mai dificilă cu cât programul este mai lung și mai încâlcit datorită puzderiei de instrucțiuni GO TO puse din abundență din cârpituri de secvențe. Nenumăratele facilități ale limbajului se transformă de cele mai multe ori în capcane și un depanator bun dintr-o primă analiză a textului sursă își dă seama cu ce nivel de programator are în față și va ști cu siguranță dintr-o ierarhizare a erorilor unde să meargă pentru a face depanarea, căci de cele mai multe ori la mesaj sunt indicații clare legate de locul și natura probabilă a erorii. Compilatoarele IBM erau cu mult mai diversificate ca mesaje de eroare și explicațiile nu erau vagi.
Depanatorii de programe au fost dintotdeauna marii artiști ai dezvoltării software. dacă stăpâneau mecanisme numai de ei descoperite în a găsi cauzele celor mai dificile erori de depanat, cu siguranță economiseau timp și erau căutați ca și cu ei erau marii tămăduitori ai centrului de calcul, căci ei știau să vindece miraculos programele, mai ales cele care erau în execuție curentă de ani și ani, nu mai existau textele sursă și programatorii care le realizaseră erau demult plecați de acolo, iar mentenanța era lăsată în dorul lelii.



(12 octombrie 2017)