Ingeniería de software basada en componentes

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Ejemplo de dos componentes expresados en UML 2.0. El componente de checkout, responsable de facilitar el pedido del cliente, Requisitos el componente de procesamiento de tarjetas para cobrar la tarjeta de crédito/debito del cliente (funcionalidad que este último Prestaciones).

Ingeniería de software basada en componentes (CBSE), también llamada desarrollo basado en componentes (CBD), Es un estilo de ingeniería de software que tiene como objetivo construir software a partir de componentes modulares débilmente acoplados. Enfatiza la separación de preocupaciones entre las diferentes partes de un sistema de software.

Definición y características de los componentes

Un componente de software individual es un paquete de software, servicio web, recurso web o módulo que encapsula un conjunto de funciones o datos relacionados.

Los componentes se comunican entre sí a través de interfaces. Cada componente proporciona una interfaz (llamada interfaz proporcionada) a través de la cual otros componentes pueden utilizarlo. Cuando un componente utiliza la interfaz de otro componente, esa interfaz se denomina interfaz usada.

En las ilustraciones de UML de este artículo, las interfaces proporcionadas están representadas por símbolos de paleta, mientras que las interfaces utilizadas están representadas por símbolos de socket abierto.

Un ejemplo simple de varios componentes de software - imaginado dentro de un sistema hipotético de reserva de vacaciones representado en UML 2.0

Los componentes deben ser sustituibles, lo que significa que un componente debe ser reemplazable por otro que tenga las mismas interfaces sin dañar el resto del sistema.

Los componentes deben ser reutilizables.

Se deben considerar las pruebas de usabilidad basadas en componentes cuando los componentes de software interactúan directamente con los usuarios.

Los componentes deben ser:

  • plenamente documentado
  • probado a fondo
    • robusto - con comprobación integral de la valididad de entrada
    • capaz de transmitir mensajes de error apropiados o códigos de devolución

Historia

La idea de que el software debería componerse, o construirse a partir de componentes prefabricados, se hizo prominente por primera vez con el discurso de Douglas McIlroy en la conferencia de la OTAN sobre ingeniería de software en Garmisch, Alemania, 1968, titulado Componentes de software producidos en masa. . La conferencia se propuso contrarrestar la llamada crisis del software. La posterior inclusión de McIlroy de tuberías y filtros en el sistema operativo Unix fue la primera implementación de una infraestructura para esta idea.

Brad Cox de Stepstone definió en gran medida el concepto moderno de componente de software. Los llamó CI de software y se propuso crear una infraestructura y un mercado para estos componentes inventando el lenguaje de programación Objective-C. (Resume este punto de vista en su libro de 1986, Programación orientada a objetos: un enfoque evolutivo).

Los componentes de software se utilizan en dos contextos diferentes: i) usar componentes como partes para crear un único ejecutable, o ii) cada ejecutable se trata como un componente en un entorno distribuido, donde los componentes colaboran entre sí mediante comunicación por Internet o intranet. protocolos para IPC (Comunicaciones entre procesos). Lo de arriba pertenece al primer tipo, mientras que lo de abajo pertenece al segundo tipo.

IBM abrió el camino con su modelo de objetos de sistema (SOM) a principios de los años 1990. Como reacción, Microsoft allanó el camino para la implementación real de software de componentes con vinculación e incrustación de objetos (OLE) y Modelo de objetos componentes (COM). En 2010 existen muchos modelos de componentes de software exitosos.

Arquitectura

Una computadora que ejecuta varios componentes de software a menudo se denomina servidor de aplicaciones. Esta combinación de servidores de aplicaciones y componentes de software suele denominarse informática distribuida. Las aplicaciones típicas de esto en el mundo real incluyen aplicaciones financieras y software empresarial.

Modelos de componentes

Un modelo de componente es una especificación de componentes' propiedades.

En y se proporciona una clasificación de los modelos de componentes existentes. Ejemplos de modelos de componentes son: modelo Enterprise JavaBeans (EJB), modelo de modelo de objetos componentes (COM), modelo .NET, modelo de componente X-MAN y modelo de componente CORBA (Common Object Request Broker Architecture).

Tecnologías

  • Tecnologías de los objetos comerciales
    • Newi
  • Marcos de software basados en componentes para dominios específicos
    • Marco de componentes avanzados
    • Earth System Modeling Framework (ESMF)
    • Plataforma MASH IoT para la gestión de activos
    • KOALA component model developed for software in consumer electronics
    • Web: React, Vue.js
    • Software Communications Architecture (JTRS SCA)
  • Programación orientada a los componentes
    • Grupos definidos por la plataforma de servicios OSGi
    • Modelo de objetos componentes (OCX/ActiveX/COM) y DCOM de Microsoft
    • TASCS - SciDAC Center for Technology for Advanced Scientific Component Software
    • Idioma de programación Eiffel
    • JavaBeans de Sun Microsystems (ahora Oracle)
    • Programación basada en el flujo
    • Modelo de componente Fractal de ObjectWeb
    • Marco de componentes de MidCOM para Midgard y PHP
    • Oberon, Componente Pascal y BlackBox Component Builder
    • rCOS method of component-based model driven design from UNU-IIST
    • Sistema de componentes SOFA de ObjectWeb
    • El System.ComponentModel namespace en Microsoft. NET
    • Unidad desarrollada por Unity Technologies
    • Motor irreal desarrollado por Juegos Épicos
    • UNO from the OpenOffice.org office suite
    • VCL y CLX de Borland y biblioteca LCL gratuita similar.
    • XPCOM de Mozilla Foundation
  • Tecnologías de documentos complejas
    • Documentos activos en el sistema Oberon y BlackBox Component Builder
    • KParts, the KDE compound document technology
    • Objetos que vinculan e incrustan (OLE)
    • OpenDoc
  • Componentes de software informático distribuidos
    • . NET Remoción de Microsoft
    • 9P protocolo distribuido desarrollado para el Plan 9, y utilizado por Inferno y otros sistemas.
    • CORBA y el modelo de componentes CORBA del Grupo de Gestión de Objetos
    • D-Bus de la organización freedesktop.org
    • DCOM y versiones posteriores de COM (y COM+) de Microsoft
    • DSOM y SOM de IBM (ahora chatarra)
    • Hielo de ZeroC
    • Java EE de Sun
    • Kompics from SICS
    • Universal Network Objects (UNO) from OpenOffice.org
    • Servicios web
      • REST
    • Zope de Zope Corporation
    • AXCIOMA (el marco de componentes para sistemas distribuidos, en tiempo real y integrados) por Remedy IT
    • COHORTE the cross-platform runtime for executing and managing robust and reliable distributed Service-oriented Componente-based applications, by isandla Tech
    • Modelo de servicio DX-MAN
  • La programación genérica enfatiza la separación de algoritmos de la representación de datos
  • Idiomas de descripción de la interfaz (IDLs)
    • Definición de interfaz de servicio abierto (OSIDs)
    • Parte de COM y CORBA
    • Modelización de componentes dependientes de la plataforma Idioma
    • SIDL - Lenguaje de definición de la interfaz científica
      • Parte del Sistema de Interoperabilidad de Lenguas de Programación Científica de Babel (SIDL y Babel son tecnologías básicas del CCA y el Centro de TASCS de SciDAC - ver arriba.)
    • SOAP IDL from World Wide Web Consortium (W3C)
    • WDDX
    • XML-RPC, el predecesor de SOAP
  • Inversion of control (IoC) and Plain Old C++/Java Object (POCO/POJO) component frameworks
  • Tubos y filtros
    • Sistema operativo Unix
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save