Desarrollo Software Gran Escala

Documentos relacionados
ATLAS MANUAL DE USUARIO DEL ARQUETIPO JAR

Ejemplos DATEX II. Documento de compilación y ejecución. Carlos del Blanco Calderón (LISITT) David Torres Garrigós (LISITT)

UD2 Instalación y uso de

ANEXO 4: DOCUMENTACIÓN DEL TRANSFORMADOR. DE LA APLICACIÓN WEB GENERATOR (WAPP Generator)

UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS DE LA COMPUTACIÓN E INFORMÁTICA

JAVA 7 Los fundamentos del lenguaje Java

ARQUITECTURAS. Carlos Reveco D. IN73J Arquitectura, Diseño y Construcción de un Negocio con Apoyo TI.

Introducción n a Apache Tomcat 5.5

Objetivos y Temario CURSO JAVA 7

Lenguaje de Programación

Requerimientos y Capacidades del Sistema

Evolución del Desarrollo WEB

Modelo de Desarrollo en Capas para VB. NET

Proyecto de fin de Carrera 2013/2014. Autor: Miguel Souto Bartolomé Consultor: Óscar Escudero Sánchez

IMPLEMENTACIÓN DE INTEGRACIÓN DE SISTEMAS HEREDADOS UTILIZANDO WEB SERVICES

Sistema móvil para la seguridad personal en caso de accidentes presentados en la ciudad de Bogotá. Manual de Programador

ANEXO I: EL LENGUAJE DE PROGRAMACIÓN JAVA

MANUAL DE USUARIO Plugins para maven Framework ATLAS. Versión 1.1

Presentación del Curso Presencial. Programación Web con Java J2EE

Clasificación de las Herramientas CASE

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

ServiceTonic. Guía de instalación

Diseño e implementación de una tienda electrónica mediante Struts y SOAP. Rocío López Valladolid Tutor: Dr. Abelardo Pardo Sánchez

MAGIC DRAW UML. Índice. José Ignacio Colmenero González Carlos Pérez Herrero José Luis Bravo Sánchez

ServiceTonic - Guía de Instalación ] ServiceTonic. Guía de instalación GUÍA DE INSTALACIÓN

PRESENTACIÓN DE LA ASIGNATURA E INTRODUCCIÓN A LA PROGRAMACIÓN VISUAL

Tema 2 Introducción a la Programación en C.

Qué es un Java Maven Artifact?

Rational Unified Process

Estudiaremos desde los fundamentos hasta conceptos más avanzados de la tecnología JSF.

PROGRAMACIÓN VISUAL E.A.P. SISTEMAS E INFORMATICA UNIVERSIDAD NACIONAL DEL SANTA CURSO: MICROCOMPUTACION III FACULTA DE INGENIERIA.

Aspectos pragmáticos de los lenguajes de programación

Práctica 1. Entorno de Trabajo e Introducción a Java. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Desarrollo y servicios web

Manual de instalación Revisión: 03/10/17

PRESENTACIÓN TRABAJO FIN DE GRADO. Autor: José Ignacio Bengoechea Isasa Consultora: María Isabel March Hermo Área: Redes de computadores Junio 2017

Anchurus-GEN: generador de código PHP a partir de modelos ISML. Frank Sebastián Franco Hernández

En la ingeniería de software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a

MS_10962 Advanced Automated Administration with Windows PowerShell

Programación Avanzada

Desarrollo de aplicaciones para dispositivos móviles (5)

Implementación de Componentes

Framework ATLAS. Entorno de Desarrollo

OpenDomo en Raspberry Pi

Programación Orientada a Objetos y Patrón MVC en PHP5. Pablo Ramirez A.

Aproximación inicial en el uso de GeoTools

Distribución del Software

Programación en lenguajes estructurados de aplicaciones de gestión. Código: J62.13 Nivel: 3

Propuesta framework de herramientas para el desarrollo de aplicaciones en un modelo colaborativo. Ricardo Borillo Domenech

Asignatura: Entornos de programación Entornos basados en combinación de herramientas

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

Master Microsoft Visual Studio.NET 2010 Desarrollo de aplicaciones

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Plataforma desarrollo Java

Contenido. Introducción. Herramientas de apoyo a RUP. Herramientas de apoyo en la captura de requisitos Herramientas de modelado con UML

033 - IFC01CM15. ADMINISTRACIÓN AVANZADA EN LINUX Y VIRTUALIZACIÓN

Programación de Aplicaciones Distribuidas

Ing. Clarisa Maman Orfali. Founder & CEO ClarTech Solutions, Inc.

REQUERIMIENTOS DE ARQUITECTURA DE SOFTWARE DE LA AUTORIDAD AUTÓNOMA DEL SISTEMA ELÉCTRICO DE TRANSPORTE MASIVO DE LIMA Y CALLAO (AATE)

Transcripción:

Desarrollo Software Gran Escala Herramientas de Desarrollo (Parte 3: Generadores y Constructores)

Diferentes tipos de herramientas Controladores de versión Ambientes de desarrollo Pruebas y Depuración Documentación Generadores de código Constructores

Generadores de código (CG) Diferentes Lenguajes, Arquitecturas y frameworks soportados Algunos pocos generan full aplicación Diferentes fuentes: Desde UML Desde un MER Ambiente gráfico Posibilidad de ingeniería inversa

Caso de Ejemplo (Java) Se desea generar una aplicación con acceso a una BD por medio de EJB. De tienen dos equipos: Uno para la capa de BD y otro para la GUI. Primero se construye la capa de BD que incluye la lógica Los EJB s se construyen desde cero

Caso de estudio: Construcción de la capa de BD El modelo esta representado en un archivo XML (generado desde una herramienta UML) El generador toma el archivo XML como entrada el cual contiene las tablas y campos de la BD. Lo anterior alimenta una plantillas donde se define como generar EJB s para la BD objetivo, incluyendo los SQL necesarios (técnica conocida como Model-Driven Generation)

Caso de estudio: Generación de páginas de prueba Se incluyen unas plantillas para generar las paginas JSP de pruebas que permiten acceder a los EJB s Las páginas de prueba observan el archivo SQL de inicialización de la BD Algunas de estas páginas se llevan a producción

Caso de estudio: Generación de la GUI Se utiliza un generador especifico para la GUI Se generan los JSP y la interfaz SWING Se parte de una definicion manual de las interfaces

Caso de estudio: Como se genera la GUI Se utiliza las definiciones de entidades (las mismas de los EJB s) junto a la definición manual de la GUI como entradas al generador

Caso de estudio: Se agrega la generación de GUI Se integra el generador de GUI, el cual toma parte de su información del generador de BD Construye tanto la parte Web (JSP) como la de escritorio (Swing)

Beneficios de CG para ingenieros Calidad: Grandes volumenes de código escrito a mano tiende a una calidad inconsistente El uso de plantllas estandariza el proceso por lo que las mejoras al código se pueden aplicar consistentemente a través de todo el código base Consistencia: El código construido con un generador es consistente con sus API s y el nombramiento de variables facilitando su uso y entendimiento Un cambio en una nombre de una tabla en un solo punto permite regenerar el esquema, la capa de objetos, la documentación y demás artefactos de desarrollo

Beneficios de CG para ingenieros (2) Más tiempo para el diseño: Se puede dedicar mas tiempo para razonar sobre el uso de las API s y del framework No obstante, el tiempo ganado debe ser utilizado para reescribir las plantillas y integración de partes generadas consistentemente con la arquitectura, si es el caso del generador utilizado. Consistencia con la Arquitectura: CG encauza a los programadores para mantenerse dentro de la arquitectura Documentación: Apoya las labores más tediosas de documentación y su mantenimiento

Buenas practicas para CG Preste atención al código escrito a mano: Puede existir codificación especial en algunos casos que no es posible hacerle ingeniería Entienda el framework para el cual está generando código Una forma de entenderlo es escribiendo código a mano para dicho framework Haga control al código fuente: Es muy importante proteger él codigo escirto a mano a través de un controlador de versiones robusto Considere el lenguaje para el CG: El generador y el código generado no necesariamente debén estar bajo el mismo lenguaje Integre el generador en todo el proceso de desarrollo Considere integrarlo a su ambiente de desarrollo (IDE)

Algunos CG populares Oracle Application Express (Oracle/Java) CodeSmith (.Net/C#) Codify (.NET/C#) Velocity (Java) Symphony (PHP) UML2PHP (PHP) Code Charge (PHP, Java) XDoclet (Java/XML) Acceleo (MDA, multiples plataformas)

Constructores Son herramientas de apoyo a la generación o automatización de construcción y compilación de código Su finalidad es construir archivos ejecutables o programas, entendibles por la plataforma sobre la cual se ejecuta resolviendo dependencias a otros archivos (bibliotecas, API s, etc.) Además son utilizados para la automatización de otras tareas como la creación de documentación, mantenimiento del sistema (borrado de archivos temporales, por ejemplo), etc.

Caso de Estudio: Apache Ant Ant es un proyecto de código abierto de la Apache Software Foundation. Es una herramienta usada para la realización de tareas mecánicas y repetitivas, normalmente durante la fase de compilación y construcción (build). Es similar a Make pero sin las engorrosas dependencias del sistema operativo. Ofrece la ventaja de no depender de las órdenes de shell de cada sistema operativo, sino que se basa en archivos de configuración XML y clases Java para la realización de las distintas tareas, siendo idónea como solución multi-plataforma. Esta hecha en Java

Ejemplo Ant: Hello World En un archivo build.xml se definen tres objetivos - clean, compile y jar, cada uno de los cuales tiene una descripción asociada y las dependencias entre acciones para lograrlo El archivo se ejecuta con una línea de comandos invocada con el ejecutable de Ant y una serie de parametros opcionales para ajustar la compilación según lo deseado (por ejemplo, solo limpiar, o solo compilar, etc.)

Ejemplo Ant: Archivo build.xml

Caso de Estudio: Maven Es una herramienta software para la gestión de proyectos Java de la Apache Software Foundation. La versión 1 se basá en un fichero de configuración en XML (project.xml) y una serie de plugins, Esta herramienta permite: Compilar el proyecto Java Ejecutar los tests unitarios Generar paquetes (jars, wars, ears o distribuciones en zip) Generar reportes de desarrollo.

Caso de Estudio: Maven (2) La versión 2 usa también un fichero de configuración en XML llamado pom.xml. Su funcionalidad es parecida a Apache Ant pero con la diferencia que trata de forma automática las dependencias del proyecto. Una de las más importantes características es su actualización en línea mediante servidores de repositorios. Maven es capaz de descargar nuevas actualizaciones de las bibliotecas de las que depende el proyecto y de igual manera subir una nueva distribución a un repositorio de versiones, dejandola al acceso de todos los usuarios.