3. 3
¿qué relación tienen los frameworks
con los estilos arquitectónicos?
¿qué relación tienen los frameworks
con los patrones de diseño?
¿qué relación tiene un framework
con el concepto general de
arquitectura de software?
¿Frameworks y Arquitectura de Software?
4. ¿Frameworks y Arquitectura de Software?
Bibliotecas /
Componentes
Patrones de
Diseño
Clases /
Funciones
Frameworks
(Marcos)
Estilos
Arquitectónicos
Visión estructural y/o dinámica de cómo
debería ser un sistema
(no utilizable o ejecutable
directamente) (“out of the box”)
Visión estructural y/o dinámica de cómo
se pueden resolver ciertos problemas
comunes de diseño
(no utilizable o ejecutable
directamente) (“out of the box”)
Implementación y
funcionalidad concreta,
utilizable directamente
desde el código de la
aplicación implementada
Aplicación
Menorniveldeabstracción
definen
implementan
Implementan
Se diseñan usando (entre otras cosas)
Utilizan
Definen la
Arquitectura
5. 5
To framework or not to framework? (use)
Si tienen que desarrollar una
aplicación WEB...
(O un compilador, o una
aplicación de escritorio, o un
editor gráfico, etcétera)
...algunas opciones son...
6. 6
To framework or not to framework? (use)
Opción 1:
Desarrollar desde cero (“from scratch”),
para esto es necesario:
Definir la arquitectura del software a implementar
(arquitectura general, estilos arquitectónicos, etcétera)
Codificar, validar y probar la arquitectura
Codificar la funcionalidad particular de la aplicación
(aunque esto algunas veces se mezcla con el paso anterior)
Encontrar errores y problemas en la arquitectura,
refinar y rehacer parte de la funcionalidad / arquitectura,
hacer refactors, mejorar el código, etcétera
7. 7
To framework or not to framework? (use)
Opción 2:
Tomar una aplicación WEB que ya esté desarrollada
(no necesariamente con un framework)
y adaptarla a las necesidades actuales de la
aplicación requerida
Comprender cómo funciona la aplicación existente
Usar la arquitectura ya definida / refinada para codificar la
funcionalidad requerida
¿Es una buena aproximación?
¿Que tal si añadimos una opción 3?
8. 8
To framework or not to framework? (use)
Opción 3:
Tomar un framework
(para desarrollar aplicaciones WEB)
Comprender / aprender a usar el framework
Usar la arquitectura ya definida / refinada en el framework y
codificar la funcionalidad requerida
¡Aprender a vivir con las limitaciones del framework!
!Resistir la tentación de desarrollar un uno propio!
9. 9
To framework or not to framework? (use)
Opción 1:
Desarrollar desde cero (“from scratch”)
Opción 2:
Tomar una aplicación WEB que ya esté desarrollada
(no necesariamente con un framework)
y adaptarla a las necesidades actuales de la aplicación
requerida
Opción 3:
Tomar un framework
(para desarrollar aplicaciones WEB)
¿Cuál de las 3?
10. 10
Generalmente, si hay un buen
framework que cumple con
las expectativas no hay
excusa para no utilizarlo...
To framework or not to framework? (use)
11. 11
To framework or not to framework?
(development)
¿Vale la pena desarrollar un framework?
... depende ...
Crear un framework es en parte más arte que
ciencia... (lamentablemente)
Generalmente no es buena idea crear un framework,
es preferible buscar uno ya existente que resuelva el
problema que se trata de abordar
Desarrollar un framework puede ser un proceso
muy costoso (o lento), de modo que es necesario
asegurarse que se tendrá el adecuado retorno de
inversión
12. 12
To framework or not to framework?
(development)
YAGNI: You Ain't Gonna Need It
13. 13
Nadie dice que no puede desarrollar un framework, de
hecho, las opciones 1 y 2 (especialmente la 2) del ejemplo
anterior probablemente terminen en el desarrollo de un
framework (a largo plazo)
Simplemente se trata de hacer un cálculo adecuado de la
relación costo beneficio, recuerde que en muchos casos el
objetivo principal es RESOLVER el problema del cliente NO
DESARROLLAR un framework
To framework or not to framework?
(development)
14. 14
¿Cómo se “aprende” a desarrollar
frameworks?
¿Cómo se desarrollan las habilidades necesarias
para desarrollar frameworks?
1.- Diseñe / desarrolle software (fundamental)
2.- Practique la programación (MUY IMPORTANTE)
3.- Trabaje con problemas de diseño, cometa errores, reconozca los
errores cometidos, encuentre soluciones, etcétera
4.- Use patrones de diseño
5.- USE FRAMEWORKS YA EXISTENTES
6.- Vea el código de frameworks ya existentes (extienda frameworks)
7.- Atrévase y desarrolle pequeños frameworks
que hagan pequeñas cosas
15. 15
¿Cómo saber si vale al pena
utilizar un framework o
componente específico?
(Algunos tips para evaluar
frameworks y componentes)
¿Cómo elegir
un framework o un componente?
16. 16
Primero:
Tenga bien claro el contexto y
el para qué necesita el
framework...
...y luego considere lo
siguiente...
¿Cómo elegir
un framework o un componente?
¿Es adecuado el framework/componente para el
contexto/aplicación en el que se necesita utilizar?
(Quizá esto es lo primero que se debería considerar)
17. 17
¿Cómo elegir
un framework o un componente?
Asegúrese de que el framework / componente está siendo
mantenido activamente, revise los registros de bugs y los
tiempos entre las correcciones. Revise los tiempos entre
releases, el tiempo desde que se liberó la última versión, la
actividad del repositorio de código, etcétera*
Verifique que el framework / componente está siendo
utilizado activamente por otros desarrolladores, averigüe
que opinan otros equipos de desarrollo, que problemas han
enfrentado utilizando el framework, etcétera
¿Qué otros frameworks / componentes similares existen?
¿Cómo se comparan entre sí frameworks / componentes
similares? ¿Qué opciones hay disponibles?
*Si el último release fue hace más de un año – año y medio
probablemente no hay mucha actividad (aplican sus excepciones)
18. 18
¿Cómo elegir
un framework o un componente?
Determine la calidad del soporte
¿Hay soporte oficial (de los desarrolladores)?
¿De qué tipo? ¿Pago o gratuito? ¿Precios?
¿Hay una comunidad sólida alrededor del framework?
¿Es posible obtener soporte de la comunidad?
¿Hay foros? ¿Wiki? ¿Qué tanta actividad hay en los foros?
¿Cuál es el trato y la calidad de la comunidad y de los
desarrolladores del framework? *
*Esto varía de proyecto en proyecto, mientras más grande sea el
framework/componente mayor la comunidad y mayor la
frecuencia de los posts. Lo importante es asegurarse de que el
proyecto no esta “muerto”
¿Cuánto cuesta? ¿Cuál es la forma de pago? ¿El cliente
puede correr con los costos? ¿El equipo de desarrollo puede
correr con los costos (libre para desarrollo / pago para uso)?
19. 19
¿Cómo elegir
un framework o un componente?
¿Cuál es la dificultad de aprendizaje del framework?
¿Cuál es la curva de aprendizaje?
¿El costo de aprende a usar el framework vale los beneficios?
Sin Framework
Con Framework
¿Cuánta documentación existe? ¿Cuál es la calidad de la
documentación? ¿Manuales? ¿Ejemplos de uso?
¿Tutoriales?
20. 20
¿Cómo elegir
un framework o un componente?
¿El framework/componente es open source / free software
(son dos cosas diferentes) o es propietario? ¿Cuáles son las
ventajas / desventajas de cualesquiera de las tres opciones
en el contexto de uso del framework? (Esto también va
asociado al punto de la documentación)*
*Esto es importante porque puede ser la diferencia entre poder
“parchar” y “extender internamente” el framework en caso de ser
necesario (o no, si no es al menos código abierto)
21. 21
¿Cómo elegir
un framework o un componente?
* La calidad interna es importante si necesitamos extender o
modificar el framework (zonas frías) para adaptarlo a nuevas
necesidades
¿Cuál es la calidad (interna / externa) del framework?
¿Cómo está organizado el equipo que lo desarrolla? ¿Cuál es
el proceso de desarrollo? ¿Los releases se planifican? ¿Los
planes se cumplen? ¿Se desarrollan pruebas? ¿Hay suites de
pruebas? etcétera *
22. 22
...y seguramente hay muchas
otras variables adicionales a
tomar en cuenta según el
caso, de modo que mantenga
los ojos bien abiertos...
¿Cómo elegir
un framework o un componente?