TEORIA REZOLVĂRII PROBLEMELOR

 

Creşterea complexităţii problemelor supuse rezolvării automate (cu ajutorul calculatorului) a determinat ca activitatea de programare să devină, de fapt, un complex de activităţi.

Pentru rezolvarea unei probleme trebuie parcurse următoarele etape:

- Analiza problemei (înţelegerea problemei şi specificarea cerinţelor acesteia). Se stabileste ce trebuie să facă aplicaţia, şi nu cum. Se stabilesc datele de intrare (identificarea mediului iniţial) şi se stabilesc obiectivele (identificarea mediului final, a rezultatelor);

- Proiectarea (conceperea unei metode de rezolvare a problemei printr-o metodă algoritmică);

- Implementarea (codificarea algoritmului ales într-un limbaj de programare);

- Testarea aplicaţiei obţinute (verificarea corectitudinii programului);

- Exploatarea şi întreţinerea (mentenanţa, activitatea de modificare a aplicaţiei la cererea beneficiarului sau în urma unor deficienţe constatate pe parcursul utilizării aplicaţiei).

În acest context, activitatea de programare a devenit o activitate organizată, definindu-se metode formale de dezvoltare a fiecărei etape. Etapele descrise anterior alcătuiesc ciclul de viaţă al unui produs software şi constituie obiectul de studiu al disciplinei numite ingineria sistemulor de programe (software engineering).

Teoreticienii ingineriei programării consideră că rezolvarea unei probleme se poate face pe 3 direcţii:

- Rezolvarea orientată pe algoritm (pe acţiune), în care organizarea datelor este neesenţială;

- Rezolvarea orientată pe date, acţiunile fiind determinate doar de organizarea datelor;

- Rezolvarea orientată obiect, care combină tendinţele primelor două abordări.

Abordarea aleasă determină modelarea problemei de rezolvat.

Dintre metodele de proiectare orientate pe algoritm amintim: metoda programării structurate şi metoda rafinării succesive. Ambele au ca punct de plecare metoda de proiectare top-down, considerată ca fiind o metodă clasică de formalizare a procesului de dezvoltare a unui produs software.

La baza metodei top-down stă descompunerea funcţională a problemei P, adica găsirea unui număr de subprobleme P, P, ... P, cu următoarele proprietăţi:

- Fiecare subproblemă P (1<=i<=n) poate fi rezolvată independent. Dacă nu constituie o problemă elementară, poate fi, la randul ei, descompusă;

- Fiecare subproblemă P este mai simplă decât problema P;

- Soluţia problemei P se obţine prin reuniunea soluţiilor subproblemelor P;

- Procesul de descompunere se opreşte în momentul în care toate subproblemele P obţinute sunt elementare, deci pot fi implementate;

Comunicarea între aceste subprobleme se realizează prin intermediul parametrilor. Implementarea metodei top-down într-un limbaj de programare se face cu ajutorul modulelor de program (funcţii în limbajul C).

probleme

Descompunerea funcţională a unui program P constă în identificarea funcţiilor (task-urilor, sarcinilor) principale ale programului (P , P , P ), fiecare dintre aceste funcţii reprezentând un subprogram . Problemele de pe acelaşi nivel i sunt independente unele faţă de altele.