Tehnica rafinărilor succesive

Adoptarea metodei programării structurate a făcut posibilă elaborarea programelor prin tehnica rafinărilor succesive (engl.: stepwise refinement), cunoscută și sub numele de tehnica descendentă (engl.:top-down), care va fi prezentată succint în cele ce urmează.

La elaborarea unui program se pornește de la specificația acestuia, în care se precizează CE trebuie sa facă programul respectiv (CE problemă trebuie rezolvată, CE rezultate trebuie obținute) și se ajunge în final la programul propriu-zis, care arată CUM trebuie acționat pentru a se obține aceste rezultate. De cele mai multe ori, programul elaborat conține un număr mare de instrucțiuni, cu numeroase ramificații și cicluri. Scrierea unui astfel de program poate fi o sarcină extrem de dificilă și greu de îndeplinit, dacă nu se procedează sistematic. În plus, dacă programul nu este suficient de clar și de bine documentat, va fi extrem de greu sau chiar imposibil să fie depanat (să se corecteze eventualele erori de programare) și să fie modificat ulterior, dacă se modifică specificația.

Tehnica rafinărilor succesive oferă o cale de a parcurge acest drum de la CE la CUM în mai mulți pași, astfel încât să se pornească de la un număr mic de enunțuri (pseudoinstrucțiuni) de nivel de abstractizare ridicat, după care - la fiecare pas de rafinare - fiecare din aceste instrucțiuni se descompune în mai multe instrucțiuni de nivel de abstractizare mai coborât (mai "concrete"), până când se ajunge la instrucțiuni scrise direct în limbajul de programare folosit (de exemplu în Java). Se pune deci un accent deosebit pe abstractizarea datelor si a instrucțiunilor. Dupa cum arăta E.W.Dijkstra, abstractizarea este calea prin care omul stapânește complexitatea.

Dacă privim schemele logice ale structurilor de control fundamentale, permise de metoda programării structurate, constatăm cu ușurință că atât blocurile care conțin instrucțiuni, cât și structurile de control admise de metoda programarii structurate au fiecare un singur punct de intrare și un singur punct de ieșire. Aceasta înseamnă că orice bloc care conține o instrucțiune poate fi înlocuit în schema respectivă printr-o structură de control. Ca urmare, se poate aplica următoarea cale de elaborare a programului, specifică tehnicii rafinărilor succesive:
    - inițial se consideră că programul este alcatuit dintr-o singură pseudoinstrucțiune, de înalt nivel de abstractizare, care constă chiar din specificația problemei pe care o va "rezolva" programul respectiv;
    - la pasul de rafinare următor, această "problemă" se descompune în două sau mai multe "subprobleme"; aceasta înseamnă că unica pseudoinstrucțiune existentă inițial se înlocuiește prin una din structurile admise de metoda programării structurate (structura secvențială, alternativă sau repetitivă); această structură conține în ea una sau mai multe instrucțiuni sau pseudoinstrucțiuni;
    - la pașii de rafinare următori, fiecare pseudoinstrucțiune, care nu are corespondenta directă în limbajul de programare utilizat, se inlocuiește, de asemenea, prin una din structurile de control admise; textul pseudoinstrucțiunii înlocuite poate fi, totusi, menținut sub formă de comentariu, astfel încât să se înțeleagă mai ușor programul;
    - se continuă acest proces de rafinări succesive, până când toate instrucțiunile astfel obținute au corespondent în limbajul de programare utilizat.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați