Components
Overview
The Components package specifies a set of constructs that can be used
to define software systems of arbitrary size and complexity. In
particular, the package specifies a component as a modular unit with
well-defined interfaces that is replaceable within its environment. The
component concept addresses the area of component-based development and
component-based system structuring, where a component is modeled
throughout the development life cycle and successively refined into
deployment and run-time.
An important aspect of component-based development is the reuse of
previously constructed components. A component can always be considered
an autonomous unit within a system or subsystem. It has one or more
provided and required interfaces (potentially exposed via ports), and
its internals are hidden and inaccessible other than as provided by its
interfaces. Although it may be dependent on other elements in terms of
interfaces that are required, a component is encapsulated and its
dependencies are designed such that it can be treated as independently
as possible. As a result, components and subsystems can be flexibly
reused and replaced by connecting ("wiring") them together via their
provided and required interfaces. The aspects of autonomy and reuse
also extend to components at deployment time. The artifacts that
implement component are intended to be capable of being deployed and
re-deployed independently, for instance to update an existing system.
The Components package supports the specification of both logical
components (e.g. business components, process components) and physical
components (e.g. EJB components, CORBA components, COM+ and .NET
components, WSDL components, etc.), along with the artifacts that
implement them and the nodes on which they are deployed and executed.
It is anticipated that profiles based around components will be
developed for specific component technologies and associated
hardware and software environments.
Basic Components
The BasicComponents package focuses on defining a component as an
executable element in a system. It defines the concept of a component
as a specialized class that has an external specification in the form
of one or more provided and required interfaces, and an internal
implementation consisting of one or more classifiers that realize its
behavior. In addition, the BasicComponents package defines specialized
connectors for `wiring' components together based on interface
compatibility.
Packaging Components
The PackagingComponents package focuses on defining a component as
a coherent group of elements as part of the development process. It
extends the concept of a basic component to formalize the aspects of a
component as a `building block' that may own and import a (potentially
large) set of model elements.