Académique Documents
Professionnel Documents
Culture Documents
1 – Introducción
Existen actualmente dos paradigmas de construcción de sistemas informáticos Existen mas
paradigmas, yo pondría algo así como: si bien existen vario o muchos paradigmas, en la actualidad
se utilizan principalmente dos paradigmas….. (y pongan alguna referencia bibliográfica) . El
primero, programación orientada a objetos, más conocido por su nombre y su sigla en inglés
“Object Oriented Programming” - 'OOP', es actualmente el de uso mayoritario, y lleva vigente ya,
varios años, tiempo que para todo lo relacionado con la tecnología informática es cuasi infinito.
Este paradigma está basado en el reconocimiento de entidades concretas y abstracciones
distinguibles, suceptibles de ser modeladas. El segundo paradigma en pugna es la programación
orientada a aspectos -”Aspect Oriented Programming”, 'AOP'. Es el paradigma joven, aún sin
mucha experiencia, aunque su juventud no es una contra en absoluto, ya que al momento de su
aparición, se contaba con toda la experiencia cosechada en los años anteriores, primero de
programación estructurada, y luego de programación orientada a objetos. Su aparición fue
impulsada por un concepto preexistente: Separación de incumbencias - “Separation of Concerns”
(SoC). Hasta el momento, esta cuestión venía siendo manejada elegantemente sobre el paradigma
de objetos, sin embargo, el enfoque propuesto por el nuevo paradigma es precisamente facilitar la
tarea.
Falta un párrafo que le genere interés al lector por seguir leyendo, tengan en cuenta que en general
la gente lee la introducción y si le resulta interesante lee las conclusiones y si en ese momento le
sigue resultando interesante lee el resto del artículo. Creo que el párrafo debería decir algo así: no
existe un consenso universal a cerca de que paradigma utilizar….. existen varios trabajos
experimentales que analicen este aspecto pero sin una coincidencia completa en sus conclusiones,
por ello en el presente trabajo se llevará adelante una revisión sistemática que permita analizará la
eficiencia de ambos paradigmas para ayudar a los desarrolladores a determinar cual de los
paradigmas es mas conveniente……
2- Estado de la cuestión
2.12 – Programación Orientada a Objetos
La programación orientada a objetos o POO (OOP por sus siglas en inglés) es un paradigma
que usa un concepto basado en abstracciones, y en un modelado de la realidad mediante
objetos e interacciones mutuas, para diseñar aplicaciones y programas informáticos. Los
pilares fundamentales de este paradigma son varios: abstracción, herencia, polimorfismo y
encapsulamiento. Su uso se popularizó a principios de los años 1990 y creció con el tiempo.
En la actualidad, existe variedad de lenguajes de programación que soportan la orientación
a objetos. Entre los más representativos podemos mencionar 'Smalltalk', 'Java', 'C++',
'Python' y 'PHP'. Para completar esta idea, presentamos algunas citas de otros autores.
“ La programación orientada a objetos (POO) ha supuesto uno de los avances más importantes de
los últimos años en la ingeniería del software para construir sistemas complejos utilizando el
principio de descomposición, ya que el modelo de objetos subyacente se ajusta mejor a los
problemas del dominio real que la descomposición funcional. La ventaja que tiene es que es fácil la
integración de nuevos datos, aunque también quedan las funciones esparcidas por todo el código, y
tiene los inconvenientes de que, con frecuencia, para realizar la integración de nuevas funciones hay
que modificar varios objetos, y de que se produce un enmarañamiento de los objetos en funciones
de alto nivel que involucran a varias clases. ”
[ref-1] “Visión General de la Programación Orientada a Aspectos” - Antonia Ma. Reina Quintero -
Departamento de Lenguajes y Sistemas Informáticos - Universidad de Sevilla - Diciembre, 2000 -
http://www.willydev.net/descargas/abcpoa.pdf
“La orientación a objetos proporciona un nuevo paradigma para la creación de software. En este
nuevo paradigma, los objetos y las clases son los pilares, mientras que los métodos, los mensajes y
la herencia producen los mecanismos primarios. Históricamente, la creación de un programa
implicaba la definición de procesos que actuaban sobre un conjunto independiente de datos. (…) la
orientación a objetos cambia el centro de atención del proceso de programación desde el
procedimiento a los objetos -módulos autocontenidos que incluyen tanto los datos como los
procedimientos que actúan sobre los datos.”
[ref-2] - “Software orientado a objetos” - Ann L. Winblad, Samuel D. Edwards, David R. King -
Addison-Wesley/Diaz de Santos (Versión en español de Ramón Ruiz Ayuso)
“La programación orientada a aspectos (POA) es una nueva metodología de programación que
aspira a soportar la separación de competencias para los aspectos antes mencionados. Es decir, que
intenta separar los componentes y los aspectos unos de otros, proporcionando mecanismos que
hagan posible abstraerlos y componerlos para formar todo el sistema. En definitiva, lo que se
persigue es implementar una aplicación de forma eficiente y fácil de entender.
POA es un desarrollo que sigue al paradigma de la orientación a objetos, y como tal, soporta la
descomposición orientada a objetos, además de la procedimental y la descomposición funcional.
Pero, a pesar de esto, POA no se puede considerar como una extensión de la PO”
[ref-1] “Visión General de la Programación Orientada a Aspectos” - Antonia Ma. Reina Quintero -
Departamento de Lenguajes y Sistemas Informáticos - Universidad de Sevilla - Diciembre, 2000 -
http://www.willydev.net/descargas/abcpoa.pdf
investigar el asunto para lograr una comparación fiel a la realidad, basándonos en las
investigaciones existentes, entre las fuerzas y debilidades de ambos paradigmas de programación.
La intención entonces es cuantizar las diferencias entre los objetos de nuestro estudio y encontrar
una relación de superioridad de uno sobre el otro.
Cabe aclarar que, como ya se mencionó anteriormente, el paradigma de aspectos surgió con una
intención muy clara, que es la de facilitar la separación de incumbencias, dentro de los distintos
aspectos de una aplicación. Fuera de esto, a excepción de repercusiones que tenga en otros asuntos,
no es posible una comparación entre los paradigmas, al menos no con la intención de cuantizar la
superioridad de uno sobre otro. Por estas razones, nos enfocaremos en los casos en que lo que se
compara son diferencias logradas sobre problemas que tengan que ver con este aspecto.
Pongan también las fase de la revisión que indica Kitchenham (definir la pregunta de investigación,
búsqueda y selección de experimentos y sisntesis de resultados….)
Antes de detallar los estudios tienen que detallar la pregunta de investigación y el contexto de
búsqueda y selección. También es importante docuemntar cuantos experiemntos encontraron y
cuantos descartaron, sino el trabajo deja de ser una revisisón sistemática real y se transforma en una
simple revisión bibliográfica, la cual puede esta fuertemente influenciada por la opinión de quien la
realiza.
6 – Ponderaciones cualitativas
7 – Conclusión
8 – Referencias Bibliográficas
Ref 1: “Visión General de la Programación Orientada a Aspectos” - Antonia Ma. Reina Quintero -
Departamento de Lenguajes y Sistemas Informáticos - Universidad de Sevilla - Diciembre, 2000 -
http://www.willydev.net/descargas/abcpoa.pdf
Ref 2: “Software orientado a objetos” - Ann L. Winblad, Samuel D. Edwards, David R. King -
Addison-Wesley/Diaz de Santos (Versión en español de Ramón Ruiz Ayuso)
Ref 3: “Programación Orientada a aspectos ” - Eric Ruiz Campos , Eduardo Rodriguez Maysundo ,
Heider Ysaias Sanchez Enriquez - Universidad Nacional de Trujillo - Escuela Académico
Profesional de Informática.
Apéndice
Estudio 1:
Este set de datos refiere al tiempo en minutos que demoraron ciertas tareas de debugging.
AspectJ
T1 1 1 5 = 7/3 = 2.33
T2 14 32 26 = 72/3 = 24.00
T3 7 2 2 = 11/3 = 3.66
-------
30 /3 = 10
Java
T1 20 9 10 = 39/3 = 13.00
T2 16 25 41 = 82/3 = 27.33
T3 9 2 10 = 21/3 = 7.00
-------
47 /3 = 15.66
Aspectos 10.00
-------- = ------- = 0.63829
Objetos 15.66
Resultado a favor de AspectJ
Este set de datos refiere a la cantidad de instancias de análisis semántico del código
AspectJ
0 0 2 = 2/3 = 0.66
2 5 2 = 9/3 = 3.00
1 0 0 = 1/3 = 0.33
-------
4 /3 = 1.33
Java
4 1 5 = 10/3 = 3.33
4 4 4 = 12/3 = 4.00
1 8 4 = 13/3 = 4.33
-------
11.66 /3 = 3.88
Aspectos 1.33
-------- = ------- = 0.34285
Objetos 3.88
Resultado a favor de AspectJ
Java
2 2 3 = 7/3 = 2.33
3 3 7 = 13/3 = 4.33
1 1 3 = 5/3 = 1.66
-------
25/3 7.33 /3 = 2.77
Aspectos 2.66
-------- = ------- = 0.96
Objetos 2.77
Resultado ligeramente a favor de AspectJ, aunque no es una diferencia
significativa
Java
5 1 1 = 7/3 = 2.33
1 5 9 = 15/3 = 5.00
1 1 2 = 4/3 = 1.33
-------
26/3 7.33 /3 = 2.88
Aspectos 2.11
-------- = ------- = 0.73 076
Objetos 2.88
Nuevamente a favor de AspectJ, aunque una diferencia bastante ajustada.
Con todas estas experiencias tenidas en cuenta, tomaremos de este estudio, un valor para el costo de
debugging promediando los datos
Tiempo invertido: 0,64
Análisis semánticos de código: 0,34
Cantidad de archivos alterados: 0,96
Cantidad de compilaciones hechas: 0,73
( 0,64 + 0,34 + 0,96 + 0,73 ) / 4 = 0,6675 ~ 0,67
De donde nuestra variable de costo de debugging en aspectos sobre objetos según este estudio toma
el valor de 0,67.
La siguiente variable de este mismo estudio es el tiempo empleado en efectuar un cambio de
comportamiento en el programa. En este caso solo se evaluó el tiempo que demoró cada equipo en
completar la tarea, por lo que será más sencillo de valorar.
AspectJ
32 85 47 =174/3 = 58.00
45 45 43 =133/3 = 44.33
40 - 34 = 74/2 = 37.00
-------
139.33 /3 = 46.44
Java
46 60 45 =151/3 = 50.33
37 15 27 = 79/3 = 26.33
15 20 19 = 54/3 = 18.00
-------
338/6 94.66 /3 = 18.77
Aspectos 46.44
-------- = ------- = 2.47337
Objetos 18.77
para poder compararlo contra las relaciones obtenidas anteriormente invertimos: 1/2.47337 =
0.40431 .
Por lo que la siguiente variable, tiempo de desarrollo en aspectos sobre objetos nos da una
proporción de 2,47.