previous next trail start tutorial home feedback openwings.org

Developing Components

A component is:

  • a binary implementation of functionality
  • contractually specified
  • a unit of independent deployment
  • subject to third party composition
  • conformant with a component model

Added to this list is the idea that a component provides and/or uses services through contractually specified interfaces. Components are typically described as processes, but could be entirely independent threads running in one process or Java Virtual Machine. Components may be nested like systems. Units of hardware may be represented by software components.

When developing a component, it is easier to think of it as an object that implements interfaces. A key requirement is that interfaces be defined independently of the implementation. This independence allows software to be used based on the services it provides, rather than the details of how its internal logic works.

By separating the service definition from the component definition, developers are free to implement services in any way they want. This also allows for flexibility in reuse of existing components. In general, developers should do the following when defining components:

  • Try to find existing components that implement the services within their constraints.
  • Avoid grouping logically independent services into a single component.
  • Draw an Architectural Definition Language (ADL) diagram with the services and components in the solution.

Software development on the Openwings architecture is a little different then software development on other systems. There are two roles:

  • Component Developer - an individual that writes components that provide or use services
  • Systems Engineer - an individual that writes systems designs for distributed systems software, Architecture Definition Language (ADL), and interfaces

This tutorial trail is focused on the role of the Component Developer. The Systems Engineer will also benefit from the information provided in this tutorial, but may wish to skip some sections to get a higher level idea of the system.

Finally, in designing services and developing components, the following modeling techniques are recommended:

Next: The Development Environment

back to top

Copyright 2002, General Dynamics Decision Systems. All rights reserved.

previous next trail start tutorial home feedback openwings.org