Está en la página 1de 72

Frameworks y Componentes

(... reutilizar, reutilizar, reutilizar!!! ...)

Universidad de los Andes


Demin Gutierrez
Abril 2010

Frameworks

Diseo Arquitectnico
Arquitectura
del Software

Diseo
Arquitectnico

Estilos
Arquitectnicos

Frameworks
(Marcos)

Patrones de
Diseo

Bibliotecas /
Componentes

Clases /
Funciones

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

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

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.

Qu es un Framework?
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

La Bsqueda de la Generalidad y la Reusabilidad!


7

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
8

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
9

Frameworks y Arquitectura de Software?

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

Frameworks y Arquitectura de Software?


Estilos
Arquitectnicos

Menor nivel de abstraccin

Patrones de
Diseo

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)

Se disean usando (entre otras cosas)

Frameworks
(Marcos)

Bibliotecas /
Componentes

Definen la
Arquitectura

definen

Clases /
Funciones

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

Utilizan
Aplicacin

implementan

Frameworks, y la teora de las zonas fras y


las zonas calientes?
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 ObjectOriented Design", Proceedings of the 8th European Conference on Object-Oriented 12
Programming (Springer-Verlag): 150162

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

Frameworks, y la teora de las zonas fras y


las zonas calientes?
Framework
frozen spots

Inversin de Control (IoC)

comportamiento
por defecto

hot spots
(hooks)

Instanciacin 1

funcionalidad
aadida (Cliente)

Instanciacin 2

14

Frameworks caja blanca y caja negra?

En el medio estn todos los matices posibles...


(Caja Blanca y Caja Negra al mismo tiempo -> Caja Gris)

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)
El ideal, el sueo de todo desarrollador es hacer un
framework completamente caja negra!

Ms fcil de usar

Ms difcil de programar (En general)

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

15

Frameworks: Caja Blanca, Caja Negra


y Ejemplos...

EJEMPLO:
Implementemos un
Solitario!
16

Frameworks y Arquitectura de Software?

Un solitario es un juego
en el que hay:
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

17

Frameworks y Arquitectura de Software?

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

Frameworks y Arquitectura de Software?

Prcticamente, se pueden definir un


conjunto infinito de posibles reglas y
juegos distintos usando el mismo principio
Slo acepta una A
de cualquier color

NO
O
K
19

Frameworks y Arquitectura de Software?

Una pila que slo acepta


cartas con valor
descendiente y color alterno

NO

SI

O
N
20

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
N

SI

SI

21

Frameworks y Arquitectura de Software?

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

Frameworks y Arquitectura de Software?


MainFrame
representan la IU del
solitario

Panel en el que se dibujan


las cartas (o que contiene
el solitario)

Utilitarios y clases
base de Swing

Es la clase encargada
de cargar las cartas
del disco

Utilitarios en general

Objetos del Solitario, Cartas,


Pilas, Dibujables, etc

El cdigo de este ejemplo va adjunto a las


transparencias, son los proyectos
CardGames01 y CardGames02

23

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 secuencia


de las siguientes lminas
para entender el proceso completo de tomar de una pila y poner en otra
24

Frameworks y Arquitectura de Software?


Si el puntero no est
sobre una pila
srcStack es nulo

Si no se permite (por
reglas) mover las
cartas selecionadas,
tmpStack es nulo

Lo que sucede cuando el usuario


aprieta el ratn (sobre una pila)

25

Frameworks y Arquitectura de Software?

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

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


26

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?

27

Frameworks y Arquitectura de Software?


Acepta cartas slo del
mismo color

Acepta cartas de
colores intercalados

Acepta cartas slo de


valores ascendentes

Acepta cartas slo de


valores descendentes

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?

28

Frameworks y Arquitectura de Software?


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

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

29

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?

30

Frameworks y Arquitectura de Software?


Define la interfaz de
una pequea clase
que establece un
comportamiento de
prestamo de cartas

La clase pila est


compuesta por una serie
de reglas de prestamo
y aceptacin de cartas

Define la interfaz de
una pequea clase
que establece un
comportamiento de
aceptacin de cartas

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

31

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

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

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

32

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
33

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
34

Frameworks y Arquitectura de Software?

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
35

Cmo funciona? Qu brinda un framework?


(Recuerda el ejemplo de la TV?)
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)
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
36

Cmo funciona? Qu brinda un framework?


(Recuerda el ejemplo de la TV?)
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
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)

37

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
38

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

39

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?

40

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

To framework or not to framework? (use)

Sin Framework
Con Framework

Tiempo Ganado al usar el Framework


vs
Curva de Aprendizaje!
42

To framework or not to framework? (use)

Generalmente, si hay un buen


framework que cumple con
las expectativas no hay
excusa para no utilizarlo...

43

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
44

To framework or not to framework?


(development)

YAGNI: You Ain't Gonna Need It

45

To framework or not to framework?


(development)

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
46

Cmo se aprende a desarrollar 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
47

Componentes

Diseo Arquitectnico
Arquitectura
del Software

Diseo
Arquitectnico

Estilos
Arquitectnicos

Frameworks
(Marcos)

Patrones de
Diseo

Bibliotecas /
Componentes

Clases /
Funciones

TODO: Lectura :-(


(Sommerville 14)
(Diseo con
Reutilizacin)

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 componentes51

Componentes?

Sin embargo...
Recuerda usted las
siguientes
transparencias?
52

Desarrollo Basado en Reutilizacin


(Componentes)
Almacn/Catlogo de
Componentes Reutilizables

Bosquejar los
Requerimientos
del
Sistema

Buscar
Componentes
Reutilizables
(COTS)
(Ej. Aplicaciones
Listas o Casi
Listas)

Modificar
Requerimientos
Acorde a los
Componentes
Encontrados

Diseo
Arquitectnico

Buscar
Componentes
Reutilizables
(COTS)
(Ej. Libreras,
Frameworks u
otros)

Disear el
Sistema
Utilizando los
Componentes
Reutilizados

Modificar
Componentes
Encontrados

Modificar
Componentes
Encontrados

COTS: Commercial Off the Shelf


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

Desarrollo Basado en Reutilizacin


(Componentes)

El costo del sistema se puede reducir notablemente debido a


la reutilizacin
El sistema se construye uniendo componentes existentes
***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

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
55

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
56

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

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?

58

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)

59

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

60

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

Componentes?
En general, un componente debe tener las siguientes
caractersticas:

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

62

La importancia de las interfaces

63

Cmo elegir un framework o un componente?

Bien...
Pero en este punto,
Cul es la diferencia entre
un framework y un
componente?
64

Cmo elegir un framework o un componente?

Cmo saber si vale al pena


utilizar un framework o
componente especfico?
(Algunos tips para evaluar
frameworks y componentes)
65

Cmo elegir un framework o un componente?

Primero:
Tenga bien claro el contexto y
el para qu necesita el
framework...
...y luego considere lo
siguiente...
66

Qu es un Patrn de Diseo?
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?
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*
*Si el ltimo release fue hace ms de un ao ao y medio
probablemente no hay mucha actividad (aplican sus excepciones) 67

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
68

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
69

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

70

Cmo elegir un framework o un componente?

...y seguramente hay muchas


otras variables adicionales a
tomar en cuenta segn el
caso, de modo que mantenga
los ojos bien abiertos...
71

Gracias

Gracias!

72

También podría gustarte