La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paul Leger pleger@pleger.cl http://pleger.cl Programación Modular, Orientación a Aspectos y Sistemas Sensibles al Contexto Paul Leger pleger@pleger.cl.

Presentaciones similares


Presentación del tema: "Paul Leger pleger@pleger.cl http://pleger.cl Programación Modular, Orientación a Aspectos y Sistemas Sensibles al Contexto Paul Leger pleger@pleger.cl."— Transcripción de la presentación:

1 Paul Leger pleger@pleger.cl http://pleger.cl
Programación Modular, Orientación a Aspectos y Sistemas Sensibles al Contexto Paul Leger

2 Construcción de un Software
Ingeniero de Software Trato: Un «buen» software Cliente Resultado: Un cliente que sufre por un mal software

3 Caso Real: Administrar la Seguridad en Dynamics AX (ERP)
Error de seguridad al ingresar una transacción Edición manual de la seguridad ¿Son malos los ingenieros de software? ¿Es difícil construir un «buen» software?

4 Objetivo de la Presentación
Sistemas que se adaptan al contexto Aspectos ¿Cómo construir un «buen» software?

5 “Cada código debe ser escrito en un solo lugar”
Programación Modular “Cada código debe ser escrito en un solo lugar”

6 Sumando Matrices //dada una matriz m1 //dada una matriz m2
//m3 = m1 + m2 for (i = 0; i < 2; ++i) for (j = 0; j < 2; ++j) m3[j][i] = m1[i][j] + m2[i][j]; //m3 = m3 + m2 for (i = 0; i < 2; ++i) for (j = 0; j < 2; ++j) m3[j][i] = m3[i][j] + m2[i][j]; //m4 = m2 + m3 for (i = 0; i < 2; ++i) for (j = 0; j < 2; ++j) m4[j][i] = m2[i][j] + m3[i][j]; ¿Un error? ¿Una modificación? (ej. 2x2 → 5x5) Moraleja: Copiar & Pegar no es una buena idea - Modularity is good - Crosscutting concerns… (logging) - General procedures paradigms are insufficient - AOP improves modularity

7 Sumando Matrices en un Software Grande
Software complejo y largo ¿un error o modificación? El bug podría ser un: protocolo de seguridad, acceso a cuenta corriente, etc Moraleja: Copiar & Pegar no es una buena idea

8 Programación Modular En 1972, David Parnas dijo:
«Cada interés (concern) deber ser implementado en solo lugar, llamado módulo» function sumar (mA, mB) { for (j = 0; j < mA.largoFila; ++j) for (j = 0; j < mA.largoColumna; ++j) mC[i][j] = mA[i][j] + mB[i][j]; return mC; } m3 = sumar(m1,m2); m3 = sumar(m3,m1); m4 = sumar(m2,m3); Módulo

9 Beneficios de la Programación Modular
Desarrollando un sistema Software creado a través de la composición de módulos Cada modulo puede ser reemplazado/actualizado fácilmente Mantención del software resulta más sencilla

10 ¿Es Siempre Posible La Programación Modular?
Hay diversas técnicas/metodologías que ayudan a la programación modular (ej. Arquitectura de software) function IngresarNotas (notas) { verificarAcceso(); //código para ingresar notas } function cambiarNotas (notas) { verificarAcceso(); //código para cambiar notas ¿Es modular la implementación la seguridad? Por ejemplo: verificar el acceso de un usuario cada vez que se ejecuta una función Hay concerns que no pueden ser implementados de manera modular (ej. Seguridad y depuración) Estos concerns son conocidos como crosscutting concerns

11 Caso Real: Implementación de la Seguridad en un Servidor Web
La manchas rojas indican la implementación de la seguridad en el servidor Web Si usted quisiera cambiar el protocolo de seguridad ¿Cómo y dónde comienza a modificar el software?

12 Orientación a Aspectos
“De vuelta a la programación modular”

13 Programación Orientada a Aspectos
En 1996, Gregor Kiczales dijo: «Un aspecto puede implementar modularmente los crosscutting concerns (e.g. seguridad)» Identifica ASPECTO Acción

14 Implementando Seguridad con Aspectos
Solución sin aspectos Solución con aspectos function ingresarNotas(notas) { verificarAcceso(); //código para ingresar notas } function cambiarNotas (notas) { verificarAcceso(); //código para cambiar notas aspectoDepurador = { identifica: //llamadas a funciones accion: verificarAcceso(); } function ingresarNotas (notas) { //código para ingresar notas } function cambiarNotas (notas) { //código para cambiar notas Lenguajes de Aspectos conocidos:

15 Terminología de Aspectos
Join Point: Es un punto en la ejecución del programa sumar() restar() Pointcut: Es la identificación de un join point Advice: Acción a tomar cuando el pointcut identifica un join point print (“Ejecutando sumar”); Poincut ASPECTO Join Point Advice

16 ¿Es suficiente Aspectos para volver a la programación modular?
¿Cómo detecto que intruso desea entrar a nuestro Facebook probando contraseña? Necesitamos observar 3 intentos de login login Aspectos solo puede identificar un solo punto de ejecución, y no una traza de ejecución

17 Programación Orientada a Aspectos
En 2004, Remi Douence dijo: «Un stateful aspect puede identificar y reaccionar a trazas de ejecución» Stateful Aspect Identifica y reacciona

18 Implementando un detector de intrusos
dectectorIntruso = { identifica: login → login → login accion: print(“INTRUSO”); } login(); login(); login(); login Lenguajes de Stateful Aspects conocidos:

19 Sistemas Sensibles al Contexto
“Cambiando la conducta del programa”

20 Aplicaciones de Stateful Aspects: Sistemas Sensibles al Contexto (1/4)
«Un sistema sensible al contexto cambia su conducta de acuerdo al contexto (ejecución del programa) » Aplicaciones para tablets Arriba Abajo Secuencia Enviar un correo a Karla Soria Acción

21 Aplicaciones de Stateful Aspects: Sistemas Sensibles al Contexto (2/4)
Smart Home para gente ancianas Entrar al baño Δt > 3 horas No salió del baño Secuencia Avisar a una ambulancia Acción

22 Aplicaciones de Stateful Aspects: Sistemas Sensibles al Contexto (3/4)
Adaptivo software para enseñar a sumar a alumnos de básicos secuencia errónea de pasos al resolver una suma Secuencia Mostrar un tutorial Acción

23 Aplicaciones de Stateful Aspects: Sistemas Sensibles al Contexto (4/4)
Agentes inteligentes Acción Feedback

24 NO OLVIDE, ¡TENGA CUIDADO CUANDO «COPIA & PEGA»!
Conclusiones Programación/Diseño Modular es esencial para desarrollar «buen» software Programación Orientada a Aspectos permite observar la ejecución de un programa Stateful Aspects permite cambiar la conducta del programa de acuerdo a la historia de su ejecución NO OLVIDE, ¡TENGA CUIDADO CUANDO «COPIA & PEGA»! (presentación) (tesis doctoral)


Descargar ppt "Paul Leger pleger@pleger.cl http://pleger.cl Programación Modular, Orientación a Aspectos y Sistemas Sensibles al Contexto Paul Leger pleger@pleger.cl."

Presentaciones similares


Anuncios Google