Clase 8 Reflexión e IC.

Slides:



Advertisements
Presentaciones similares
Clase 09.  Garantizar la calidad de software  La prueba nunca termina, del IS translada se translada al usuario  Las casas de software invierte del.
Advertisements

Conjunto de recursos necesarios para manipular la información: los ordenadores, los programas informáticos y las redes necesarias para convertirla, almacenarla,
San Juan Bautista Tuxtepec, Oaxaca a 01 de Septiembre de 2016 INSTITUTO TECNOLÓGICO de Tuxtepec PROGRAMACION EN AMBIENTE CLIENTE-SERVIDOR CORBA PRESENTA:
¿Qué es y cómo se clasifica?. El software es un conjunto de programas y aplicaciones que forman el sistema informático (datos y programas de la computadora),
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Pruebas de Funcionalidad de Software: Caja Negra y Caja Blanca Curso: Diseño de Sistemas 9no. Semestre.
Organizaciones involucradas: El centro de cálculo noruego. Crea lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en 1967.
Nombre José Francisco Luna Jurado Matricula Asignatura
Herencia Multiple en Java
Iniciación a Android Dia 1: Instalación Android Studio - 1h
Ingeniería de Software: Metodologías
Ingeniero en Computación José Alfredo Cobián Campos
Evolución de paradigmas y lenguajes de Programación
Agustín J. González Programación de Sistemas: ELO-330
LENGUAJE DE PROGRAMACIÓN Y SOFTWARE PROPIETARIO
Hardware Software Sistema Informática Computadora Computación Datos.
Lenguajes y representación tecnica
Universo de información
Ingeniero en Computación José Alfredo Cobián Campos
Oscar Martin Tirado Ochoa
PRUEBA DIAGNÓSTICA GRADO SEXTO TECNOLOGÍA E INFORMÁTICA 1
Ingeniería de Software Somerville
UNIVERSIDAD PEDAGÓGICA NACIONAL FRANCISCO MORAZÁN
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Tema 3. Lenguaje unificado de modelado UML
Tecnología de la Información Software
Tecnología de la Información Profesora Ariana Rosenthal Software
HERRAMIENTAS BÁSICAS PARA ESTUDIO VIRTUAL
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
Prof. Ofelia Verónica Méndez Lemus Prof. Erika C. Calderón García
Uso de conocimientos técnicos y las TIC para la información
QUE ES EL SOFTWARE Es un conjunto de programas de computo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones.
INTRODUCCIÓN A JAVA.
Republica Bolivariana De Venezuela Ministerio Del Poder Popular Para la Educación U.E.C Juan XXIII Fe y Alegría Docente : Egilde Márquez Infografía Integrantes:
CONCEPTOS PRELIMINARES (Cont)
Faber Orozco PROGRAMACIÓN DE DISPOSITIVOS MÓVILES
Introducción al lenguaje de programación. Introducción  Los lenguajes de programación son aplicaciones específicas que han sido pensadas y diseñadas.
Modelo de interacción de usuario.  El Desarrollo basado en modelos de la interfaz de usuario, en inglés Model-based User Interface Development (MB-UID),
TIC TECNOLOGIAS DE LA INFORMACION Y LA COMUNICACION
LENGUAJES DE SIMULACIÓN Y SIMULADORES DE
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
Conceptos básicos de.NET Explorar el entorno de desarrollo Crear un proyecto Visual Basic.NET Use Visual Studio.NET Acceso a datos Depurar e implantar.
Universidad Nacional de Colombia - Leguajes de Programación
00:46 1 El software educativo es definido como un conjunto de programas, documentos, procedimientos, y rutinas asociados con la operación de un sistema.
INFORMATICA 1.- UTILIDAD DE LA COMPUTADORA EN EL MUNDO.
Introducción al Proceso de Desarrollo de Software Patricio Letelier Departamento de Sistemas Informáticos y Computación Universidad.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
FUDAMENTOS BÀSICOS computación
Fundamentos de la Programación I
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
PROGRAMACIÓN (2).
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
PROYECTO DE GRADUACIÓN
“Conceptos Básicos de Java”
Nuestros canales de comunicación Gestión de la Calidad del Software Modelos y Estándares de Calidad en el Software.
METODOLOGIA AGIL XP LIC. ROXANA LAUREL R.. INTRODUCCION  Proceso : conjunto de actividades ordenadas para lograr una serie de objetivos  Proceso Pesado.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
Unidad 2: Programación 2. Programación.
Ingeniería de Sistemas. Programación II Python ¿Qué es Python? Python es un lenguaje de programación creado por Guido Van Rossum a principios de los.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
PROYECTO DE GRADUACIÓN
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
Ingeniería de Software: Metodologías
Es un ordenador de software que puede ejecutar un sistema operativo por el mismo, este tipo de sistemas operativos, presentan una interface a cada proceso.
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
Núcleo Lic. Gonzalo Pastor.
PROGRAMACIÓN BÁSICA CONCEPTOS BÁSICOS Software. TEMAS:  Software y sus funciones  Tipos de Software  Software de Sistemas  Software de Aplicación.
PROYECTO DE GRADUACIÓN
Estructura de los Sistemas Operativos
Tema 1 Introducción a la programación (Lenguaje java). 1.1 Conceptos básicos.
Transcripción de la presentación:

Clase 8 Reflexión e IC

Clase 8 – Parte I Reflexión

8.1. Reflexión 8.1.1. Concepto La reflexión es la capacidad que tiene un programa para observar e incluso modificar su estructura de alto nivel.

8.1. Reflexión 8.1.1. Concepto Es la habilidad de un código fuente para examinar y modificar su estructura, específicamente los valores, metadata, propiedades y funciones del programa en tiempo de ejecución.

8.1. Reflexión 8.1.1. Concepto La reflexión es una actividad computacional que razona sobre su propia computación.

8.1. Reflexión 8.1.1. Concepto Normalmente la reflexión es dinámica o en tiempo de ejecución, aunque algunos lenguajes de programación permiten reflexión estática o en tiempo de compilación.

8.1. Reflexión 8.1.1. Concepto Es más común en lenguajes de programación de alto nivel ejecutándose sobre una máquina virtual, como Smalltalk o Java, y menos común en lenguajes como C.

8.1. Reflexión 8.1.1. Concepto Cuando el código fuente de un programa se compila, normalmente se pierde la información sobre la estructura del programa al generarse el código de bajo nivel. Pero si permite reflexión, se guarda la estructura como metadatos en el código generado.

8.1. Reflexión 8.1.2. Historia Las primeras computadoras se programaban en sus lenguajes ensamblador o assembler nativos, que eran inherentemente reflexivos dado que esas arquitecturas originales podían ser programadas definiendo instrucciones como datos y usando código auto-modificable.

8.1. Reflexión 8.1.2. Historia Cuando la programación se fue trasladando a lenguajes de alto nivel, esta capacidad reflexiva natural desapareció y no regresó hasta que aparecieron los lenguajes de programación con reflexión integrada en sus sistemas.

8.1. Reflexión 8.1.2. Historia La noción de reflexión computacional en los lenguajes de programación fue introducida por Brian Cantwell Smith en la presentación de su tesis doctoral en 1982.

8.1. Reflexión 8.1.3. Implementación Un lenguaje con reflexión proporciona un conjunto de funcionalidades disponibles en tiempo de ejecución que serían muy difícilmente realizables en un lenguaje de más bajo nivel.

8.1. Reflexión 8.1.3. Implementación Funcionalidades típicas: -Descubrir y modificar construcciones de código fuente (bloques, clases, métodos, protocolos); -Convertir una cadena que corresponde al nombre simbólico de una clase o función en una referencia o invocación a esa clase o función; -Evaluar una cadena como si fuera una sentencia de código fuente.

8.1. Reflexión 8.1.3. Implementación En lenguajes orientados a objetos como Java, la reflexión permite la inspección de clases, interfaces, campos y métodos en tiempo de ejecución sin conocer sus nombres en tiempo de compilación, entre otras funcionalidades.

8.1. Reflexión 8.1.3. Implementación La reflexión también se puede usar para adaptar dinámicamente un programa a diferentes situaciones.

8.1. Reflexión 8.1.3. Implementación Por ejemplo, en una aplicación que usa las clases A y B para realizar operaciones similares, sin reflexión el llamado a sus métodos tendría que ser hardcodeado. Pero con reflexión, los llamados los métodos se podrían realizar sin hardcodear sus nombres.

8.1. Reflexión 8.1.4. Ejemplos Los siguientes fragmentos de código crean una instancia a de la clase A, e invocan su método “hola”.

8.1. Reflexión 8.1.4. Ejemplos PHP // Sin reflexión $a = new A(); $a->hola(); // Con reflexión $reflector = new ReflectionClass(‘A'); $a = $reflector->newInstance(); $hola = $reflector->getMethod('hola'); $hola->invoke($a);

8.1. Reflexión 8.1.4. Ejemplos Ruby # Sin reflexión obj = A.new obj.hola # Con reflexión class_name = “A” method = :hola obj = Kernel.const_get(class_name).new obj.send method

8.1. Reflexión 8.1.4. Ejemplos Python # Sin reflexión obj = A() obj.hola() # Con reflexión class_name = “A” method = “hola” obj = globals()[class_name]() getattr(obj, method)()

8.1. Reflexión 8.1.4. Ejemplos Java // Sin reflexión A a = new A(); a.hola(); // Con reflexión Object a = A.class.newInstance(); Method m = a.getClass().getDeclaredMethod (“hola”, new Class<?>[0]); m.invoke(a)

IC (Integración Continua) Clase 8 – Parte II IC (Integración Continua)

8.2. Integración continua 8.2.1. Concepto La integración continua es un modelo informático que consiste en hacer la compilación y ejecución de pruebas de todo un proyecto de manera automática lo más a menudo posible, para poder detectar fallos cuanto antes.

8.2. Integración continua 8.2.1. Concepto Implica la fusión, varias veces al día, de todas las copias de los trabajos de los desarrolladores con una línea principal compartida.

8.2. Integración continua 8.2.1. Concepto

8.2. Integración continua 8.2.1. Concepto El proceso consiste normalmente en descargar cada X cantidad de horas el código fuente desde el control de versiones, compilarlo, ejecutar las pruebas y generar informes.

8.2. Integración continua 8.2.1. Concepto Se usan aplicaciones como Anthill, Bamboo, Continuum, Hudson o Jenkins para proyectos Java, y CruiseControl.Net o Team Foundation Build para .Net, que se encargan de controlar las ejecuciones y se apoyan en herramientas como Ant o Maven (para Java) y Nant o MSBUILD (para .Net) que se encargan de las compilaciones, pruebas e informes.

8.2. Integración continua 8.2.1. Concepto La integración continua está estrechamente asociada con el desarrollo ágil de software, como la metodología de programación extrema.

8.2. Integración continua 8.2.2. Historia La integración continua, conocida como CI por sus siglas en inglés, fue nombrada y propuesta por Grady Booch en 1991.

8.2. Integración continua 8.2.2. Historia En 1997 fue incorporada por Kent Beck a su metodología XP. Beck publicó un trabajo sobre integración continua en 1998, remarcando la importancia de la comunicación cara a cara por sobre el soporte tecnológico.

8.2. Integración continua 8.2.3. Ventajas Se pueden detectar y solucionar los problemas de integración de manera continua, evitando el tradicional caos que aparece cuando se acerca la fecha de entrega.

8.2. Integración continua 8.2.3. Ventajas Permite disponer constantemente de una versión para pruebas, demos o lanzamientos anticipados. Con IC se pueden monitorear las métricas de calidad del proyecto prácticamente en tiempo real.

Bibliografía -Booch, G. (1991) "Object Oriented Design: With Applications". -Flowers, J. (2006) "A Recipe for Build Maintainability and Reusability". -Forman I. (2005) "Java Reflection in Action“. -Richardson, J. (2006) "Continuous Integration: The Cornerstone of a Great Shop".