desarrollo de software basado en componentes · nuevo paradigma 6. conclusión 1. introducción la...

25
Desarrollo de Software basado en Componentes http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.] Desarrollo de Software basado en Component es Personas que lo han encontrado útil: 21 de 24 - Valorar este tema Por Julio Casal Terreros Contenido 1. Introducción 2. Beneficios del Desarrollo de Software basado en Componentes 3. Metrópolis: Analogía de la Evolución del Software basado en Componentes 4. Industrialización del Software a través de la Plataforma .net 5. Fábricas de Software: el Nuevo Paradigma 6. Conclusión 1. Introducción La complejidad de los sistemas computacionales actuales nos ha llevado a buscar la reutilización del software existente. El desarrollo de software basado en componentes permite reutilizar piezas de código preelaborado que permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la calidad, la reducción del ciclo de desarrollo y el mayor retorno sobre la inversión. Al comparar la evolución del ambiente de IT MSDN Library Artículos Técnicos Archivo MSDN10 MSDN10 Creación de aplicaciones de negocio de Office ASP .NET - Controles Inteligentes Incrementales (I²C) Simple ejemplo utilizando el control Collapsable Panel Extender del Atlas Control Toolkit Como utilizar <hover> para crear un efecto emergente (popup) en una página Web Clonación de Objetos de Estructura Compleja El Poder de AJAX en Tiempo Real Usando el Patrón de Diseño Observer Manual de Laboratorio (Hands-On Lab) Transmutación de código VB6 a lenguajes .NET Cifrando datos con SQL Server 2005 Rotación de tablas [Crosstab- Queries] Creación de una clase para dibujar en Windows Forms utilizando un buffer doble Ejemplo de una Aplicación de Localización en ASP.NET MS Agent en VB .NET Llenando un DropDownList mediante Columnas Computadas en ASP .NET ¿Visual Basic .NET ó C#? Implementando Componentes de Procesos de Usuario Una barra de progreso en VFP “puro” ADO .NET para Programadores Inicio Library Aprendizaje Code Descarga Soporte Comunidad Foros Iniciar sesión España (Español)

Upload: hanhan

Post on 14-Aug-2019

227 views

Category:

Documents


0 download

TRANSCRIPT

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Desarrollode Softwarebasado enComponentesPersonas que lo han encontradoútil: 21 de 24 - Valorar estetema

Por Julio Casal Terreros

Contenido 1. Introducción 2. Beneficios del Desarrollo deSoftware basado enComponentes 3. Metrópolis: Analogía de laEvolución del Software basadoen Componentes 4. Industrialización del Softwarea través de la Plataforma .net 5. Fábricas de Software: elNuevo Paradigma 6. Conclusión

1. IntroducciónLa complejidad de los sistemascomputacionales actuales nos hallevado a buscar la reutilizacióndel software existente. Eldesarrollo de software basado encomponentes permite reutilizarpiezas de código preelaboradoque permiten realizar diversastareas, conllevando a diversosbeneficios como las mejoras a lacalidad, la reducción del ciclo dedesarrollo y el mayor retornosobre la inversión. Al compararla evolución del ambiente de IT

MSDN LibraryArtículos TécnicosArchivo

MSDN10MSDN10Creación de aplicaciones denegocio de OfficeASP .NET - ControlesInteligentes Incrementales (I²C)Simple ejemplo utilizando elcontrol Collapsable PanelExtender del Atlas ControlToolkitComo utilizar <hover> paracrear un efecto emergente(popup) en una página WebClonación de Objetos deEstructura ComplejaEl Poder de AJAX en TiempoRealUsando el Patrón de DiseñoObserver Manual de Laboratorio(Hands-On Lab)Transmutación de código VB6 alenguajes .NETCifrando datos con SQL Server2005Rotación de tablas [Crosstab-Queries]Creación de una clase paradibujar en Windows Formsutilizando un buffer dobleEjemplo de una Aplicación deLocalización en ASP.NETMS Agent en VB .NETLlenando un DropDownListmediante Columnas Computadasen ASP .NET¿Visual Basic .NET ó C#?Implementando Componentesde Procesos de UsuarioUna barra de progreso en VFP“puro”ADO .NET para Programadores

Inicio Library Aprendizaje Code Descarga Soporte Comunidad Foros

Iniciar sesiónEspaña (Español)

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

con el crecimiento de lasmetrópolis actuales, podemosentender el origen de muchosproblemas que se hanpresentado históricamente en laconstrucción de software yvislumbrar las posibles yprobables soluciones que nosllevarán hacia la industrializacióndel software moderno.

Este proceso de industrializaciónha dado ya sus inicios conimplementaciones como laplataforma .net, la cual impulsala idea de industrializar elsoftware utilizando tecnologíasde componentes. Los avances ymejoras presentados en estaplataforma van mucho más alláde las implementaciones inicialescomo COM y CORBA,convirtiendo a los componentes.net en verdaderas piezas deensamblaje, en un estilo muysimilar a las líneas de ensamblajemodernas. Asimismo, los nuevosparadigmas como las Fábricasde Software proveen de losmedios para hacer la transicióndesde el 'hacer a mano' hacia lafabricación o manufactura desoftware.

Si hay algo que ha aprendido elser humano desde tiempos muyantiguos es a reutilizar elconocimiento existente para suscada vez más ambiciosasempresas. En efecto, al reutilizartrozos de experiencias, ideas yartefactos, no solo nosaseguramos de no cometer losmismos errores del pasado, sinoque logramos construir cosascada vez más grandes ymaravillosas, con bases firmes ycalidad incomparable. Esteconcepto de la reutilización, unode los primeros que se nosenseñan a quienes entramos almundo del desarrollo desoftware, habremos de utilizarlodesde el mismo instante en que

de ADOCreación de Controles en CF.NET¿Herencia Visual en WebForms yWeb User Controls?Datagrids con imágenesEnviando y recibiendo lonecesario de un Servidor Web através de XML y XSLSoporte “Intellisense” para losdatos de configuración de unaaplicación Web ASP .NETExponer eventos en controles deservidor ASP .NETpersonalizadosTécnicas de Navegación entreWeb Forms en ASP .NetFlickerFree enCompactFrameworkAccediendo a datos de VFP 9.0desde la Web con el ProveedorOLE DB de VFP 9.0Web Services, un ejemploprácticoProgramación de Redes con .Net2.0 - Parte IMSMQ en Compact-FrameworkPatrones y Antipatrones: unaIntroducción - Parte IIInteroperabilidad entre .Net yJ2EECómo evaluar expresionesmatemáticas en VB .NetConstrucción de SistemasMultiplataforma basados enServiciosGeneración de Código usandoCodeDOMRDA & Merge ReplicationLectura y Escritura en PuertosSerie con .Net Framework 2.0Patrones de Fabricación: Fábricasde ObjetosBizTalk Messaging,Implementación del PatrónMESSAGE BROKERNuevos Controles de Reporte enVisual Studio 2005Utilizando NullableTypesUsando y Extendiendo el

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

escribamos nuestra primera líneade código.

Los sistemas de hoy en día soncada vez más complejos, debenser construidos en tiempo récordy deben cumplir con losestándares más altos de calidad.Para hacer frente a esto, seconcibió y perfeccionó lo quehoy conocemos como Ingenieríade Software Basada enComponentes (ISBC), la cual secentra en el diseño yconstrucción de sistemascomputacionales que utilizancomponentes de softwarereutilizables. Esta ciencia trabajabajo la filosofía de "comprar, noconstruir", una idea que ya escomún en casi todas lasindustrias existentes, perorelativamente nueva en lo que ala construcción de software serefiere.

Para este momento, ya muchosconocen las ventajas de esteenfoque de desarrollo y, de lamisma forma, muchos sepreguntan día a día el por quéson tan pocos los que realmentealcanzan el éxito siguiendo estafilosofía. En realidad, hasta ahorasolo hemos tanteado un pococon las posibilidades delsoftware basado encomponentes, y es justo hora, enla presente década, que laindustria del software despegaráy se perfeccionará para estar ala par de cualquier otra industriadel medio. Las analogías quenos han llevado a estudiar a lossistemas comparándolos con lascomplejas metrópolis de laactualidad, así como lasiniciativas más innovadorascomo las Fábricas de Softwarede Microsoft, son la clararepresentación de que estamos apunto de presenciar un nuevogran cambio en la forma comopensamos en software.

Namespace MyImplementación de Callbackusando ASP .net 2.0 – Parte IIContadores para Rendimiento deSQL ServerTest Driven Development conVisual Studio Team SystemAlmacenar una Imagen en unaBase de DatosLeer una Imagen de una Base deDatosDesarrollo de Software basadoen ComponentesConfiguración de Aplicaciones.NET Enterprise Library, cómoutilizar Configuration ApplicationBlockSolucionando el Problema del"Doble Submit"Uso del prefijo "SP_" en elnombre de procedimientosalmacenadosEl Patrón SingletonEspacios de Nombre(namespace) y Consultas XPATHen C#Definir tamaños personalizadosde papel con Visual Basic .NETDecisiones InteligentesControl de versiones sobre Basesde Datos SQL Server 2000/2005Configuración Regional deAplicaciones y ProcesosIntegración de Aplicaciones conMicrosoft CRMExplorador de Librerías basadoen .NETMigración de tecnología ASP 3.0con componentes ActiveX a ASP.netHerencia de Formularios - Másallá de la herencia gráficaDelegados en .NET - Parte IImplementando Autenticación enComposite UI Application Blockcon MembershipVisual Studio 2005 Team System,herramientas integradas para unefectivo desarrolloCarga de árboles ilimitados

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Principio de la página

2. Beneficios delDesarrollo de Softwarebasado en ComponentesEn esencia, un componente esuna pieza de códigopreelaborado que encapsulaalguna funcionalidad expuesta através de interfaces estándar (1) .Los componentes son los"ingredientes de lasaplicaciones", que se juntan ycombinan para llevar a cabo unatarea (2) . Es algo muy similar alo que podemos observar en elequipo de música que tenemosen nuestra sala. Cadacomponente de aquel aparatoha sido diseñado para acoplarseperfectamente con sus pares, lasconexiones son estándar y elprotocolo de comunicación estáya preestablecido. Al unirse laspartes, obtenemos música paranuestros oídos.

El paradigma de ensamblarcomponentes y escribir códigopara hacer que estoscomponentes funcionen seconoce como Desarrollo deSoftware Basado enComponentes. El uso de esteparadigma posee algunasventajas:

1. Reutilización delsoftware. Nos lleva aalcanzar un mayor nivelde reutilización desoftware.

2. Simplifica las pruebas.Permite que las pruebassean ejecutadasprobando cada uno delos componentes antesde probar el conjuntocompleto decomponentesensamblados.

TDD Paso a paso utilizandoVSTSCómo utilizar RecursosEmbebidos en componentes dellado del Cliente con ASP .net 2.0Comprobación del Rendimientode los Genéricos en C# 2.0Programación de Redes con .Net2.0 - Parte IIIntroducción a WindowsCommunication FoundationUsando el Patrón de DiseñoAdapterManual de Laboratorio(Hands-On Lab)SQL Server Express - Instalacióny ConfiguraciónADO .NET 2.0 – Usando elControl SqlDataSource y elControl GridViewImplementación de Callbackusando ASP .NET 2.0Tipos parciales en C# 2.0Escribiendo en archivos XML conASP .NET (Parte II) - XmlNodeCSharpSniffer (Husmeador detráfico en adaptador de redlocal)Arquitectura para AplicacionesCorporativasAutenticación de Usuariosbasada en Roles utilizandoHTTPModules en ASP .NETGestión de Publicidad en ASP.NETEl primer paso hacia losEnterprise Services (COM+)Reporting Services – Generandoy Publicando ReportesDinámicamenteUML, ejemplo sencillo sobreModelado de un ProyectoTransformar Filas a ColumnasDesmitificando la Encriptación(Parte I)Desmitificando la Encriptación(Parte II)De los EnsambladosCompartidos, su Nombre Unicoy la GACDe la forma dinámica de hacer

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

3. Simplifica elmantenimiento delsistema. Cuando existeun débil acoplamientoentre componentes, eldesarrollador es libre deactualizar y/o agregarcomponentes según seanecesario, sin afectarotras partes del sistema.

4. Mayor calidad. Dadoque un componentepuede ser construido yluego mejoradocontinuamente por unexperto u organización, lacalidad de una aplicaciónbasada en componentesmejorará con el paso deltiempo.

De la misma manera, el optarpor comprar componentes deterceros en lugar dedesarrollarlos, posee algunasventajas:

1. Ciclos de desarrollomás cortos. La adiciónde una pieza dada defuncionalidad tomará díasen lugar de meses óaños.

2. Mejor ROI. Usandocorrectamente estaestrategia, el retornosobre la inversión puedeser más favorable quedesarrollando loscomponentes unomismo.

3. Funcionalidadmejorada. Para usar uncomponente quecontenga una pieza defuncionalidad, solo senecesita entender sunaturaleza, más no susdetalles internos. Así, unafuncionalidad que sería

Código DinámicoIntercalación [Collation] en SQLServer 2000Fundamentos de la POOProcesando dinámicamentefórmulas creadas por el UsuarioEnviando y recibiendo lonecesario de un Servidor Web através de XML y XSL¿Qué es un Patrón de Diseño?Patrones y Antipatrones: unaIntroducción - Parte IAutomatización de Backups yRestoresCómo asegurar la disponibilidadde los Datos en SQL Server 2000Desarrollo de aplicacionesbasadas en Microsoft ContentManagement Server 2002Obtener más información acercade Microsoft Robotics Studio

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

impráctica deimplementar en laempresa, se vuelve ahoracompletamenteasequible.

Principio de la página

3. Metrópolis: Analogíade la Evolución delSoftware basado enComponentesPat Helland (3) , uno de losarquitectos con mayorexperiencia en Microsoft, hadesarrollado recientemente unametáfora llamada Metrópolis(4) , en la cual compara laevolución de las tecnologías dela información con la formacomo las ciudades de EstadosUnidos han evolucionadodurante los 2 últimos siglos. Alcomprender la evolución de lasciudades actuales, podemosdarnos una idea del futuropromisorio que tiene eldesarrollo de software basado encomponentes.

Como lo menciona Helland, lasciudades y las casas de softwarecomparten un pasado muysimilar, pues ambas empezaronen ambientes que sedesarrollaron aisladamente. Estedesarrollo independienteconllevó a diferencias de culturacon respecto a la forma comose hacían las cosas. A mediadosdel siglo XIX, las vías deferrocarril conectaron la mayorparte de las ciudades en losEstados Unidos. Esto permitióque las personas y distintosartículos empezaran atrasladarse de una forma que noera posible anteriormente. Seinició entonces una carrera porasegurar que los artículostrabajen entre sí y cumplanestándares de compatibilidad.Estos cambios en expectativas y

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

capacidades alimentaron laexplosión del comercio, lafabricación y llevaron a laurbanización de la vida, tal ycomo la conocemos hoy.

Por muchos años, las casas desoftware han desarrolladoaisladamente, con aplicacionescreadas independientemente ysin mayor necesidad deinteracción entre ellas. Dado queestas aplicaciones no estabanconectadas, no había mayoresconsecuencias para aquello. Perorecientemente se ha vuelto muypráctico el interconectar tantolas aplicaciones dentro de unacasa de software, así como entremúltiples casas de softwarealrededor del mundo. Ahora lagente ya puede navegar y visitaraplicaciones muy distantes.Cantidades cada vez másgrandes de información sonfácilmente transmitidas entreaplicaciones. Pero lo que aún esdifícil es hacer que estos datostrabajen entre distintasaplicaciones.

Para entender entonces lo queestá ocurriendo en estemomento con el ambiente IThay que explorar 6 facetas deesta analogía:

Ciudades - Casas de Software Las ciudades evolucionarongradualmente como lugarespara hacer comercio ymanufactura. En estas ciudadesexistían edificios con poca oninguna conexión entre ellos.Las ciudades tenían un contactomuy limitado con sus ciudadesaledañas y desarrollaron supropia cultura, estilo y forma dehacer cosas (Ver Figura 1). De lamisma forma, las casas desoftware evolucionarongradualmente mientras nuevasaplicaciones fueron construidas yluego extendidas. Cada

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

aplicación separada eindependiente de sus similaresen la misma casa de software.Cada casa de software tenía supropia cultura, estilo y forma dehacer las cosas (Ver Figura 2):

Figura 1: Evolución de las ciuda texto.

Las presiones económicascambiaron nuestras ciudades, yaque fue la oportunidadeconómica la que realmentellevó a las ciudades a lamodernización, a compartirservicios y a pensar en medioscreativos para alcanzareficiencias. Asimismo, laspresiones económicas estáncambiando nuestras casas desoftware. Mientras se construyennuevas aplicaciones y serenuevan las más antiguas, hayque considerar cómo enlazarlasa la infraestructura compartida,cómo conectarlas y cómodividirlas de manera que semaximice la reusabilidad de lasmismas. Este es el reto al quetodos nos vemos enfrentados enla actualidad.

Fábricas y Edificios -Aplicaciones En los primeros años del sigloXIX, la manufactura típicamenteera simple e independiente. Losbienes producidos estabanlimitados tanto por lasnecesidades del mercado local,como por la sofisticación del

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

proceso de manufactura. Lasfábricas producían todas laspartes del ensamblado final,armaban el ensamblado eincluso lo vendían. Si uno queríaun par de zapatos, tenía que irsea la fábrica de zapatos. Esta noera la forma más eficiente defabricar bienes y los ítemsfabricados eran caros yusualmente no de la mejorcalidad (Ver Figura 3). Muchasde nuestras aplicaciones actualesson como aquellas fábricas.Producen datos procesadosindependientemente unos deotros, los cuales se entregan en'mercados' limitados. Estánintegradas verticalmente yusualmente no aceptan eltrabajo de otras aplicacionescomo entrada (Ver Figura 4):

Figura 3: Fábricas y edificios. Vo

El ferrocarril alteróprofundamente la manufactura.Al bajar los costos detransportar las partes fabricadas,el mismo permitió que losfabricantes locales produjeranbienes más sofisticados y demayor calidad. Lacomponentización les permitió alos artesanos enfocarse en susprincipales competencias, enlugar de tener que entender losdiversos procesos necesariospara producir todo unensamblado sofisticado. Losnegocios se especializaron eindependizaron. Tanto para las

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

fábricas como para lasaplicaciones, la independencia esesencial. Uno no puede terminarsu trabajo si se necesita hacerque todo trabaje en conjuntoperfectamente. Pero, aunque laindependencia es esencial, no sepueden olvidar las ventajas de lainterconexión, ya que es a travésde la reutilización del trabajo delos demás que uno logra cumplirsu trabajo con éxito y esjustamente la demanda queejercen los demás sobre nuestrotrabajo lo que nos da el estímuloeconómico para seguirexistiendo.

Transporte - Comunicaciones A mediados del siglo XIX llegó elferrocarril. Se hicieron enormescantidades de dinero moviendopersonas, carbón y trigo de unlugar a otro. Con una demandaarrolladora de transporte,eventualmente todo EstadosUnidos estaba interconectadopor ferrocarril. No solo que lagente empezó a viajar a nuevoslugares para conocer nuevasculturas, sino que ahora loscomerciantes podían venderartículos de formas nunca antespensadas. Pero más importanteaún, el movimiento de losartículos despertó la expectativade que las cosas funcionen enconjunto. Antes del ferrocarrilsimplemente no importaba si losbienes de un fabricante eranincompatibles con los de otrofabricante.

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Figura 5: Transporte. Volver al t

Al final del siglo XX llegóInternet. Se invirtieron montosenormes en navegación, correoelectrónico, JPEGs, MP3s y chat.Se tendieron los hilos parapermitir la navegación y elmovimiento de las formas mássimples de datos. El navegadorle permitió a la persona eltransportarse para interactuardirectamente con una aplicacióndistante. Sin embargo, elmovimiento de los datos aún nofunciona bien en conjunto,haciendo muy limitados losprocesos de negocios a travésdel Internet. Las nuevasconexiones implicaron nuevoscambios en la estandarizaciónde los artículos y los datos.Pronto esto implicaría cambiosen los procesos de negocios.

Bienes Fabricados - DatosEstructurados A inicios del siglo XVIII losbienes se hacían a mano. Losensamblados se creaban"haciendo ajustes". Si una llaveno encajaba en la cerradura, seajustaba la cerradura de algunamanera para que permita elpaso de la llave. Pioneros comoHonore LeBlanc y Eli Whitneypropusieron la idea de crearpartes estandarizadas en elproceso de manufactura. Alestablecer controles severossobre la especificación yproducción de las partescomponentes, se pudieronrealizar masivas producciones detodo tipo de artículos. Sinembargo, esta era unaestandarización hacia dentro delas empresas. Pero para finalesdel siglo XVIII la idea ya se habíaexpandido entre los fabricantes yse produjeron todo tipo deestándares para las partescomunes. Había tamaños y

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

medidas para los artículos, conla expectativa de que aquellosproducidos por una fábricaserían intercambiables einteroperables con componentessimilares y complementariosproducidos por otra. Lascompañías que produjeron laspartes con un alto grado deprecisión tuvieron éxito; lo quetenían un proceso menosconsistente, fracasaron (VerFigura 7 y Figura 8):

Figura 7: Bienes fabricados. Volv

Hoy en día aún tenemosestructuras de datos noestandarizadas. Cada aplicaciónmodela la información a supropia manera y dependemosde operadores humanos para'ajustar' las aplicaciones y asílograr integrarlas. Es necesarioagregar semántica para hacerque las aplicaciones seentiendan. De la misma formacomo el mercado demandó quese pudieran intercambiarartículos a finales de los '80, elmismo demandará elintercambio de datos en unfuturo cercano. Esto significaestandarizar la funcionalidad deconceptos de negocio como un'cliente' o una 'orden decompra'. Las organizaciones queno se percaten de las eficienciasde la integración-por-diseñoperderán a la larga frente a losque persigan estas eficiencias. El

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

resultado de este cambio seráun boom económico para lascompañías que sobrevivan a él yun dramático mejoramiento parael diario vivir de las personas.

Ensamblados Fabricados -Empresas Virtuales La mayoría de los fabricantes debicicletas no producen llantas, dela misma forma como quieneshacen camisas no producen suspropios botones. Al crearensamblados con los mejorescomponentes disponibles, losfabricantes de bicicletas puedencrear productos más sofisticadosy de mayor calidad. Lacompetencia entre fabricantes decomponentes conlleva eficienciasy mejoras en la calidad. Paralograr esto, necesitanespecificaciones detalladas de laspartes componentes, así comodeben también considerar elcontexto en el que cada parteserá usada. Las compañías dehoy en día están 'creandoensamblados' de sufuncionalidad de negocios (VerFigura 9). En lugar de crear undepartamento de distribución yentrega, el trabajo se entregacomo outsourcing. En lugar defabricar el producto, se delega laconstrucción del mismo a unacompañía que se especialice enproducción de bajo costo y altacalidad. La definición de'compañía' evoluciona (VerFigura 10):

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Figura 9: Ensamblados fabricad texto.

Las comunicaciones de altavelocidad e informaciónestructurada ofrecen beneficiossimilares, produciendo lavirtualización de lasorganizaciones. Se puede crearun modelo de componentes denegocio definiendo claramentela semántica y requerimientosoperacionales de nuestrascapacidades de negocios. Aldefinir interfaces claras, se puedeencapsular los detalles de cómoestas capacidades sonimplementadas y cadacomponente puede serorquestado como miembro decualquier número de procesos.Se pueden incluso crearproveedores especializados queofrezcan servicios de marketing,ventas, producción, recursoshumanos, etc. Para lograr esto,se necesitan especificacionesdetalladas de las capacidades delos componentes. Así, conestándares, se puede lograr lacomposición de cualquier cosa,porque los proveedores decomponentes pueden manejar elcosto de optimización a travésde mercados amplios y lacompetencia conlleva cada vezmayores eficiencias.

Comercialización yDistribución - Procesos deNegocio A finales del siglo XIX los centrosde comercio urbanos se habíandesarrollado. Los bienes sehabían vuelto más sofisticados ylas opciones del consumidorhabían aumentado. Sinembargo, el ir de compras eraalgo tedioso. Un día de compraspodía implicar el tomar el trenhacia la ciudad, luego ir dondeel carnicero y luego donde elpanadero, pasar comprando las

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

verduras y por último una vueltapor la farmacia. Sin embargo,muy pronto la estandarizaciónde los tamaños redujosignificativamente el costo demuchos bienes permitiendo laproducción masiva y la habilidadde transportar bienes aubicaciones centrales para laventa y dieron origen a loscentros comerciales y elsupermercado. Así por ejemplo,Wal-Mart logró nuevaseficiencias al hacer primar elpoder del comercio sobre losfabricantes. Wal-Mart logróproveer de una experiencia decompras placentera, de bajocosto y centralizada en un solopunto (Ver Figura 11):

Figura 11: Comercialización y d al texto.

Examinando la situación actualde los procesos de negocios,podemos observar dos tipos deintegración. Una de ellas se basasimplemente en enviar un fax yesperar que el mismo haya sidorecibido y que tal vez nosrespondan. Otra técnica quereduce errores es la conocidaintegración ALT-TAB, la cualpermite el uso del porta papelespara copiar datos entreaplicaciones. Pero si se quierehacer algo realmente mejor, senecesita lograr el intercambio yestandarización de datos yoperaciones. Los procesos de

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

negocios aún son hechos amano y los estándares son muypobres. En lo futuro, losprocesos de negocios creceránpara ser la fuerza que le dé laforma y defina los estándarespara las nuevas aplicaciones, dela misma forma como Wal-Martimpone los estándares paracientos y miles de artículos (VerFigura 12).

Principio de la página

4. Industrialización delSoftware a través de laPlataforma .netLa Plataforma .net representauna nueva etapa en la evoluciónde COM, la plataforma decomponentes de Microsoft. Conella, Microsoft impulsa la idea de'industrializar' el softwareutilizando tecnologías decomponentes (5) .

Las tecnologías COM y CORBA,equivalentes a la era industrialtemprana, han logrado producirpartes intercambiables básicas. Elmayor avance de la Plataforma.net es la implementación de laparte intercambiable de softwareen la herramienta de desarrollomisma, de manera que cada'parte' de software creada es uncomponente intercambiable. Estees un avance equivalente a laetapa de 'línea de ensamblaje'de la industrialización. Laplataforma en sí es análoga auna industria de creación deherramientas, la cual entrega alos vendedores de softwareambientes especializados dedesarrollo, conocidos tambiéncomo 'fábricas' para elensamblaje eficiente de'máquinas de software' basadasen servicios Web.

La tecnología de metadatos delLenguaje Intermedio (IL) de .net,a través de la cual un

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

compilador automáticamentecrea un 'plano' de la interacciónde componentes en 'assemblies',nos recuerda las líneas deensamblaje recientes, donde launidad que está siendoensamblada lleva consigo lasinstrucciones para su creación.Clemens Szyperski (6) ,arquitecto experimentado deMicrosoft, confirma estaanalogía:

El construir softwareensamblando componentesconlleva grandes promesas parala ingeniería de software de lanueva generación. Yo iría másallá y aseguraría que no sepuede hablar de ingeniería antesde haber dominado este paso ...Si no, se está hablando de hacerlas cosas a mano, algo similar ala manufactura temprana previaa la Revolución Industrial. Asíque, es claro que deberíamosempezar a construir softwarebasado en componentes.

Estos 'planos' conocidos comometadatos representan lainterfaz del componente, laclave para el intercambio einteroperabilidad, en términos deun 'contrato' que la interfaz hacecon su infraestructura. Loslenguajes de definición decontratos están en el límite de laciencia de las computadoras.

Así, la plataforma .net seconvierte en unaimplementación ejemplar que yaes parte de la RevoluciónIndustrial del Software que nosmencionaba Bill Gates (7) hacevarios años ya:

... La Revolución Industrial delsoftware está finalmente antenosotros. La especialización derecursos, estándares para partesintercambiables, y herramientasde ensamblaje de última

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

generación han sido usadas enotras industrias por cientos deaños para acelerar el desarrollode productos altamentecomplejos. A pesar de suubicuidad, la aplicación de estosconceptos a la industriamoderna del software solamenteha empezando.

Principio de la página

5. Fábricas de Software:el Nuevo ParadigmaLas Fábricas de Software sonuna iniciativa propuesta porMicrosoft que plasma lanecesidad y provee de losmedios para hacer la transicióndesde el 'hacer a mano' hacia lafabricación o manufactura. En sí,una Fábrica de Software es unambiente de desarrolloconfigurado para soportar eldesarrollo acelerado de un tipoespecífico de aplicación. LasFábricas de Software no son másque el siguiente paso lógico enla evolución continua de losmétodos y prácticas dedesarrollo de software; sinembargo, prometen cambiar elcarácter de la industria desoftware introduciendo patronesde industrialización (8) .

¿Es posible automatizar eldesarrollo del software? Enrealidad, ya lo hemos hecho. Loseditores WYSIWYG por ejemplo,hacen mucho más fácil elconstruir y mantener interfacesgráficas de usuario, proveyendobeneficios como independenciade dispositivos y el ensamblajevisual. El diseño de base dedatos ofrece formas similares deautomatización. El temarecurrente que podemosobservar en la creación de estetipo de herramientas es el hechode pensar en modelos, más quesolamente en objetos (9) .

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Uno de los elementos clave deeste patrón es el elevar el nivelde abstracción de losdesarrolladores. Actualmenteusamos UML para ladocumentación. Sin embargo, loque buscamos hoy en día es laproductividad. Mientras losestereotipos y los tags puedenser usados para decorarmodelos UML, la experienciamuestra que se necesitancaracterísticas más precisas dellenguaje para soportarcompilación, depuración,pruebas y otros tipos de tareasde desarrollo.

Pero aún cuando los modelosjuegan un rol importante, no loson todo. Para llegar a nivelesmás altos de productividadnecesitamos la habilidad deconfigurar, adaptar y ensamblarrápidamente componentesdesarrolladosindependientemente,autodescriptivos eindependientes de ubicación,para producir así familias desistemas similares, perodiferentes. Para ello, seránecesaria la creación depatrones con dominio específico,frameworks y herramientas quese alineen tanto con laarquitectura del producto comocon el ciclo de vida delproducto. Más aún, debemosconsiderar los procesos queusamos para analizarrequerimientos, desarrollarsoftware y ponerlo enproducción. Necesitamosdisponer de las mejoresprácticas, contenido reutilizable ydistintos tipos de patrones. Laaplicación de todo esto enconjunto se conoce comoFábrica de Software.

Una fábrica de software es unalínea de producto que configuraherramientas de desarrollo

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

extensibles como MicrosoftVisual Studio Team System concontenido empaquetado y guías,cuidadosamente diseñadas paraconstruir tipos específicos deaplicaciones. Una fábrica desoftware contiene tres ideasbásicas:

Un esquema defabricación. La analogíade esto es una receta. Enella se listan ingredientes,como proyectos, códigofuente, directorios,archivos SQL y archivosde configuración, yexplica cómo deberíanser combinados paracrear el producto.Especifica qué Lenguajesde Dominio Específico(DSL) pueden ser usadosy describe cómo losmodelos basados enestos DSLs puedentransformarse en códigoy otros artefactos, o enotros modelos. Describela arquitectura de la líneade producto, y lasrelaciones clave entrecomponentes yframeworks que lacomponen.

Una plantilla de fábricade software. Esta es unagran bolsa desupermercado quecontiene los ingredienteslistados en la receta.Provee los patrones,guías, plantillas,frameworks, ejemplos,herramientaspersonalizadas comoherramientas para ediciónvisual de DSLs, scripts,XSDs, hojas de estilos, yotros ingredientes paraconstruir el producto.

Un ambiente de

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

desarrollo extensible.Un ambiente como VisualStudio Team System es lacocina en la cual lacomida es cocinada.Cuando se configura conuna plantilla de fábrica desoftware, Visual StudioTeam System se convierteen una fábrica desoftware para la familiade productos.

Si llevamos más allá la analogía,los productos son comocomidas servidas en unrestaurante. Los clientes de lafábrica de software son comolos clientes que ordenancomidas de un menú. Unaespecificación de producto escomo una orden de comidaespecífica. Los desarrolladoresdel producto son comococineros que preparan lascomidas descritas en lasórdenes, los cuales podríanmodificar las definiciones de lascomidas, o preparar comidasfuera del menú. Losdesarrolladores de la línea deproducto son como chefs quedeciden qué aparecerá en elmenú, y qué ingredientes,procesos, y equipo de cocina seusará para prepararlos.

Un ejemplo más concreto deluso de una fábrica de softwaresería el diseño de un esquemapara la construcción deaplicaciones de clientes livianospara comercio electrónicousando el Microsoft .netFramework, C#, el MicrosoftBusiness Framework, MicrosoftSQL Server, Microsoft BiztalkServer y el Microsoft HostIntegration Server - una familiaamplia pero muy útil deaplicaciones. Podríamos usareste esquema de fábrica desoftware para configurar Visual

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Studio Team System paraconvertirse en una fábrica desoftware que construyamiembros de esta familia.

Para este ejemplo, el esquemade software podría contener unDSL que representerequerimientos configurables, unDSL para describir procesos denegocios, un DSL para describirmodelos lógicos y físicos, un DSLpara describir la navegaciónWeb, y un DSL para describirentidades de negocio.Podríamos usar las característicasde extensibilidad de VisualStudio Team System parahostear una plantilla de fábricade software basada en esteesquema. En esa plantillaincluiríamos algunos bloques deaplicación liberados por el grupode Microsoft Patterns andPractices, políticas de check-inde Team Foundation Server,estructuras de proyecto, la guíade proceso de Microsoft SolutionFramework (MSF), entre otros.Con esta fábrica de software, elequipo de desarrollo podríarápidamente lanzar una variedadde aplicaciones de comercioelectrónico, cada unaconteniendo característicasúnicas basadas enrequerimientos únicos de clientesespecíficos.

Las fábricas de software sonposibles hoy en día yrepresentan el intento deaprender de otras industrias queencaran problemas similares, yaplican patrones específicos deautomatización a tareas dedesarrollo manual existentes. Lasfábricas de software vuelven másrápida, barata y fácil laconstrucción de aplicaciones,concretando así la visión de laindustrialización del softwaremoderno.

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

Principio de la página

6. ConclusiónTenemos la fortuna depresenciar el nacimiento de unanueva forma de hacer software,que traerá beneficios inmensospara todos. El desarrollo desoftware basado encomponentes desde siempre fuela idea revolucionaria que nosllevó a pensar que sí era posibleel construir software de calidaden corto tiempo y con la mismacalidad que la mayoría de lasindustrias de nuestro tiempo. Almirar hacia atrás, vemos losincreíbles avances que hemoslogrado en la comprensión de laforma correcta de reutilizar elsoftware y el conocimientoexistente, y nos asombramoscada vez más al darnos cuentade que este solo es el inicio.

El desarrollo de software basadode componentes se convirtió enel pilar de la RevoluciónIndustrial del Software y seproyecta hoy en día en diversasnuevas formas de hacer softwarede calidad con los costos másbajos del mercado y en tiemposque antes eran impensables.Empresas como Microsoftentendieron el potencial de estametodología hace años y hoynos ofrecen nuevas iniciativas yherramientas que buscan llevaral proceso de construcción desoftware hacia el sitialprivilegiado en el que debiócolocarse desde un principio.

(1) WebCab Components, AboutComponent Based Development,http://webcabcomponents.com/componentization.shtml. Volver altexto.

(2) ComponentSource, What arecomponents?,http://www.componentsource.com/Services/WhatAreComponents.asp?bhcp=1. Volver al texto.

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

(3) Pat Helland tiene 25 años deexperiencia en la industria delsoftware y ha sido arquitecto enMicrosoft desde 1994. Hatrabajado por más de 20 añosen bases de datos,procesamiento de transaccionesy sistemas distribuidos. Fue unode los fundadores del equipoque implementó y llevó almercado el MicrosoftTransaction Server (MTS), ahoraconocido como COM+. Volveral texto.

(4) Microsoft Architects Journal2, Metrópolis,http://msdn.microsoft.com/architecture/journ/default.aspx?pull=/library/en-us/dnmaj/html/aj2metrop.asp.Volver al texto.

(5) Components Online, .NETPlatform as ComponentInfrastructure, http://www.components-online.com/NETPlatform/default.htm. Volver al texto.

(6) Clemens Szyperski se unió aMicrosoft Research comoArquitecto de Software en 1999.Su enfoque está en el usoefectivo del softwre decomponentes para construirnuevos tipos de software. Sugalardonado libro "ComponentSoftware: Beyond Object-Oriented Programming" fuerevisado y extendido hacia unasegunda edición en el 2002. Haservido en numerosos comitésde programas, incluyendoECOOP, ESEC/FSE, ICSE, yOOPSLA y ha organizado varioseventos internacionales. Volver altexto.

(7) Bill Gates, Chairman y ChiefSoftware Architect de Microsoft.Dueño de uno de los imperiosde software más grandes que

Desarrollo de Software basado en Componentes

http://msdn.microsoft.com/es-es/library/bb972268.aspx[01/08/2013 05:46:41 p.m.]

© 2013 Microsoft. Reservados todos los derechos.

Administre su perfil | MSDN Flash en Español | Contacto | Aviso legal | Comentario del sitioTérminos de uso | Marcas Registradas | Privacidad y Cookies

jamás haya existido yprobablemente una de laspersonas más influyentes delmundo moderno, por sus ideasinnovadoras y altamenteacertadas, como aquella de 'uncomputador en cada hogar'. Elextracto presentado fue sacadode una publicación hecha en elaño de 1997. Volver al texto.

(8) Microsoft Architects Journal,The Case for Software Factories,http://msdn.microsoft.com/architecture/journ/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp.Volver al texto.

(9) Jack Greenfield,Industrializing SoftwareDevelopment,http://blogs.msdn.com/askburton/archive/2004/09/20/232065.aspx. Volver al texto.

Julio Casal Terreros esIngeniero de SistemasComputacionales de laUniversidad Católica de Santiagode Guayaquil. Es MicrosoftCertified Application Developer ytrabaja como Desarrollador deSoluciones .net.

Principio de la página

¿Te ha resultado útil? Sí

No