nasa / CertWare

50 stars 37 forks source link

CertWare Workbench

Overview

CertWare is a collection of tools intended to support the development of safety, assurance, or dependability cases. CertWare adopts several types of structured argument models and provides an implementation of tools to support writing and verifying arguments using the chosen model. The implementations are a baseline meant to be enhanced and further integrated into development tools chains. The workbench includes textual, semi-structured text, semi-structured tree, and graphical editors. The workbench implementation is done in and for Eclipse, as a large collection of Eclipse plugins and features, using several model generation tools to facilitate implementation and maintenance. See the Meta-Models section below for the kinds of models already incorporated into the workbench.

CertWare provides some prototype contributions for project management metrics (metrics about the case argument structure), and project planning (time and resources for case production). It provides a novel approach to argument production using semi-formal proofs. It provides a novel approach to logical argument analysis using semi-structured text together with an answer set solver to analyze the argument. It provides modeling tools for producing fault trees from physical system descriptions.

CertWare is meant to be extended into other tool chains and other aspects of the assurance lifecycle, so feel free to extend it in any direction you see fit.

Documentation

Documentation is stashed throughout the project workspace. See the net.certware.doc- project in particular. A version history is maintained in net.certware.doc/wiki/versions.textile for convenient export to other formats. The latest run of Javadoc usually is found in net.certware.doc/javadoc. The project design and build notes are in net.certware.doc/wiki/project.textile.

Meta-Models

The following tags are associated with the many meta-models used in the workbench. We use these liberally throughout the models, plugin names, and editor file extension associations.

Eclipse Dependencies

The following Eclipse product dependencies are needed for the given reasons:

Eclipse Design

The majority of CertWare design is done with the EMF, Ecore, and Xtext. We described several metamodels and then generated the plugins to support them. Afterward in many cases we added navigator contributions, help, validators, integrations, and other functional content. The notes here and in the project.textile file provide more details.

File Names and Extensions

Editors

Several editors are contributed by the EMF generator models. There are a few textual editors contributed by the Xtext generator models.

Views

Navigator Contributions

Plugins Summary

Target Platform

Packaging

The CertWare plug-ins and fragments can be delivered in a variety of ways, including simply exporting projects to the file system.

Delivery as a Feature

The several net.certware.* plug-ins and fragments (not including the testing fragments) are combined into several features and a single category definition. Use the automated dependency calculation of the feature editors to identify the installation dependencies, then ensure there are no spurious plug-ins identified; if so, identify the source and repair the issue. For complete feature deliveries, use the version tool in the feature editor to push the feature version identifier into the plugins and fragments. Export to either a folder or archive file. There are no platform-dependent requirements. There are several features available, each bundling distinct functionality and identifying dependencies if necessary. All features use the core feature for shared functionality.

To use the delivery, import the desired features into an existing Eclipse workbench installation. The installer will identify missing dependencies if any and prompt the user to install these prerequisites. The features and contents are not digitally signed. After installation, restart the workbench to update the commands and workbench parts.

Delivery as a Product

The project net.certware.product provides a product definition and p2 configuration. This product uses all of the plugins and the basic workbench configuration. This configuration is not expected to be the preferred method of delivery owing to the variety of user platforms, but it can be used to build initial installation packaging for later update via update sites. The preferred method is to first install some version of Eclipse for the user's platform, and then install CertWare features from update sites. CertWare has no platform-specific dependencies.

Publishing

To prepare an update site for publishing, first regenerate the latest features as described above from the net.certware.feature project. Afterward go to the update site project at updatesite2016xxxx or net.certware.feature.updatesite and open the site.xml definition file. Use the site definition editor to add the new features with their updated version identifier. Click Build All to build the update site. The resulting update site is usable in the remote and local repositories, when pushed back to GitHub, or when copied say to an AWS S3 location for other users.

At this writing there are two ways to use the update site:

It used to be the case we could use GitHub's raw tree paths to support update site delivery, but its subsequent limitations to file size have prevented successful delivery in recent times.

Not Included

Certain model exports were once supported using the Apache POI libraries. Owing to the government's uneasiness over the derived license terms we have removed these for the NASA deliveries. We may reinstate these later under a different license.

License

See the license files for the original and updated contributions. The initial release of CertWare to open source is given by the NASA Open Source Agreement and third-party licenses including Apache 2.0.

Copyright (c) 2011-2016 United States Government as represented by the Administrator for The National Aeronautics and Space Administration. All Rights Reserved.