Está en la página 1de 6

Ingeniera de software basada en componentes

Los componentes pueden producir o consumir eventos


y pueden ser usados para las arquitecturas dirigida por
eventos (EDA).

Checkout

1 Denicin y las caractersticas de


los componentes
Un componente de software individual es un paquete de
software, un servicio web, o un mdulo que encapsula un
conjunto de funciones relacionadas (o de datos).
Todos los procesos del sistema son colocados en componentes separados de tal manera que todos los datos y funciones dentro de cada componente estn semnticamente
relacionados (justo como con el contenimiento de clases).
Debido a este principio, con frecuencia se dice que los
componentes son modulares y cohesivos.

CardProcessing

Con respecto a la coordinacin a lo largo del sistema, los


componentes se comunican uno con el otro por medio
de interfaces. Cuando un componente ofrece servicios al
resto del sistema, ste adopta una interface proporcionada
que especica los servicios que otros componentes pueden utilizar, y cmo pueden hacerlo. Esta interface puede ser vista como una rma del componente - el cliente no necesita saber sobre los funcionamientos internos
del componente (su implementacin) para hacer uso de
ella. Este principio resulta en componentes referidos como encapsulados. Las ilustraciones UML de este artculo
representan a las interfaces proporcionadas, con un smbolo lollipop unido al borde externo del componente.

Un simple ejemplo de dos componentes expresado en UML 2.0.


El componente Checkout (comprobacin), responsable de facilitar los pedidos del cliente, requiere al componente CardProcessing (procesador de tarjetas) para cargar el monto a la tarjeta de
crdito/dbito del cliente (funcionalidad que este ltimo provee).

La ingeniera de software basada en componentes


(CBSE) (tambin conocida como desarrollo basado en
componentes (CBD)) es una rama de la ingeniera de
software que enfatiza la separacin de asuntos (separation
of concerns (SoC)) por lo que se reere a la funcionalidad de amplio rango disponible a travs de un sistema de
software dado. Es un acercamiento basado en la reutilizacin para denir, implementar, y componer componentes
dbilmente acoplados en sistemas. Esta prctica persigue
un amplio grado de benecios tanto en el corto como el
largo plazo, para el software en s mismo y para las organizaciones que patrocinan tal software.

Sin embargo, cuando un componente necesita usar otro


componente para poder funcionar, adopta una interface
usada que especica los servicios que necesita. En las
ilustraciones de UML en este artculo, las interfaces usadas son representadas por un smbolo de zcalo abierto
unido al borde externo del componente.

Otro atributo importante de los componentes es que son


sustituibles, as que un componente puede sustituir a otro
(en tiempo de diseo o tiempo de ejecucin), si el compoLos ingenieros de software consideran los componentes nente sucesor cumple los requisitos del componente inicomo parte de la plataforma inicial para la orientacin cial (expresado por medio de las interfaces). Por lo tanto,
a servicios. Los componentes juegan este rol, por ejem- los componentes pueden ser sustituidos por una versin
plo, en servicios de web y, ms recientemente, en las actualizada o una alternativa sin romper el sistema en el
arquitecturas orientadas a servicios (SOA), por el que un cual operan.
componente es convertido por el servicio web en un servi- Como una regla de oro general para los ingenieros que
cio y consiguientemente hereda otras caractersticas ms sustituyen componentes, el componente B puede sustiall de las de un componente ordinario.
tuir inmediatamente al componente A, si el componente
1

DIFERENCIAS CON LA PROGRAMACIN ORIENTADA A OBJETOS


rutinariamente crearon programas de aplicacin a partir
de mdulos reusables escritos en ensamblador, COBOL,
PL/1 y otros lenguajes de segunda y tercera generacin,
usando bibliotecas de aplicacin tanto de sistema como
de usuario.

Un simple ejemplo de varios componentes de software - representados dentro de un hipottico sistema de reservaciones de das de
esta representado en UML 2.0.

B proporciona por lo menos que el componente A provee


y no usa ms cosas que las que el componente A usa.
Los componentes de software con frecuencia toman la
forma de objetos (no clases) o de colecciones de objetos
(de la programacin orientada a objetos), en una cierta
forma binaria o textual, adhirindose a un cierto lenguaje
de descripcin de interface (IDL) de modo que el componente pueda existir autnomo de otros componentes en
una computadora.
Cuando un componente debe ser accesado o compartido
a travs de contextos de ejecucin o enlaces de red, a menudo son empleados tcnicas tales como serializacin o
marshalling para enviar el componente a su destino.

Por 2010, los componentes reusables modernos encapsulan las estructuras de datos y los algoritmos que son
aplicados a las estructuras de datos. Esto [claricacin
necesaria] se basa en teoras anteriores a los objetos,
arquitecturas, frameworks y patrones de diseo de software, y la extensa teora de la programacin orientada
a objetos y el diseo orientado a objetos de todos stos.
Arma que los componentes de software, como la idea de
componentes de hardware, usados, por ejemplo, en telecomunicaciones, pueden en ltima instancia ser hechos
intercambiables y conables. Por otro lado, se argumenta
que es un error enfocarse en componentes independientes en vez del framework (sin el cual el componente no
existira).[1]

2 Historia
La idea de que el software deba estar componentizado
- construido de componentes prefabricados - por primera vez lleg a ser prominente con el discurso de Douglas
McIlroy en la conferencia de la OTAN sobre la ingeniera
de software en Garmisch, Alemania, 1968, titulado Mass
Produced Software Components (componentes de software producidos en masa).[2] La conferencia se propuso para hacer frente la llamada crisis del software. La inclusin
subsecuente de McIlroy de tuberas y ltros en el sistema
operativo Unix fue la primera implementacin de una infraestructura para esta idea.

La reusabilidad es una importante caracterstica de un


componente de software de alta calidad. Los programadores deben disear e implementar componentes de software de una manera tal que diversos programas puedan
reutilizarlos. Adems, cuando los componentes de software interactan directamente con los usuarios, debe ser
considerada la prueba de usabilidad basada en componentes.
Brad Cox de Stepstone en gran parte deni el concep[3]
Toma un signicativo esfuerzo y conciencia para escribir to moderno de un componente de software. Los llam
un componente de software que sea efectivamente reuti- Software ICs y precis crear una infraestructura y un mercado para estos componentes inventando el lenguaje de
lizable. El componente necesita estar:
programacin Objective-C. l sumariza esta visin en su
libro de 1986 Object-Oriented Programming - An Evolu completamente documentado
tionary Approach (Programacin orientada a objetos - Un
acercamiento evolutivo).
probado a fondo
robusto - con una comprensiva comprobacin A principio de los 1990, IBM encabez esta trayectoria con su System Object Model (SOM). Como reacpara la validez de la entrada
cin, Microsoft paviment la va para el despliegue real
capaz de devolver mensajes de error apropia- de componentes de software con OLE y COM.[4] Por
dos o cdigos de retorno
2010 existen muchos modelos exitosos de componentes
diseado con conciencia de que ser puesto en de software.
usos imprevistos
En los aos 1960, los programadores construyeron bi- 3 Diferencias con la programacin
bliotecas de subrutinas cientcas que eran reusables en
orientada a objetos
un amplio arreglo de aplicaciones de ingeniera y cientcas. Aunque estas bibliotecas de subrutinas reusaban
algoritmos bien denidos de una manera efectiva, tenan Los que proponen la programacin orientada a objetos
un limitado dominio de aplicacin. Los sitios comerciales (OOP) mantienen 2 posiciones diferentes para modelar

3
el software:

computacin distribuida. La usual aplicacin del mundo


1) que el software debe ser escrito segn un modelo men- real de esto es por ejemplo el software de aplicaciones o
tal de los objetos reales o imaginarios que representan. La de negocios.
OOP y las disciplinas relacionadas de anlisis orientado a
objetos y el diseo orientado a objetos estn enfocados en
el modelado de interacciones del mundo real [cita requerida] 5 Modelos
e intentan identcar los sustantivos y los verbos en
las reuniones de levantamiento de requerimientos, para Un modelo de componentes es una denicin de estnesos conceptos sean programados directamente en cla- dares para la implementacin, documentacin y el desses y mtodos, que pueden ser usados en ms formas hu- pliegue de componentes. Ejemplos de modelos de commanamente legibles, idealmente por los usuarios nales ponentes son: el modelo Enterprise Java Beans (EJB), el
as como por los programadores que codican para esos modelo COM+ (modelo .NET), el modelo de componenusuarios nales. Esta manera de pensar acerca de la OOP tes Corba. El modelo de componentes especica como
es ms bien una ilusin, histricamente no ha dado bue- deben ser denidas las interfaces y los elementos que denos resultados.
ben ser incluidos en una denicin de interface.[7]
2) que primero debe realizarse un levantamiento de requerimientos con los stakeholders (clientes, usuarios nales, etc.) y que luego debe modelarse el sistema en casos de uso de negocio que luego son divididos en casos
de uso de usuario, que son directamente implementables
en 3 capas: objetos visuales de presentacin, objetos de
servicios y objetos de persistencia, pudiendo haber ms
capas dependiendo de las necesidades de la aplicacin.
Por contraste, la ingeniera de software basado en componentes no hace tal asuncin, y en lugar ello expresa que
los desarrolladores deben construir el software pegando
entre s componentes prefabricados - como en los campos de la electrnica o la mecnica. Algunos pares[quin?]
incluso hablan de sistemas modularizados como componentes de software como un nuevo paradigma de programacin.
Algunos[quin?] argumentan que los cientcos de la
computacin tempranos hicieron esta distincin, con la
teora de la programacin literaria de Donald Knuth asumiendo optimisticamente que haba una convergencia entre los modelos intuitivo y formales, y la teora de Edsger
Dijkstra en el artculo The Cruelty of Really Teaching
Computer Science (la crueldad de realmente ensear ciencias de la computacin), que indicaba que la programacin era simplemente, y solamente, una rama de las
matemticas.[5][6]
En ambas formas, esta nocin ha llevado a muchos debates acadmicos [palabras de comadreja] sobre los pros
y los contra de los dos acercamientos y de las posibles
estrategias para unir los dos. Algunos[quin?] consideran
las diversas estrategias no como competidoras, sino como
descripciones del mismo problema desde diversos puntos
de vista. [cita requerida]

Arquitectura

Un computador corriendo varios componentes de software con frecuencia es llamado un servidor de aplicaciones. Usando esta combinacin de servidores de aplicaciones y componentes de software es usualmente llamado

6 Tecnologas
Tecnologas de Objeto de negocio
Newi
Frameworks basados en componentes para dominios especcos
Earth System Modeling Framework (ESMF)
Programacin orientada a componentes
Paquetes denidos por la plataforma de servicios OSGi
Common Component Architecture (CCA) Foro de arquitectura de componentes comunes, Software de componentes cientco/HPC
TASCS - SciDAC Center for Technology
for Advanced Scientic Component Software
(Centro para la Tecnologa para el Avance del
Software Cientco de Componentes)
Lenguaje de programacin Eiel
Enterprise JavaBeans de Sun Microsystems
(ahora Oracle)
Programacin basada en ujos
Modelo de componentes fractal de ObjectWeb
Framework de componentes MidCOM de
Midgard y PHP
Oberon, Component Pascal, y BlackBox
Component Builder
rCOS Mtodo de diseo de manejo de modelo
basado en componentes diseado desde UNUIIST
SOFA component system de ObjectWeb
El
espacio
de
tem.ComponentModel
.NET

nombres
Sysen el Microsoft

8
Unity3D desarrollado por Unity Technologies
UNO de la suite de ocina OpenOce.org
Visual Component Library (VCL) y
Component Library for Cross Platform
(CLX) de Borland y la biblioteca libre similar
LCL de Lazarus.
Visual Basic Extension, OCX/ActiveX/COM
y DCOM de Microsoft
XPCOM de Mozilla Foundation

REFERENCIAS

SIDL - Scientic Interface Denition Language


Algunas partes del lenguaje de Babel. Sistema de interoperabilidad de lenguaje de
programacin cientca (SIDL y Babel
son tecnologa nucleo de CCA y SciDAC
TASCS Center - ver arriba.)
SOAP IDL del World Wide Web Consortium
(W3C)
WDDX

Tecnologas de documentos compuestos

XML-RPC, el predecesor de SOAP

Active Documents en Oberon System y


BlackBox Component Builder

Componentes de frameworks Inversion of Control


(IoC) y Plain Old C++/Java Object (POCO/POJO)

Bonobo (component model), una parte de


GNOME

Tuberas y ltros
Unix sistema operativo

Fresco
KPart, la tecnologa de documentos compuestos de KDE
Object linking and embedding (OLE)
OpenDoc
Componentes de software de computacin distribuida
.NET Remoting de Microsoft
9P Protocolo distribuido desarrollado por Plan
9, y usado por Inferno y otros sistemas.
CORBA y el CORBA Component Model del
Object Management Group
D-Bus de la organizacin freedesktop.org
DCOP de KDE (obsoleto)
DCOM and later versions of COM (and
COM+) from Microsoft
DSOM y el IBM System Object Model de
IBM (ahora deshechado)
ICE de ZeroC
Java EE de Sun
Universal Network
OpenOce.org

Objects

(UNO)

de

Servicios web

7 Lectura adicional
Brad J. Cox, Andrew J. Novobilski (1991). ObjectOriented Programming: An Evolutionary Approach.
2nd ed. Addison-Wesley, Reading ISBN 0-20154834-8
Bertrand Meyer (1997). Object-Oriented Software
Construction. 2nd ed. Prentice Hall.
George T. Heineman, William T. Councill (2001).
Component-Based Software Engineering: Putting
the Pieces Together. Addison-Wesley Professional,
Reading 2001 ISBN 0-201-70485-4
Richard Veryard (2001). Component-based business
: plug and play. London : Springer. ISBN 1-85233361-8
Clemens Szyperski (2002). Component Software: Beyond Object-Oriented Programming. 2nd ed.
Addison-Wesley Professional, Boston ISBN 0-20174572-0
David Polberger (2009). Component technology in
an embedded system. Masters thesis in computer
science, available online. ISSN 1651-6389

Representational State Transfer


Zope de Zope Corporation
La programacin gentica enfatiza la separacin de
algoritmos de la representacin de datos
Lenguajes de descripcin de interfaces (IDLs)
Open Service Interface Denitions (OSIDs)
Algunas partes de COM y de CORBA
Platform-Independent Component Modeling
Language

8 Referencias
[1] Wallace, Bruce (19 de mayo de 2010). A hole for every
component, and every component in its hole. Existential
Programming. There is no such thing as a Component.
[2] McIlroy, Malcolm Douglas (January 1969). Mass produced software components. Software Engineering: Report
of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientic Affairs Division, NATO. p. 79.

[3] Rainer Niekamp. Software Component Architecture.


Gestin de Congresos - CIMNE/Institute for Scientic
Computing, TU Braunschweig. p. 4. Consultado el 29-072011. The modern concept of a software component largely dened by Brad Cox of Stepstone, => Objective-C
programming language.
[4] Raphael Gfeller (9 de diciembre de 2008). Upgrading
of component-based application. HSR - Hochschule fr
Technik Rapperswill. p. 4. Consultado el 29-07-2011.
1990, IBM invents their System Object Model. 1990,
as a reaction, Microsoft released OLE 1.0 OLE custom
controls (OCX).
[5] Dijkstra, Wybe Edsger. Encyclopedia.com. Consultado
el 29-07-2011. In his view, the key to a good computing
science program was to consider it as a branch of mathematics.
[6] Donald E. Knuth (September 1983). Literate Programming. Literate Programming/The Computer Journal. p.
15. Consultado el 29-07-2011. Thus, WEB may be only
for the subset of computer scientists who like to write and
to explain what they are doing. My hope is that the ability
to make explanations more natural will cause more programmers to discover the joys of literate programming,
because I believe its quite a pleasure to combine verbal
and mathematical skills; but perhaps Im hoping for too
much. The fact that at least one paper has been written
that is a syntactically correct ALGOL 68 program22 encourages me to persevere in my hopes for the future. Perhaps we will even one day nd Pulitzer prizes awarded to
computer programs.
[7] http://www.comp.lancs.ac.uk/computing/resources/
IanS/SE7/Presentations/PDF/Ch19.pdf

Vase tambin
Programacin orientada a componentes
Componente de software
Lgica de negocio
Programacin modular
Servicio web

10

Enlaces externos

Planning the Software Industrial Revolution The history of manufacturing vs software compared.
The independence of notion of componentorientation.
Coxs feasibility demonstration of a usage-based mechanism for incentivizing component producers.
Why Software Reuse has Failed and How to Make It
Work for You by Douglas C. Schmidt

New proposals to explore the Component properties: (i) Reuse and (ii) Replaceable
Dynamically Self Conguring Automotive System
New proposal for exploring a kind of CBSE comparable to the CBE
comprehensive list of Component Systems on
SourceForge

11

11
11.1

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Text and image sources, contributors, and licenses


Text

Ingeniera de software basada en componentes Fuente: http://es.wikipedia.org/wiki/Ingenier%C3%ADa%20de%20software%


20basada%20en%20componentes?oldid=78346572 Colaboradores: GermanX, Jesuja, CommonsDelinker, Jkbw, Invadibot, Addbot y
Annimos: 3

11.2

Images

Archivo:Component-based-Software-Engineering-example2.png Fuente: http://upload.wikimedia.org/wikipedia/commons/8/83/


Component-based-Software-Engineering-example2.png Licencia: Public domain Colaboradores: Trabajo propio (Texto original: I
created this work entirely by myself.) Artista original: Cmendes de Wikipedia en ingls
Archivo:Component-based_Software_Engineering_(CBSE)_-_example_1.svg Fuente: http://upload.wikimedia.org/wikipedia/
commons/4/4f/Component-based_Software_Engineering_%28CBSE%29_-_example_1.svg Licencia: Public domain Colaboradores: I
created this work entirely by myself. Artista original: Cmendes (talk) at en.wikipedia.org

11.3

Content license

Creative Commons Attribution-Share Alike 3.0

También podría gustarte