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.

Slides:



Advertisements
Presentaciones similares
Tipos de investigación
Advertisements

Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
FACHADA COMPOSITOR MEMENTO
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
1.3 Programación modular. Subprogramas.
Aplicación del paradigma orientado a objetos
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
Traducción dirigida por la Sintaxis
Método de Ford-Fulkerson
Diseño y programación de
Teoría de lenguajes y compiladores
CLASES, OBJETOS, HERENCIA y COMPOSICIÓN
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java

Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
PROGRAMACIÓN ORIENTADA A OBJETOS
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
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.
En Java las estructuras de repetición son las mismas que en C/C++.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
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.
Asignación de Registros
MIPS Intermedio.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.

ESTRUCTURA DE DATOS EN JAVA
Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor:
Programación orientada a objetos
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.),
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.
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.
Herramientas de polimorfismo y herencia en C++
Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
The nesC Language: A Holistic Approach to Networked Embedded Systems Tomado de paper de: D. Gay, P. Levis, R. Behren, M. Welsh, E. Brewer, D. Culler.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Universes: Lightweight Ownership for JML Werner Dietl Peter Müller.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
1 Definición y Conversión de datos Agustín J. González ELO-329.
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.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
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 INVESTIGACION
Introducción a los TADs
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.
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
1 Definición y Conversión de datos Agustín J. González ELO-329.
MIPS Intermedio.
Herencias Conceptos básicos i
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
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.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
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 identificar 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 parámetros read-only y safe.

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. 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.

Diego Garbervetsky, Mike Barnett, Manuel Fähndrich, Francesco Logozzo

Objetivos Extender el análisis de grafos Points-to para.NET (parámetros por referencia y estructuras). Incrementar la precisión en el análisis de efectos de métodos no analizables.

Definiciones Un método es no analizable si su código no está disponible. Un método es débilmente puro si no muta ninguna locación existente en el estado correcto anterior a la invocación del método.

El problema List Copy(IEnumerable src) { List l = new List (); IEnumerator iter = src.GetEnumerator(); while (iter.MoveNext()){ int x = iter.get_Current(); l.Add(x); } return l; }

Salcianu No puede analizar llamadas a métodos de interfaces: src podría escapar a cualquier posición en memoria El método tiene una (potencial) escritura a cualquier posición accesible, como las variables estáticas.

Extensiones para.NET Address nodes: representan objetos y estructuras. Un address node que representa un objeto tiene ejes salientes con etiqueta *. Un address node para valores de estructuras tiene un eje saliente por campo (la etiqueta es el nombre del campo).

Ejemplo: v1 = v2

Métodos no analizables Métodos analizables: se matchea las escrituras y lecturas en los load nodes con los nodos del llamador. A diferencia de los métodos analizables, los efectos en estos pueden no mapear directamente con el grafo del método llamador.

Extensiones para métodos no analizables (nodos) Omega nodes (ω): modelan el conjunto de nodos alcanzables desde ese nodo. Omega Confined nodes (ωC): subcojunto de ω. Son nodos ω que representan solo aquellos alcanzables por los campos propios del llamador. Un campo f es propio de la clase T si el objeto O de tipo T posee el objeto apuntado por su campo f.

Extensiones para métodos no analizables (ejes) Ejes ?: eje desconocido. Representan cualquier campo. Ejes $: campos no propios. Permite distinguir entre referencias a objetos que pueden ser escritos por el método y los que únicamente pueden ser leídos.

Matcheo interprocedural Matcheo con ω: calculamos el conjunto de nodos (del llamador) alcanzables desde este, y finalmente todos los load nodes se convierten en ω. Matcheo con ωC: consideramos solo caminos que pasan por los ejes ? y los ejes propios. Rechazamos los que contienen ejes $.

Ejemplo: omega nodes

Anotaciones