Alexandre D. Salcianu and Martin C. Rinard. Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a.

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.
Advertisements

Tipos de investigación
Sección 1 Configuración y Tablas Básicas
Ingeniería de Software II
integridad referencial
FACHADA COMPOSITOR MEMENTO
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Arquitecturas de BD Modelo ANSI/SPARC
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Alexandre D. Salcianu and Martin C. Rinard. Definiciones Un método es puro si no muta ninguna locación existente en el estado correcto anterior a la invocación.
DOM ( Document Object Model) Prof. Franklin Cedeño.
Arquitectura CLARO-TECNOTREE
Diseño orientado al flujo de datos
Capitulo 4 Excepciones.
Informática II Prof. Dr. Gustavo Patiño MJ
Aplicación del paradigma orientado a objetos
Preguntas tipo test (Tema I)
Traducción dirigida por la Sintaxis
Diseño y programación de
Teoría de lenguajes y compiladores
Programación Orientada a Objetos en Java
Metodología de la investigación
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
PROCEDIMIENTOS ANALITICOS DE AUDITORÍA
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
Modelado Arquitectónico
Asignación de Registros
Método Científico.
* FRAUSTO JIMENEZ GABRIELA * * HERNANDEZ TORRES ANA LAURA * * MANDUJANO JUAN CARLOS * * NOVA MARIN YARELI PAULINA * * ZAVALA CORTE JOCELYN ARELI *
DATA WAREHOUSE Equipo 9.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Métodos y Diseño de Investigación II
Material de apoyo Unidad 4 Estructura de datos
ORGANIZACIÓN DE LOS DATOS PARA PROCESARLOS EN COMPUTADORA Las computadoras trabajan con datos. Aceptan y procesan datos, y comunican resultados. No pueden.
Metodología para solución de problemas
Ingeniería del Software
Analisis exploratorio INGRID TATIANA RODRIGUEZ GUZMAN DIANA COSTANZA BERMUDEZ GORDILLO.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Universes: Lightweight Ownership for JML Werner Dietl Peter Müller.
Importancia en la efectividad del:
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
TEMA 9: DIAGRAMA DE CLASE EN UML
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
PROGRAMACION ORIENTADA A OBJETOS
Metodología de la programación
Las Pruebas del Software y sus Fundamentos
Alexandre D. Salcianu and Martin C. Rinard. Idea  Método para analizar la pureza de programas Java (no anotados).  Construido sobre una mejora de “combined.
Diego Garbervetsky, Mike Barnett, Manuel Fähndrich, Francesco Logozzo.
TIPOS DE PRUEBAS DEL SOFTWARE
INTERFAZ DE ACCESS  Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información.
Ciclo de Vida del Software
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Proceso de desarrollo de Software
INTRODUCCIÓN A LA INGENIERIA DE SOFTWARE ALUMNO MILLER ANDRES GALINDO DUCUARA (412088)
6.6 Administración de defectos
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Elementos de un documento de plan informático Hasta el momento no existe un modelo único como para representar un plan informático; no obstante presentamos.
Capítulo 5 Definición del alcance de la investigación a realizar: exploratoria, descriptiva, correlacional o explicativa.
ACCESO A DATOS EN ASP.NET Controles de origen de datos Controles enlazados a datos.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
PSP1 Lección 5: Estimaciones de tiempo y tamaño. Objetivos  ¿Qué es PSP? Alcance y necesidad.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Entregables del Proyecto
FASES DE LA AUDITORÍA ADMINISTRATIVA
Transcripción de la presentación:

Alexandre D. Salcianu and Martin C. Rinard

Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a la invocación del método.

Para qué?  Cómo input para algunos análisis de programas  Para entender y documentar el programa  Para reducir el trabajo de los model checkers

Idea  Método para analizar la pureza de programas Java (no anotados).  Construido sobre una mejora de “combined pointer and escape analysis method” (Rinard- Whaley)  Chequea si un método es puro, en el sentido de que no cambia ningún objeto existente en el pre-estado.

Mejoras  Se distingue entre objetos existentes en el pre-estado y objetos nuevos (creado por el método)  La información adicional generada por el método sirve para obtener información útil sobre efectos colaterales.  El método fue probado (correctitud), implementado y utilizado en variedad de tareas.

Generalizaciones de Pureza  Parámetros Read-Only : el método no cambia ningún objeto alcanzable desde el parámetro.  Parámetros Seguros (safe):  parámetros read-only  el método no crea ningún camino externo visible en el heap hacia objetos alcanzables desde el parámetro.

Resumen hasta acá  Análisis para detectar métodos puros en programas Java no anotados  Presenta mejoras con respecto a análisis anteriores  Permite la alocación de objetos nuevos en el heap  Detecta read-only and safe parameters.

Revisión del análisis  Para cada método m y cada punto del programa dentro de m el análisis computa un points-to graph que modela la parte del heap que el método m accede antes de ese punto.

Revisión del Análisis  Un objeto “escapa” si es alcanzable desde afuera del método analizable (ej: desde uno de los parámetros)  En otro caso, el objeto está “capturado”  Un eje externo siempre termina en un load node

Revisión del Análisis  Para cada método m el análisis computa un conjunto W m que contiene los campos abstractos modificados que son visibles externamente.  Un campo abstracto es un campo para un nodo específico.

Revisión del Análisis  El análisis examina métodos empezando desde las hojas.  Se realiza sin conocer el contexto en que se llamó el método (análisis composicional)  Obtiene un único resultado parametrizable  El resultado es luego instanciado en cada lugar que se invoque el método m.  Normalmente, el análisis procesa cada método una única vez.  Métodos recursivos requieren varias pasadas hasta llegar a un punto fijo.

Ejemplo: Cell Constructor

Ejemplo: List.add

Descanso??????

Continuando el Análisis  Cada points-to graph registra los nodos que “escapan globalmente”, es decir, aquellos nodos que son potencialmente accesibles por código que desconocemos.  Cualquier nodo alcanzable desde estos nodos también escapa globalmente  El análisis debe ser muy conservativo con respecto a estos nodos, en particular, porque pueden ser mutados por código no conocido.  Se utiliza un nodo especial para otros nodos desconocidos que escapan globalmente

Análisis Intraprocedural

Análisis Interprocedural  Por cada llamada (call) del tipo v R = v 0.s(v 1, …, v j ) el análisis usa el points-to graph G anterior a la llamada y el points-to graph G calle (gráfico final del método invocado) para computar un points-to graph posterior a la invocación del método.  Si hay múltiples posibles invocaciones, el análisis las considera a todas y mergea el conjunto de resultados de los points to graph

Paso 1  El análisis computa un mapeo, que relaciona los parámetros y los nodos cargados del método invocado, con los nodos que representan Incluir gráfico

Paso 2

Análisis de Efectos  Este análisis se realiza sobre el análisis descripto anteriormente.  El análisis propaga efectos interprocedurales de las siguiente forma: cuando el análisis del método m encuentra una invocación, se utiliza el mapeo de nodos intraprocedural para proyectar los efectos del método invocado e incluir esos efectos en el conjunto W m.

Pureza del Método  Se computa el conjunto A de nodos que son alcanzables en G, desde nodos parámetros, utilizando ejes externos.  El método m es puro si y sólo si para todo n perteneciente a A: 1. n no escapa globalmente 2. Ningún campo de n es alterado

Parámetros read-Only Para chequear si el parámetro p es read-only:  Considerar el nodo correspondiente n p  Determinar el conjunto S 1 que contiene a n p y todos los load nodes alcanzables desde n p utilizando ejes externos  El parámetro p es read-only si y solo si: 1. No hay ningún campo abstracto perteneciente a W m tal que n pertenece a S 1 2. Ningún nodo de S 1 escapa globalmente

Parámetros Safe Para chequear si un p parámetro es safe:  Se computa el conjunto S 1  Se computa el conjunto S 2 de nodos alcanzables desde nodos parámetros y/o desde nodos retornados, utilizando ejes externos o internos.  Para chequear la ausencia de un nuevo camino hacia un objeto alcanzable desde p, basta con chequear que ningún eje interno vaya desde un nodo en S 2 a un nodo en S 1

Write effects