|
Metode de dezvoltare a programelor
Exista doua abordari diferite in dezvoltarea programelor, numite si paradigme de dezvoltare:
paradigma structurata, predominanta in anii `80,
paradigma orientata pe obiect, predominanta in anii `90.
Paradigma structurata se bazeaza pe abstractizarea notiunilor de procedura, functie si structura de bloc din limbajele de programare, cum sunt ALGOL si Pascal.
Uneori aceasta paradigma se numeste functionala, deoarece sugereaza rezolvarea unei probleme prin descompunere functionala.
Aceasta metoda pleaca de la comportamentul dorit al produsului program pe care il descompune utilizand un procedeu de sus in jos (top-down), pana la obtinerea unor elemente ce pot fi implementate direct.
Dezavantajul acestei metode consta in faptul ca rezultatele obtinute prin aplicarea ei sunt puternic dependente de problema si au astfel un grad redus de reutilizabilitate, chiar si la problemele asemanatoare.
Paradigma orientata obiect inverseaza metodologiile structurate, accentul fiind pus pe identificarea obiectelor din domeniul problemei si nu pe descompunerea functionala a problemei.
Avantajul acestei metode: la orice nivel, in cadrul procesului de dezvoltare pot fi identificate elemente reutilizabile.
Numim metoda de dezvoltare un triplet compus din:
o notatie impreuna cu semantica asociata, destinata modelarii diverselor aspecte ale problemei sau ale PP, in cadrul procesului de dezvoltare;
o procedura/reteta de aplicare a acestei notatii;
un criteriu de masurare a progresului si de stabilire a punctelor terminale.
In general metoda trebuie sa acopere activitatile (etape sau faze) de dezvoltare ale procesului.
In cazul metodei structurate, accentul este pus pe prelucrari, cu alte cuvinte pe aspectul dinamic al problemei.
In cazul paradigmei orientata obiect accentul se pune pe ce anume se prelucreaza, deci pe aspectul static al problemei.
Metodele moderne de dezvoltare folosesc modele multiple ale problemei, pentru a nu neglija nici unul dintre aceste aspecte, asa cum procedeaza metoda UML - Unified Modeling Language.
In cazul metodelor de dezvoltare apartinand paradigmei orientate obiect, vom intalni urmatoarele activitati:
analiza orientata obiect, o metoda de analiza care examineaza cerintele din perspectiva claselor si obiectelor identificate in cadrul vocabulaarului domeniului problemei,
proiectarea orientata obiect, o metoda de proiectare care cuprinde un proces de decompozitie orientat pe obiect si o notatie pentru descrierea atat a modelului logic si fizic, cat si a celui static si dinamic al sistemului proiectat. Notiunea de descompunere orientata obiect se defineste prin contrast cu decompozitia functionala, specifica metodelor structurate, in care accentul se pune pe algoritmi si nu pe obiecte,
programarea orientata obiect este o metoda de implementare (codificare) in care programele sunt organizate sub forma unor colectii de obiecte cooperante, fiecare obiect fiind o instanta a unei anumite clase, iar clasele sunt membre ale unei ierarhii de clase construita pe baza unor relatii de mostenire.
Se apreciaza ca orice metoda de dezvoltare orientata pe obiect are caracteristici majore si minore, distinctia dintre major si minor fiind luata in sensul ca o caracteristica majora, spre deosebire de ina minora, este esentiala pentru ca o metoda de dezvoltare sa apartina paradigmei orientate pe obiect.
Aceste caracteristici sunt:
Caracteristici majore Caracteristici minore
Abstractizare Tipizare
IncapsulareConcurenta
Modularizare Persistenta
Ierarhizare
Abstractizare: abstractizarea desemneaza caracteristicile esentiale ale unei entitati prin care ea se distinge de alte feluri de entitati, furnizand o delimitare clara a entitatii respective din punctul de vedere al celui care o apreciaza din exterior.
Determinarea unei abstractizari corespunzatoare este esentiala in dezvoltarea orientata pe obiect.
Incapsulare
Abstractizarea unei entitati precede implementarea acesteia.
Odata selectata modalitatea de implementare, detaliile acesteia trebuie considerate un secret al abstractizarii, fiind ascunse pentru majoritatea clientilor entitatii respective.
Incapsularea este procedeul de ascundere a detaliilor unei entitati ce nu contribuie la caracteristicile esentiale ale acesteia.
Incapsularea este numita uneori si ascunderea informatiei.
Abstractizarea si incapsularea se manifesta prin tratarea unei clase ca fiind compusa din doua parti:
interfata clasei de obiecte, ce constituie imaginea sa externa si care corespunde incapsularii
implementarea clasei, ce constituie imaginea sa interna si corespunde incapsularii.
Modularizare
Este proprietatea unui sistem de a fi descompus intr-o multime coeziva de componente cuplate intre ele, numite module.
Coeziunea este o masura a gradului de afinitate reciproca a modulelor unei modularizari.
Cuplajul este o masura a gradului de interconexiune a modulelor unei modularizari.
Se urmareste ca modulele sa fie cuplate cat mai slab, iar conexiunea lor sa fie cat mai puternica.
Ierarhizare
Reprezinta gradarea sau ordonarea abstractiilor.
In paradigma orientata pe obiect, ierarhizarea se manifesta sub forma ierarhiilor definite de relatia de mostenire intre clase si ierarhiile definite de relatia de compunere (agrgare) dintre obiecte.
Tipizare
Caracterizeaza comportamentul unor entitati prin prisma operatiilor care pot manipula entitatile respective.
In termenii paradigmei orientate pe obiect, un tip clasifica obiectele in concordanta cu interfata acestora, in timp ce clasele o fac in concordanta cu implementarea asociata.
Concurenta
Este acea proprietate care distinge o entitate activa de o entitate pasiva.
In cadrul paradigmei orientate pe obiect, conceptul de obiect poate unifica abstractizarea datelor si abstractizarea proceselor,
Un astfel de obiect se numeste obiect activ, problema putand fi abstractizata sub forma unei multimi de obiecte, dintre care unele sunt active ai altele pasive.
Persistenta
Este acea proprietate a unei entitati de a transcende timpului (in sensul ca entitatea continua sa existe si dupa ce creatorul iai inceteaza existenta) si/sau spatiului (in sensul ca entitatea isi pastreaza identitatea chiar daca isi schimba locatia din spatiul de adrese in care a fost creata).
Persistenta se refera mai ales la sistemele de baze de date orientate pe obiect.
Persistenta in raport cu coordonata spatiu este uneori necesara in sistemele distribuite.