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.

Slides:



Advertisements
Presentaciones similares
Programación Orientada a Aspectos (POA)
Advertisements

María Fernanda González Aguilar 2°F. ¿Qué es una plataforma educativa virtual?  Una plataforma virtual, es un conjunto de aplicaciones informáticas de.
Fase “III”
SOFTWARE LIBRE, OPEN SOURCE E HISTORIA DE LINUX TOVAR LÓPEZ IAN GUSTAVO PROFESOR RENÉ DOMINGUEZ ESCALONA ADMINISTRA SISTEMAS OPERATIVOS GRUPO 503.
Lcda. Ingrid Graü Diseño de Sistemas 1. Lcda. Ingrid Graü Diseño de Sistemas 2.
CMS ABIERTO Y CMS CERRADO MARÍA CAMILA MUÑOZ U TATIANA ARIAS CHAPARRO U CAROLINA FIGUEROA U
Ministerio de Educación - INTEC Red de Escuelas Medias, Técnicas y Artísticas. Ministerio de Educación - INTEC Red de Escuelas Medias, Técnicas y Artísticas.
DESARROLLO:EQUIPO TIC HOSPITAL SAN FERNANDO PROYECTO.
COMUNICACIÓN Y TIC Ángela Espinosa Hayler Peñaranda.
Organizaciones involucradas: El centro de cálculo noruego. Crea lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en 1967.
Plataforma de administración para congresos
Introducción al mundo de las comunicaciones
Paul Leger Modelo OSI Paul Leger
TESIS DE GRADO DESARROLLO DEL SISTEMA WEB PARA LA ADMINISTRACIÓN DE LAS ACTIVIDADES ACADÉMICAS DE ALUMNOS, PROFESORES Y RESPONSABLES DE LOS DEPARTAMENTOS.
Control Interno y Riesgos en TIs
Control Interno y Riesgos en TIs
Paul Leger Casos de Usos Paul Leger
Zapatería Clara Cirenne
L. S. C. A. Raúl Monforte Chulin
Biblioteca digital Pórtico
INTEGRACIÓN DE LAS TECNOLOGÍAS EN SISTEMAS
Introducción al Proyecto
Módulo 00 Administrivia.
CMS: sistema de Gestión de Contenidos
Sustentación de la propuesta
CONTROL DOMÓTICO MEDIANTE INTERFAZ MÓVIL
Ingeniería de Software
Arquitectura de una Base de Datos
“Web Services” Rogelio Ferreira Escutia.
Etapa Final del Proyecto
Investigación preliminar
Lenguaje C en pocas palabras
Herramientas de Programación
CARRERA DE INGENIERÍA EN SISTEMAS E INFORMÁTICA
METODOLOGÍA DE SISTEMAS
Lenguaje de Programación C en pocas palabras
Ingeniería de Software Somerville
MANUAL DE USUARIO USO DE LA PLATAFORMA EL ESPECIALISTA ESPECIALISTAS.
Tema 3. Lenguaje unificado de modelado UML
Modelo de 3 capas. Qué es la arquitectura de una aplicación? La arquitectura se refiere a la forma en la que es diseñada tanto física como lógicamente.
Definición de un Sistema Distribuido
Push Notifications.
Paul Leger Proyecto Paul Leger
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
Textos Persuasivos.
La naturaleza única de las WEAPPS. Uso intensivo de redes. Una webapp reside en una red y debe atender las necesidades de una comunidad diversa de clientes.
SISTEMAS OPERATIVOS. El sistema operativo es un conjunto de programas que: ■Inicializa el hardware del ordenador. ■Suministra rutinas básicas para controlar.
ESTRUCTURAS DE LOS SISTEMAS OPERATIVOS INTEGRANTES: -SIAS ALVAREZ -GUTIÉRREZ ROBLES -GELDRES HUAYCOCHEA.
Soporte al Sistema Operativo
TUTORIAL LIBROS DIGITALES
Planes de mejora Conceptualización B03 sestao Octubre 2009.
MIDDLEWARE Y PROGRAMACION WEB DISTRIBUIDA. ¿ QUE ES MIDDLEWARE?
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
PROYECTO DE GRADUACIÓN
TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN II
Spring Framework.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
Casos de Uso Análisis de requisitos con casos de uso.
PROYECTO DE GRADUACIÓN
ANÁLISIS Y DISEÑO DESDE UNA PERSPECTIVA ORIENTADA A OBJETOS Alan Vargas.
GC-F-004 V.01 CENTRO DE INDUSTRIA Y LA CONSTRUCCIÓN REGIONAL TOLIMA.
MODELO EN CASCADA Integrantes: Felipe Alemán Lester Blandón.
PRUEBAS DE CAJA NEGRA. -Internationa Software Testing Qualification Board (ISTQB) Internationa Software Testing Qualification Board (ISTQB) Técnica de.
PROYECTO DE GRADUACIÓN
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS - MENDOZA MOLINA ARIANA
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
SISTEMAS OPERATIVOS Estudiante: Rojas De la Cruz Jesus Manuel. Ciclo: VI. Turno: Noche.
Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Copyright 2019 Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Derechos reservados UML.
Transcripción de la presentación:

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 http://pleger.cl

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

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?

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

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

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

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

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

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

¿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

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?

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

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

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: http://pleiad.cl/aspectscript

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

¿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

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

Implementando un detector de intrusos dectectorIntruso = { identifica: login → login → login accion: print(“INTRUSO”); } login(); login(); login(); login Lenguajes de Stateful Aspects conocidos: http://pleiad.cl/otm

Sistemas Sensibles al Contexto “Cambiando la conducta del programa”

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

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

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

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

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»! http://pleger.cl/ucn (presentación) http://pleiad.cl/otm (tesis doctoral)