UNIVERSIDAD REGIONAL AUTONOMA DE LOS ANDES
UNIANDES
EXTENSIÓN SANTO DOMINGO FACULTAD SISTEMAS MERCANTILES CARRERA SISTEMAS MODULO INGENIERIA DE SOFTWARE II
TEMA: COMPONENTES DE SOFTWARE
AUTORES: BACHILLERCARLOS BACHILLERCARLOS ANCHUNDIA(I+D). TUTOR: ING. PATRICIO SILVA FECHA: 13 DE JUNIO DEL 2011
PERIODO MAYO - OCTUBRE 2011
1. INTRODUCCIÓN El desarrollo de software basado en componentes (DSBC), es una tecnología que está demostrando importantes ventajas en tiempo de desarrollo y reducción de costos en el proceso de desarrollo de software. Este proceso de industrialización ha dado ya sus inicios con implementaciones como la plataforma .net, la cual impulsa la idea de industrializar el software utilizando tecnologías de componentes. Convirtiendo a los componentes .net en verdaderas piezas de ensamblaje, en un estilo muy similar a las líneas de ensamblaje modernas. Asimismo, los nuevos paradigmas como las Fábricas de Software proveen de los medios para hacer la transición desde el 'hacer a mano' hacia la fabricación o manufactura de software. Esta tecnología motiva a la reutilización de componentes de software previamente elaborados, estructurados y funcionales en lugar de crear nuevos elementos para realizar las mismas tareas. Lo que conlleva diversos beneficios tales como mejora en la calidad, una reducción considerable del ciclo de desarrollo y un mayor retorno sobre la inversión
2. OBJETIVOS 2.1. GENERAL Investigar y desarrollar acerca de los componentes de software
2.2. ESPECIFICOS a) Comprender el concepto de un componente de software b) Estudiar los nuevos modelos de desarrollo de software y la importancia de los componentes y servicios software.
3.
FUNDAMENTACIÓN CIENTIFICA COMPONENTES DE SOFTWARE
Los componentes de software o Desarrollo de software basados en componentes (DSBC) buscan, reducir el tiempo de trabajo, el esfuerzo que requiere implementar una aplicación, los costos del proyecto, entre otras cosas para de esta forma incrementar el nivel de productividad de los grupos desarrolladores y minimizar los riesgos globales sin incurrir en gastos exorbitantes. De esta manera, las pequeñas empresas pueden tener una mayor confiabilidad a la hora de realizar una inversión tecnológica. Otra ventaja es poder integrar lo mejor de las tecnologías
para
desarrollar una aplicación de manera personalizada, a la medida de las necesidades de los clientes. Esto permite a los desarrolladores y a la empresa adquirir las tecnologías que más se adapten a sus necesidades, y no realizar gastos de licenciamiento o soporte y actualización de las grandes soluciones, ya que muchas
de estas tecnologías son gratis y existen
bajo la premisa de
Freeware y GNU (General PublicLicense), lo cual añade otra gran ventaja.
DEFINICIONES Existen varias definiciones de componentes, complementarias entre sí, de las cuales vamos a tomar 2 de las más importantes Un componente es una parte no trivial, casi independiente, y reemplazable de un sistema que llena claramente una funcionalidad dentro de un contexto en una arquitectura bien definida. Un componente se conforma y provee la realización física por medio de un conjunto de interfaces. Un componente de software en tiempo de ejecución es un paquete dinámicamente vinculado con uno o varios programas manejados como una unidad y que son accedidos mediante interfaces bien documentadas que pueden ser descubiertos en tiempo de ejecución.
CARACTERISTICAS: Las anteriores definiciones permiten una comprensión más precisa de los que es un componente, pero es necesario precisar cuáles son sus características, las cuales permiten junto con las definiciones anteriores, conformar un conjunto de componentes de particularidades bien definidas
Identificable: Debe tener una identificación que permita acceder fácilmente a sus servicios y que permita su clasificación.
Autocontenido: Un componente no debe requerir de la utilización de otros para finiquitar la función para la cual fue diseñado.
Puede ser remplazado por otro componente: Se puede remplazar por nuevas versiones u otro componente que lo remplace y mejore.
Con acceso solamente a través de su interfaz: Debe asegurar que estas no cambiaran a lo largo de su implementación.
Sus servicios no varían: Las funcionalidades ofrecidas en su interfaz no deben variar, pero su implementación sí.
Bien Documentado: Un componente debe estar correctamente documentado para facilitar su búsqueda si se quiere actualizar, integrar con otros, adaptarlo, etc.
Es genérico: Sus servicios debe servir para varias aplicaciones. Reutilizado dinámicamente : Puede ser cargado en tiempo de ejecución en una aplicación.
Independiente de la plataforma: Hardware, Software, S.O. certificado: el componente puede ser certificado por una agencia de software independiente o mediante la aplicación de modelos de auto-certificación que le permiten al comprador del componente determinar la calidad del software adquirid
mantenido: es deseable que un componente (como toda pieza de software) esté inmerso en un proceso de mejoramiento continuo que le garantice al integrador nuevas
versiones
que
incluyan
correctivos,
optimizaciones
y
nuevas
características. Esto contribuye a que dicho componente sea seleccionado con mayor frecuencia
Fuente: http://pegasus.javeriana.edu.co/~jcpymes/Docs/Articulo.pdf
PERSPECTIVAS DE VIAVILIDAD Existen ya varios modelos que permiten entender los componentes de software, para poder encontrar los componentes que determinada aplicación necesita. Uno de estos modelos desarrollado por AnnelieseAndrews y SudiptoGhosh , en Colorado StateUniversity, plantéa la posibilidad de entender un componente por medio de tres perspectivas, estas son:
El
Dominio : Representa en términos generales todos los aspectos del
problema el usuario relacionado de forma directa con la funcionalidad que apoya el componente.
Programa :Este enfoque es el que más varia de componente a componente, ya que muestra en forma más detallada la información técnica del componente como la estructura de los archivos de información, definiciones de las bases de datos, la definición de la Interface de datos, los tipos de parámetros, información acerca de la invocación de los métodos del componente, etc.
Situación: En este punto ³El conocimiento del diseño y comportamiento de las entidades necesita ser especificado´[10], la información que se determina en este punto es útil para igualar los requerimientos con las capacidades funcionales y no funcionales del componente; aquí se deben determinar aspectos como: Estructura de la arquitectura física y conceptual, flujos de Información que el componente transfiere, usa y transforma y tipos de algoritmos. Ya fueron presentados los
términos: la definición de componente, sus características y las variables por la cuales puede ser comprendido un componente. Fuente: http://dis.um.es/~jsaez/dbc/curso1011/docs/art03_DSBC.pdf
4.
DESARROLLO
El objetivo de la tecnología de componentes software es construir aplicaciones complejasmediante ensamblado de módulos ( componentes ) que han sido previamente diseñados porotras personas a fin de ser reusados en múltiples aplicaciones . La ingeniería de programaciónque sigue esta estrategia de diseño se la conoce por el acrónimo CBSE y es actualmente unade las más prometedoras para incrementar la calidad del software, abreviar los tiempos deacceso al mercado y gestionar el contínuo incremento de su complejidad. La arquitectura software de una aplicación basada en componentes consiste en uno o unnúmero pequeño de componentes específicos de la aplicación ( que se diseñan específicamentepara ella ), que hacen uso de otros muchos componentes prefabricados que se ensamblan entresí para proporcionar los servicios que se necesitan en la aplicación
En la tecnología de componentes la interfaz constituye el elemento básico deinterconectividad. Cada componente debe describir de forma completa las interfaces que ofrece,así como las interfaces que requiere para su operación. Y debe operar correctamente conindependencia de los mecanismos internos que utilice para soportar la funcionalidad de lainterfaz.
BENEFICIOS DEL DESARROLLO DE SOFTWARE BASADO EN COMPONENTES El paradigma de ensamblar componentes y escribir código para hacer que estos componentes funcionen se conoce como Desarrollo de Software Basado en Componentes. El uso de este paradigma posee algunas ventajas:
Reutilización del software. Nos lleva a alcanzar un mayor nivel de reutilización de software.
Simplifica las pruebas . Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el conjunto completo de componentes ensamblados.
Simplifica el mantenimiento del sistema. Cuando existe un débil acoplamiento entre componentes, el desarrollador es libre de actualizar y/o agregar componentes según sea necesario, sin afectar otras partes del sistema.
Mayor calidad. Dado que un componente puede ser construido y luego mejorado continuamente por un experto u organización, la calidad de una aplicación basada en componentes mejorará con el paso del tiempo. De la misma manera, el optar por comprar componentes de terceros en lugar de desarrollarlos, posee algunas ventajas:
Ciclos de desarrollo más cortos. La adición de una pieza dada de funcionalidad tomará días en lugar de meses o años.
Mejor ROI. Usando correctamente esta estrategia, el retorno sobre la inversión puede ser más favorable que desarrollando los componentes uno mismo.
Funcionalidad mejorada. Para usar un componente que contenga una pieza de funcionalidad, solo se necesita entender su naturaleza, más no sus detalles internos. Así, una funcionalidad que sería impráctica de implementar en la empresa, se vuelve ahora completamente asequible.
5.
CONCLUSIONES
Esta nueva tecnología para realizar software nos brinda grandes beneficios a la hora de desarrollarlos. Permite a los desarrolladores de software elaborar sistemas de mayor calidad en periodo menor de tiempo El desarrollo de software basado de componentes se ha convertido en un elemento muy importante dentro de la revolución industrial del software y se proyecta hoy en día en diversas nuevas formas de hacer software de calidad con los costos más bajos del mercado y en periodos de tiempo relativamente menores que antes.
6.
BIBLIOGRAFIA
Msdn. (s.f.). Desarrollo de Software basado en Componentes. Recuperado el 10 de Junio de 2011, de Desarrollo de Software basado en Componentes: http://msdn.microsoft.com/eses/library/bb972268.aspx Scribd. (s.f.). Modelo basado en componentes. Recuperado el 10 de Junio de 2011, de M odelo Basado en componentes: http://es.scribd.com/doc/53039789/MODELO-BASADO-ENCOMPONENTES Sommerville, I. (2005). Ingeniería de software. Pearson Educación.