IS_clase_10_frameworks_componentes.pdf

72
1 Frameworks y Componentes (... ¡¡¡reutilizar, reutilizar, reutilizar!!! ...) Universidad de los Andes Demián Gutierrez Abril 2010

Transcript of IS_clase_10_frameworks_componentes.pdf

  • 1

    Frameworks y Componentes(... reutilizar, reutilizar, reutilizar!!! ...)

    Universidad de los AndesDemin Gutierrez

    Abril 2010

  • Frameworks

  • Diseo Arquitectnico

    Diseo Arquitectnico

    Arquitectura del Software

    Bibliotecas /Componentes

    Patrones de Diseo

    Clases / Funciones

    Frameworks(Marcos)

    EstilosArquitectnicos

  • 4

    Qu es un Framework?

    A quienes les gusta la TV?

    Telenovelas?Series de TV?

    Qu tiene que ver esto con el uso de frameworks o componentes?

  • 5

    Qu es un Framework?

    El trmino framework se podra traducir al espaol como

    armazn o andamio, que viene a ser una estructura

    genrica que se utiliza para colocar diversos elementos

    segn sean necesarios

  • 6

    Qu es un Framework?

    Telenovelas?Series de TV?

    En el cine, la TV y la literatura existe un concepto similar, la idea es que es posible

    tomar una plantilla particular de una historia y reusarla (repetirla) una y otra vez en diferentes contextos, con diferentes personajes, en distintas pocas, etc.

    Eso se puede ver como un framework para escribir historias.

  • 7

    Qu es un Framework?

    La Bsqueda de la Generalidad y la Reusabilidad!

    Un framework (armazon), es una abstraccin en la que cierto cdigo comn provee una funcionalidad genrica

    que puede ser sobrescrita o especializada de forma selectiva por medio de cdigo con funcionalidad especfica provisto por los clientes del framework

    (desarrolladores de software / programadores)

    Un framework es una solucin incompleta (no funcional) pero concreta (a diferencia de los estilos

    arquitectnicos o los patrones de diseo) a un problema recurrente bien conocido

  • 8

    Cmo ayuda un framework al desarrollo de software?

    Un framework facilita el desarrollo de software permitiendo a los diseadores y

    programadores dedicar su tiempo a lograr los requerimientos de software en lugar de lidiar

    con los detalles de bajo nivel necesarios para obtener un sistema funcional

    De esta forma se puede reducir el tiempo total de desarrollo de la aplicacin

  • 9

    Cmo ayuda un framework al desarrollo de software?

    Por ejemplo, un equipo que esta desarrollando un sistema WEB bancario al

    usar un framework de desarrollo WEB puede enfocarse en el desarrollo de las

    operaciones de retiro y transferencias de dinero en lugar de tener que enfocarse en la mecnica del manejo de las peticiones HTTP o el manejo de las sesiones de los

    usuarios y el estado de la aplicacin

  • 10

    Un framework es una forma de reutilizar una arquitectura de

    software

    Qu relacin tiene un framework con los estilos arquitectnicos?

    Qu relacin tienen un framework con otros aspectos del diseo y

    Arquitectura de Software?

    Frameworks y Arquitectura de Software?

  • Frameworks y Arquitectura de Software?

    Bibliotecas /Componentes

    Patrones de Diseo

    Clases / Funciones

    Frameworks(Marcos)

    EstilosArquitectnicos

    Visin estructural y/o dinmica de cmo debera ser un sistema, no

    utilizable o ejecutable directamente (out of the box)

    Visin estructural y/o dinmica de cmo se pueden resolver ciertos

    problemas comunes de diseo, no utilizable o ejecutable directamente

    (out of the box)

    Implementacin y funcionalidad concreta, utilizable directamente desde el cdigo de la

    aplicacin implementada

    Aplicacin

    Menor nivel de abstraccin

    definen

    implementan

    ImplementanSe disean usando (entre otras cosas)

    UtilizanDefinen laArquitectura

  • 12

    Segn Pree, los frameworks estn conformados por zonas congeladas (frozen spots) and zonas calientes

    (hot spots)

    Las partes congeladas definen la arquitectura general de un sistema de software, es decir, sus componentes bsicos y las relaciones entre estos.

    Esas partes permanecen inalteradas (congeladas) en cualquier instanciacin del framework

    Las partes calientes representan los puntos en los que los programadores pueden aadir su propio cdigo para aadir la funcionalidad especifica de su propio

    proyecto

    Pree, W (1994), "Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented

    Programming (Springer-Verlag): 150162

    Frameworks, y la teora de las zonas fr as y las zonas calientes?

  • 13

    Qu es un Framework?

    Los frameworks en si mismos no son usualmente ejecutables (a diferencia de un

    programa o una aplicacin).La idea es que el framework es utilizado en

    una aplicacin particular, que rellena los hot spots necesarios para satisfacer unos

    requerimientos particulares dentro de un contexto de funcionamiento particular.

    El proceso anterior se llama instanciacin del framework.

  • 14

    Frameworks, y la teora de las zonas fr as y las zonas calientes?

    Instanciacin 1 Instanciacin 2

    frozen spots

    Framework

    hot spots(hooks)

    funcionalidadaadida (Cliente)

    comportamientopor defecto

    Inve

    rsi

    n de

    Con

    trol

    (Io

    C)

  • 15

    Frameworks caja blanca y caja negra?

    Un framework caja blanca (white box) requiere que los usuarios tengan conocimiento de la estructura y cdigo

    interno del framework, generalmente vienen con el cdigo fuente y normalmente su comportamiento se

    extiende por medio del uso de subclases y herencia

    Un framework caja negra (black box) no requiere un entendimiento o conocimiento profundo del

    funcionamiento interno (estructura / cdigo) del framework. Generalmente el framework se extiende

    componiendo y delegando comportamiento entre objetos (Muchos de los cuales son las extensiones del

    usuario)

    En el medio estn todos los matices posibles...(Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris)

    Ms fcil de usar

    Ms difcil de program

    ar (En general)

    El ideal, el sueo de todo desarrollador es hacer un framework completamente caja negra!

  • 16

    EJEMPLO:Implementemos un

    Solitario!

    Frameworks: Caja Blanca, Caja Negray Ejemplos.. .

  • 17

    Un solitario es un juegoen el que hay:

    Frameworks y Arquitectura de Software?

    Cartas: Unidades bsicas que se

    mueven de un lado a otro, bien sea de

    forma separada o en grupos

    Bases: Lugares donde poner cartas, aplican reglas sobre

    que cartas se pueden poner /

    quitar

    Pilas: Grupos de cartas, generalmente sobre una base (o en movimiento, a modo

    de un grupo de cartas). Aplican

    reglas sobre que cartas se pueden

    quitar o aadir de/a una pila

  • 18

    El objetivo del juego es acomodar las cartas de cierta forma o

    eliminar todas las cartas de las mesa, siguiendo una serie de

    reglas predefinidas que dicen que cartas se pueden mover de una pila

    a otra...

    Frameworks y Arquitectura de Software?

  • 19

    Prcticamente, se pueden definir un conjunto infinito de posibles reglas y

    juegos distintos usando el mismo principio

    Frameworks y Arquitectura de Software?

    Slo acepta una A de cualquier color

    NOOK

  • 20

    Frameworks y Arquitectura de Software?

    Una pila que slo acepta cartas con valor

    descendiente y color alterno

    NO

    NO

    SI

  • 21

    Frameworks y Arquitectura de Software?

    Una pila de la que slo se puede sacar la carta del tope o

    grupos de cartas que lleguen alternando su

    color con valor descendente al tope

    NO

    SI

    SI

  • 22

    Si vamos a programar un juego de solitario hay dos opciones:

    1) Programar un slo juego en especifico, con reglas especificas

    2) Programar una serie de clases (framework) que permitan luego configurar las reglas

    fcilmente para as poder crear cualquier solitario que se requiera

    Para la opcin 2, a continuacin una posible implementacin:

    Frameworks y Arquitectura de Software?

  • 23

    Frameworks y Arquitectura de Software?

    MainFrame representan la IU del

    solitarioEs la clase encargada de cargar las cartas

    del disco

    Utilitarios y clases base de Swing

    Utilitarios en general

    Objetos del Solitario, Cartas, Pilas, Dibujables, etc

    Panel en el que se dibujan las cartas (o que contiene

    el solitario)

    El cdigo de este ejemplo va adjunto a lastransparencias, son los proyectosCardGames01 y CardGames02

  • 24

    Frameworks y Arquitectura de Software?

    GamePanel se encarga de dibujar las pilas de cartas (que a

    su vez dibujan las cartas individuales) as como de manejar los

    eventos del ratn

    Los eventos del ratn se manejan de forma genrica por parte de GamePanel, es decir, las reglas de que cartas se pueden quitar de una pila o poner en otra no estn implementadas en

    esta clase

    Las reglas de las pilas estn implementadas en

    cada una de las pilas. Por ejemplo borrowCards es invocado para ver si es

    posible quitar un grupo de cartas de una pila,

    acceptCards es invocado para ver si es posible

    poner un grupo de cartas en una pila particular. Toda la lgica y la verificacin se implementa en estos ds mtodos de las distintas

    pilas

    Ver diagramas de secuenciade las siguientes lminaspara entender el proceso completo de tomar de una pila y poner en otra

  • 25

    Frameworks y Arquitectura de Software?

    Lo que sucede cuando el usuario aprieta el ratn (sobre una pila)

    Si el puntero no est sobre una pila

    srcStack es nulo

    Si no se permite (por reglas) mover las

    cartas selecionadas, tmpStack es nulo

  • 26

    Frameworks y Arquitectura de Software?

    Lo que sucede cuando el usuario libera el ratn (sobre una pila)

    Si el ratn no se libera sobre una pila tgtStack

    ser nulo

    Si acceptCards retorna falso, quiere decir que la pila por sus reglas no acept las cartas, y

    que deben ser devueltas a la pila de

    origen

  • 27

    Frameworks y Arquitectura de Software?

    Es decir, desde el punto de vista de GamePanel (ver diagramas anteriores) toda la lgica de si es posible

    sacar una o ms cartas de una pila o poner una o ms cartas en una pila est implementada en la clase Stack,

    especficamente en los mtodos borrowCards y acceptCards (respectivamente)

    Como podramos tener pilas que tengan distintos comportamientos? Por ejemplo, una pila que acepte

    slo cartas del mismo color y otra que acepte cartas de colores intercalados?

  • 28

    Frameworks y Arquitectura de Software?

    Que tal si se especializa Stack en distintos tipos de pilas, donde cada una de ellas sobrescribe (overrides) el mtodo

    acceptCards() y define reglas particulares para cada tipo de pila que se necesite

    Desventajas? Inconvenientes?

    Acepta cartas slo del mismo color

    Acepta cartas de colores intercalados

    Acepta cartas slo de valores descendentes

    Acepta cartas slo de valores ascendentes

  • 29

    Frameworks y Arquitectura de Software?

    El problema es que esta estrategia puede terminar en una situacin poco deseable, en la que se produzca una

    explosin de clases especializadas con funcionalidad redundante, tal como ocurre en el diagrama anterior...

    ... y eso que no se ha considerado la necesidad de especializar el comportamiento de borrowCards

    Acepta cartas slo de valores descendentes y del

    mismo color

    Acepta cartas slo de valores descendentes y del mismo color (Opps, no

    esta esto repetido???)

    Acepta cartas slo de valores ascendentes y

    decolores intercalados, etc, etc, etc...

  • 30

    Frameworks y Arquitectura de Software?

    Es importante notar, que esta estrategia es de tipo caja blanca, es decir, usa herencia. Los Hot Spots son los

    mtodos acceptCards y borrowCards, que son necesarios sobrescribir para modificar el comportamiento de la pila (o del

    framework)

    Alguna solucin al problema de la explosin de clases especializadas?

  • 31

    Frameworks y Arquitectura de Software?

    En este caso, una pila est compuesta de una serie de Estrategias de prestamo (BorrowRule) y de aceptacin

    (AcceptRule) de cartas que se pueden combinar independientemente unas de otras

    Define la interfaz de una pequea clase

    que establece un comportamiento de

    prestamo de cartas

    Define la interfaz de una pequea clase

    que establece un comportamiento de

    aceptacin de cartas

    La clase pila est compuesta por una serie de reglas de prestamo y aceptacin de cartas

  • 32

    Frameworks y Arquitectura de Software?

    Cada una de las clases de este color

    definen una regla para poder prestar una carta o un grupo de

    cartas de la pila

    Las clases verdes definen una regla de aceptacin, por ejemplo DescendantAcceptRule que slo acepta cartas con valores consecutivos descendientes, que se pueden encadenar con otras reglas,

    como SameColorAcceptRule, para obtener una pila que solo acepta cartas descendientes consecutivas en valor del mismo color

    El mtodo addAcceptRule recibe una instancia de

    una regla y la aade a la lista de reglas a verificar al momento de solicitarle a la pila que acepte una carta

    o un grupo de cartas.El mtodo acceptCards

    funciona de la forma tradicional, slo que ejecuta la cadena de

    reglas aadidas y si todas pasan, entonces acepta la carta o el grupo de cartas

  • 33

    Frameworks y Arquitectura de Software?

    En general, esta es una estrategia completamente caja negra, porque no es necesario conocer como funciona una

    clase particular del framework (Stack en este caso) para poder heredar y sobrescribir mtodos, simplemente basta con

    implementar una serie de interfaces y componer la pila de estas reglas que son las que hacen el trabajo

  • 34

    Frameworks y Arquitectura de Software?

    En este ejemplo (y en los que vimos de patrones de diseo) se ve la importancia de programar en funcin de interfaces

    bien definidas, que pueden ser implementadas posteriormente a gusto de los programadores y segn las

    necesidades que se tengan

  • 35

    TODO:Los ejemplos del Juego de Cartas Caja Negra an no estn disponibles (para el

    jueves los tengo)

    Diagramas de secuencia del Juego de Cartas Caja Negra

    Frameworks y Arquitectura de Software?

  • 36

    Cmo funciona? Qu brinda un framework?(Recuerda el ejemplo de la TV?)

    Comportamiento por defecto: El framework brinda cierto comportamiento por defecto, de modo que el

    cliente puede decidir personalizar o aadir funcionalidad en ciertos puntos o puede simplemente

    conformarse con el comportamiento por defecto provisto por el framework

    Inversin de Control (Inversion of Control / IoC): El desarrollador ya no mantiene el flujo de control, es decir, el ste no es manejado por el invocador o por

    el cdigo cliente, sino que es manejado por el framework en si mismo

    (El ejemplo de MVC / Struts y PHP que veremos ms adelante)

  • 37

    Cmo funciona? Qu brinda un framework?(Recuerda el ejemplo de la TV?)

    Cdigo no-modificable del framework: El cdigo del framework en general no debera de poderse

    modificar, los usuarios deben de poder extender el framework pero no deberan de poder modificar su

    cdigo interno (a menos que deseen de forma explcita arreglar algn problema o colaborar en el

    desarrollo del framework)

    Extensibilidad: Debe ser posible extender el framework, bien sea sobrescribiendo cierto cdigo o aadiendo algn tipo de extensin (hook / gancho) o

    plug-in. Es decir, debe ser posible cambiar el comportamiento por defecto pre-definido en el

    framework. En general, los puntos de extensin deben estar muy claros

  • 38

    To framework or not to framework? (use)

    Si tienen que desarrollar una aplicacin WEB...

    (O un compilador, o una aplicacin de escritorio, o un

    editor grfico o ...)...tienen dos opciones

  • 39

    To framework or not to framework? (use)

    Opcin 1:Desarrollar desde cero (from scratch) y para esto

    es necesario:

    Definir la arquitectura del software(arquitectura general, estilos arquitectnicos, etctera)

    Codificar, validar y probar la arquitectura

    Codificar la funcionalidad propia del software (aunque esto algunas veces se hace mezclado con el paso anterior)

    Encontrar errores y problemas en la arquitectura, refinar la arquitectura, rehacer parte de la funcionalidad, hacer refactors

    en el cdigo, etctera

  • 40

    To framework or not to framework? (use)

    Opcin 2:Tomar una aplicacin WEB que ya est desarrollada

    (un framework?) y adaptarla a las necesidades actuales de la aplicacin requerida

    Comprender la aplicacin (framework) existente

    Usar la arquitectura ya definida / refinada y codificar la funcionalidad...

    Claro, la opcin 2 en realidad no implica un framework en si mismo, pero es una primera buena

    aproximacin...Que tal si aadimos una opcin 3?

  • 41

    To framework or not to framework? (use)

    Opcin 3:Tomar una framework

    (para desarrollar aplicaciones WEB)

    Comprender / aprender a usar el framework

    Usar la arquitectura ya definida / refinada en el framework y codificar la funcionalidad...

    Aprender a vivir con las limitaciones del framework y resistir la tentacin de desarrollar un

    framework propio!!!(a menos que... ver un par de lminas mas adelante)

  • 42

    To framework or not to framework? (use)

    Sin Framework

    Con Framework

    Tiempo Ganado al usar el Frameworkvs

    Curva de Aprendizaje!

  • 43

    Generalmente, si hay un buen framework que cumple con

    las expectativas no hay excusa para no utilizarlo...

    To framework or not to framework? (use)

  • 44

    To framework or not to framework? (development)

    Vale la pena desarrollar un framework?... depende ...

    Crear un framework es en parte ms 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

    inversin

  • 45

    To framework or not to framework? (development)

    YAGNI: You Ain't Gonna Need It

  • 46

    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 clculo adecuado de la relacin 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)

  • 47

    Cmo se aprende a desarrol lar frameworks?

    Cmo se desarrollan las habilidades para desarrollar frameworks?

    1.- Disee / desarrolle software (fundamental)

    2.- Practique la programacin (MUY IMPORTANTE)

    3.- Trabaje con los problemas de diseo, cometa errores, reconozca los errores cometidos, encuentre soluciones, etctera

    4.- Use patrones de diseo

    5.- Use patrones de diseo (No es error de copy / paste)6.- USE FRAMEWORKS YA EXISTENTES

    7.- Vea el cdigo de frameworks ya existentes (extienda frameworks)

    8.- Atrvase y desarrolle pequeos frameworks que hagan pequeas cosas

  • Componentes

  • Diseo Arquitectnico

    Diseo Arquitectnico

    Arquitectura del Software

    Bibliotecas /Componentes

    Patrones de Diseo

    Clases / Funciones

    Frameworks(Marcos)

    EstilosArquitectnicos

  • TODO: Lectura :-(

    (Sommerville 14)(Diseo con

    Reutilizacin)

  • 51

    Componentes?

    Sera fantstico poder desarrollar software de la misma forma en que se desarrolla el hardware: basndose (en la mayora de los casos) en un conjunto especfico y finito de componentes

  • 52

    Componentes?

    Sin embargo...

    Recuerda usted las siguientes

    transparencias?

  • Desarrol lo Basado en Reuti l izacin(Componentes)

    Fuente; Sommerville / Ingeniera del Software (Excepto lo rojo)

    Bosquejar losRequerimientos

    delSistema

    BuscarComponentesReutilizables

    (COTS)(Ej. Aplicaciones

    Listas o CasiListas)

    DiseoArquitectnico

    BuscarComponentesReutilizables

    (COTS)(Ej. Libreras,Frameworks u

    otros)

    ModificarRequerimientos

    Acorde a losComponentesEncontrados

    ModificarComponentesEncontrados

    +

    Disear elSistema

    Utilizando losComponentesReutilizados

    ModificarComponentesEncontrados

    +

    COTS: Commercial Off the Shelf

    Almacn/Catlogo de Componentes Reutilizables

  • Desarrol lo Basado en Reuti l izacin(Componentes)

    El sistema se construye uniendo componentes existentes

    El costo del sistema se puede reducir notablemente debido a la reutilizacin

    ***Se est limitado a los componentes existentes, es necesario negociar los requerimientos en base a estos, o modificar los componentes (lo que no siempre es fcil)

    para lograr satisfacerlos (o ambas cosas)***

    Se necesita todo un armazn o un lenguaje para poder unir los componentes

  • 55

    Componentes?

    Los componentes de software reutilizables son artefactos auto-contenidos, claramente

    identificables que describen y/o ejecutan funciones especficas y tienen interfaces claras, una

    documentacin apropiada y un estado de reuso definido

    Sametinger, 1997

    Un mdulo de bajo acoplamiento y alta cohesin que denota una abstraccin simple

    Booch, 1987

  • 56

    Componentes?

    Cualquier tipo de recurso [elemento] de software que pueda ser reutilizado (por ejemplo, mdulos o

    cdigo, diseos, especificaciones de requerimientos, conocimiento de un dominio, experiencia de

    desarrollo o documentacin, etctera)

    Hooper and Chester, 1991

    Los componentes de software son definidos como mdulos de software reutilizables,

    auto-contenidos, pre-probados, pre-fabricados que ejecutan funciones especficas y enpaquetan

    datos y procedimierntos

  • 57

    Componentes?

    En general, un componente debe tener las siguientes caractersticas:

    Debe ser autocontenido:Un componente no debe requierir la reutilizacin de otros componentes para cumplir su funcin, debe

    tener todo lo necesario para poder funcionar.

    Sin embargo, es posible que un componente pueda depender de otros componentes para poder

    funcionar.

  • 58

    Componentes?

    En general, un componente debe tener las siguientes caractersticas:

    Deben ser identificables:Deben estar contenidos en un archivo (.jar, .zip,

    .dll, .so, .exe, etctera) que facilite su indizacin y recuperacin.

    Por qu indizacin y recuperacin?

  • 59

    Componentes?

    En general, un componente debe tener las siguientes caractersticas:

    Describen o ejecutan (cumplen) una funcin:Ejecutan una funcin especfica o describen la

    funcionalidad de un programa

    (Describen? Ver Interfaces / API)

  • 60

    Componentes?

    En general, un componente debe tener las siguientes caractersticas:

    Deben tener interfaces claras y deben ocultar los detalles de su diseo interno:

    ...el ttulo lo dice todo...

  • 61

    Componentes?

    En general, un componente debe tener las siguientes caractersticas:

    Deben ser mantenidos para facilitar una reutilizacin sistemtica:

    Es necesario saber quin es el propietario del componente, quin lo mantiene (Lo mantienen?),

    quin brinda soporte (Hay soporte? De qu tipo?), cul es la calidad del componente, etctera.

    No vale la pena utilizar un componente con defectos o que no tenga mucha actividad o que no se le haga

    mantenimiento de forma adecuada (mantener componentes es costoso, al igual que los

    frameworks)

  • 62

    Componentes?

    Deben una documentacin adecuada que facilite:La recuperacin del componente desde el

    repositorio, la evaluacin del componente, su adaptacin al nuevo ambiente y su integracin con otros componentes del sistema en que se reutiliza

    En general, un componente debe tener las siguientes caractersticas:

  • 63

    La importancia de las interfaces

  • 64

    Bien...

    Pero en este punto,Cul es la diferencia entre

    un framework y un componente?

    Cmo elegir un framework o un componente?

  • 65

    Cmo saber si vale al pena utilizar un framework o

    componente especfico?(Algunos tips para evaluar

    frameworks y componentes)

    Cmo elegir un framework o un componente?

  • 66

    Primero:

    Tenga bien claro el contexto y el para qu necesita el

    framework...

    ...y luego considere lo siguiente...

    Cmo elegir un framework o un componente?

  • 67

    Qu es un Patrn de Diseo?

    Asegrese 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 versin, la actividad del repositorio de cdigo, etctera*

    Verifique que el framework/componente est siendo utilizado por otros desarrolladores, busque que opinan otros equipos

    de desarrollo, que problemas han enfrentado, etctera

    Qu otros frameworks/componentes similares existen? Cmo se comparan entre si frameworks/componentes

    similares? Qu opciones hay?

    *Si el ltimo release fue hace ms de un ao ao y medio probablemente no hay mucha actividad (aplican sus excepciones)

  • 68

    Qu es un Patrn de Diseo?

    Determine la calidad del soporte, Hay soporte oficial (de los desarrolladores)? De qu tipo? Pago o gratuito? Precios?

    Hay una comunidad slida alrededor del framework? Es posible obtener soporte de la comunidad? Hay foros? Wiki? Qu tanta actividad hay en los foros? Cul es el trato y la

    calidad de la comunidad y de los desarrolladores del framework? *

    *Esto vara de proyecto en proyecto, mientras ms 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

  • 69

    Qu es un Patrn de Diseo?

    Cul es la dificultad de aprendizaje del framework? Cul es la curva de aprendizaje? El costo de aprende a usar el

    framework vale los beneficios?

    Cunta documentacin existe? Cul es la calidad de la documentacin? Manuales? Ejemplos de uso? Tutoriales?

    Cul es la calidad del framework? Cmo est organizado el equipo que lo desarrolla? Cul es el proceso de desarrollo? Los releases se planifican? Los planes se cumplen? Se

    desarrollan pruebas? Hay suites de pruebas? Certificaciones? etctera

  • 70

    Qu es un Patrn de Diseo?

    El framework/componente es open source / free software (son dos cosas diferentes) o es propietario? Cules son las ventajas / desventajas de cualesquiera de las tres opciones

    en el contexto de uso del framework? (Esto tambin va asociado al punto de la documentacin)*

    Es adecuado el framework/componente para el contexto/aplicacin en el que se necesita utilizar?

    (Quiz esto es lo primero que se debera considerar)

    *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 cdigo abierto)

    Cunto cuesta? Cul 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)?

  • 71

    ...y seguramente hay muchas otras variables adicionales a

    tomar en cuenta segn el caso, de modo que mantenga

    los ojos bien abiertos...

    Cmo elegir un framework o un componente?

  • 72

    Gracias

    Gracias!

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58Slide 59Slide 60Slide 61Slide 62Slide 63Slide 64Slide 65Slide 66Slide 67Slide 68Slide 69Slide 70Slide 71Slide 72