En el desarrollo de software orientado a aspectos , las preocupaciones transversales son aspectos de un programa que afectan a otras preocupaciones . Estas preocupaciones a menudo no se pueden descomponer limpiamente del resto del sistema tanto en el diseño como en la implementación, y pueden resultar en dispersión ( duplicación de código ), enredos (dependencias significativas entre sistemas) o ambos.
Por ejemplo, si se escribe una aplicación para manejar registros médicos , la indexación de dichos registros es una preocupación central , mientras que registrar un historial de cambios en la base de datos de registros o en la base de datos de usuarios, o en un sistema de autenticación, serían preocupaciones transversales, ya que interactúan. con más partes del programa.
Fondo
Las preocupaciones transversales son partes de un programa que dependen o deben afectar a muchas otras partes del sistema. Forman la base para el desarrollo de aspectos . [1] Tales preocupaciones transversales no encajan claramente en la programación orientada a objetos o en la programación procedimental . [2]
Las preocupaciones transversales pueden ser directamente responsables de los enredos o las interdependencias del sistema dentro de un programa . Debido a que las construcciones de lenguaje procedimental y funcional consisten enteramente en llamadas a procedimientos, no existe una semántica a través de la cual dos objetivos (la capacidad a ser implementada y la preocupación transversal relacionada) puedan abordarse simultáneamente. [3] Como resultado, el código que aborda la preocupación transversal debe estar disperso o duplicado en las diversas ubicaciones relacionadas, lo que resulta en una pérdida de modularidad . [2]
La programación orientada a aspectos tiene como objetivo encapsular las preocupaciones transversales en aspectos para mantener la modularidad. Esto permite el aislamiento limpio y la reutilización del código que aborda la preocupación transversal. [4] Al basar los diseños en preocupaciones transversales, los beneficios de la ingeniería de software pueden incluir modularidad y mantenimiento simplificado. [5]
Ejemplos de
Ejemplos de preocupaciones que tienden a ser transversales incluyen:
- Reglas del negocio
- Almacenamiento en caché
- Movilidad de código
- Validación de datos
- Optimizaciones específicas de dominio
- Detección y corrección de errores
- Internacionalización y localización que incluye localización de idiomas
- Seguridad de información
- Inicio sesión
- Gestión de la memoria
- Vigilancia
- Persistencia
- Características del producto
- Restricciones en tiempo real
- Sincronización
- Procesamiento de transacciones
- Ayuda sensible al contexto
Ver también
- Separación de intereses
- Programación Orientada a Aspectos
- Refactorización de código (software de reestructuración)
- Normalización de la base de datos (minimice los datos replicados innecesariamente)
- Herencia múltiple
- Microservicios
- Ortogonalización (normalización matemática)
Referencias
- ^ Kiczales et. al 2002 , pág. 4
- ^ a b Kiczales y col. 1997 , pág. 1
- ^ Kiczales y col. 1997 , pág. 6
- ^ Kiczales y col. 1997 , pág. 2
- ^ Li, Krishnamurthi y Fisler 2002 , p. 1
Bibliografía
- Kiczales, Gregor; Lamping, John; Mendhekar, Anurag; Maeda, John; Lopes, Cristina; Longtier, Jean-Marc; Irwin (1997). "Programación Orientada a Aspectos". Actas de la XI Conferencia Europea de Programación Orientada a Objetos (ECOOP 1997) : 220–242.
- Patente de EE.UU. 6467086 , Kiczales et. al, " Programación orientada a aspectos ", publicado el 15 de octubre de 2002
- Li, Harry; Krishnamurthi, Shriram; Fisler, Kathi (2002). "Verificación de características transversales como sistemas abiertos". Notas de ingeniería del software ACM SIGSOFT . 27 (6): 89–98. CiteSeerX 10.1.1.8.9445 . doi : 10.1145 / 605466.605481 . S2CID 52835673 .
- Parnas, David L. (diciembre de 1972). "Sobre los criterios que se utilizarán en la descomposición de sistemas en módulos". Comunicaciones de la ACM . 15 (12): 1053-1058. CiteSeerX 10.1.1.90.8963 . doi : 10.1145 / 361598.361623 . S2CID 53856438 .
- Tarr, Peri; Ossher, Harold; Harrison, William; Sutton, Stanley M., Jr. (1999). N grados de separación: separación multidimensional de preocupaciones . Actas de la 21ª Conferencia Internacional de Ingeniería de Software . Los Ángeles, California, EE.UU .: IEEE Computer Society Press . págs. 107-119. CiteSeerX 10.1.1.89.1641 . doi : 10.1109 / ICSE.1999.841000 . ISBN 978-1581130744.
Otras lecturas
- Laddad, R. (2003): AspectJ en acción, Programación práctica orientada a aspectos, Manning Publications Co.
enlaces externos
- El glosario de términos orientados a aspectos de AOSD.net (a través de Internet Archive Wayback Machine ; AOSD.net se ha convertido en Modularidad ).
- AspectJ [1] , una extensión orientada a aspectos del lenguaje de programación Java
- Bergmans, L., M. Aksit (2001): Composing Multiple Concerns Using Composition Filters, https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24 de julio de 2004)
- Berg, K. van den, Conejero, J. y Chitchyan, R. (2005). AOSD Ontology 1.0 - Ontología pública de orientación a aspectos. Red de excelencia de AOSD Europa, http://eprints.eemcs.utwente.nl/10220/01/BergConChi2005.pdf
- Aquí hay un ejemplo de cómo manejar una preocupación transversal: https://web.archive.org/web/20161220151503/https://www.captechconsulting.com/blogs/a-persistence-pattern-using-threadlocal-and- interceptores ejb