|
Metode clasice de elaborare a produselor program
Din punct de vedere al liniilor de program, in general echivalente cu linia-instructiune, pot exista programe medii (pana in 1000 de linii program) si programe mari, care contin zeci de mii de linii de program.
Termenul de programare trebuie inteles ca presupune atat programarea propriu-zisa (scrierea instructiunilor) cat si proiectarea algoritmului de programare, analiza amanuntita a problemei ce trebuie rezolvata si detalierea ei pe etape ce se conditioneaza reciproc.
La executia unui program se pot distinge trei categorii de entitati care colaboreaza:
setul de instructiuni sau procedura care specifica programul;
procesorul care executa procedura;
mediul de executare a programului, care constituie componenta pe care procesorul o influenteaza direct.
Mediul este complet sub controlul programului si nu suporta schimbari decat in urma etapelor din program executate.
Programul, odata apelat si intrat in executie, poate rula independent, dar trebuie sa se supuna regulilor de functionare impuse de sistemul de operare.
Secventele de instructiuni nu fac decat sa translateze schema logica obtinuta prin analiza problemei care trebuie rezolvata (numita uneori si algoritm) intr-o succesiune de instructiuni apartinand limbajului de programare ales de programator.
Este vorba de o constructie liniara, de unde si denumirea de programare liniara.
Programele medii pot fi realizate de un singur programator, pe cand programele mari, numite si pachete de programe sau sisteme de programe, sunt realizate de colective de programatori, fiecare rezolvand portiuni de program - module program, de unde si tehnologia programarii numita programarea modulara.
Nevoia de manevrabilitate a acestor module - program se lovea de un impediment: instructiunea GO TO, prezenta in limbajul FORTRAN si apoi, in multe alte limbaje care au urmat, instructiune care realiza un salt din programul de baza aflat in executie, la inceputul unui alt program (numit subrutina) si dupa executarea subrutinei respective se intorcea la programul initial, continuandu-se executia acestuia.
Acest salt impunea recalcularea adreselor de salt in functie de pozitia avuta de modulul respectiv in memoria interna, lucru care ducea la o anumita dependenta a modulului de zona de memorie in care a fost apelat pentru a intra in executie.
Problema aceasta si-a gasit o solutie in propunerea profesorului E. W. Dijkstra (1965) de la Universitatea Tehnica din Eindhoven, Olanda de a se renunta la folosirea acestei instructiuni in intocmirea programelor si la folosirea setului de structuri logice de comanda care se compuneau din trei structuri logice de baza, plus unele variante.
Profesorul arata ca se pot obtine programe mai bune fara instructiunea GO TO:
Calitatea unui program este invers proportionala cu numarul de instructiuni GO TO pe care le contine.
Cele trei structuri logice sunt:
- secventiala,
- alternativa,
- repetitiva (iterativa).
S-a demonstrat ca cele trei structuri pot exprima logic orice algoritm, deci pot fi folosite fara sa mai fie nevoie de a apela la instructiunea de salt respectiva.
Un lucru foarte important este ca fiecare din aceste structuri, ca parte dintr-o schema logica, areo singura intrare si o singura iesire.
Astfel a fost fundamentata programarea structurata.
Programarea structurata este caracterizata ca fiind:
programarea fara GO TO,
programarea de sus in jos (top-down programming),
o maniera de a organiza si scrie programe astfel incat sa fie usor de inteles si de modificat,
un mod de a controla complexitatea prin teorie si disciplina.
Unii autori considera programarea structurata ca un ansamblu al tuturor metodelor de programare cunoscute pana la aparitia ei (liniara si modulara).
Programarea structurata presupune o disciplina in activitatea de programare, indiferent de nivelul la care se aplica: nivel micro, privind elaborarea unui algoritm, programatorul fiind atent la structura fiecarui modul in parte, cerand claritate si ordine, precum si folosirea structurilor mentionate; la nivel macro, privind programarea intregului sistem de programe, se presupune practicarea proiectarii top-down, a programarii modulare si a celorlalte metode de programare, cerand ordine in intreaga activitate si existenta unei structuri clare a intregii aplicatiii, precizata prin diagrama de structura a aplicatiei.
Sunt autori care considera ca programarea structurata a fost primul pas catre realizarea programarii orientata obiect, metoda moderna de programare, care iata, isi gaseste izvoarele tot in perioada de inceput a informaticii, ca multe alte concepte moderne.
La inceputul anilor `70 au aparut doua concepte importante in directia fundamentarii teoretice a metodelor de programare, unul care definea procedeul detalierii algoritmilor in pasi succesivi (stepwise refinement) si altul, introdus de H. D. Mills, este conceptul de functie pentru modelarea unui algoritm (1972).
Nu peste multa vreme, acest concept de functie va sta la baza constituirii limbajului C, care prin varianta C++ a firmei de software Borland a fost sursa pentru limbajul Java, limbajul orientat pe obiecte.
Programul nu mai este privit ca o suita, mai mare sau mai mica, de instructiuni ci este identificat cu un produs; putem vorbi astfel de produs program (PP), termen care este folosit de toti specialistii in informatica.
Un PP este rezultatul unui proces creativ uman, in care este inglobata o multime eterogena de elemente: imaginatie si rigoare, cunostinte si experienta, inteligenta si tehnica de calcul, care impreuna cu un computer efectueaza toate prelucrarile dorite de utilizator.
Dificultatea elaborarii PP rezida in caracterul logic, abstract al acestora, PP nefiind fabricat ci dezvoltat.
Unic sau multiplu, simplu sau complex, orice produs program se dovedeste a fi materializarea unei informatii, in cazul nostru materializarea muncii de programare.
Utilizatorii de calculatoare care cunosc un limbaj de programare pot si ei sa scrie programe pentru a rezolva diverse probleme intalnite in activitatea lor profesionala, acestia fiind atat realizatori de programe cat si utilizatori (de obicei singurii).
Putem clasifica produsele program astfel:
- produse generice (PPG), elaborate de companii de dezvoltare si care sunt vandute pe
piata libera, specificatiile sunt produse de departamentul de
marketing al companiei respective;
- produse program personalizate (PPP) , destinate unui client particular, specificatiile
acestora fiind baza contractului intre companie si client.
Notiunea de produs program priveste munca de programare, dar cu un caracter industrial si avand urmatoarele particularitati:
- PP este destinat mai multor utilizatori independenti (poate fi cumparat);
- cea mai costisitoare etapa din ciclul de viata al PP este cea de intretinere;
- PP este in general de complexitate medie/mare;
- PP este rezultatul muncii de echipa;
- PP are o documentatie si exista posibilitatea invatarii modului sau de utilizare.
Exista PP cu domeniu larg de aplicare (generale) si PP elaborate la cerere, cu un domeniu de aplicare mai ingust.
Termenul "programming in the large" - programare pe scara mare, introdus in 1976, reflecta complexitatea activitatilor de realizare a unui astfel de program.
PP poate fi caracterizat de mai multi parametri, definiti in functie de complexitatea activitatilor de realizare a unui astfel de program, dar si de modul in care corespunde scopului.
Orice PP trebuie sa satisfaca anumite anumite cerinte, dintre care prezentam pe cele mai importante:
- eficienta/performanta: sa consume cat mai putine resurse (timp-procesor, spatiu-memorie, dispozitive periferice lente.);
- siguranta in folosinta: conceperea corecta a algoritmilor si minimizarea greselilor in programare;
- robustete: sa poata raspunde corect chiar daca datele de intrare au fost prezentate deficitar;
- portabilitate: gama larga de sisteme de calcul pe care PP poate fi compilat/interpretat si apoi executat;
- mentenanta: usurinta cu care un program poate fi modificat pentru a corespunde unor cereri din partea clientilor, a se adapta unor noi conditii de lucru.