+ All Categories
Home > Technology > Clase 09c seleccion

Clase 09c seleccion

Date post: 28-Jun-2015
Category:
Upload: demian-gutierrez
View: 240 times
Download: 6 times
Share this document with a friend
Popular Tags:
23
1 Frameworks (... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...) (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Noviembre 2012
Transcript
Page 1: Clase 09c seleccion

1

Frameworks(... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...)

(Arquitectura de Software para Practicantes)

Universidad de los AndesDemián GutierrezNoviembre 2012

Page 2: Clase 09c seleccion

Diseño Arquitectónico

Diseño Arquitectónico

Arquitectura del Software

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones

Frameworks(Marcos)

EstilosArquitectónicos

Page 3: Clase 09c seleccion

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?

Page 4: Clase 09c seleccion

¿Frameworks y Arquitectura de Software?

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones

Frameworks(Marcos)

EstilosArquitectó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

Men

or n

ivel de ab

str acción

definen

implementan

ImplementanSe diseñan usando (entre otras cosas)

UtilizanDefinen laArquitectura

Page 5: Clase 09c seleccion

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...

Page 6: Clase 09c seleccion

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

Page 7: Clase 09c seleccion

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?

Page 8: Clase 09c seleccion

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!

Page 9: Clase 09c seleccion

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?

Page 10: Clase 09c seleccion

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)

Page 11: Clase 09c seleccion

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

Page 12: Clase 09c seleccion

12

To framework or not to framework? (development)

YAGNI: You Ain't Gonna Need It

Page 13: Clase 09c seleccion

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)

Page 14: Clase 09c seleccion

14

¿Cómo se “aprende” a desarrollar frameworks?

¿Cómo se desarrollan las habilidades necesariaspara 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 frameworksque hagan pequeñas cosas

Page 15: Clase 09c seleccion

15

¿Cómo saber si vale al pena utilizar un framework o

componente específico?(Algunos tips para evaluar

frameworks y componentes)

¿Cómo elegirun framework o un componente?

Page 16: Clase 09c seleccion

16

Primero:Tenga bien claro el contexto y

el para qué necesita el framework...

...y luego considere lo siguiente...

¿Cómo elegirun 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)

Page 17: Clase 09c seleccion

17

¿Cómo elegirun 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)

Page 18: Clase 09c seleccion

18

¿Cómo elegirun 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)?

Page 19: Clase 09c seleccion

19

¿Cómo elegirun 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?

Page 20: Clase 09c seleccion

20

¿Cómo elegirun 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)

Page 21: Clase 09c seleccion

21

¿Cómo elegirun 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 *

Page 22: Clase 09c seleccion

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 elegirun framework o un componente?

Page 23: Clase 09c seleccion

23

Gracias

¡Gracias!


Recommended