2. Presentación (un poco personal)
● Carlos Camacho.
– Profesor por vocación.
– Pertenezco al lado oscuro de la fuerza (Dark
Side).
– Aldea de la Hoja (Konoha)
– Evangelista de Java.
– Apasionado de Linux.
– Nacido en la era Nintendo. Amante de los RPG
(Chrono Trigger).
– Rock, Merengue, Bachata, Balada, Típico, Salsa,
Son, Dembow, Reggaeton (Pirata)
3. Presentación (un poco más serio)
● Carlos Camacho.
– Ingeniero Telemático.
– Magíster Tecnología Educativa.
– Profesor Departamento de Sistema, PUCMM.
– Más de 6 años de experiencia desarrollo de
sistemas en tecnología Java (JSE y JEE).
– 3 años de implementación en sistemas basados
en Grails.
– Fundación Código Libre Santiago - Miembro
Fundador.
– Presidente AvatharTech.
4. Presentación (un poco más serio)
● Algunas Empresas:
– Cementos Cibao.
– Edenorte.
– Reefer Services.
– Marítima Dominicana.
– StoneWood.
– Geocom.
– PyC Servicios
– NewSoft.
– NewtonSoft
6. Objetivos
● Inicio de charlas técnicas y actividades.
● Introducción Desarrollo Ágil de Sistemas.
● Introducción Grails.
● Demostración de funcionalidades en Grails.
7. ¿Charlas Técnicas?
● Crear un programa de actividades para
mostrar tecnologías alternativas y
emergentes.
– Departamento de Sistema.
– Comité de Estudiantes.
● Útiles o Necesarias en el ámbito laboral.
● Investigación en el área académica
9. ¿Desarrollo Ágil?
● El termino “Ágil” nace en el 2001, aplicado en en
desarrollo de software. Creado por el The Agile
Alliance.
● Fue creado manifiesto ágil:
– Al Individuo y las interacciones sobre el proceso y
las herramientas.
– Software funcional sobre buena documentación.
– Colaboración al cliente sobre un contrato.
– Responder a los cambios sobre un plan rígido.
Fuente: http://noqualityinside.com.ar/nqi/nqifiles/XP_Agil.pdf
10. ¿Cómo Trabaja el Desarrollo Ágil?
1
Requerimiento
Evaluación Análisis
Proceso
Iterativo Y
4 Acompañado 2
de los
Actores
Pruebas Diseño
Codificación
3
11. Algunas Metodologías
● Indican la forma y proceso para manejar un proyecto
ágil:
– eXtreme Programming (XP).
– SCRUM.
– Feature-driven development (FDD).
13. Framework Ágil
● Es un marco de trabajo (framework) que implementa
conceptos, buenas prácticas, patrones entre otros; con el
objetivo de resolver un problema.
● Ágil, cuando se adapta al desarrollo teniendo en cuenta
la metodología ágil y cada una de sus fases.
● Diseña para la alta productividad.
Fuente: http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf
15. Características del Framework
● Corre sobre una maquina virtual de Java. Integración completa con Java.
● Implementa la pila completa (Full-stack) Java EE (Java Platform,
Enterprise Edition).
● Basado en el lenguaje dinámico (Groovy) y tecnología Java (Spring y
Hibernate).
● Proporciona:
– Desarrollo orientado a pruebas.
– Incluye servidor web, base de datos, gestión dependencia y recarga
automática.
– Gran biblioteca de plugins
● Filosofía:
– Convención sobre Configuración (CoC, siglas en Ingles).
– No lo repitas (DRY, Don't Repeat Yourself).
● Inspirado en frameworks como Ruby on Rails y Django
17. ¿Por qué Groovy?
● Lenguaje dinámico diseñado para la JVM.
● Su objetivo es ser muy similar a la sintaxis Java
(Pero con esteroides).
● Mucho más expresivo que Java.
● Ventajas:
– Menos lineas de código
– Expresividad.
– Flexibilidad.
– Aumento de la productividad.
● Groovy = Java
18. ¿Productividad?
Clase Java – Contador Palabras
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class ContadorPalabras {
public static void main(String[] args) throws IOException {
System.out.println("Contador Palabras en Java");
int chars = 0, lines = 0, words = 0;
String filename = "/home/vacax/Documentos/PUCMM/Charlas/contador.txt";
BufferedReader r = new BufferedReader(new FileReader(filename));
String it;
while ((it = r.readLine()) != null) {
chars += it.length() + 1;
words += new StringTokenizer(it).countTokens();
lines++;
}
System.out.println("t Lineas: " + lines + "t Palabras: " + words + "t Caracteres: " + chars + "t
Archivo: " + filename);
}
}
19. ¿Productividad?
Groovy – Contador Palabras
println "Contador de palabras en Groovy"
filename = "/home/vacax/Documentos/PUCMM/Charlas/contador.txt";
chars=0; lines=0; words=0;
new File(filename).eachLine {
chars += it.length() + 1
words += it.tokenize().size();
lines++;
}
//imprimiendo.
println "t Lineas: ${lines} t Palabras: ${words} t Caracteres: ${chars} t Archivo: ${filename}"
Menos linea de código, más expresivo y flexible.
21. ¿De qué se trata?
● Su objetivo:
– Incrementar la productividad.
● ¿Cómo lo hace?
– Toma las decisiones repetitivas para el
programador simplificando el proceso.
– Define una criterio de como hacer / definir las
cosas (Convención).
● ¿Es una camisa de fuerza?
– No. Cuando se necesita otro comportamiento se
debe Configurar.
23. Ejemplo – Convención
package borramepruebamaven
class HolaMundoController { El identificador de Controller indica su acción
def index() { Petición asociada a un método
render("Hola Mundo desde Grails") Salida tipo Texto
}
}
31. Flujo de peticiones
URL
Mapeo Controlador
Vista
Dominios
Servicios
Usuario
Interacción otros componentes
32. Clases de Dominio
● Representan las clases directamente conectada con
algún motor de persistencia. (Mysql, Postgresql,
SqlServer, Oracle, Db2, entre otros)
● Representa el modelo dentro del patrón MVC.
33. Controladores
● Representan las clases encargada de procesar las
peticiones de los clientes.
● Representa el controlador dentro del patrón MVC.
34. Vista
● Representa el mecanismo de interfaz para salida y
entrada de los clientes.
● Asociación directa con el Controlador.
● Indica la vista dentro del MVC.
35. Servicios
● Artefacto para manejar las reglas de negocio.
● Gestionas la transacciones entre el controlador y las
clases de dominios.
36. Taglibs
● Permite encapsular componentes con el objetivo de
ser reutilizado.
● Uso simplificado contrario a otras tecnologías.
37. Test
● Soporta pruebas unitarias y de integración.
● Las pruebas unitarias son componentes atómicos,
buscan no depender de otras partes.
38. Plugins
● Permite incluir funcionalidades realizadas por
terceros a nuestro proyecto.
● Repositorio común para su alojamiento
(http://grails.org/plugins/).
● Contamos con más de 700 plugins:
– Seguridad
– Email
– NoSql
39. Configuración
● Encargado de configurar todos los parámetros de la
aplicación:
– Base de datos.
– Mapeo URL.
– Configuración.
– Gestión de dependencia (Maven, Gradle)