Este documento trata sobre la programación orientada a componentes. Explica que el uso de componentes se ha extendido en muchas disciplinas de ingeniería, pero que su uso en el desarrollo de software solo ha tenido éxito recientemente desde 1990. También analiza las razones por las que inicialmente fracasó el uso de componentes en software, y describe los beneficios de producir, comprar, distribuir y usar componentes de software. Finalmente, discute que los componentes de software son inevitables debido a que ofrecen una variedad y calidad que brindan beneficios
2. INTRODUCCIÓN
• EL USO DE COMPONENTES ES MADURO EN MUCHAS
DISCIPLINAS DE INGENIERÍA.
• EN EL AMBITO DEL SOFTWARE, RECIEN SE TIENE EXITO EN
SU USO A PARTIR DEL 1990
• LAS RAZONES DEL FRACASO SE PUEDEN ATRIBUIR A LA
NATURALEZA DEL SW.
3. NATURALEZA DEL SW
• LOS COMPONENTES DE SOFTWARE FUERON INICIALMENTE
CONSIDERADOS SIMILARES A LOS COMPONENTES DE HARDWARE,
COMO LOS CIRCUITOS INTEGRADOS.
• ASÍ, EL TÉRMINO ''CIRCUITO INTEGRADO DE SOFTWARE'' SE VOLVIÓ
FASCINANTE.
• TAMBIÉN SE HICIERON ANALOGÍAS DE ESTE TIPO EN LA MECÁNICA Y
LA INGENIERÍA CIVIL.
• EL SOFTWARE ES DIFERENTE A LOS PRODUCTOS DE TODAS LAS
DEMÁS DISCIPLINAS DE INGENIERÍA. EN LUGAR DE ENTREGAR UN
PRODUCTO FINAL, LA ENTREGA DE SOFTWARE SIGNIFICA LA ENTREGA
DE MODELOS PARA LOS PRODUCTOS.
4. LOS COMPONENTES SON PARA
COMPOSICIÓN
• LA COMPOSICION PERMITE REUSAR “COSAS PREFABRICADAS”
ADAPTANDOLAS EN EL NUEVO AMBIENTE.
• COMPONENTES DE SOFTWARE
• SON UNIDADES EJECUTABLES DE PRODUCCIÓN INDEPENDIENTES.
• ABSTRACCIONES, TALES COMO PROCEDIMIENTOS, CLASES,
MÓDULOS O APLICACIONES, PODRÍAN FORMAR COMPONENTES,
SIEMPRE Y CUANDO ESTÉN EN UNA FORMA EJECUTABLE
SUSCEPTIBLE DE SER UN COMPONENTE.
• LAS BIBLIOTECAS PROCEDURALES SON EL EJEMPLO MÁS ANTIGUO
DE LOS COMPONENTES DE SOFTWARE
• INDEPENDENCIA Y FORMA EJECUTABLE SON ESENCIALES CON EL
FIN DE PERMITIR EL DESARROLLO INDEPENDIENTE Y LA
INTEGRACIÓN ROBUSTA.
5. POR QUÉ PRODUCIR, COMPRAR,
DISTRIBUIR, USAR…
COMPONENTES DE SW?
• LOS COMPONENTES SON EL CAMINO A SEGUIR PORQUE TODAS
LAS DISCIPLINAS DE INGENIERÍA INTRODUJERON
COMPONENTES A MEDIDA QUE FUERON MADURANDO - Y
TODAVÍA LOS UTILIZAN.
• POCO DESPUÉS DE LA CRISIS DEL SOFTWARE SE ACUÑÓ EL
TÉRMINO, FUE PREVISTO TAMBIÉN: SOFTWARE DE CIRCUITOS
INTEGRADOS (MCILROY 1968; COX 1990) DESDE ENTONCES,
HACE 30 AÑOS, LAS PERSONAS HAN PREGUNTADO POR QUÉ
ESTE IDEA INTUITIVA REALMENTE NUNCA LLEGÓ A
REALIZARSE.
6. BENEFICIOS
• EL DESARROLLO DE SOFTWARE TRADICIONAL PUEDEN DIVIDIRSE EN
DOS CAMPOS.
• EN UN EXTREMO, UN PROYECTO DESARROLLADO ÍNTEGRAMENTE
DESDE CERO (LÍNEA POR LÍNEA), CON LA AYUDA SÓLO DE
HERRAMIENTAS DE PROGRAMACIÓN Y BIBLIOTECAS.
• EN EL OTRO EXTREMO, TODO ES "EXTERNALIZADO" - EN OTRAS
PALABRAS, EL SOFTWARE ESTÁNDAR SE COMPRA Y SE PARAMETRIZA
PARA PROPORCIONAR UNA SOLUCIÓN QUE ESTA LO "SUFICIENTEMENTE
CERCA" A LO QUE SE NECESITA.
ESTE TIPO DE SOFTWARE TIENE VENTAJAS SIGNIFICATIVAS (CUANDO
FUNCIONA):
• PUEDE SER ÓPTIMAMENTE ADAPTADO AL MODELO DE NEGOCIO DEL
USUARIO
• PUEDE TOMAR VENTAJA DE CUALQUIER CONOCIMIENTO DE SU PROPIEDAD
O PRÁCTICAS.
• PUEDE PROPORCIONAR UNA VENTAJA COMPETITIVA EN LA ERA DE LA
7. ANTECENDENTES: SW HECHO
LÍNEA POR LÍNEA (DESVENTAJAS)
• LA PRODUCCIÓN DE SW DESDE CERO ES UNA EMPRESA MUY
COSTOSA.
• EL MANTENIMIENTO Y EL SEGUIMIENTO DEL ESTADO DEL ARTE, COMO
EL INCORPORAR ACCESOS WEB, PUEDEN CONVERTIRSE EN UNA
MAYOR CARGA.
• LOS REQUERIMIENTOS DE INTEROPERABILIDAD CON OTROS SISTEMAS
LOCALES TAMBIÉN SE VEN AFECTADOS.
• COMO RESULTADO, LA MAYORÍA DE LOS PROYECTOS GRANDES
FALLAN PARCIALMENTE O TOTALMENTE, CONDUCIENDO A UN RIESGO
SUSTANCIAL. ADEMÁS, EN UN MUNDO DE RÁPIDOS Y CONTÍNUOS
CAMBIOS EN LOS REQUERIMIENTOS DE NEGOCIOS, EL SOFTWARE
HECHO LÍNEA POR LÍNEA ES USUALMENTE MUY LENTO PARA SER
PRODUCTIVO ANTES DE CONVERTIRSE EN OBSOLETO.
8. TENDENCIA OUTSOURCING
• FRENTE A TODAS ESTAS DESVENTAJAS MENCIONADAS, LA GRAN TENDENCIA HACIA
EL "OUTSOURCING" EN LA INDUSTRIA ES COMPRENSIBLE.
• LA PRODUCCIÓN DE SOFTWARE A MEDIDA ES SUBCONTRATADA POR DEBAJO DEL
PRECIO FIJADO, PARA LIMITAR EL RIESGO FINANCIERO, PARA CUBRIR EL RIESGO DE
TIEMPO DE SALIDA AL MERCADO.
• HAY UNA FUERTE TENDENCIA HACIA EL USO DE SOFTWARE ESTÁNDAR - ES DECIR, EL
SOFTWARE QUE ES SÓLO LIGERAMENTE AJUSTADO A LAS NECESIDADES REALES.
• LA CARGA DE MANTENIMIENTO, EVOLUCIÓN DEL PRODUCTO, Y LA
INTEROPERABILIDAD SE DEJA AL PROVEEDOR DEL PAQUETE ESTÁNDAR.
• LO QUE QUEDA ES LLEVAR LA PARAMETRIZACIÓN Y EL DETALLE DE CONFIGURACIÓN
AL PRÓXIMO LANZAMIENTO - TODAVÍA UN ESFUERZO CONSIDERABLE, PERO
INEVITABLE EN UN MUNDO DE CAMBIO.
9. ¿QUÉ HAY DE MALO EN SOFTWARE
ESTÁNDAR?
• EN PRIMER LUGAR, SOFTWARE ESTÁNDAR PUEDE REQUERIR
UNA REORGANIZACIÓN MAYOR O MENOR DE LOS PROCESOS
DE NEGOCIO AFECTADO. AUNQUE EL PROCESO DE
REINGENIERÍA DEL NEGOCIO PUEDE VALER LA PENA EN LA
EMPRESA.
• SEGUNDO EL SOFTWARE ESTÁNDAR ES UN ESTÁNDAR.
INTENTA DAR UNA SOLUCIÓN GENERAL A UN PROBLEMA
AMPLIO. LO CUAL NOS RESTRINGE SU USO, EXCEPTO QUE SE
UTILICE EXTREMADAMENTE BIEN.
• EN TERCER LUGAR, COMO SOFTWARE ESTÁNDAR NO ESTÁ
BAJO EL CONTROL LOCAL, NO ES SUFICIENTEMENTE ÁGIL
COMO PARA ADAPTARSE RÁPIDAMENTE A LAS NECESIDADES
CAMBIANTES.
10. EL ESPECTRO ENTRE HACERLO
TODO Y COMPRARLO TODO
Cuando todo esta
hecho a medida, la
flexibilidad no tiene
límites pero la
rentabilidad cae en
picada.
11. LOS COMPONENTES SON
INEVITABLES
• EL DESARROLLO DE LA TECNOLOGÍA DE COMPONENTES EXCELENTES NO ES
SUFICIENTE PARA ESTABLECER UN MERCADO. LA DISCIPLINA ESTÁ LLENA DE
EJEMPLOS DE PRODUCTOS TÉCNICAMENTE SUPERIORES QUE NO PUDIERON
CAPTURAR MERCADOS SUFICIENTEMENTE GRANDES. ADEMÁS DE LA SUPERIORIDAD
TÉCNICA DE UN COMPONENTE SE NECESITA UNA MASA CRÍTICA PARA DESPEGAR.
• UN PARADIGMA DE COMPONENTES GANA UNA GRAN CLIENTELA SI LOS
COMPONENTES OFRECIDOS TIENEN SUFICIENTE VARIEDAD Y CALIDAD, ENTONCES,
EXISTE UN BENEFICIO OBVIO AL USAR COMPONENTES.
• UNA VEZ QUE LOS CLIENTES HAN CUBIERTO SUS NECESIDADES EN UN SEGMENTO DEL
MERCADO, EL USO DE COMPONENTES EN ESE SEGMENTO SE VUELVE INEVITABLE.
12. …LOS COMPONENTES SON
INEVITABLES
• SI NO SE ENCUENTRAN LOS COMPONENTES REQUERIDOS
DISPONIBLES, SE PROVOCA LA REINVENCIÓN DE SOLUCIONES.
ESTO SÓLO PUEDE SER JUSTIFICADO CUANDO LA SOLUCIÓN
CREADA ES SUPERIOR A LA ALTERNATIVA QUE SE PUEDE
COMPRAR.
• UN PRODUCTO QUE UTILIZA LOS BENEFICIOS DE LOS
COMPONENTES, ES EL QUE HACE USO DE UNA COMBINACIÓN
DE PRODUCTIVIDAD E INNOVACIÓN DE TODOS LOS
VENDEDORES DE COMPONENTES. LOS VENDEDORES DE
COMPONENTES ESTÁN ENFOCADOS EN PROVEER A MUCHOS
CLIENTES DIFERENTES Y ASÍ SER CAPACES DE PERFECCIONAR
SUS COMPONENTES RÁPIDAMENTE.
13. LOS COMPONENTES SON
UNIDADES DE IMPLEMENTACIÓN
• UN COMPONENTE DE SOFTWARE UNA IMPLEMENTACIÓN AISLADA DE
UN SISTEMA.
• CONTRARIO A LO QUE SE HA DICHO, LOS OBJETOS CASI NUNCA SE
COMPRAN, VENDEN O IMPLEMENTAN.
• LA UNIDAD DE IMPLEMENTACIÓN ES ALGO MAS BIEN MÁS ESTÁTICO,
COMO UNA CLASE, O, MÁS PROBABLEMENTE, UN CONJUNTO DE
CLASES, COMPILADO Y ENLAZADO EN ALGÚN PAQUETE.
• AUNQUE UN COMPONENTE PUEDE SER UNA SOLA CLASE, ES MÁS
PROBABLE QUE SEA UNA COLECCIÓN DE CLASES, ALGUNAS VECES
LLAMADO MÓDULO.
14. MERCADOS
• RECIENTEMENTE HAN SURGIDO MERCADOS EXITOSOS
BASADOS EN TECNOLOGÍAS DE COMPONENTES.
• COMPAÑÍAS COMO COMPONENTSOURCE.COM O
FLASHLINE.COM VENDEN MILES DE COMPONENTES YA
HECHOS, LA MAYORÍA EN COM Y CATEGORÍAS EN JAVA,
PERO COMPONENTES VCL (UNA TECNOLOGÍA DE
DELPHI/C++ BUILDER POR BORLAND) Y .NET TAMBIÉN
ESTÁN PRESENTES. COMPAÑÍAS COMO ILOG Y ROUGE WAVE
SOFTWARE GENERAN INGRESOS SUSTANCIALES AL
ENFOCARSE EN SU PRODUCCIÓN DE COMPONENTES.