F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani [email protected] Christian Portugal...

30
FRAMEWORK JAVA ANALIZER CODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambrano cportugal@episunsa.edu.pe Jonathan Miranda Campos jmiranda@episunsa.edu.pe Alexander Machaca Huancco amachaca@episunsa.edu.pe Claudia Luque Ventura cluque@episunsa.edu.pe Ernesto Suarez López esuarez@episunsa.edu.pe Gustavo Bravo Esquivias gbravo@episunsa.edu.pe Enero, 2009 UNIVERSIDAD NACIONAL DE SAN AGUSTIN ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS TECNOLOGIA DE OBJETOS

Transcript of F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani [email protected] Christian Portugal...

Page 1: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

FRAMEWORK JAVA ANALIZER CODE

Alexander Ocsa Mamani [email protected]

Christian Portugal [email protected]

Jonathan Miranda Campos [email protected]

Alexander Machaca Huancco [email protected]

Claudia Luque Ventura [email protected]

Ernesto Suarez López [email protected]

Gustavo Bravo Esquivias [email protected]

Enero, 2009

UNIVERSIDAD NACIONAL DE SAN AGUSTINESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

TECNOLOGIA DE OBJETOS

Page 2: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

AGENDA Resumen Introducción Objetivos y restricciones de la arquitectura Representación de la Arquitectura

Vista de Casos de Uso Vista Lógica Vista de Despliegue Arquitectura del Proyecto Arquitectura del Proyecto Diseño del framework OO Diagrama de clases Diseño de código fuente

Preguntas de Discusión Conclusiones Referencias

Page 3: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

RESUMEN

Se propone realizar un framework el cual nos ayudara a corregir errores de un programa en Java, para lo cual si tienen en cuenta algunas reglas las cuales serán implementadas y estas se dividen en el análisis de POO y análisis de excepciones El cual esta siendo desarrollado en la plataforma Java. El resultado esperado del proyecto será un Framework para desarrolladores y un Plug-in para eclipse.

Palabras clave: Framework JAC, Java Analizer Code, Plugin

Page 4: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

INTRODUCCIÓN (...1)

Propósito El presente documento de arquitectura, tiene

como finalidad presentar la arquitectura del framework JAC, el cual se detalle en diferentes vistas que tienen como fin describir el comportamiento del framework desde diferentes contextos.

 

Page 5: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

INTRODUCCIÓN (...1)

Alcance La descripción del documento se encuentra

basado en la vista lógica del framework, por tal motivo se incluye aspectos relevantes de cada una de la vistas. Por el contrario no se detalla aspectos relacionados con el lenguaje de programación.

Page 6: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

REPRESENTACIÓN DE LA ARQUITECTURA

El modelo propuesto utiliza el siguiente conjunto de vistas

Vista de Casos de Uso Vista Lógica Vista de Procesos Vista de Deployment Vista de Implementación Vista de Datos

Page 7: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

OBJETIVOS DE LA ARQUITECTURA

El objetivo principal del desarrollo del Java Analizer Code es revisar código java sin ejecutar el código.

Identificar errores y mostrar la forma correcta de la implementación.

Componentes altamente reutilizables. Implementación de reglas. Visualizar análisis de los resultados

Page 8: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

RESTRICCIONES DE LA ARQUITECTURA

El analizador solo analiza Código Java IDE de uso Eclipse, ya que será integrado a este

como un Plugin. Solo son implementadas 15 reglas. Está basado en las implementaciones de jdk

1.6.

Page 9: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

VISTA DE CASOS DE USO

Identificación de casos de uso

Iniciar Java Analizer CodeEste caso de Uso inicia el funcionamiento del Java Analizer Code aquí ingresamos el código fuente en java que será analizado.

Detener Java Analizer CodeEste caso de Uso detiene el funcionamiento del Java Analizer Code.Limpiar Java Analizer CodeEste caso de Uso funcionara cuando se desee limpiar cualquier información ya sea errores o mensajes de advertencias

Analizar ReglasEste caso de Uso funcionara cuando se desee limpiar desea analizar con el código java con una determinada regla. Se analizará:

Analizar POOAnalizar Excepciones

Visualizar Resultados del análisisEste caso de uso es el resultado del análisis del código, si el código esta errado JAC nos corregirá, y si el código es correcto nos mostrará el siguiente mensaje “Código listo para ser utilizado”.

Page 10: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

VISTA DE CASOS DE USO (cont …)

Usuario

Iniciar JAC

Detener JAC

Limpiar JAC

Analizar Reglas

Analizar POO

AnalizarExcepciones

<<extend>>

<<extend>>

Visualizar Resultadosdel analisis

Page 11: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Casos de Uso Relevantes para la Arquitectura

Iniciar JAC La realización del caso se uso queda a cargo del subsistema Interfaz y el subsistema analizador de codigo.

iniciar JAC

Subsistema Analizador Reglas

Subsistema Plug in

Page 12: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Casos de Uso Relevantes para la Arquitectura (cont …)

Detener JAC

Limpiar JAC

Detener J AC

Subsistema Analizador Reglas

Subsistema Plug in

Limpiar JAC

Subsistema Analizador Reglas

Subsistema Plug in

Page 13: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Casos de Uso Relevantes para la Arquitectura (cont …)

Analizar Reglas

Visualizar resultados de análisis.

Analizar Reglas

Subsistema Analizador Reglas

Subsistema Plug in

Visualizar resultados de analisis

Subsistema Analizador Reglas

Subsistema Plug in

Page 14: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

VISTA LÓGICA

Descripción de los subsistemas

Subsistema analizador de código.- Este subsistema es el analizador de código propiamente dicho que contiene un tree para recorrer el código y contiene las reglas implementadas que analizaran dicho código. Este subsistema está formado por Api-AST y las reglas que analizaran el

código.

Subsistema Plug-in.- Este subsistema es el plug in desarrollado, que será integrado al analizador y ambos conformaran el plug in final, que podrá ser incorporado a eclipse. Este subsistema está formado por View y Menu.

Page 15: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

VISTA LÓGICA (cont …)

Subsistema Plug in

Menu

View

Subsistema Analizador de Reglas

Subsistema Plug-in

Subsistema Analizador ReglasSubsistema Plug in

Subsistema Analizador Reglas

Reglas

API- AST

Page 16: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

VISTA DE DESPLIEGUE

Usuario del analisis estatica decodigo

IDE Eclipse

Subsistema analizador de reglas

Subsistema Plug-in

La siguiente figura presenta el escenario de distribución esperado para la instalación del framework. El mismo se ubica en el contexto de una organización, sobre una LAN privada y se prevé el acceso vía Internet a un repositorio de servicios

Page 17: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

ARQUITECTURA DEL PROYECTO

Sistema J ava Analizer Code

Subsistema analizador de reglas

API AST

Subsistema Plug-in

Interfaz

Codigo J ava

REGLAS

VIEW

MENU

IDE Eclipse

En la siguiente figura presenta una vista global de los subsistemas del framework y las herramientas externas que se utilizaron para lograr cumplir los cometidos definidos para cada subsistema.

Page 18: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Vista de Deployment

La siguiente figura ilustra el deployment del Sistema JAC sobre la base del escenario de distribución presentado en la figura pasada como parte del desarrollo de la vista de deployment del Framework JAC.

Aplicacion del usuario

Proceso de analisisestatico de codigo

Vista del plug-in

Page 19: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Vista de Implementación

En esta sección se presentan los ejecutables y artefactos construidos para la implementación del Sistema JAC. El sistema aquí planteado es una implementación del framework descrito en las secciones anteriores que cumple con la especificación 1.4 de J2EE.

Subsistema Plug-in

Sistema J ava Analizer CodeJ avacAPI.jar

JACImp.jar

Mapeo de subsistemas

Page 20: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Estructura del Framework

La implementación del framework se empaquetó en dos JARs independientes, uno para el subsistema Ejecución de Procesos y otro para el subsistema Resolución de Servicios tal como se muestra en la siguiente figura.

La implementación del Sistema JAC se enmarca en la tecnología JAVA, más precisamente el subsistema Plug-in está implementado por un conjunto de clases que utilizan los del IDE Eclipse que realizan las tareas concretas de creación del vista y menús en el mismo IDE eclipse.

Page 21: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

Arquitectura de la Implementación

Se presenta a continuación un diagrama que muestra las dependencias entre los JARs que contienen la definición de las interfaces y la implementación concreta del framework.

J AC.jar

J ACImp.jar J avacAPI.jar

tools.jar

Dependencia de JARs del sistema

Page 22: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

DISEÑO DEL FRAMEWORK OO

Eclipse es un poderoso y extensible IDE para propósito general de construcción de aplicaciones. Eclipse tiene una extensa arquitectura permitiendo extenderse a si mismo por medio de plug-in, puede decirse así mismo que eclipse es un IDE hecho de plug-in que extienden su funcionalidad de acuerdo a las necesidades del usuario. También Eclipse PDE (Plugin Development Environment ) posee herramientas de ayuda al desarrollador para personalizar el comportamiento del plug-in y un framework de desarrollo extensible que permite a los desarrolladores reutilizar los varios componentes del workbench de eclipse.

Page 23: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

DISEÑO DEL FRAMEWORK OO

Page 24: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

DIAGRAMA DE CLASES(API AST)

Page 25: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

DIAGRAMA DE CLASES(PLUGIN)

Page 26: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

DISEÑO DE CÓDIGO FUENTE

Page 27: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

PREGUNTAS

Page 28: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

CONCLUSIONES El Java Analizer Code revisara el código java sin ejecutar

el código. Se podrá detectar los errores y mostrar la forma correcta

de la implementación. Con el JAC es posible visualizar el análisis de los

resultados que se obtengan a partir de la detección de errores.

JAC solo analizará Código Java. Se realizo un Plugin el cual se integrara al IDE de uso

Eclipse Se puede ver que se implementaron 15 reglas las cuales

nos ayudaran a corregir los errores en Código Java.

Page 29: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

REFERENCIAS [1] Proyecto de Grado Batuta – Generador de Aplicaciones Orquestadoras.

Glosario. Facultad de Ingeniería, Universidad de la República, Uruguay,2005. http://www.fing.edu.uy/~pgsoasem/documentos/PG-P2005_0026-Glosario.pdf

[2] Rational Unified Process. Rational Software, IBM, 2003. http://www-306.ibm.com/software/awdtools/rup/

[3] Proyecto de Grado Batuta – Generador de Aplicaciones Orquestadoras. Descripción del Modelo Batuta. Facultad de Ingeniería, Universidad de la República, Uruguay, 2005. http://www.fing.edu.uy/~pgsoasem/documentos/PG-P2005_0026-DescripcionModeloBatuta.pdf

[4] Proyecto de Grado Batuta – Generador de Aplicaciones Orquestadoras. Estado del Arte. Facultad de Ingeniería, Universidad de la República, Uruguay, 2005. http://www.fing.edu.uy/~pgsoasem/documentos/PG-P2005_0026-EstadoDelArte.pdf

  [5] Proyecto de Grado Batuta – Generador de Aplicaciones Orquestadoras.

Especificación Complementaria del Modelo Batuta. Facultad de Ingeniería, Universidad de la República, Uruguay, 2005. http://www.fing.edu.uy/~pgsoasem/documentos/PG-P2005_0026-EspecificacionComplementaria.pdf

Page 30: F RAMEWORK J AVA A NALIZER C ODE Alexander Ocsa Mamani aocsa@episunsa.edu.pe Christian Portugal Zambranocportugal@episunsa.edu.pe Jonathan Miranda Camposjmiranda@episunsa.edu.pe.

REFERENCIAS Api design confessions of a java framework

architect http://www.apress.com/book/view/1430209739

http://wiki.apidesign.org/wiki/TheAPIBook http://www.way2books.com/2008/10/

practical-api-design-confessions-of.html http://hudson.apidesign.org/job/samples/

lastSuccessfulBuild/artifact/samples/build/ http://www.ibm.com/developerworks/

rational/library/08/0429_gutz3/index.html http://mantrid.wordpress.com/projects/

master-thesis/ Eclipse: Building Commercial-Quality Plug-

ins, 2nd Edition