La programació orientada a aspectes (POA), més coneguda per les sigles en anglès (AOP - aspect-oriented programming), és un paradigma de programació que permet separar el vessant tècnic (aspect en anglès) de les funcionalitats de l'aplicació.

L'objectiu de la programació orientada a aspectes és aconseguir separar un programa en funcionalitats el més reduïdes possible. Aquest objectiu ja es persegueix amb les tècniques tradicionals de programació, com la programació imperativa o la programació orientada a l'objecte, però aquesta separació dona lloc a l'aparició de funcionalitats creuades, és a dir, crides a funcionalitats (procediments, funcions o mètodes) dins de l'especificació d'una funcionalitat, aquest terme es coneix en anglès com a cross-cutting.

La programació orientada a aspectes tracta de donar solució a les referències creuades entre funcionalitats diferents, amb la creació del concepte de punts d'execució (point cuts). Amb aquesta tècnica es pot substituir la crida a una funcionalitat dintre d'una altra, per un punt d'execució que permet modificar el flux d'execució del programa. Al codi que s'executa en arribar al punt d'execució se l'anomena advice (consell). A la unió del punt d'execució (pointcut) i el codi consell se l'anomena aspect (aspecte).

El concepte de programació orientada a aspectes va ser creat per Gregor Kiczales i el seu equip d'investigadors al Centre de recerca de Palo Alto, de la companyia Xerox. Aquest equip va desenvolupar també, el llenguatge orientat a aspectes de propòsit general més popular, l'AspectJ.

Eines que utilitzen AOP AspectJ extensió del llenguatge JAVA que permet la utilització de punts d'execució en aquest llenguatge.

JBoss-AOP és l'arquitectura JAVA que utilitza el servidor d'aplicacions JBoss.

Spring framework integra conceptes del paradigma d'orientació a aspectes, dintre del contenidor IoC.

Vegeu també Paradigma de programació Patró de disseny (informàtica)

Enllaços externs Web d'informació general sobre desenvolupament de programari amb AOP Web del Spring framework Web del framework Aspectj Integració de Java amb AOP.

Categoria:Programació