stringtranslate.com

Programación orientada a temas

En informática , la programación orientada a sujetos es un paradigma de software orientado a objetos en el que el estado (campos) y el comportamiento (métodos) de los objetos no se consideran intrínsecos a los objetos mismos, sino que son proporcionados por varias percepciones subjetivas ("sujetos") de los objetos. El término y los conceptos se publicaron por primera vez en septiembre de 1993 en un artículo de conferencia [1] que luego fue reconocido como uno de los tres artículos más influyentes que se presentaron en la conferencia entre 1986 y 1996. [2] Como se ilustra en ese artículo, se hace una analogía con el contraste entre las visiones filosóficas de Platón y Kant con respecto a las características de los objetos "reales", pero aplicadas a los de software. Por ejemplo, si bien todos podemos percibir un árbol como si tuviera una altura, un peso, una masa de hojas, etc. medibles, desde el punto de vista de un pájaro, un árbol también puede tener medidas de valor relativo para fines de alimentación o anidación, o desde el punto de vista de un asesor fiscal, puede tener un cierto valor imponible en un año determinado. Ni la información estatal adicional del pájaro ni la del tasador de impuestos deben considerarse intrínsecas al árbol, sino que se agregan mediante las percepciones del pájaro y del tasador de impuestos y, a partir del análisis de Kant, lo mismo puede ser cierto incluso de las características que consideramos intrínsecas.

La programación orientada a sujetos propugna la organización de las clases que describen objetos en "sujetos", que pueden ser compuestos para formar sujetos más grandes. En los puntos de acceso a campos o métodos , se pueden componer las contribuciones de varios sujetos. Estos puntos se caracterizaron como los puntos de unión [3] de los sujetos. Por ejemplo, si se corta un árbol, los métodos involucrados pueden necesitar unir el comportamiento de los sujetos del pájaro y del tasador de impuestos con el del propio árbol. Por lo tanto, es fundamentalmente una visión de la naturaleza compositiva del desarrollo de software, en oposición a la naturaleza algorítmica (procedimental) o de ocultación de representaciones (objeto).

Relaciones

Relación con la programación orientada a aspectos

La introducción de la programación orientada a aspectos en 1997 [4] planteó preguntas sobre su relación con la programación orientada a temas y sobre la diferencia entre temas y aspectos. Estas preguntas quedaron sin respuesta durante algún tiempo, pero se abordaron en la patente sobre programación orientada a aspectos presentada en 1999 [5] en la que surgen dos puntos como diferencias características con respecto a la técnica anterior:

En la perspectiva orientada a los aspectos, el punto de corte transversal puede ubicarse por separado del aspecto (sujeto) y el comportamiento no es forzado por el aspecto, sino que es gobernado por reglas de composición. La perspectiva retrospectiva [6] también permite distinguir la programación orientada a los aspectos por su introducción y explotación del concepto de un punto de corte similar a una consulta para imponer externamente los puntos de unión utilizados por los aspectos de manera general.

En la presentación de la programación orientada a aspectos, los puntos de unión se restringieron deliberadamente al acceso a campos y a la llamada a métodos, con el argumento de que esos eran los puntos en los que los sistemas bien diseñados estaban diseñados para admitir la extensión funcional. El uso de puntos de corte impuestos externamente es una capacidad lingüística importante, pero sigue siendo una de las características más controvertidas de la programación orientada a aspectos. [7]

Relación con el desarrollo de software orientado a aspectos

A principios del milenio, estaba claro que varios grupos de investigación estaban buscando diferentes tecnologías que empleaban la composición o la unión de estados y funciones empaquetados por separado para formar objetos. [8] Para distinguir el campo de interés común de la Programación Orientada a Aspectos con sus definiciones de patentes particulares y para enfatizar que la tecnología compositiva se ocupa de más que solo la fase de codificación del desarrollo de software, estas tecnologías se organizaron juntas bajo el término Desarrollo de Software Orientado a Aspectos , [9] y se inició una organización y una serie de conferencias internacionales sobre el tema. Al igual que la programación orientada a aspectos, la programación orientada a temas, los filtros de composición, la programación orientada a características y los métodos adaptativos se consideran enfoques de desarrollo de software orientado a aspectos.

Dimensiones

Separación multidimensional de preocupaciones, Hyper/J y el entorno de manipulación de preocupaciones

La formulación original de la programación orientada a sujetos la concibió deliberadamente como una tecnología de empaquetamiento, que permitía ampliar el espacio de funciones y tipos de datos en cualquier dimensión. Las primeras implementaciones habían sido para C++, [10] y Smalltalk. [11] Estas implementaciones explotaron los conceptos de etiquetas de software y reglas de composición para describir la unión de sujetos.

Para abordar la preocupación de que se debería proporcionar una mejor base para el análisis y la composición de software no sólo en términos de su empaquetado sino en términos de las diversas preocupaciones que estos paquetes abordaban, se desarrolló una organización explícita del material en términos de una "matriz" multidimensional en la que las preocupaciones se relacionan con las unidades de software que las implementan. Esta organización se denomina separación multidimensional de preocupaciones y el artículo que la describe [12] ha sido reconocido como el artículo más influyente de la Conferencia ICSE de 1999. [13]

Este nuevo concepto se implementó para componer software Java , utilizando el nombre Hyper/J para la herramienta. [14]

La composición y el concepto de sujeto se pueden aplicar a artefactos de software que no tienen semántica ejecutable, como especificaciones de requisitos o documentación. Se ha descrito un vehículo de investigación para Eclipse , llamado Concern Manipulation Environment (CME), [15] en el que se aplican herramientas de consulta, análisis, modelado [16] y composición a artefactos en cualquier lenguaje o representación, mediante el uso de adaptadores de complemento adecuados para manipular la representación.

Como parte de CME, se desarrolló un sucesor del motor de composición Hyper/J [17] que utiliza un enfoque general para los diversos elementos de un motor de composición:

Tanto Hyper/J como CME están disponibles en alphaWorks [18] o sourceforge, [19] respectivamente, pero ninguno de ellos recibe soporte activo.

La programación orientada a sujetos como una “tercera dimensión”

El envío de métodos en la programación orientada a objetos puede considerarse "bidimensional" en el sentido de que el código ejecutado depende tanto del nombre del método como del objeto en cuestión. Esto puede contrastarse [20] con la programación procedimental, donde el nombre de un procedimiento se resuelve directamente, o unidimensionalmente, en una subrutina, y también con la programación orientada a sujetos, donde el remitente o sujeto también es relevante para el envío, lo que constituye una tercera dimensión.

Véase también

Referencias

  1. ^ William Harrison y Harold Ossher, Programación orientada a objetos: una crítica de los objetos puros, Actas de la Conferencia de 1993 sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos, septiembre de 1993
  2. ^ "Premio al artículo más influyente de OOPSLA".
  3. ^ Harold Ossher, Peri Tarr. Composición a nivel de operaciones: un caso de (unión) Point, en ECOOP '98 Workshop Reader, 406–409
  4. ^ Kiczales, G. ; Lamping, J.; Mendhekar, A.; Maeda, C.; Lopes, C.; Loingtier, JM; Irwin, J. (1997). Programación orientada a aspectos (PDF) . ECOOP '97. Actas de la 11.ª Conferencia Europea sobre Programación Orientada a Objetos . LNCS . Vol. 1241. págs. 220–242. CiteSeerX 10.1.1.115.8660 . doi :10.1007/BFb0053381. ISBN  3-540-63089-9.
  5. ^ Kiczales; Gregorio J.; Lámparas; Juan O.; Lopes; Cristina V.; Hugunin; James J.; Hilsdale; Erik A.; Boyapati; Chandrasekhar, Programación orientada a aspectos, Patente de Estados Unidos 6.467.086, 15 de octubre de 2002.
  6. ^ William Harrison. De-constructing and Re-constructing Aspect-Orientation, Séptimo taller anual sobre fundamentos de lenguajes de aspectos, Bruselas, Bélgica, 1 de abril de 2008, editado por Gary T. Leavens, ACM Digital Library, 2008, págs. 43-50
  7. ^ Friedrich Steimann. El éxito paradójico de la programación orientada a aspectos, Actas de la 21.ª conferencia anual ACM SIGPLAN sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos, Portland, Oregón, EE. UU., 2006, págs. 481-497
  8. ^ Comunicaciones de la ACM, Vol. 44, No. 10, octubre de 1994, pp. 28-95
  9. ^ http://aosd.net/
  10. ^ Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz y Vincent Kruskal, Reglas de composición orientadas a objetos, Actas de la Conferencia de 1995 sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos, octubre de 1995
  11. ^ Hafedh Mili, William Harrison, Harold Ossher, Apoyo a la programación orientada a sujetos en Smalltalk, Actas de TOOLS USA 96, agosto de 1996
  12. ^ Harold Ossher, Peri Tarr, William Harrison, Stanley Sutton, N grados de separación: separación multidimensional de preocupaciones, Actas de la Conferencia internacional de 1999 sobre ingeniería de software, mayo de 1999
  13. ^ "SIGSOFT - Grupo de interés especial de la ACM en ingeniería de software".
  14. ^ Harold Ossher, Peri Tarr. Hyper/J: Separación multidimensional de preocupaciones para Java, Actas de la 23.ª Conferencia internacional sobre ingeniería de software, Toronto, Ontario, Canadá, 2001, páginas: 821 - 822
  15. ^ William Chung, William Harrison, Vincent Kruskal, Harold Ossher, Stanley M. Sutton, Jr., Peri Tarr, Matthew Chapman, Andrew Clement, Helen Hawkins, Sian January. El entorno de manipulación de preocupaciones, Actas de la 27.ª conferencia internacional sobre ingeniería de software, índice de contenidos, St. Louis, MO, EE. UU., 2005
  16. ^ William Harrison, Harold Ossher, Stanley Sutton, Peri Tarr. Modelado de preocupaciones en el entorno de manipulación de preocupaciones, Actas del taller de 2005 sobre modelado y análisis de preocupaciones en software, St. Louis, Missouri, 2005
  17. ^ William Harrison, Harold Ossher, Peri Tarr. Composición general de artefactos de software, Actas del taller de composición de software 2006, marzo de 2006, Springer-Verlag, LNCS 4089, páginas 194-210
  18. ^ "Comunidades heredadas - Comunidad de IBM".
  19. ^ "Ambiente de manipulación de preocupaciones (CME)". 24 de abril de 2015.
  20. ^ Revista de tecnología de objetos: Programación orientada al contexto

Enlaces externos