INDUSTRIA DE SOFTWARE
Programatorul profesionist
Definirea problemei
Elaborarea specificatiilor
Desenarea diagramelor de control
Scrierea de cod
Testarea
Elaborarea documentatiei
Implementarea
Managementul
Programatorul profesionist
Programarea calculatoarelor este o profesie atunciu cand:
- instructiunile sunt considerate asemeni reperelor care intra in alcatuirea unui ansamblu, iar in final se obtine un produs finit de serie asa cum sunt autoturismele
- programul este rezultatul unui proces de munca de rutina in care se respecta niste reguli si se dezvolta procese de comunicare, iar elementele de noutate apar foarte rar
- numca programatorului nu are caracter repetitiv, se desfasoara prin respectarea unor proceduri
- imbinarea instructiunilor are la baza reguli ce tin de eficienta pe care o genereaza lansarea in executie a produsului in final
- reutilizarea de componente este obligatorie, nefiind luate in considerare secventele pentru care exista deja componente stocate in biblioteci
- produsele software sunt analizate strict prin prisma modului in care sunt construite; calitatea unei componente contribuie la obtinerea calitatii intregului produs
- programatorul are la baza numai cunostinte acumulate prin participarea la cursuri de instruire, finalizate prin certificate cu valabilitate recunoscuta; cel mai avantajos este daca recunoasterea este internationala
- fiecare produs software este destinat rezolvarii problemelor pentru foarte multi beneficiari; nu este eficient sa se dezvolte o productie industriala de software pentru a elabora programe destinate unui singur utilizator; programele realizate in sistem industrial au o complexitate foarte mare si devin eficiente daca numarul celor care le achizitioneaza este mare
- comunicarea intre programatori este la nivel foarte mare intrucat modulele realizate independent de catre programatori care lucreaza simultan trebuie asamblate sa se obtina un produs finit pe efectele programelor
- constructiile din interiorul programului sunt rezultatul respectarii unor reguli foarte stricte; daca se lucreaza in regim industrial nu este nevoie de creativitate ci de respectarea unor reguli stabilite si acceptate de toti programatorii
- toti programatorii stapanesc o aceeasi tehnica de programare
- toti analistii, testerii, implementatorii, sunt calificati in a utiliza aceleasi instrumente
- echipa care dezvolta software industrial este asemeni unei orchestre in care fiecare instrumentist are rolul sau, fiecare are o partitura in fata si o executa pur si simplu
- creativitatea programatorilor profesionisti revine la a utiliza exact acolo unde se potriveste cel mai bine instructiunea sau operatorul sau secventa de instructiuni; se potriveste cel mai bine proverbul ca programatorul profesionist asaza instructiunea potrivita la locul potrivit.
Programatorul este un profesionist, recunoscut prin faptul ca:
- a dovedit ca stie foarte bine un limbaj de programare; oricine analizeaza procedurile scrise de el, recunoaste ca mai bine decat asa nu se scriu altfel
- stie tehnica de programare in care s-a convenit sa fie elaborat produsul software
- are experienta dovedita in mod real
- se integreaza in echipa si lucreaza respectand cerintele tehnicii de programare
- in urma analizei procedurilor elaborate de el si in urma testelor rezulta ca aceste proceduri sunt construite exact cum cer specificatiile si nu necesita imbunatatiri.
Lucreaza in echipa si are colaboratori cu care schimba mesaje necesare realizarii modulelor care vor fi integrate, pentru a evita reluarile privind modificari, adaugari sau eliminari de instructiuni costisitoare .
Programele sunt produse de serie, care nu trebuie sa difere din punct de vedere calitativ, chiar daca fiecare rezolva o alta problema. Sunt privite numai ca ansambluri de proceduri dispuse intr-o structura prin asamblare.
Accentul nu cade pe ce realizeaza programul ci cum este construit ca ansamblu de parti si ce resurse utilizeaza pentru a respecta specificatiile, realizate si ele in mod profesionist.
Profesionistul ca programator stie foarte bine un limbaj de programare, o tehnica de programare si instrumentele de utilizare a resurselor limbajului cu tehnica respectiva.
El are o bogata experienta.
Are deja o ierarhizare a secventelor de instructiuni care si unde se potrivesc. Aceasta este elaborata pentru intreaga echipa si toti programatorii profesionisti o respecta.
Daca intervine pe programul elaborat de un alt programator o face cu eficienta foarte ridicata pentru ca recunoaste ca si el tot astfel ar fi elaborat programul respectiv.
Programatorul profesionist are capacitatea de a se autoperfectiona prin participarea la cursuri de calificare, directionat de interesele companiei.
Vine cu idei creatoare pe care le valideaza la nivelul echipei si de fiecare data trece la o noua varianta a software impreuna cu toata echipa daca acest lucru se justifica, aducandu-i noi facilitati, perfectionandu-l.
Programatorul profesionist nu este omul orchestra. El este foarte specializat. Ce stie, stie foarte bine.
Programatorul profesionist:
- primeste specificatii de programare elaborate de alti specialisti
- primeste diagramele de control elaborate de alti specialisti
- scrie texte sursa de cea mai buna calitate pe care le autodocumenteaza, pe care le testeaza si pe care le preda pentru a fi analizate calitativ si pentru a fi integrate in vederea obtinerii produsului finit
- testeaza procedurile scrise de el
- elaboreaza documentatia pentru procedurile scrise de el
- urmareste rezultatele testarilor si implementarii pentru a interveni activ la remedierea celor ce se impun daca remedierile vizeaza proceduri elaborate de el
- preia informatii privind utilizarea curenta a produsului la beneficiar si identifica unele cai de perfectionare daca acestea vizeaza procedurile pe care el le-a elaborat.
Programatorul de acest tip este un profesionist adevarat recunoscut de cei din jurul lui care sunt si ei tot programatori.
revenire

Definirea problemei
Definirea de catre profesionisti a problemei pentru care se va scrie un program intr-un limbaj de programare, folosind o tehnica de programare, inseamna:
- stabilirea rezultatelor finale care se afisaza prin program
- identificarea formulelor de calcul pentru obtinerea acestor rezultate
- definirea datelor de intrare si a modului in care acestea se colecteaza.
Exista o tehnica de definire a problemei si procesul de definire este asistat.
La definirea problemei, specialistul in definre de probleme trebuie sa dea dovada de mult tact, de multa rabdare si sa asculte pe cel care este beneficiarul pprodusului software.
El realizeaza o documentatie cu structura care decurge din tehnica de definire a problemelor adoptata.
Beneficiarul explica in concordanta cu cerintele profesionistului care defineste problema, ceea ce este necesar ca raspuns la intrebari, cu cuvintele sale, iar specialistul "traduce" intr-un limbaj acceptat de elaboratorii de specificatii toate elementele prin care arata ca dispune de resursele necesare pentru:
- a intelege exact ce doreste beneficiarul
- a verifica daca a inteles bine daca formulele corecte
- a dispune de datele de intrare care se folosesc in calcule
- a obtine exact rezultatele cerute de beneficiar.
Specialistul profesionist, apeland la tehnica folosita, solicita exemple de seturi de date, care corespund atingerii tuturor punctelor din structura de program.
El trebuie sa refaca unele calcule pentru a se verifica daca a inteles bine tot ceea ce a prezentat beneficiarul si daca ceea ce a cules din explicatiile acestuia s-a format un text complet.
Ori de cate ori considera ca are lucruri neclare, programatorul va relua discutia cu beneficiarul, va pune intrebari.
In final, textul prin care se defineste problema trebuie validat de beneficiar si constituie baza pentru toate etapele ciclului de deszoltare software.
revenire

Elaborarea specificatiilor
Specificatiile sunt texte elaborate asistat de baza definirii problemei.
Cei care elaboreaza specificatiile sunt specialisti calificati.
Ei utilizeaza o tehnica de elaborare a specificatiilor, pe care au invatat-o si pentru care au obtinut un certificat de calificare.
Specificatiile sunt un text elaborat cu folosirea unor reguli implementate in instrumentul de asistare.
Pentru elaborarea specificatiilor sunt definite reguli precise.
Se stabilesc datele de intrare.
Elaboratorul de specificatii, specialist profesionist, 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
- care sunt datele omogene grupate sub forma de masive uni sau bidimensionale
- datele neomogene care definesc articole in fisiere, elemente ale unor structuri dinamice
- numele de fisiere si ce contin acestea
- organizarea sub forma de baze de date a seturilor de date pe care le manipuleaza programul
- cheile de cautare in fisiere sau baze de date.
Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
La definirea problemei au fost clarificate toate formulele si toate cerintele de prelucrare si de aceea specificatiile trebuie sa fie o reflectare la acelasi nivel a cerintelor impuse de beneficiar.
De aceea, in specificatii se precizeaza:
- algoritmii de prelucrare
- parametri date de intrare in module
- parametri care se constituie in rezultate intermediare.
Specialistul 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 orice alt 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.
Textul specificatiilor este asemeni unei partituri care trebuie interpretata.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Partitura este scrisa de compozitor care este un profesionist.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Un bucatar nu stie sa scrie o partitura muzicala.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
El face o alta partitura, numita reteta de preparare a unei mancari.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
revenire

Desenarea diagramelor de control
Diagramele sunt forme grafice de descriere a programului.
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.
Designerul de diagrame este un profesionist calificat in a dezvolta astfel de constructii.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Designerul stie sa interpreteze textul unei specificatii.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Activitatea lui este asistata de un instrument specializat.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Riscurile de a defini diagrame incomplete sau incorecte sau lipsite de optimalitate sunt reduse.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
O schema logica este alcatuita din:
- blocuri
- arce orientate
- conectori.
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. In programe se regasesc structuri incluse. Spedialistii care elaboreaza diagrame, cu foarte mare experienta evita realizarea de scheme logice ci utilizeaza limbaje de descriere, foarte apropiate de limbajele de programare, limbaje care elimina ambiguitatile.
Schemele logice sunt absolut necesare la elaborarea de cod, la testarea procedurilor si mai ales la predarea produsului software intrucat documentatia include obligatoriu si diagramele.
Mentenanta este si ea un proces industrial, fara a fi obligatoriu realizata de cel care a elaborat produsul.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
In constructiile de masini, uzina producatoare acorda service prin firme specializateToate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Uzina nu face mentenanta, ci firmele specializate de service.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Tot asa si in cazul produselor software.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
revenire

Scrierea de cod
Prin modul in care se desfasoara procesul de scriere de cod se vede forma de concretizare a industriei de software.
Programatorii au posturi de lucru.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Fiecare post de lucru este bine definit.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Programatorii asemeni altor categorii de muncitori dintr-o uzina, au teritorii precis delimitate.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Ei sunt incadrati intr-un flux si lucreaza dupa un grafic cu termene date sub forma de intervale de incepere si de finalizare.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Ei stiu ce trebuie sa obtina si stiu cui trebuie sa transmita produsul realizat.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Regulile sunt foarte stricte si nu exista tocmeala.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Este ca in uzina cand muncitorul are de realizat o piesa dupa un desen, cu un anumit utilaj. Tehnologia este stricta.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Piesa este data spre analiza.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Procedura realizata de programatorul specialist este transmisa mai departe spre a fi verificata, este si ea tot o piesa intr-un angrenaj.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Limbajul de programare 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
- stabileste ce instructiuni utilizeaza pentru a scrie fiecare modul
- precizeaza cum se transmit parametri de la un modul la altul
- defineste gradul de omogenitate al fiecarei secvente din program
- grupeaza secventele de initializare
- gestioneaza alocarile si dealocarile
- respecta cerintele de traversare in raport cu dimensiunile zonelor alocate
- asigura nivelul de validare a datelor care sa dea independenta programului de alte componente ale sistemului de operare
- introduce comentarii
- construieste conventii privind starea prelucrarii in proceduri prin definirea de coduri pentru gradele de erori identificate.
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.
Testarea este facuta de specialisti calificati in aceasta meserie.Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
Rezultatul testarii fie incheie procesul de elaborare, fie conduce la reluarea etapelor ciclului de dezvoltare.
Cu cat greselile sunt identificate mai tarziu in raport cu momentul in care au fost facute, cu atat efortul de indreptare este mai mare.
Exista fluxuri specifice.
Testerul, specialistul in testare elaboreaza rapoarte.
Rapoartele sunt distribuite celor care fac corectiile.
Specializarea muncii impune ca fiecare sa aibe rolul sau.
Un specialist se pricepe numai la ceea ce are calificarea recunoscuta.
Testerul face testare.
Specialistul in depanare depaneaza si tot asa.
Nu se amesteca rolurile.
Toate acestea se definesc din aproape in aproape asistat de un instrument si in final specificatiile sunt complete, fara a contine inconsistente sau redundante.
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.
Scrierea documentatiei ca etapa dintr-un proces cu caracter industrial este o operatie care are la baza reguli, intrari, transformari.
Documentatia este un produs in concordanta cu ceea ce face programul si nu cu ceea ce ar trebui sa faca.
Daca in alte tiruri de organizare a activitatii apar unele discrepante, in sensul ca programul face mai putin decat trebuie sau face mai multe prelucrari decat s-a convenit, in organizarea de tip industrial, lucru cu profesionisti nu lasa loc la astfel de situatii si interpretari.
La o uzina se produc masini.
La uzina de masini pe banda ies masini, nu tancuri, nu placinte si nici polipropilena.
Fluxurile sunt atat de precise, tehnologiile sunt atat de clar definite incat ceea ce se produce sunt masini identice de tipul proiectat cu performantele stabilite si nu masini mai bune uneori sau mai proaset, alteori.
In industrie sunt eliminate elementele de incertitudine.
In industria de programe, tehnologiile, nivelul de calificare, gradul de profesionalism, asigura nivelul de calitate necesar si constant.
Dispare amatorismul si dispar fenomenele aleatoare. Totul este predictibil.
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.
Exista programe care citesc programe si elaboreaza:
- liste de variabile pentru care cel ce scrie documentatia trebuie sa faca acele detalieri prin care explica la ce foloseste variabila si ce semnificatie are fiecare variabila
- liste cu procedurile definite in program si elaboratorul va explica ce face fiecare procedura
- schemele logice direct prin citirea instructiunilor
- listele de coduri pentru optiuni si vor fi explicitate
- listele de mesaje ci se vor da explicatii asupra efectelor care apar.
Daca exista specificatii, documentatii de la etapa de analiza si de la etapa de design, aceste informatii se extrag automat de acolo.
Acest lucru se va produce daca specificatiile si proiectul au fost dezvoltate asistat tot de instrumente de aceeasi clasa cu instrumentele cu care se elaboreaza documentatia
revenire

Managementul
Managementul presupune:
- respectarea tehnologiei de productie
- specializare la cel mai inalt nivel
- existenta unei adanci diviziuni a muncii
- existenta unor coduri de etica
- preocuparea pentru disciplina de productie
- elaborarea de rapoarte pentru fiecare stadiu de productie
- masurarea activitatilor:durate, valitate, volum
- diferentierea specialistilor functie de: vechime, performanta, calificare
- existenta unui istoric privind dezvoltarea produsului pentru a identifica in orice moment executantul unei operatii, data executiei si produsul rezultat
- gestionarea fisierelor cu texte sursa intermediare
- exploatarea 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.
revenire

revenire