Documentos de Académico
Documentos de Profesional
Documentos de Cultura
procesos y estndares
08: Fbricas de software y
desarrollo colaborativo
Eugenio Jacobo Hernndez Valdelamar
2014
Contenido
La produccin en serie
Lneas de productos
Variabilidad
Comentarios finales
Nov, 2014
Temario
Desarrollo de
software
(qu es,
quin lo hace,
cmo lo hace
qu hace)
Calidad
Procesos de
desarrollo de
software
Modelos de
mejora del
proceso Personal,
adquisicin,
desarrollo,
servicio
Industrializacin
del
desarrollo
de software
(fbricas y
colaboracin)
Un jardinero que cultiva su propio jardn, con sus propias manos, une en su
persona los tres personajes, de propietario, agricultor y obrero. Su produccin,
por lo tanto, debe rendirle la renta del primero, la ganancia del segundo y el
salario del tercero.
Adam Smith
Cuanto ms numerosos sean los elementos desconocidos por nosotros que
intervienen en el proceso causal de la produccin de bienes o que, aunque
conocidos, escapan a nuestro control, es decir, cuanto mayor sea el nmero de
dichos elementos que no poseen la cualidad de bien, tanto mayor es tambin la
incertidumbre del hombre sobre la calidad y la cantidad del producto de todo el
proceso causal, esto es, de los bienes correspondientes del orden inferior.
Carl Menger
Nov, 2014
La produccin en serie
La produccin en cadena,
produccin en masa, produccin en
serie o fabricacin en serie fue un
proceso revolucionario en la
produccin industrial cuya base es
la cadena de montaje o lnea de
ensamblado o lnea de produccin.
Una forma de organizacin de la
produccin que delega a cada
trabajador una funcin especfica y
especializada en mquinas tambin
ms desarrolladas.
Su idea terica nace con el
taylorismo (>) el cual se basaba en
la divisin de las tareas del proceso
de produccin y debe su nombre a
Frederick Winslow Taylor.
Nov, 2014
Fordismo
Tras el Taylorismo surge el Fordismo que
debe su nombre a Henry Ford, ingeniero
industrial norteamericano que fund la Ford
Motor Company en 1903.
Ford fue el impulsor en la prctica de la
produccin en serie, la lnea de montaje, la
estandarizacin e intercambiabilidad de las
piezas, a la vez que cuidaba los derechos de
los obreros. Su modelo se extendi
rpidamente al sector industrial de numerosos
pases.
La idea principal de Ford era que, si fabricaba
coches en serie, los costes de produccin del
automvil se reduciran, lo que permitira
bajar tambin el precio de venta y eso hara
aumentar la demanda, el mercado y los
ingresos.
Este sistema comenz en 1908 con la produccin del Ford T con una combinacin y organizacin
general del trabajo altamente especializada y reglamentada a travs de cadenas de montaje,
maquinaria especializada, salarios ms elevados y un nmero elevado de trabajadores en plantilla.
Nov, 2014
Toyotismo
Es un sistema integral de produccin y gestin
surgido en la empresa automotriz japonesa del
mismo nombre. Es un ejemplo clsico de la
filosofa Kaisen de mejora en la productividad.
Como filosofa de trabajo, el toyotismo tiene su
origen en la industria textil y en particular en la
creacin de un telar automtico, cuyo objetivo es
mejorar la vida de los operarios liberndolos de
las tareas repetitivas.
La familia Toyota, basndose en este invento y en
innovaciones subsiguientes, fund una empresa
textil en Nagoya, Japn, que con el tiempo se
convirti en Toyota Motor Company. Es, con esta
metodologa, como nacen los conceptos de jidoka
(automatizacin) y poka-yoke (a prueba de fallas)
que, junto a conceptos posteriores como just in
time (justo a tiempo) y muda (desperdicio), crean
lo que se ha llamado sistema de produccin
Toyota.
Nov, 2014
Nov, 2014
Principales ideas
Nov, 2014
Nov, 2014
10
Otra ecuacin
Nov, 2014
11
Nov, 2014
12
Nov, 2014
13
Las columnas definen los concerns, mientras que las filas definen los niveles de abstraccin. Cada
celda define una perspectiva o punto de vista (viewpoint) a partir del cual podemos construir un
aspecto del software. Por ejemplo, para una aplicacin de 3 capas, una celda puede definir un
primer punto de vista abstracto en la capa de presentacin, otro en la capa de datos y un tercer
punto de vista concreto en la capa de datos, usado para desarrollar esquemas de base de datos.
Una vez que la grilla ha sido definida, podemos completarla con las vistas que conforman los
artefactos de desarrollo para un producto de software especfico.
Nov, 2014
14
Esquema de fbrica
Un esquema de fbrica de software bsicamente define una receta para construir los
miembros de una familia de un producto de software. Claramente, los puntos de vista
describen los ingredientes y las herramientas utilizadas para prepararlos
Nov, 2014
15
Lneas de productos
Nov, 2014
16
Las Lneas de Producto de Software explotan las familias de producto, identificando prestaciones en
comn y formas recurrentes de variaciones en dominios especficos para lograr la produccin de
miembros de la familia de forma ms rpida, menos costosa y con menos riesgo.
En lugar de conformarse con la inocente esperanza de que las oportunidades de reuso ad-hoc aparezcan
solas en situaciones arbitrarias, estas capturan el conocimiento sistemticamente acerca de como
producir los miembros de la familia, hacerlos disponibles en forma de Activos reusables, y luego aplicar
estos Activos durante la produccin de los miembros de la familia.
Los Productos desarrollados como miembros de una familia reusan requerimientos, arquitecturas, marcos,
componentes, tests y otros tantos activos.
Nov, 2014
17
Actividades
Construir un producto utilizando una Fbrica de Software involucra las siguientes actividades:
Anlisis del Problema. Mediante el mismo se debe determinar si el producto se encuentra o no dentro del alcance de la
fbrica de software. Tambin podemos decidir construir un producto que no se encuentra bien alcanzado por la Fbrica de
Software y esto, en algunos casos, puede cambiar el esquema y la plantilla de la fbrica de software, para que puedan
soportar de mejor manera estas partes nuevas en futuros productos.
Especificacin del Producto. Esta define los requerimientos del producto en base a las diferencias que pueda tener con los
requerimientos de la lnea de producto. Dependiendo de las diferencias encontradas pueden utilizarse distintos mecanismos
de especificacin de producto incluyendo hojas de propiedades, asistentes, modelos de prestaciones, modelos visuales y
prosa estructurada.
Diseo de Producto. Mediante este se relacionan las diferencias en requerimientos con las diferencias en la arquitectura de
la lnea de producto y el proceso de desarrollo de producto, produciendo una arquitectura de producto y un proceso de
desarrollo de producto ajustado a estas diferencias.
Implementacin de Producto. Esto involucra actividades comunes, como desarrollo de componentes y tests unitarios,
ejecucin de tests y ensamblado de componentes. Distintos mecanismos pueden ser utilizados para construir la
implementacin dependiendo del grado de las diferencias, como hojas de propiedades, asistenes y modelos de prestaciones
que configuran componentes, modelos visuales que ensamblan componentes y generan otros artefactos como modelos,
archivos de configuracin y cdigo fuente que utilizan los puntos de extensin de un marco, o bien crean, modifican, extienden
o adaptan componentes.
Despliegue de Producto. Incluye la creacin o reuso de guas de despliegue, configuraciones lgicas del huesped,
relaciones de ejecutables a huesped lgico, mediante la provisin de facilidades como validacin de la configuracin del
huesped, reconfiguracin de huespedes instalando y configurando los recursos necesarios e instalando y configurando los
ejecutables que sean desplegados.
Testeo de Producto. Involucra la creacin o reuso de activos de tests (como por ejemplo, casos de tests y datos de tests)
aplicando herramientas de instrumentacin y medicin.
Nov, 2014
18
Mecanismos de variabilidad
19
Nov, 2014
20
Nov, 2014
21
Las innovaciones crticas en las areas de protocolos independientes de plataforma, auto descripcin,
encapsulacin variable, ensamblado por orquestracin y desarrollo dirigido por arquitectura son requeridos
para soportar el desarrollo por ensamblado.
Protocolo independiente de la plataforma: Las distintas tecnologas de Web Services (WSDL, SOAP y
XML por ejemplo) logran lo que otras anteriores tecnologas de ensamblado de componentes no lograron a
partir de separar las tecnologas utilizadas para especificar los componentes de las utilizadas para
implementarlos.
Autodescripcin: La auto descripcin reduce el mismatch arquitectonico al mejorar el empaquetado de
components y hacer explicitas las assumptions, dependencias, comportamientos, consumo de recursos,
performance, y certificaciones.
Encapsulacin Variable: la encapsulacin variable (una adaptacin de Programacin Orientada a Aspectos
o Aspect Oriented Programming AOP-) reduce las diferencias arquitectonicas al permitir la publicacin de
componentes parcialmente encapsulados que pueden ser adaptados a nuevos contextos seleccionando e
introduciendo los aspectos no-funcionales apropiados con los funcionales.
Ensamblado por Orquestracin: dados los mecanismos contractuales adecuados, los Servicios pueden
ser ensamblados usando un motor de orquestracin, como Microsoft BizTalk Server, para manejar la
secuencia de mensajes intercambiados entre ellos.
22
Nov, 2014
23
Pero...
1. Si no has hecho productos similares, seguramente no tendrs idea del contexto y
menos de un reuso sistemtico.
2. Si no has programado cmo quieres usar DSLs en el contexto de MDD?
3. Aunque pagues el costo, no puedes correr si nos has caminado
Nov, 2014
24
Nov, 2014
25
Nov, 2014
26
Nov, 2014
27
Nov, 2014
28
Nov, 2014
29
Forjas
Nov, 2014
30
Nov, 2014
31
Nov, 2014
32
Nov, 2014
33
Crowdsourcing
Nov, 2014
34
La transicin
Nov, 2014
35
Comentarios finales
Fbrica de software
Produccin especilizada
Cambio de paradigma: la especificacin genera el
producto
Desarrollo colaborativo
Herramientas online
Auto-organizacin???
Nov, 2014
36
Fabricacin digital
Nov, 2014
37
Referencias
Nov, 2014
38
Referencias (2)
Metropolis (>)
Nov, 2014
39
Referencias (3)
Nov, 2014
40