Clase 09c seleccion

Post on 28-Jun-2015

240 views 6 download

Tags:

transcript

1

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

(Arquitectura de Software para Practicantes)

Universidad de los AndesDemián GutierrezNoviembre 2012

Diseño Arquitectónico

Diseño Arquitectónico

Arquitectura del Software

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones

Frameworks(Marcos)

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

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

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

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?

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)

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)

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)?

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?

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)

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 *

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?

23

Gracias

¡Gracias!