MESERIA DE PROGRAMATOR
Programatorul mesrias
Definirea problemei
Elaborarea specificatiilor
Desenarea diagramelor de control
Scrierea de cod
Testarea
Elaborarea documentatiei
Implementarea
Managementul
Programatorul meserias
Programarea calculatoarelor este o meserie ca oricare alta atunciu cand:
- programele au un caracter repetat de elaborare in sensul ca programe pentru calcule matriceale se scriu de multe ori, programe pentru crearea de fisier se scriu, de asemenea, de multe ori
- programul este un produs al muncii artizanale, care seamana cu alte produse asa cum oalele de lut dintr-o anumita zona realizate de un anumit meserias au ceva in comun
- numca programatorului nu este o munca de rutina, in care apar elemente de creativitate strict impuse de particularitatile problemei de rezolvat; daca o problema trebuie rezolvata cu un masiv unidimensional, programatorul care stie meserie nu va folosi un masiv bidimensional cu mai multe linii si o singura coloana
- imbinarea instructiunilor are la baza regulilor care s-au decantat de-a lungul timpului si care din aproape in aproape conduc la secvente de program eficiente
- reutilizarea de componente este asemanatoare motivelor folclorice utilizate in productia de oale de lut; apar forme si dimensiuni diferite, se schimba culoarea vopselelor, se adauga ceva ornamente; programele se realizeaza in serie mica; vor exista multe programe de creare de fisiere; vor exista multe programe de obtinere a tabelelor; diferentele apar prin faptul ca tabelele au trei sau 7 coloane, ca au cate zele sau cate cincisprezele randuri pe pagina; asemanarea de la un tabel la altul se vede dupa cum sunt definite datele, dupa cum se efectueaza initializarile, dupa cum se fac calculele si apoi dupa cum se afisaza rezultatele
- produsele software sunt analizate prin prisma semanarii lor daca realizeaza aceeasi tipologie de prelucrare; un program care aduna matrice nu va fi foarte diferit de un program care scade matrice; rutina isi spune cuvantul; mai mult, daca intr-un program este necesara secventa de adunare de matrice, asemeni mesterului olar care simte nevoia sa preia un motiv de pe o strachina pe un ulcior, programatorul va introduce secventa in care se aduna matrice, exact asa cum este realizata in alt program, schimband numai denumirile operanzilor
- programatorul are la baza o serie de cunostinte acumulate prin experienta sa sau invatate din manuale de programare sau preluate de la programatori cu experienta; in activitatea curenta exista clase de aplicatii informatice; programatorul meserias invata cateva retete pe care le aplica cu consecventa; variatiile sunt minore de la un program la altul care apartine aceleiasi clase; programele de actualizare a fisierelor au aceeasi structura: deschid fisierul, citesc articole dupa cheie, testeaza tipul actualizarii, efectueaza adaugare, modificare sau stergere, rescriu daca este cazul si se inchide in final fisierul; programatorul meserias respecta aceasta structura, asemeni mesterului olar; el nu va face niciodata din materialul pentru o strachina o statuie cu un pitic; va iesi oribil
- fiecare produs software este face parte din productia de serie mica, realizata artizanal
- comunicarea intre programatori este redusa, cel mult exista dialoguri la targurile de software, la cursuri de perfectionare; intrucat programatorul meserias are o arie de exercitare a meseriei foarte restransa, comunicarea este limitata si viitorul acestei comunicari este nesigur
- constructiile din interiorul programului sunt rezultatul reutilizarii obligatorii a motivelor deja cunoscute dupa principiul "asa este bine" fara a exista explicatii riguroase in legatura cu alegerea unei instructiuni in favoarea alteia; este un dat ce se transmite de la un meserias la altul - programele elaborate de programatorul meserias au caracteristicile imprimate de acesta dar si minusurile datorate stagnarii in raport cu dinamica informaticii; asa se explica existenta inca pe piata software a produselor realizate cu SGBD-uri considerate anacronice, asa se explica dezvoltarea de software sub instrumente cu tre-patru versiuni mai vechi decat ceea ce exista pe piata
- programele realizate nu au un nivel de noutate spectaculos, sunt de dimensiuni strict care depind de capacitatea unei singure persoane de a le realiza
- programele sunt simple, au multe elemente de siguranta si de dependenta care il fac pe programatorul meserias sa fie solicitat masiv la depanare, la intretinere si mai ales la mentenanta; este si elementul de regres pe care constient sau nu, programatorul meserias il impune produsului final; el vrea sa fie solicitat, vrea sa aiba asigurate resurse in viitor, fara sa-si dea seama ca depanand programe, nu are timp de autoperfectionare, iar timpul pentru a realiza noi programe se limiteaza drastic
- modulele realizate de membri unei echipe de programatori meseriasi au reguli locale, se inscriu in aceleasi coordonate si permit finalizarea prin specializare stricta; exista programatori specializati in validari, exista programatori specializati in a construi module pentru obtinerea de tabele, exista programatori care stiu sa efectueze interfete prietenoase.
Programatorul este un meserias mai mult sau mai putin priceput.
Lucreaza solitar si cel mult are cativa ucenici care invata de la el exact ceea ce el cunoaste si nimic mai mult.
Programele sunt produse de serie mica si oricine vine sa faca analiza pe text sursa, intr-adevar conchide ca are in fata programe din aceeasi clasa care nu difera mult unele de altele, fie ca au fost transferate secvente eficiente de la o clasa de programe la alta, cu mici modificari, fie ca au in fat o constructie pe care au mai intalnit-o si cu alte prilejuri si care reprezinta o reteta sigura de a construi solutii care satisfac cerintele beneficiarului .
Mesterul programator stie foarte bine un limbaj de programare si multe retete de folosire a instructiunilor, fara a avea explicatii riguroase la multe dintre optiuni.
El are o bogata experienta si o colectie de solutii proprii.
Are deja o ierarhizare a secventelor de instructiuni care si unde se potrivesc.
Este limitat in a interveni pe programul elaborat de un alt programator pentru ca diferentele de stil, de abordare, de resurse utilizate reduc eficienta interventiei.
Programatorul meserias are capacitatea de a se autoperfectiona numai strict in masura in care instrumentele, tehnicile pe care le stapaneste nu mai sunt solicitate de piata software si trebuie sa treaca la realizarea de alte tipuri de programe, in alte limbaje de programare, cu alta tehnica.
El va avea nostalgia timpurilor trecute si o perioada indelungata va da solutii cu instrumentele noi folosind vechile deprinderi.
Va obtine programe C++ cu obiecte dar se vede de la o posta ca sunt constructii care puteau sa fie mult mai eficiente fara clase, fara supradefiniri de operatori, pentru ca din acele programe se vede abordarea artificiala, neeficienta a tehnicii obiectuale.
Vine rar cu idei creatoare si de fiecare data trecerea este lenta, anevoioasa, iar o noua varianta a software pe care il are in exploatare, este impusa de repararea carentelor semnalate de beneficiar.
Programatorul meserias:
- elaboreaza singur specificatiile dupa metode invatate sau create de el
- elaboreaza singur diagramele de control de cele mai multe ori sub forma ce ciorne pe care de cele mai multe ori nu le finalizeaza in documentatii riguroase
- scrie texte si cel mult da si la alti programatori meseriasi cu experienta ceva mai redusa, sa elaboreze unele componente dar prin indicatiile pe care le dau si prin restrictiile pe care le impun vor obtine proceduri exact in forma pe care ei le-ar fi elaborat el, cu limitele incorporate; daca este convins de alti programatori sa modifice ceva, va accepta
- testeaza programele dupa metode empirice dar eficiente
- elaboreaza rudimente dedocumentatie si numai daca este foarte meticulos sau numai daca prin contract se specifica expres, documentatia respecta cerintele de completitudine si de structura cerute prin standarde
- trec la implementare gestionand toti pasii si aducand pe loc modificarile care nu sunt putine
- asista utilizarea curenta a produsului la beneficiar si intervine cu sfaturi sau direct pe textul sursa daca este nevoie pentru a raspunde cerintelor si a ramane util in continuare beneficiarului.
Programatorul de acest tip este un meserias asa cum este olarul, croitorul cismarul, macelarul si brutarul.
revenire

Definirea problemei
Definirea problemei pentru care se va scrie un program in limbajul de programare uzual in care lucreaza programatorul meserias inseamna:
- acceptarea dialogurilor lungi cu utilizatorul insotite de numeroase reveniri asupra unor detalii legate de fluxuri, de date, de calcuyle, de rezultate si de modul in care se culeg datele si se folosesc rezultatele
- stabilirea tabelelor cu rezultatele finale care se afisaza prin program
- cvonstruirea formulelor de calcul pentru obtinerea acestor rezultate cu utilizarea unor denumiri de variabile care au fost fixate si au mai fost utilizate si min alte programe
- definirea datelor de intrare, stabilirea numelor care vor fi utilizate in program si a modului in care acestea se colecteaza; de la program la program pentru aceiasi indicatori economici sau pentru aceiasi termeni din formule matematice, numele asociate nu difera semnificativ
- prefigurarea gruparilor de date in fisiere si stabilirea asemanarii cu alte produse software deja aflate in utilizare curenta pentru a reutiliza secvente, module sau chiar produsul ca atare, pentru care sunt necesare modificari minore
- analiza modului in care este facuta definirea; sunt interesante supradefinirile de problema concretizate prin elemente redundante; programatorul meserias se fereste de subdefinire; daca lipsesc elemente din problema, date initiale, formule de calcul sau daca apar elemente de nesiguranta privind structura rezultatelor finale, va fi foarte dificil sa se reia dialogul cu beneficiarul; la programatorul meserias este o problema de orgoliu.
La definirea problemei, programatorul meserias trebuie sa dea dovada de multa inteleciune, de multa rabdare si sa-l asculte beneficiarul viitorului produs software. Acesta spune ceea ce crede. Daca va fi intrebat, va raspunde. Programatorul meserias are deja definita o succesiune de intrebari spre care il dirijaza pe beneficiar pentru a afla ceea ce este necesar intelegerii corecte a ceea ce are el de scris in program.
Beneficiarul explica ceea ce doreste cu cuvintele sale, iar programatorul meserias trebuie sa dispuna de resursele necesare pentru:
- a intelege exact obiectivukl urmarit de beneficiarul programului
- a verifica prin intrebari, prin exemple, daca a inteles bine
- a avea toate formulele de calcul si formatele tablourilor de rezultate finale corecte si complete
- a dispune de datele de intrare care se folosesc in calcule construind matrice de corespondenta; pe o coloana se afla datele initiale si pe linii se afla datele rezultate din calcule; la intersectia linie-coloana se vor afla asteriscuri daca o variabila este folosita pentru a obtine un rezultat; daca apar coloane libere inseamna ca variabila rezultat nu are formula definita; daca exista linii libere inseamna ca este definita o variabila care nu apare in nicio formula
- a obtine exact rezultatele cerute de beneficiar prezentandu-i acestuia mostre de afisare obtinute de la alte aplicatii; el pune in corespondenta modulele care se reutilizeaza sau stabileste functie de cerintele beneficiarului ce modificari trebuie facute la un modul existent pentru a obtine tabelul cerut de beneficiar.
Programatorul meserias trebuie sa solicite cat mai multe exemple de seturi de date, parcurgerea pasilor de calcul si rezultatele intermediare; in procesul de testare a produsului pe care il realizeaza va compara rezultatele intermediare si va face corectii sau va impune beneficiarului sa reverifice daca ceea ce a furnizat este corect.
El trebuie sa refaca unele calcule pentru a se verifica daca a inteles bine problema pentru ca reluarea discutiilor cu beneficiarul se va efectua catre finalul ciclului de dezvoltare, la testarea produsului ca etapa intermediara de siguranta inainte de implementare.
Ori de cate ori considera ca are lucruri neclare, programatorul meserias va relua discutia cu beneficiarul, va pune intrebari pe planuri diferite cautand de fiecare data sa arate ca se adauga facilitati produsului care il vor favoriza pe beneficiar.
In final, textul prin care se defineste problema este validat de beneficiar si constituie baza pentru toate etapele ciclului de deszoltare software. Programatorul meserias, din experienta acumulata ia masuri de siguranta, incheie minute cu beneficiarul din care isi protejaza ceea ce a facut, fara a crea portite care sa impuna mult efort si decalarea de termene pentru ca beneficiarul prinde gust si doreste complicarea prelucrarilor in sensul obtinerii de rezultate care extind continutul obiectivului si care se departeaza de ceea ce s-a dorit initial, mentinand costurile insa la acelasi nivel.
revenire

Elaborarea specificatiilor
Specificatiile programatorului meserias sunt texte.
Pentru elaborarea specificatiilor sunt definite reguli precise.
Se stabilesc datele de intrare, se atribuie nume acestora si se precizeaza tipul fiecarei date. Intrucat programatorul meserias stie exact in ce limbaj va lucra, specificatiile includ cuvinte cheie din limbaj pentru a defini datele de intrare.
Programatorul meserias intocmeste specificatiile sub forma unor notite pentru folosinta sa exclusiva.
Programatorul cunoaste tipurile de date care se definesc intr-un program si in specificatii precizeaza:
- care sunt datele elementare prin care se desemneaza numarul de elemente dintr-o colectivitate, dimensiunile maxime ale problemelor de rezolvat, chiar scrie secvente de program pentru definirea datelor
- care sunt datele omogene grupate sub forma de masive uni sau bidimensionale corelandu-le cu secventele de prelucrare
- datele neomogene care definesc articole in fisiere, elemente ale unor structuri dinamice; regruparile sunt date in asa fel incat sa se reutilizeze module de validare si de creare si actualizare fisiere deja existente
- numele de fisiere si ce contin acestea, fortand de multe prin preluarea de constructii existente introducerea intr-un nou produs a unor elemente care se vede cu ochiul liber ca sunt balast: camuri care nu sunt utilizate, transformarea in comentarii a unor secvente pentru a nu se efectua prelucrarile lor
- organizarea sub forma de baze de date a seturilor de date pe care le manipuleaza programul dupa un flux definit care sa acopere toate ramurile structurii arborescente asociate programului, pe care programatorul meserias a intuit-o in faza de definire a problemei
- cheile de cautare in fisiere sau baze de date cautand sa orienteze pe beneficiar spre directia care ii asigura lui reutilizarea de fisiere, de module si de algoritmi deja existenti si implementati.
La definirea problemei au fost clarificate toate formulele si toate cerintele de prelucrare.
De aceea, in specificatii se precizeaza:
- algoritmii de prelucrare utilizand cuvinte cheie din limbajul in care se scrie programul si denumirile variabilelor care vor apare in program
- parametri date de intrare in module, realizand un tablou cu modulele, datele de intrare si datele de iesire; va ordona informatiile pentru a vedea modul in care modulele preiau date si ofera rezultate; programatorul va vedea modulele asemanatoare sau modulele neomogene
- parametri care se constituie in rezultate intermediare.
Programatorul elaboreaza un text in care descrie:
- formatele rezultatelor
- conditii de obtinere a fiecarei structuri de rezultat intermediar.
Specificatiile sunt considerare corecte si complete daca dupa parcurgerea lor de programator, diagramele, textul sursa si tot ceea ce rezulta din parcurgerea de catre altcineva a etapelor ciclului de dezvoltare software, garanteaza ca beneficiarul este satisfacut de rezultatele obtinute de la calculator. Specificatiile de regula nu se transmit si altor programatori.
Daca se intrerupe colaborarea cu beneficiarul si trebuie dezvoltat un proces de mentenanta, beneficiarul trebuie sa se gandeasca la dezvoltarea unui nou produs, ca in absenta specificatiilor si a documentatiei, reluarea unor etape din ciclul de dezvoltare sunt foarte costisitoare ca timp si ca bani.
revenire

Desenarea diagramelor de control
Diagramele sunt forme grafice de descriere a programului. Programatorul meserias face schite cu niveluri foarte variate de detaliere.
Acolo unde are deja modulele deseneaza numai un bloc, si asemeni lui Leonardo da Vincii, pe margine face numai unele notatii foarte ermetice.
Pentru intreg programul se construieste o structura arborescenta in care blocurile dreptunghilare reprezinta modulele care se apeleaza in program.
Pentru detaliere se construiesc schemele logice.
Sunt utilizate pe cat posibil cuvinte cheie din limbajul in care se dezvolta programul
O schema logica este alcatuita din:
- blocuri de calcul
- blocuri de decizie
- arce orientate
- conectori,
- blocuri pentru proceduri
- blocuri pentru operatii de intrare-iesire.
Blocurile de calcul au forma drptunghilara si dispun de doua arce orientate.
Blocurile de decizie au forma de romb si dispun de trei arce orientate.
Arcele sunt orientate in sensul de derulare a proceselor de prelucrare.
Conectorii definesc legaturi intre fluxurile de prelucrare.
Schemele logice permit reprezentarea urmatoarelor structuri de control:
- structura liniara
- structura alternativa
- structura repetitiva conditionata posterior
- structura repetitiva conditionata anterior
- structura alternativa multipla.
Diagramele au multe corectii.
Programatorii meseriasi cu experienta dispun multe dintre componente pe pagini diferite si isi creaza in acest fel posibilitatea de a face corectii si de a da aparenta unui proces bine facut de la inceput.
In programe se regasesc structuri incluse sau imbricate. Programatorii cu foarte mare experienta evita realizarea de scheme logice.
Ei scriu secvente si fac notari despre modul in care vor face programul.
Ei preiau notatii din matematica pentru lucruri cu siruri, pentru a asigura generalitatea programelor.
Desi schemele logice sunt absolut necesare la predarea produsului software intrucat documentatia include obligatoriu si diagramele, programatorul meserias include numai ceea ce crede el ca ii asigura dependenta beneficiarului de aportul sau la procesele de depanare si la procesele de mentenanta.
revenire

Scrierea de cod
Scrierea de cod este forma de concretizare a meseriei programatorului.
Limbajul de programare cu care programatorul meserias este familiarizat dispune de resurse nelimitate , la cost zero.
In program se repeta o instructiune ori de cate ori vrea programatorul si nu-l costa nimic pe acesta.
Nu acelasi lucru se inbtampla in constructii unde fiecare caramida are un cost care nu se neglijaza la intocmirea devizului final.
Programatorul:
- alege tipurile de date folosind experiente anterioare
- utilizeaza aceleasi nume de variabile daca a observat ca nu s-a modificat contextul fata de alte programe scrise si aflate in uz curent
- stabileste ce instructiuni utilizeaza pentru a scrie fiecare modul; la module asemanatoare foloseste aceleasi seturi de instructiuni
- precizeaza cum se transmit parametri de la un modul la altul, fara a avea o mare varietate de tehnici de transmitere a parametrilor
- asigura gradul de omogenitate al fiecarei secvente din program si a modulelor in ansamblul lor
- grupeaza secventele de initializare
- gestioneaza alocarile si dealocarile de memorie
- respecta cerintele de traversare in raport cu dimensiunile zonelor alocate asigurandu-se ca nu se prelucreaza zone de memorie cu alta destinatie atunci cand valorile indicilor depasesc zonele alocate
- asigura nivelul de validare a datelor care sa dea independenta programului de alte componente ale sistemului de operare
- introduce comentarii generale, ermetice care prin decodare ii asigura necesarul de informatie sa dezvolte procese de depanare si de mentenanta
- utilizeaza conventiile pe care si le-a definit privind starea prelucrarii in proceduri prin definirea de coduri pentru gradele de erori identificate; reutilizeaza listele de mesaje care se transmit operatorilor.
revenire

Testarea
Testarea se efectueaza cu seturile de date de test oferite la definirea problemei.
Corectitudinea programului este apreciata in raport cu rezultatele intermediare primite de la beneficiar pentru fiecare set de date cu care se testeaza programul.
Rezultatul testarii fie incheie procesul de elaborare, fie conduce la reluarea etapelor ciclului de dezvoltare.
Rezultatele testarii depind de gradul in care programatorul stapaneste tehnica cu care dezvolta programul, modul in care exploateaza tot ceea ce si-a notat in legatura cu exigentele beneficiarului, pentru ca programul este scris pentru acesta.
Cu cat greselile sunt identificate mai tarziu in raport cu momentul in care au fost facute, cu atat efortul de indreptare este mai mare.
Testarea se realizeaza si in dialog cu beneficiarul, de fiecare data fiind orientat acest dialog in favoarea programatorului.
revenire

Elaborarea documentatiei
Elaborarea documentatiei revine la a scrie:
- ghidul programatorului
- ghidul utilizatorului
- ghidul de prezentare.
Documentatia este folosita:
- in procesul de mentenanta
- de catre operatorii care introduc date
- la depanare
- la prezentarea produsului pentru cumparatori.
Programatorul meserias are grija sa gestioneze nivelul de detaliere astfel incat documentatia sa-i fie adresata in exclusivitate tot lui si numai el sa depaneze si sa faca mentenanta programului la solicitarea beneficiarului.
revenire

Implementarea
Implementarea este etapa in care realizatorul programului efectueaza instalarea produsului, instruirea personalului si incepe exploatarea.
Rezultatele implementarii determina modificari in obtinerea de versiuni care sa faca produsul program mai usor de implementat si de exploatat.
Programatorul meseria are grija ca impolementarea sa apara ca un proces in care beneficiarul se afla in fata unui program foarte bun.
Toate carentele se preiau in tacere si se rezolva impecabil tot in tacere ca si cand nimic nu s-a intamplat.
Procesul de implementare include reveniri chiar cu rescriere masiva de cod.
Se actualizeaza in mare masura documentatia.
daca documentatia nu a fost elaborata, insemnarile de la implementare se preiau in forma finala a documentatiei.
revenire

Managementul
Managementul presupune:
- reutilizarea de module
- gestionarea fisierelor cu texte sursa intermediare
- exploatarea masiva a insemnarilor care se fac pe parcursul ciclului de dezvoltare
- includerea in biblioteci a celor mai bune componente din program, in vederea reutilizarii lor ulterioare, pentru alte programe
- masurarea consumurilor de resurse care au fost necesare pentru a face programul
- stabilirea nivelului de performanta a programului.
Programatorul meserias care este si autorul intregului produs efectueaza un management de proiect in forma primara, fiind obligat sa lucreze simultan la elaborarea mai multor programe si sa faca fata exigentelor diferite ale mai multor beneficiari.
Pentru fiecare program el are directoare cu fisiere diferite si are insemnari foarte clare cu termene si mai ales cu cerinte specifice fiecarui beneficiar.
revenire

revenire