Programarea orientată pe aspecte (AOP) este o paradigmă de programare bazată pe ideea de separare a funcționalității pentru a îmbunătăți partiționarea programului în module .
Metodologia AOP a fost propusă de un grup de ingineri de la Centrul de Cercetare Xerox PARC condus de Gregor Kiczales. Ei au dezvoltat, de asemenea, o extensie orientată pe aspecte pentru limbajul Java , numită AspectJ - (2001).
Paradigmele de programare existente - procedurală , modulară , programare orientată pe obiecte (OOP) și proiectare orientată pe domeniu - oferă anumite modalități de separare și evidențiere a funcționalității: funcții , module , clase , dar unele funcționalități care utilizează metodele propuse nu pot fi separate în entități separate. O astfel de funcționalitate se numește end-to- end (din engleză scattered - scattered sau engleză tangled - intertwined), deoarece implementarea sa este distribuită între diferite module de program. Funcționalitatea end-to-end duce la un cod dispers și confuz, care este greu de înțeles și de întreținut.
Înregistrarea și gestionarea excepțiilor sunt exemple tipice de funcționalitate transversală. Alte exemple: trasare ; autentificarea si verificarea drepturilor de acces ; programarea contractelor (în special, verificarea condițiilor pre și post). Pentru un program scris în paradigma OOP, orice funcționalitate care nu a fost descompusă este transmisă.
Cu toate acestea, conform unor autori [1] , AOP poate fi folosit cu succes și pentru a rezolva probleme de securitate, multithreading , managementul tranzacțiilor și multe altele.
Toate limbile AOP oferă un mijloc de a izola funcționalitatea end-to-end într-o entitate separată. Deoarece AspectJ este strămoșul acestei direcții, conceptele utilizate în această extensie s-au răspândit în majoritatea limbajelor AOP.
Concepte de bază ale AOP:
Dezvoltare de software | |
---|---|
Proces | |
Concepte de nivel înalt | |
Directii |
|
Metodologii de dezvoltare | |
Modele |
|
Cifre notabile |
|