SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
1
Frameworks
(... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...)
(Arquitectura de Software para Practicantes)
Universidad de los Andes
Demián Gutierrez
Noviembre 2012
Diseño Arquitectónico
Diseño
Arquitectónico
Arquitectura
del Software
Bibliotecas /
Componentes
Patrones de
Diseño
Clases /
Funciones
Frameworks
(Marcos)
Estilos
Arquitectónicos
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?
¿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
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
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
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
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
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
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
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
To framework or not to framework?
(development)
YAGNI: You Ain't Gonna Need It
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
¿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
¿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
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
¿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
¿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
¿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
¿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
¿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
...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?
23
Gracias
¡Gracias!

Contenu connexe

Tendances

Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Jose Emilio Labra Gayo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Jose Emilio Labra Gayo
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patronesMarvin Zumbado
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesJuan Camilo
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamientoJuan Camilo
 
C:\Documents And Settings\Uleam\Mis Documentos\Exp Sonia Y Nilda
C:\Documents And Settings\Uleam\Mis Documentos\Exp  Sonia Y NildaC:\Documents And Settings\Uleam\Mis Documentos\Exp  Sonia Y Nilda
C:\Documents And Settings\Uleam\Mis Documentos\Exp Sonia Y Nildaaraggg
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosJose Diaz Silva
 
Modelado de sistemas software
Modelado de sistemas softwareModelado de sistemas software
Modelado de sistemas softwareJavier Ramírez
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDat@center S.A
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESJesus Caceres Tello
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del softwareJohns Chacon
 

Tendances (20)

Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Diseño de WebApps
Diseño de WebAppsDiseño de WebApps
Diseño de WebApps
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamiento
 
C:\Documents And Settings\Uleam\Mis Documentos\Exp Sonia Y Nilda
C:\Documents And Settings\Uleam\Mis Documentos\Exp  Sonia Y NildaC:\Documents And Settings\Uleam\Mis Documentos\Exp  Sonia Y Nilda
C:\Documents And Settings\Uleam\Mis Documentos\Exp Sonia Y Nilda
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetos
 
Modelado de sistemas software
Modelado de sistemas softwareModelado de sistemas software
Modelado de sistemas software
 
Clase 01 presentacion
Clase 01 presentacionClase 01 presentacion
Clase 01 presentacion
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
MDE & DSLs
MDE & DSLsMDE & DSLs
MDE & DSLs
 
3 1 mde mda
3 1 mde mda3 1 mde mda
3 1 mde mda
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 

En vedette

Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Demián Gutierrez
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosDemián Gutierrez
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccionDemián Gutierrez
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigoDemián Gutierrez
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploDemián Gutierrez
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionDemián Gutierrez
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualDemián Gutierrez
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaDemián Gutierrez
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebasDemián Gutierrez
 
Guia fundamentos de analisis y desarrollo de sistemas
Guia fundamentos  de analisis y desarrollo de sistemasGuia fundamentos  de analisis y desarrollo de sistemas
Guia fundamentos de analisis y desarrollo de sistemas53140294
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccionDemián Gutierrez
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosDemián Gutierrez
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016Matthias Noback
 

En vedette (20)

Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Guia fundamentos de analisis y desarrollo de sistemas
Guia fundamentos  de analisis y desarrollo de sistemasGuia fundamentos  de analisis y desarrollo de sistemas
Guia fundamentos de analisis y desarrollo de sistemas
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016
 

Similaire à Frameworks y Arquitectura

Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13Maestros en Linea MX
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13Maestros Online
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseñoMario Solarte
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesIván Campaña Naranjo
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Marco Guerrero
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptxGonzaloMartinezSilve
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebMiguel Angel Macias
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptxGonzaloMartinezSilve
 
Aplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membershipAplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membershipJose B Flores P
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosWilfredo Mogollón
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesMicael Gallego
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 

Similaire à Frameworks y Arquitectura (20)

Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Paradigmas
ParadigmasParadigmas
Paradigmas
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
2.modelos del proceso
2.modelos del proceso2.modelos del proceso
2.modelos del proceso
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3
 
LARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptxLARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptx
 
Aplicacion mvc entity_framework_factura
Aplicacion mvc entity_framework_facturaAplicacion mvc entity_framework_factura
Aplicacion mvc entity_framework_factura
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías Web
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 
Aplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membershipAplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membership
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetos
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
3- Unidad 1: Introducción a la Plataforma .Net
3- Unidad 1: Introducción a la Plataforma .Net3- Unidad 1: Introducción a la Plataforma .Net
3- Unidad 1: Introducción a la Plataforma .Net
 

Dernier

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 

Dernier (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 

Frameworks y Arquitectura

  • 1. 1 Frameworks (... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...) (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Noviembre 2012
  • 2. Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks (Marcos) Estilos Arquitectónicos
  • 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?