SlideShare una empresa de Scribd logo
1 de 91
{ El estado del Arte }
“conociendo nuestro FUA interior”.
José Bovet Derpich
08/08/2011
Agenda
 Estado del arte
 De las buenas prácticas
El estado del arte
 Que hay en el día a día.
 ¿qué, y con que lo hacemos?
 Tecnologías que usamos.
 IDES
 Servidores y contenedores webs
 No reinventamos la rueda
 Nuestra piedra angular
 Spring e IOC
 Nuestras Aplicaciones
 Componentes en FO - BO
Nuestro día a día
¿qué hacemos?
 Programamos
 Pruebas
 Análisis de requerimientos
 Modelado
 Diseño
 Administración de Proyectos
 Gestión del cambio
 Comprar compulsivamente cupones, hacer free shipping en
dealxtream.com, entre otras.
Y como…
 Ocupando herramientas adecuadas
 No reinventando la rueda
 Reutilizando
 Arquitecturas basadas en
componentes
 Implementando patrones de diseño
e integración.
 Testeando
Tecnologías que usamos.
 Lenguajes
 IDES
 Servidores de aplicaciones y Contenedores
Web
S.O
 No reinventamos la rueda.
CXFJAX-WS
ORM
WebServices
JavaScript
Vista
Test
Tareas y Builders
Utilitarios, loggers, etc
SCM
SearchEngine
 Nuestra piedra angular
pero… ¿que es Spring?
 “Spring es una tecnología dedicada para permitir
construir aplicaciones usando POJO’s…” Rod
Johnson
 Spring es un framework que resuelve mucho
problemas comunes en el desarrollo de
aplicaciones en Java(SDK,EE)
pero…¿porqué Spring?
 Porque reduce la complejidad de desarrollo JEE
 Simplificar sin sacrificar poder.
 Facilitar mejores practicas, que de otra manera son
difíciles seguir.
 No esta enfocado a una parte especifica de una
aplicación.
 Desarrollar aplicaciones usando POJO’s
 Impacto mínimo. Principio de la filosofía de Spring.
 Porque nace de la experiencia práctica de muchos
desarrolladores en todo el mundo
El poder de POJO
 Spring Framework y sus sabores
 Spring Security (ex
ACEGI)
 Spring AOP
 Spring MVC
 Spring Web Flow
 Spring JDBC
 Spring Transaction
 Spring Scheduling
 Spring WebServices
 Spring Test
Integramos Spring con…
 ORM: Hibernate, JPA, TopLink, JDO, OJB,Ibatis.
 DAO: Manejo de transacciones a través de
 AOP + IBATIS
 JEE: JMX, JMS, JCA, Remoting, EJBs, Email
 WEB: Spring Web
MVC, Struts,Tapestry, JSF, JSP, RIA, Velocity, Fr
eeMaker, ExtJs, Jasper Report, Portlet MVC
 AOP: AspectJ
Donde lo usamos…
En todos los escenarios…
Con otros frameworks
En remoting
Nuestras Aplicaciones
 Front Oficce
 Back Office
Tecnologías usadas
Nombre Versión usada Última versión
Java 1.5 – 1.6 7(Aún inestable)
Tomcat 5.5 – 6.0 7.0.20
Spring/MVC/WebFlow/T
est
2.0 – 2.5 3.0.5
Spring Tool Suite 2.3 -2.5 2.7.1
Spring Security 2.0.3 3.0.5
IBATIS 2.3.4.7 Ya no
existe
3.0.6
Mybatis
Axis 1.4 1.5.5
Velocity 1.6.4 - 1.5 1.7
JUnit 4.4 4.9
JQuery 1.4 – 1.5 1.6.2
ExtJs 3.2.0 3.4 / 4.0 Alpha
Alternativas
 Spring:
 Ibatis:
 Axis:
 Junit: TestNG Jtiger EasyMock Mockito
 STS:
 JQuery-Extjs: GWT - Prototype – Dojo -
Script.aculo.us
JDO JPA TopLink QuickDB DataNucleus
CXFJAX-WS spring
ws
REST
Malas Prácticas
“Todo en uno”
No existen librerías
especificas
No se tiene información del
componente.
¿Qué hace cada jar?
“La redundancia, a veces, no es
buena…”
Duplicidad en los componentes
Saludos
java.lang.NoClassDefFoundError
Cual es la que vale?
JUnit en el deploy?
“El orden de mi
desorden…”
Archivos de configuración por
todos lados
No existe agrupación por
componente o funcionalidad
Mezclar peras con manzanas.
!Solo necesito modificar un
Bean!
“Abuso de las librerías.”
Desconozco lo que ya esta
hecho.
Un caos!
“No tenemos un estándar”
“Extiendo y también uso
anotaciones para mis
test”
“No tenemos un estándar”
“¿Se que clases necesito ocupar?”
• Controller
– AbstractController
• MultiActionController
• BaseCommandController
– AbstractCommandController
– AbstractFormController
» SimpleFormController
» AbstractWizardFormControll
er
– ThrowawayController
– ParameterizableViewController
De las buenas prácticas
“Producer good software is hard”
Automatizar pruebas
 Probar funcionalidades del software durante el
desarrollo.
 Detección de errores en etapas tempranas y no al
final del desarrollo.
 Obtener métricas, informes y estadísticas.
 Imponen restricciones de diseño del software para
que sea comprobable.
 Evita el acoplamiento de diferentes componentes.
 Mediantes herramientas y técnicas como CI.
Integración Continua
“Practica de desarrollo software donde los miembros de un
equipo integran su trabajo frecuentemente, por lo menos
diariamente y llegando a múltiples integraciones al día.
Cada integración se comprueba por una construcción
automatizada para detectar errores de integración lo antes
posible. Muchos equipos encuentran esta aproximación como
una forma de reducir significativamente problemas de
integración y que permite desarrollar cohesivamente software de
forma más rápida.”
Martin Fowler
”
Enfoque de la CI
 Automatizar tareas de building
 Generar informes y métricas de tests
 Proveer información útil para realimentar el proceso de
desarrollo (feedback)
 Identificar problemas o errores en la integración del código
 Hacer el proceso de integración transparente al equipo de
desarrollo
 Establecer uniformidad en la programación del equipo
 Mantener actualizado y centralizado el código de
desarrollo
Una mirada a CI
Herramientas
Control de versiones
ventajas del control de
versiones
 Proveer entornos distribuidos y/o centralizados a los
desarrolladores.
 Tener un control exacto sobre cual es la última versión del
código, y quién y cuando la ha cargado.
 Poder comparar versiones, viendo cuales han sido los
cambios realizados.
 Regresar atrás (a una versión anterior) cuando lo que
hemos desarrollado no nos ha dado los resultados
esperados.
 Crear distintas ramas del proyecto. Si llegado a un punto
se hace necesario hacer dos aplicaciones con distintas
funcionalidades, pero con cosas en común, se pueden
separar en dos ramas.
Herramientas Control
Versiones
 Centralizados
 Distribuidos
Administración del Proyecto
 definir un ciclo de vida básico del proyecto sobre
el que se pueden ir ejecutando ciertas tareas
asociadas.
 Facilitar la gestión de las dependencias a partir
de repositorios remotos de librerías, incluyendo
las dependencias transitivas.
 Permite la generación de todo un site de
documentación del proyecto (javadoc, informes
de calidad, etc.)
 Realiza la generación y publicación de releases.
Herramientas
Pero aún faltan
 Issue tracker
 Virtualización
 Testing Tools
Algunas mas…
 Reutilizar
 Automatizar la compilación e
integración
 Mantener un repositorio de
código
 Hacer tus propios tests
 Commits diarios
 Compilar rápida y ágilmente
 Testar en clon de
producción, desarrollo, QA, etc
.
 Resultados accesibles por
parte de todos
 Versionar los componentes.
Sobre las metodologías
Enfoques
 Existen variados…
 Cascada
 Basas en prototipos
 Incremental o evolutivo
 Espiral
 OO
 Cascada con sub-proyectos
 Entrega por etapas
Metodologías
 De los 90
 RAD
 OOP
 DSDM
 SCRUM
 RUP
 Desde hace 12 años
 XP
 EUP
 DDD
 TDD
 FDD
 BDD
Algo sobre metodologías
ágiles.
Agilismo
 Empezó por el manifiesto Agil en Febrero 2001
 Surge por la necesidad de mejores métodos
para construir software
 La construcción de software DEBE considerar
diversos tipos de pruebas
Principios
 Individuals and interactions over processes and
tools
 Working software over comprehensive
documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan
Métodos Agiles
 Lean
 SCRUM
 Crystal Clear
 Extreme Programming
Enfoque ágil...
 Software que funciona-Satisfacción del cliente
 Adaptar el proceso continuamente
 Comunicación cara a cara
 A veces dificil
 Excelencia técnica
 Simplicidad
 Auto organización
Lean Software
Development
Eliminar desperdicio
 Burocracia
 Comunicación Interna lenta
 Requerimientos no definidos o nebulosos
 Código innecesario
Extreme Programming
(XP)
 Conjunto de practicas sencillas
 Es difícil su implementación si no hay
compromiso
 Su objetivo es mejorar la calidad del software y
responder a los cambios en los requerimientos
Practicas en XP-FeedBack
 Retroalimentación
 Programación en pares
 Juego de planeación
 Test Driven Development
 Esto es diseño mas que pruebas
Practicas en XP-Proceso
Continuo
 Procesos continuo
 Integración continua
 Refactoring
 ¿Rewrite?
 Liberaciones pequeñas
Practicas en XP-
Codificación
 Codificación
 Pruebas de unidad
 Optimizar el código al final
 No horas extra (40 horas a la semana debe ser
suficiente)
Practicas en XP-Pruebas
 Pruebas
 Pruebas de unidad para todo
 Pruebas de integración
 Deben funcionar todas las pruebas antes de liberar
 Si surge un error (bug), deben escribirse las pruebas para
replicarlo. Un bug es una prueba que olvidamos escribir
Pruebas de unidad
 Se prueban los componentes aislados
 Generalmente se usan Mocks o Stubs
 Se usan verificaciones “asserts” para probar
 Son confundidas con Pruebas de integración
 Pruebas de caja blanca
Pruebas de integración
 Sirven para probar los componentes
involucrados en un flujo
 Validan el trabajo de varios desarrolladores
 Pruebas de caja negra
 Pueden ser automatizados, simulan la
interacción con el usuario
Impacto de las pruebas
 El tener una buena batería de pruebas, nos
permite entre otras cosas:
 Validar nuevos requirimientos
 Medir el impacto de los refactorings
 Documenta el proyecto
 Permite mejorar el diseño
Faltan mas pruebas¡¡
 Pruebas de Stress
 Pruebas de Performance
 Pruebas de Integración de Sistema
 Pruebas de Aceptacion
 Pruebas de Sistema
 Pruebas no funcionales
 Pruebas Funcionales
Notificación visible
Visual management
Atlasian
https://jira.springsource.org/secure/VersionBoard
.jspa
https://jira.springsource.org/browse/SPR
https://jira.springsource.org/secure/IssueNavigat
or.jspa?
I+D
El presente de Java
 Lenguaje != plataforma.
 Lenguaje=SDK
 Plataforma = JVM
JVM como plataforma
 Groovy
 Scala
 Jruby
 Jython
 Clojure
Mediante ByteCode
 Lenguaje interpretado
 Multiplataforma
 Orientado a Objetos
 Sintaxis clara
 Funciones y librerias
 Gran comunidad detrás
 Nace a finales de 1997
 Python en Java
 Identyico a python 2.2
 Al igual que Python, Jython es dinámico
 Mas o menos maduro para el funcionamiento en
JVM
Ejemplo Jython
Ejecución
 Lenguaje de proposito general, dinámico, orientado a
objetos
 Es funcional, imperativo y reflectivo
 Tipado dinámico
 Multiplataforma
 Introspección, metaprogramación
 Soporta alteración de objetos en tiempo de
ejecución
 Venia por Java
 10 años de desarrollo
 Compatible con ruby 1.8.7
 Puede correr de manera interpretada.
 Implementación 100% Java
 Al igual que jython, se han tenido que hacer
arreglos para que corra en la JVM
Ejemplo JRuby
 Empieza su desarrollo 2001
 Es orientado a objetos y funcional
 Significa “Scalable Language”
 El compilador genera byte code
 Diseñado para vivir en la JVM y otros entornos
como .NET
 Pensado para concurrencia.
Ejemplo Scala
Alrededor de Scala
 LIFT, framework web para hacer sistemas de alta
concurrencia.
 AKKA, plataforma para construir aplicaciones
orientadas a eventos, escalables, y tolerantes a
fallos.
 Aparece en 2003.
 Groovy es un lenguaje dinámico, orientado a objetos, muy
íntimamente ligado a Java.
 Diseñado para “robarse” cosas buenas de Python y Ruby
 EL 99% del código Java existente puede ser compilado mediante
groovy.
 El 100% del código Groovy es convertido en bytecode Java.
 Gran comunidad detrás
 Varios proyectos alrededor
 Soporte de herrmientas Eclipse, NetBeans, IntelliJ
¡Azúcar sintáctica!
 Listas
def list = [77,'ABC',new Date(), x=15, 'abcdefg'[ 1, 3, 5, 6 ] ]
[77, ABC, Thu Aug 11 12:47:09 CLT 2011, 15, bdfg]
 Mapas
def map= ['id':'FX-11', 'name':’Pepe', 'no':1234, 99:'Y']
 Rangos
def toUp = 5..99
def toDown = 100..0
 Assignation multiple:
def (x,y) = [45,-35]
 Return Opcional
Herramientas sobre Groovy
 Testing
 Spock
 GMock
 Construcción
 Gradle
 Gant
 Framework
 Grails = Web
 Griffon = Swing
 Gaelyk = Web
 ¿Qué es Grails?
 Plataforma para desarrollo agil en web
 Framework mvc full-stack
 Convención sobre configuración.
 Corre y se integra con la JVM
 Desarrollo de aplicaciones con groovy y java
 Orientado a objeto
 Dinámico
 Sintaxis Familiar
 Opensource
Grails: La plataforma
 Ventajas y Caracteristicas
 “The real” ORM, con cero configuración
 Dependency Injection
 Manejador de transacciones
 Internacionalización
 Web Flow
 Tag libraries
 Caching
 Layouts
 Ajax
 Servidor no necesita reiniciar(most cases)
 Desarrollo de pruebas en caliente
 Unit Testing
 Integration Testing
 Functional Testing
DEMO
cvs: Investigacion/JFinder
Resumen
 Lo que nos ha funcionado…
 Lo que nos gusta usar para desarrollar …
 Lo que nos ha hecho mas productivos…
 Lo que nos puede dar control sobre el proceso de
desarrollo…
 Lo que nos puede permitir visualizar el desarrollo…
 Lo que nos gustaría implementar…
 Lo que necesitamos para mejorar….
Gracias!

Más contenido relacionado

La actualidad más candente

Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
Metodología basada en componentes
Metodología basada en componentes Metodología basada en componentes
Metodología basada en componentes Anibal Ulibarri
 
Lineal Secuencial
Lineal SecuencialLineal Secuencial
Lineal Secuencialtoryneutral
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 
Modelo de Desarrollo. Modelo por Etapas
Modelo de Desarrollo. Modelo por EtapasModelo de Desarrollo. Modelo por Etapas
Modelo de Desarrollo. Modelo por Etapasyeimy26
 
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...Edgardo Crovetto
 
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. Cristhian Martinez
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareysik granja
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de SoftwareJiuseppe Flores
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicionEvelin Oña
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentestoryneutral
 
Herramientas case y usos de prototipos para el
Herramientas case y usos de prototipos para elHerramientas case y usos de prototipos para el
Herramientas case y usos de prototipos para elaestradamsk
 
Importancia de las herramientas CASE en el desarrollo de software
Importancia de las herramientas CASE en el desarrollo de softwareImportancia de las herramientas CASE en el desarrollo de software
Importancia de las herramientas CASE en el desarrollo de softwareGabriel Cobeña
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascadaKamisutra
 

La actualidad más candente (20)

Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Metodología basada en componentes
Metodología basada en componentes Metodología basada en componentes
Metodología basada en componentes
 
Lineal Secuencial
Lineal SecuencialLineal Secuencial
Lineal Secuencial
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Modelo de Desarrollo. Modelo por Etapas
Modelo de Desarrollo. Modelo por EtapasModelo de Desarrollo. Modelo por Etapas
Modelo de Desarrollo. Modelo por Etapas
 
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
Creación de Frameworks para Automation: Las básicas (meet up automation UY Ag...
 
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de Software
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
 
Metodologia Incremental
Metodologia IncrementalMetodologia Incremental
Metodologia Incremental
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentes
 
Herramientas case y usos de prototipos para el
Herramientas case y usos de prototipos para elHerramientas case y usos de prototipos para el
Herramientas case y usos de prototipos para el
 
Importancia de las herramientas CASE en el desarrollo de software
Importancia de las herramientas CASE en el desarrollo de softwareImportancia de las herramientas CASE en el desarrollo de software
Importancia de las herramientas CASE en el desarrollo de software
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Inf 162
Inf 162Inf 162
Inf 162
 

Destacado (7)

GitHub y el software libre
GitHub y el software libreGitHub y el software libre
GitHub y el software libre
 
Apache Servicemix
Apache ServicemixApache Servicemix
Apache Servicemix
 
POO1501 - Composición java
POO1501 - Composición javaPOO1501 - Composición java
POO1501 - Composición java
 
POO1501 - Composición java
POO1501 - Composición javaPOO1501 - Composición java
POO1501 - Composición java
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Diseño de la interfaz de usuario
Diseño de la interfaz de usuarioDiseño de la interfaz de usuario
Diseño de la interfaz de usuario
 

Similar a Conociendo Nuestro Fua interno

12 MicroSoft SFIC 2009
12 MicroSoft SFIC 200912 MicroSoft SFIC 2009
12 MicroSoft SFIC 2009Pepe
 
TechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team SystemsTechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team Systemsfmmeson
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerErnesto Cardenas Cangahuala
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareJose Manuel Ortega Candel
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Gustavo Veliz
 
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...Agiles2009
 
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...adrianeidelman
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoTestingUy
 
Aspect Oriented Programming Middleware
Aspect Oriented Programming MiddlewareAspect Oriented Programming Middleware
Aspect Oriented Programming MiddlewareLenin Lozano
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumSoftware Guru
 
Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Foquita05
 

Similar a Conociendo Nuestro Fua interno (20)

12 MicroSoft SFIC 2009
12 MicroSoft SFIC 200912 MicroSoft SFIC 2009
12 MicroSoft SFIC 2009
 
TechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team SystemsTechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team Systems
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation Server
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos software
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
 
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...
Agiles 2009 - Integracion Continua: Dando los primeros pasos a traves de un e...
 
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...
Ágiles 2009 - Integración Continua: Dando los primeros pasos a través de un e...
 
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuoMeetup TestingUy 2019 - Plataforma de integración y testing continuo
Meetup TestingUy 2019 - Plataforma de integración y testing continuo
 
Ra.1..
Ra.1..Ra.1..
Ra.1..
 
DevOps on AZURE
DevOps on AZUREDevOps on AZURE
DevOps on AZURE
 
Una introducción a la Integración continua
Una introducción a la Integración continuaUna introducción a la Integración continua
Una introducción a la Integración continua
 
Spring
SpringSpring
Spring
 
Aspect Oriented Programming Middleware
Aspect Oriented Programming MiddlewareAspect Oriented Programming Middleware
Aspect Oriented Programming Middleware
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Novedades De Visual Studio 2010
Novedades De Visual Studio 2010
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Último (11)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Conociendo Nuestro Fua interno

  • 1. { El estado del Arte } “conociendo nuestro FUA interior”. José Bovet Derpich 08/08/2011
  • 2. Agenda  Estado del arte  De las buenas prácticas
  • 3. El estado del arte  Que hay en el día a día.  ¿qué, y con que lo hacemos?  Tecnologías que usamos.  IDES  Servidores y contenedores webs  No reinventamos la rueda  Nuestra piedra angular  Spring e IOC  Nuestras Aplicaciones  Componentes en FO - BO
  • 5. ¿qué hacemos?  Programamos  Pruebas  Análisis de requerimientos  Modelado  Diseño  Administración de Proyectos  Gestión del cambio  Comprar compulsivamente cupones, hacer free shipping en dealxtream.com, entre otras.
  • 6. Y como…  Ocupando herramientas adecuadas  No reinventando la rueda  Reutilizando  Arquitecturas basadas en componentes  Implementando patrones de diseño e integración.  Testeando
  • 9.  Servidores de aplicaciones y Contenedores Web
  • 10. S.O
  • 11.  No reinventamos la rueda. CXFJAX-WS ORM WebServices JavaScript Vista Test Tareas y Builders Utilitarios, loggers, etc SCM SearchEngine
  • 13. pero… ¿que es Spring?  “Spring es una tecnología dedicada para permitir construir aplicaciones usando POJO’s…” Rod Johnson  Spring es un framework que resuelve mucho problemas comunes en el desarrollo de aplicaciones en Java(SDK,EE)
  • 14. pero…¿porqué Spring?  Porque reduce la complejidad de desarrollo JEE  Simplificar sin sacrificar poder.  Facilitar mejores practicas, que de otra manera son difíciles seguir.  No esta enfocado a una parte especifica de una aplicación.  Desarrollar aplicaciones usando POJO’s  Impacto mínimo. Principio de la filosofía de Spring.  Porque nace de la experiencia práctica de muchos desarrolladores en todo el mundo
  • 15. El poder de POJO
  • 16.  Spring Framework y sus sabores  Spring Security (ex ACEGI)  Spring AOP  Spring MVC  Spring Web Flow  Spring JDBC  Spring Transaction  Spring Scheduling  Spring WebServices  Spring Test
  • 17. Integramos Spring con…  ORM: Hibernate, JPA, TopLink, JDO, OJB,Ibatis.  DAO: Manejo de transacciones a través de  AOP + IBATIS  JEE: JMX, JMS, JCA, Remoting, EJBs, Email  WEB: Spring Web MVC, Struts,Tapestry, JSF, JSP, RIA, Velocity, Fr eeMaker, ExtJs, Jasper Report, Portlet MVC  AOP: AspectJ
  • 19. En todos los escenarios…
  • 22. Nuestras Aplicaciones  Front Oficce  Back Office
  • 23. Tecnologías usadas Nombre Versión usada Última versión Java 1.5 – 1.6 7(Aún inestable) Tomcat 5.5 – 6.0 7.0.20 Spring/MVC/WebFlow/T est 2.0 – 2.5 3.0.5 Spring Tool Suite 2.3 -2.5 2.7.1 Spring Security 2.0.3 3.0.5 IBATIS 2.3.4.7 Ya no existe 3.0.6 Mybatis Axis 1.4 1.5.5 Velocity 1.6.4 - 1.5 1.7 JUnit 4.4 4.9 JQuery 1.4 – 1.5 1.6.2 ExtJs 3.2.0 3.4 / 4.0 Alpha
  • 24. Alternativas  Spring:  Ibatis:  Axis:  Junit: TestNG Jtiger EasyMock Mockito  STS:  JQuery-Extjs: GWT - Prototype – Dojo - Script.aculo.us JDO JPA TopLink QuickDB DataNucleus CXFJAX-WS spring ws REST
  • 26. “Todo en uno” No existen librerías especificas No se tiene información del componente. ¿Qué hace cada jar?
  • 27. “La redundancia, a veces, no es buena…” Duplicidad en los componentes Saludos java.lang.NoClassDefFoundError Cual es la que vale? JUnit en el deploy?
  • 28. “El orden de mi desorden…” Archivos de configuración por todos lados No existe agrupación por componente o funcionalidad Mezclar peras con manzanas. !Solo necesito modificar un Bean!
  • 29. “Abuso de las librerías.” Desconozco lo que ya esta hecho. Un caos!
  • 30. “No tenemos un estándar” “Extiendo y también uso anotaciones para mis test”
  • 31. “No tenemos un estándar” “¿Se que clases necesito ocupar?” • Controller – AbstractController • MultiActionController • BaseCommandController – AbstractCommandController – AbstractFormController » SimpleFormController » AbstractWizardFormControll er – ThrowawayController – ParameterizableViewController
  • 32. De las buenas prácticas “Producer good software is hard”
  • 33. Automatizar pruebas  Probar funcionalidades del software durante el desarrollo.  Detección de errores en etapas tempranas y no al final del desarrollo.  Obtener métricas, informes y estadísticas.  Imponen restricciones de diseño del software para que sea comprobable.  Evita el acoplamiento de diferentes componentes.  Mediantes herramientas y técnicas como CI.
  • 34. Integración Continua “Practica de desarrollo software donde los miembros de un equipo integran su trabajo frecuentemente, por lo menos diariamente y llegando a múltiples integraciones al día. Cada integración se comprueba por una construcción automatizada para detectar errores de integración lo antes posible. Muchos equipos encuentran esta aproximación como una forma de reducir significativamente problemas de integración y que permite desarrollar cohesivamente software de forma más rápida.” Martin Fowler ”
  • 35. Enfoque de la CI  Automatizar tareas de building  Generar informes y métricas de tests  Proveer información útil para realimentar el proceso de desarrollo (feedback)  Identificar problemas o errores en la integración del código  Hacer el proceso de integración transparente al equipo de desarrollo  Establecer uniformidad en la programación del equipo  Mantener actualizado y centralizado el código de desarrollo
  • 38.
  • 39.
  • 41. ventajas del control de versiones  Proveer entornos distribuidos y/o centralizados a los desarrolladores.  Tener un control exacto sobre cual es la última versión del código, y quién y cuando la ha cargado.  Poder comparar versiones, viendo cuales han sido los cambios realizados.  Regresar atrás (a una versión anterior) cuando lo que hemos desarrollado no nos ha dado los resultados esperados.  Crear distintas ramas del proyecto. Si llegado a un punto se hace necesario hacer dos aplicaciones con distintas funcionalidades, pero con cosas en común, se pueden separar en dos ramas.
  • 43. Administración del Proyecto  definir un ciclo de vida básico del proyecto sobre el que se pueden ir ejecutando ciertas tareas asociadas.  Facilitar la gestión de las dependencias a partir de repositorios remotos de librerías, incluyendo las dependencias transitivas.  Permite la generación de todo un site de documentación del proyecto (javadoc, informes de calidad, etc.)  Realiza la generación y publicación de releases.
  • 45. Pero aún faltan  Issue tracker  Virtualización  Testing Tools
  • 46. Algunas mas…  Reutilizar  Automatizar la compilación e integración  Mantener un repositorio de código  Hacer tus propios tests  Commits diarios  Compilar rápida y ágilmente  Testar en clon de producción, desarrollo, QA, etc .  Resultados accesibles por parte de todos  Versionar los componentes.
  • 48. Enfoques  Existen variados…  Cascada  Basas en prototipos  Incremental o evolutivo  Espiral  OO  Cascada con sub-proyectos  Entrega por etapas
  • 49. Metodologías  De los 90  RAD  OOP  DSDM  SCRUM  RUP  Desde hace 12 años  XP  EUP  DDD  TDD  FDD  BDD
  • 51. Agilismo  Empezó por el manifiesto Agil en Febrero 2001  Surge por la necesidad de mejores métodos para construir software  La construcción de software DEBE considerar diversos tipos de pruebas
  • 52. Principios  Individuals and interactions over processes and tools  Working software over comprehensive documentation  Customer collaboration over contract negotiation  Responding to change over following a plan
  • 53.
  • 54. Métodos Agiles  Lean  SCRUM  Crystal Clear  Extreme Programming
  • 55. Enfoque ágil...  Software que funciona-Satisfacción del cliente  Adaptar el proceso continuamente  Comunicación cara a cara  A veces dificil  Excelencia técnica  Simplicidad  Auto organización
  • 57. Eliminar desperdicio  Burocracia  Comunicación Interna lenta  Requerimientos no definidos o nebulosos  Código innecesario
  • 58. Extreme Programming (XP)  Conjunto de practicas sencillas  Es difícil su implementación si no hay compromiso  Su objetivo es mejorar la calidad del software y responder a los cambios en los requerimientos
  • 59. Practicas en XP-FeedBack  Retroalimentación  Programación en pares  Juego de planeación  Test Driven Development  Esto es diseño mas que pruebas
  • 60. Practicas en XP-Proceso Continuo  Procesos continuo  Integración continua  Refactoring  ¿Rewrite?  Liberaciones pequeñas
  • 61. Practicas en XP- Codificación  Codificación  Pruebas de unidad  Optimizar el código al final  No horas extra (40 horas a la semana debe ser suficiente)
  • 62. Practicas en XP-Pruebas  Pruebas  Pruebas de unidad para todo  Pruebas de integración  Deben funcionar todas las pruebas antes de liberar  Si surge un error (bug), deben escribirse las pruebas para replicarlo. Un bug es una prueba que olvidamos escribir
  • 63. Pruebas de unidad  Se prueban los componentes aislados  Generalmente se usan Mocks o Stubs  Se usan verificaciones “asserts” para probar  Son confundidas con Pruebas de integración  Pruebas de caja blanca
  • 64. Pruebas de integración  Sirven para probar los componentes involucrados en un flujo  Validan el trabajo de varios desarrolladores  Pruebas de caja negra  Pueden ser automatizados, simulan la interacción con el usuario
  • 65. Impacto de las pruebas  El tener una buena batería de pruebas, nos permite entre otras cosas:  Validar nuevos requirimientos  Medir el impacto de los refactorings  Documenta el proyecto  Permite mejorar el diseño
  • 66. Faltan mas pruebas¡¡  Pruebas de Stress  Pruebas de Performance  Pruebas de Integración de Sistema  Pruebas de Aceptacion  Pruebas de Sistema  Pruebas no funcionales  Pruebas Funcionales
  • 70. I+D
  • 71. El presente de Java  Lenguaje != plataforma.  Lenguaje=SDK  Plataforma = JVM
  • 72. JVM como plataforma  Groovy  Scala  Jruby  Jython  Clojure
  • 74.  Lenguaje interpretado  Multiplataforma  Orientado a Objetos  Sintaxis clara  Funciones y librerias  Gran comunidad detrás
  • 75.  Nace a finales de 1997  Python en Java  Identyico a python 2.2  Al igual que Python, Jython es dinámico  Mas o menos maduro para el funcionamiento en JVM
  • 77.  Lenguaje de proposito general, dinámico, orientado a objetos  Es funcional, imperativo y reflectivo  Tipado dinámico  Multiplataforma  Introspección, metaprogramación  Soporta alteración de objetos en tiempo de ejecución  Venia por Java
  • 78.  10 años de desarrollo  Compatible con ruby 1.8.7  Puede correr de manera interpretada.  Implementación 100% Java  Al igual que jython, se han tenido que hacer arreglos para que corra en la JVM
  • 80.  Empieza su desarrollo 2001  Es orientado a objetos y funcional  Significa “Scalable Language”  El compilador genera byte code  Diseñado para vivir en la JVM y otros entornos como .NET  Pensado para concurrencia.
  • 82. Alrededor de Scala  LIFT, framework web para hacer sistemas de alta concurrencia.  AKKA, plataforma para construir aplicaciones orientadas a eventos, escalables, y tolerantes a fallos.
  • 83.  Aparece en 2003.  Groovy es un lenguaje dinámico, orientado a objetos, muy íntimamente ligado a Java.  Diseñado para “robarse” cosas buenas de Python y Ruby  EL 99% del código Java existente puede ser compilado mediante groovy.  El 100% del código Groovy es convertido en bytecode Java.  Gran comunidad detrás  Varios proyectos alrededor  Soporte de herrmientas Eclipse, NetBeans, IntelliJ
  • 84. ¡Azúcar sintáctica!  Listas def list = [77,'ABC',new Date(), x=15, 'abcdefg'[ 1, 3, 5, 6 ] ] [77, ABC, Thu Aug 11 12:47:09 CLT 2011, 15, bdfg]  Mapas def map= ['id':'FX-11', 'name':’Pepe', 'no':1234, 99:'Y']  Rangos def toUp = 5..99 def toDown = 100..0  Assignation multiple: def (x,y) = [45,-35]  Return Opcional
  • 85. Herramientas sobre Groovy  Testing  Spock  GMock  Construcción  Gradle  Gant  Framework  Grails = Web  Griffon = Swing  Gaelyk = Web
  • 86.  ¿Qué es Grails?  Plataforma para desarrollo agil en web  Framework mvc full-stack  Convención sobre configuración.  Corre y se integra con la JVM  Desarrollo de aplicaciones con groovy y java  Orientado a objeto  Dinámico  Sintaxis Familiar  Opensource
  • 88.  Ventajas y Caracteristicas  “The real” ORM, con cero configuración  Dependency Injection  Manejador de transacciones  Internacionalización  Web Flow  Tag libraries  Caching  Layouts  Ajax  Servidor no necesita reiniciar(most cases)  Desarrollo de pruebas en caliente  Unit Testing  Integration Testing  Functional Testing
  • 90. Resumen  Lo que nos ha funcionado…  Lo que nos gusta usar para desarrollar …  Lo que nos ha hecho mas productivos…  Lo que nos puede dar control sobre el proceso de desarrollo…  Lo que nos puede permitir visualizar el desarrollo…  Lo que nos gustaría implementar…  Lo que necesitamos para mejorar….