stringtranslate.com

Programación orientada a materias

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 diversas 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 presentados 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 que un árbol tiene una altura, peso, masa foliar, etc. mensurables, desde el punto de vista de un pájaro, un árbol también puede tener medidas de valor relativo para fines alimentarios o de anidación, o desde el punto de vista de un tasador fiscal, puede tener un determinado valor imponible en un año determinado. Ni la información adicional sobre el estado del pájaro ni la del tasador de impuestos necesitan considerarse intrínsecas al árbol, sino que son añadidas por las percepciones del pájaro y del tasador de impuestos, y según el análisis de Kant, lo mismo puede ser cierto incluso para las características que pensamos. como intrínseco.

La programación orientada a materias aboga por la organización de las clases que describen objetos en "materias", que pueden componerse para formar materias más grandes. En los puntos de acceso a campos o métodos , se pueden componer contribuciones de varios sujetos. Estos puntos se caracterizaron como los puntos de unión [3] de los sujetos. Por ejemplo, si se tala un árbol, los métodos involucrados pueden necesitar unir el comportamiento del pájaro y de los sujetos 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 contraposición a la naturaleza algorítmica (procedimental) o que oculta la representación (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ó dudas sobre su relación con la programación orientada a materias y sobre la diferencia entre materias y aspectos. Estas preguntas estuvieron sin respuesta durante algún tiempo, pero fueron abordadas en la patente sobre programación orientada a aspectos presentada en 1999 [5] en la que dos puntos emergen como diferencias características con respecto al arte anterior:

En la visión orientada al sujeto, el corte transversal puede colocarse separado del aspecto (sujeto) y el comportamiento no está obligado por el aspecto, sino que se rige por reglas de composición. En retrospectiva [6] también hace posible distinguir la programación orientada a 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 temas, los puntos de unión se restringieron deliberadamente al acceso a campos y llamadas a métodos con el argumento de que esos eran los puntos en los que se diseñaron marcos bien diseñados para admitir una 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

Con el cambio de milenio, estaba claro que varios grupos de investigación estaban siguiendo diferentes tecnologías que empleaban la composición o 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 patente particulares y enfatizar que la tecnología de composición se ocupa de algo más que la fase de codificación del desarrollo de software, estas tecnologías se organizaron juntas bajo el término Orientada a Aspectos. Desarrollo de Software , [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 orientados 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 temas la concibió deliberadamente como una tecnología de empaquetado, que permitía ampliar el espacio de funciones y tipos de datos en cualquier dimensión. Las primeras implementaciones fueron 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 del 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 multi- "matriz" dimensional en la que se relacionan las preocupaciones con las unidades de software que las implementan. Esta organización se llama 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 tema 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 enchufables adecuados para manipular la representación.

Se desarrolló un sucesor del motor de composición Hyper/J [17] como parte de CME, 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 cuenta con soporte activo.

La programación orientada a materias como "tercera dimensión"

El envío de métodos en la programación orientada a objetos puede considerarse como "bidimensional" en el sentido de que el código ejecutado depende tanto del nombre del método como del objeto en cuestión. Esto se puede contrastar [20] con la programación de procedimientos, 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 el sujeto también es relevante para el envío, constituyendo una tercera dimensión.

Ver también

Referencias

  1. ^ William Harrison y Harold Ossher, Programación orientada a sujetos: 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 OOPSLA más influyente".
  3. ^ Harold Ossher, Peri Tarr. Composición a nivel de operación: un caso en el punto (de unión), en el lector del taller ECOOP '98, 406–409
  4. ^ Kiczales, G .; Lamping, J.; Mendhekar, A.; Maeda, C.; López, C.; Loingtier, JM; Irwin, J. (1997). Programación orientada a aspectos (PDF) . Ecoop '97. Actas de la XI 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 los lenguajes de aspectos, Bruselas, Bélgica, 1 de abril de 2008, editado por Gary T. Leavens, Biblioteca digital ACM, 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, Oregon, EE. UU., 2006, págs. 481 - 497
  8. ^ Comunicaciones de la ACM, vol. 44, núm. 10, octubre de 1994, págs. 28-95
  9. ^ http://aosd.net/
  10. ^ Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz y Vincent Kruskal, Reglas de composición orientada a temas, 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 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. The preocupado manipulación del entorno, Actas de la 27ª conferencia internacional sobre ingeniería de software, índice, 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 IBM".
  19. ^ "Entorno 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