![osee.jpg](/docs/images/osee.jpg "osee.jpg")

OSEE was designed from the ground up to be a single tool that captures
all artifacts through-out the life-cycle of engineering. Since the
original OSEE project use was DoD, very strict guidelines are placed on
how we capture, trace and deliver our product. OSEE does this for us.

In addition to solving our specific engineering needs, it was decided
that a single engineering framework could be used for any software
development project. OSEE was designed to scale from a small team of 1
or 10 to a project of any size.

The team also wanted to address the issues of obsolesce. Too many times,
a tool is developed by one or more people to resolve a very specific
need. This tool is maintained and updated as needs change. Then the
engineers that developed that tool move to other positions. Or the
technologies that were used to develop that tool become obsolete. OSEE
was designed and developed under the Eclipse open source development
environment that is used world-wide. It was developed using one of the
leading software languages, Java, and it was made open-source so that
others could easily continue its development even if the existing
program moved to a different solution.

You can learn more about OSEE on our [project website](https://eclipse.dev/osee/).

# What is OSEE

The Open System Engineering Environment (OSEE) project provides a
tightly integrated environment supporting lean principles across a
product's full life-cycle in the context of an overall systems
engineering approach. The system captures project data into a common
user-defined data model providing bidirectional traceability, project
health reporting, status, and metrics which seamlessly combine to form a
coherent, accurate view of a project in real-time. By building on top of
this data model, OSEE has been architected to provide an all-in-one
solution to configuration management, requirements management, testing,
validation, and project management. All of these work together to help
an organization achieve lean objectives by reducing management
activities, eliminating data duplication, reducing cycle-time through
streamlined processes, and improving overall product quality through
work flow standardization and early defect detection.

# OSEE can be used for

- Configuration Managed Requirements Development
- Multiple dynamically configured Problem-Change-Request (PCR) systems
- Product Unit and Integration Testing
- Publishing deliverable documents
- Full traceability from high-level customer requirements to decomposed lower level requirements and even code, test and output files.
- Full Level A, B and C coverage tracking and reporting
- Agile Software Development
- Peer Reviews
- Process management
- Linking in other tools / databases
- Support for system safety tracking/reporting
- And any other use cases that need to be developed

# The major features of OSEE include

## OSEE Artifact Framework

The artifact is the fundamental object in OSEE. All data objects stored
within OSEE are artifacts. Artifacts are strongly typed and can store
any data throughout the systems engineering lifecycle. Any type of data
can be stored in OSEE as an artifact; not only systems engineering data
(such as processes and requirements), but also anything from meeting
minutes to architecture diagrams.

## Variant Management

Products developed in OSEE can take advantage of it's variant management
by using the waterfall method of build/release branching off each other
as children, or take advantage of our recent changes to a product-type
management where each product/feature is managed separately and parts
that are different for different customers/use-cases are tagged with
their applicability to that version.

## Full History

OSEE stores all changes to all artifacts in the database. This allows
for accidental changes to be backed-out and also facilitates research
into who did what and why.

## Dynamically Configured Model

Unlike relational databases where a new table is needed for each type of
object, OSEE Artifact Framework is an object database that can be run on
any SQL compliant database. Currently, Oracle, Postgres and HSQL are
used/tested. New objects can be created dynamically. This include meta
data on the artifacts and relations between artifacts. These models are
used by the features/applications that are built for different use cases
like problem tracking, configuration management, coverage, requirements
management and etc.

## REST and Web Interfaces

The need to easily access data stored within OSEE drove our architecture
to start providing many RESTful
(https://en.wikipedia.org/wiki/Representational_state_transfer)
services. And with those services available, the features of OSEE are
continually being provided through Web UI.

## Unit and Integration Testing

OSEE has a Test Environment that supports both unit and integration test
"scripts" that can be run individually or in a continuous integration
environment. Emulators can also easily be created to emulate different
pieces of hardware.

## Problem Change Request / Configuration Management

OSEE has a tightly integrated PCR and CM system built in. This allows
any number of teams to track their work within the same system. This
allows for a single user-interface for all PCRs, ability to link between
"actions", easily group different work for different teams within the
same "action" and dynamically configure each teams "work-flow" to be
different. Also integrated is a full-blown Peer Review system that
easily allows peer reviews to be created against a product, team or
action and be tracked similar to the PCRs.

# Usage

OSEE is currently used internal to Boeing. In addition, the OSEE Framework and some of its applications are in use by the Bosch company for their world-wide operations.

# Maturity

Different portions of OSEE are in different stages of maturity. In addition, all mentioned programs/companies can and have provided new features/fixes to the OSEE code-base. This is done through both the external eclipse.org development processes and the internal OSEE-team development processes.

# Contact

More information about OSEE can be obtained by visiting our [Eclipse
website](https://eclipse.dev/osee/) or by contacting one of the team
leads: Ryan Brooks (ryan.d.brooks AT boeing.com) or Don Dunne
(donald.g.dunne AT boeing.com)