Giter Club home page Giter Club logo

ramstk's Introduction

The RAMS ToolKit (RAMSTK)

A ToolKit for Reliability, Availability, Maintainability, and Safety (RAMS) analyses.

Tests GitHub Workflow Status Coverage Status
Quality CodeFactor Quality Gate All lints status
Packages GitHub release (latest SemVer including pre-releases) PyPI

๐Ÿšฉ Table of Contents

Disclaimer

RAMSTK attempts to use Semantic Versioning 2.0.0. Per spec item 4, major version 0 is for initial development and anything may change at any time. That is certainly the case for RAMSTK! Because RAMSTK is a one developer show, there is no active develop branch at the moment. This may change after release of 1.0.0. Until then, tagged releases can be used, but the latest tag may not work and may not be backwards-compatible. While major version is at 0, breaking changes will be reflected in bumps to the minor version number. That is, version 0.15.0 is not compatible with version 0.14.0.

๐ŸŽจย  Features

RAMSTK is built on the concept of modules where a module is a collection of related information and/or analyses pertinent to system development. The modules currently included in RAMSTK are:

  • Revision Module
    • Usage profile
  • Function Module
    • Functional decomposition
    • Hazards analysis
    • Failure definitions
  • Requirements Module
    • Stakeholder input prioritization
    • Requirement development
    • Analysis of requirement for clarity, completeness, consistency, and verifiability
  • Hardware Module
    • Reliability allocation
      • Equal apportionment
      • AGREE apportionment
      • ARINC apportionment
      • Feasibility of Objectives
    • Hardware reliability predictions using various methods
      • Similar items analysis
      • MIL-HDBK-217F parts count
      • MIL-HDBK-217F parts stress
    • FMEA/FMECA
      • RPN
      • MIL-STD-1629A, Task 102 Criticality Analysis
    • Physics of failure analysis
  • Validation & Verification Module
    • Task description
    • Task acceptance value(s)
    • Task time
    • Task cost
    • Overall validation plan time/cost estimates

๐Ÿ’พย  Installing

RAMSTK uses postgresql for its database engine. You'll need to have a user with read/write access to a postgresql server to use RAMSTK. Instructions for setting up the postgresql servers and creating users with the appropriate permissions can be found in the project Wiki.

Download and Install

Since RAMSTK is still a version 0 product, it's highly recommended that you install in a virtual environment. The instructions below presume you will be installing in a virtual environment and system-wide Python packages that RAMSTK depends on will be unavailable. That being the case, you will need various system development packages available via your operating system's package manager to install RAMSTK.

Once you have installed any missing development file packages using your operating system's package manager, download the <version> of RAMSTK source from GitHub you wish to install.

$ wget https://github.com/ReliaQualAssociates/ramstk/archive/v<version>.tar.gz
$ tar -xf v<version>.tar.gz
$ cd ramstk-<version>

The other option for obtaining the RAMSTK source code is to clone the repository.

$ git clone https://github.com/ReliaQualAssociates/ramstk.git ramstk.git
$ cd ramstk.git

Create and activate a virtual environment however you are acustomed to. One approach is to use pyenv and poetry. Using pyenv isn't necessary unless you want to install and use a Python version other than that provided by your operating system.

$ pyenv install 3.8.7
$ poetry env use ~/.pyenv/shims/python3.8
$ poetry shell

This will install Python-3.8.7 and tell poetry to use the Python interpreter you just installed. Finally, poetry will create, if needed, and activate the virtual environment using Python-3.8.7 as the interpreter.

Now that the virtual environment is activated, you can install the necessary RAMSTK dependencies and RAMSTK itself. Omitting the PREFIX variable will cause RAMSTK to install to /usr/local by default.

$ make depends
$ make PREFIX=$VIRTUAL_ENV install

When upgrading RAMSTK, you can simply:

$ pip install -U ramstk

This will only install the latest RAMSTK version from PyPi and will leave configuration, data, and icon files untouched. If you cloned the RAMSTK repository, you can also use the Makefile:

$ git switch master
$ git pull
$ make install.dev

Development Dependencies

We use poetry to manage the dependencies for developing RAMSTK. Using the Makefile, install as follows:

$ make depends

This should get all the needed development and runtime requirements installed if they're not already.

Running the Tests

To run the entire test suite for RAMSTK after installing, simply execute:

$ make test

To run the test suite with coverage, execute:

$ make coverage
$ make coverage.report

To run specific tests or groups of tests, use pytest:

$ pytest -m integration tests/modules/test_allocation.py
$ pytest -m unit tests/analyses/prediction

๐Ÿ”จย  Usage

After installing RAMSTK, it can be launched from a terminal emulator:

$ ramstk

This is a good option if you need to file an issue as the output should be included in your report. RAMSTK also installs a *.desktop file and can be found where ever applications in the category Math or Science are listed. If you've installed in a virtual environment or other non-standard location, this *.desktop file may not be found.

See the User Guide for the latest usage instructions.

Documentation

Documentation for RAMSTK is built and included as release assets. For each release, you will find a pdf and html implementation of the User Guide. For each minor and major version release, you will also find a pdf and html implementation of the Developer's Guide.

๐Ÿ’ฌย  Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Also read DEVELOPMENT_ENV.md for instructions on setting up a development environment to work on and test RAMSTK.

๐Ÿžย  Authors

  • Doyle 'weibullguy' Rowland - Initial work - weibullguy

๐Ÿ“œย  License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.

RAMSTK is also registered with the United States Copyright Office under registration number TXu 1-896-035 because I have an attorney and attorneys like to file paperwork for $300/hour.

Similar Products

The following are commercially available products that perform RAMS analyses. We are not endorsing any of them; they are all fine products and may be a better fit for you or your organization depending on your needs and budget. Obviously, we would prefer you use RAMSTK.

ramstk's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar github-actions[bot] avatar imgbot[bot] avatar imgbotapp avatar rakhimov avatar snyk-bot avatar weibullguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ramstk's Issues

No Availability Calculations for Revision

There are no availability calculations for the Revision module. Availability can be calculated using specified MTTR inputs and do not require waiting for the maintainability analysis to be added to the Hardware module.

Add Embedded Review Checklists for Various Analyses

To support design and other review, there should be a method for the user to work through a checklist to verify the completeness of an analysis. A list of basic questions should be provided by RTK "out of the box", but this list should be editable and addable by the end-user. At a minimum, the following checklists should be provided:

1. LCC analysis
2. Reliability assessment.
3. FMEA/FMECA (functional and hardware)
4. Allocation
5. Hazards analysis

In addition, there should be design review checklists provided for PDR, CDR, and TRR. A checklist should be associated with the following:

1. Revision module to assess the overall RAM program.
2. Requirements module to assess the quality of the requirement/specification (analysis page already provides base questions, will need to re-format this to a RTKTreeView() to allow editing and addition of questions by the end-user).
3. Hardware module to assess the individual Hardware item.
4. Software module to assess the individual Software item (risk analysis page already provides base questions, will need to re-format this to a RTKTreeView to allow editing and addition of questions by the end-user).

The purpose of making these checklists addable by the end-user is to allow institutional knowledge to be captured for posterity.

Add All Reliability Information to the copy_hardware() Method

The copy_hardware() method in the Hardware BoM class does not copy all reliability related information. The following information needs to be added to the copy:

1. Additive adjustment factor
2. Failure distribution
3. Failure parameter 1
4. Failure parameter 2
5. Failure parameter 3
6. Hazard rate method
7. Hazard rate model
8. Multiplicative adjustment factor
9. Survival analysis
10. User float values 1-20
11. User integer values 1-10
12. User string values 1-5

No Pop Up Menu for ModuleView

When right-clicking the Function Module View, a pop-up menu with the following should appear:

1. Add sibling function.
2. Add child function.
3. Delete selected function.
4. Calculate functions.
5. Save functions.

Please add a pop-up menu to the Function Module View.

No Method to Cut/Copy/Paste

There is no cut/copy/paste functionality in RTK other than that which is inherent to the widgets used to display information. Cut/copy/paste should be available in all the gtk.TreeView() and Work View widgets. Paste should only be available in read-write gtk.CellRenderer()s and gtk.Entry().

Create Failure Definition Reports

Please create savable and printable reports for the Failure Definitions. These reports should include, at minimum:

1. Excel (*.xls[x])
2. LibreOffice/OpenOffice (*.ods)
3. XML
4. Text
5. Delimited text (*.csv)

No Availability Calculations for Hardware

There are no availability calculations for the Hardware class. Availability cannot be calculated until the maintainability analysis is added to the Hardware class.

RTKTreeView() Rows Do Not Auto Size When Width is Adjusted

When resizing the width of a column in an RTKTreeView(), the height of the row does not change automatically to accommodate wrapped text. The row should automatically increase/decrease in height as required to allow all wrapped text to be viewable.

Existing Failure Modes Not Automatically Removed

Currently when the component category/sub-category are changed, the new failure modes are appended to the list of old failure modes. Please change this so existing failure modes are removed (along with attendant information) whenever the component category/sub-category is changed.

Removal of the failure mode(s) can be automatic, user-OK'd, or the option can be set in the RTK configuration file.

Select All Not Possible in RTKTreeViews

It is not currently possible to select all the rows (rubber banding) in every RTKTreeView(). It should be possible to select all rows in every RTKTreeView().

Add Functional Block Diagrams

There is no functionality for creating/displaying functional block diagrams in the Function module. Please add Functional Block Diagrams to the Function module.

No get_attributes()/request_get_attributes() methods

The Revision data model is missing the get_attributes(revision_id) method and the data controller is missing the corresponding request_get_attributes(revision_id) method. These methods were added to the base data model and base data controller after the last revision_sprint. They are currently not needed, but should be added in a future sprint.

No set_attributes()/request_set_attributes() Methods

The Revision data model is missing the set_attributes(revision_id, attributes) method and the data controller is missing the corresponding request_set_attributes(revision_id, attributes) method. These methods were added to the base data model and base data controller after the last revision_sprint. They are currently not needed, but should be added in a future sprint.

Power Law Model Needs GoF Test

The goodness of fit test using the Cramer-vonMises statistic needs to be implemented for the Power Law model. Currently the CvM function to calculate the test statistic, but this is not being compared to the critical value and a decision made.

No Method to Undo/Redo Changes

Currently no method exists to undo and redo changes made to the RTK Program database. Please add this functionality. This will likely require the use of database transactions. Undo and redo level should be at least 25 and preferably will be user-selectable up to a maximum level.

No Method to Document Selected Test Techniques

In the Software module test planning tables, there is no way to indicate which test technique(s) were selected for the module/unit. Another field needs to be added to the Software test planning tables to allow the user to document which test technique(s) were selected.

This will be easiest to implement by adding a checkbox at the end of each row. It will also require a new field in the RTK Program database table.

Add Reliability Target Fields

There is currently no field to hold and display the reliability targets. There should be a field for the reliability target, at minimum. Fields for failure rate and MTBF may be provided as well.

Calendar Launch Button Needed in RG Test Planning Inputs Treeview

In the reliability growth test planning treeview, the start date and end date must be manually entered in the correct format for each test phase. A calendar widget and associated button to launch the calendar should be made available for easier date selection.

No Pop-Up Menu for Module View

When right-clicking on the Requirements Module View RTKTreeView, a pop-up menu with the following options should appear:

  1. Add top-level requirement
  2. Add derived requirement
  3. Delete selected requirement
  4. Save requirements

No Error Handling for insert() Method

In the insert() method in the Hardware BoM data model when no parent_id is passed to the method an error code isn't set. The parent_id is simply set to zero. An error code shall be set and the method returned. The view should handle the error.

No Check of Management Strategy

When checking the feasibility of a reliability growth test plan, the management strategy isn't checked. Add this check and use the following to set the risk levels:

- < 0.9 => high risk
- > 0.95 => high risk
- 0.9 - 0.925 => medium risk
- 0.925 - 0.95 => low risk

No Overstress Calculation for Fuses

There is currently no overstress calculation for the fuse component type. Overstress conditions for fuses need to be determined and added to RTK.

No Availability Calculations for Function Module

There are no availability calculations for the Function module. Availability calculations can be made using specified MTTR and do not have to wait until the maintainability analysis is added to the Hardware module.

No Reports for Requirements Module

There are no reports available for the Requirements module. The following, minimum, reports should be available:

1. Stakeholder Inputs
    - List format
    - For selected Revision only
    - Sorted by ID, description, priority, affinity group, and overall weighting
    - Available as Excel, LibreOffice/OpenOffice, pdf, and text
2. Requirements
    - Hierarchical list format
    - For selected Revision only
    - Sorted by ID, requirement type, validated date, owner, priority
    - Grouped by requirement type, owner, priority, validated date
    - Available as Excel, LibreOffice/OpenOffice, pdf, and text
3. V&V Tasks
    - Nested list format
    - For selected Revision
    - Sorted by Requirement
    - Available as Excel, LibreOffice/OpenOffice, pdf, and text

Missing Overstress Calculation for Resistors

There is currently no temperature limit or voltage ratio overstress calculation for the resistor component type. Temperature limit and voltage ratio overstress conditions for resistors need to be determined and added to RTK.

Can Not Find and/or Replace in RTK

There is no method to find, find next, find previous, or find/replace in RTK. Please add the find and find/replace functionality to RTK.

No Mission Time Unit Selection

There is no way to select the units for mission time (e.g., minutes, hours, cycles, etc.). Please provide a method to select and display mission time units. Units are not needed for calculations so this is only an enhancement.

No Pop-Up Menu for Revision Module View

When right-clicking the Revision Module View, a pop-up menu with the following options should appear:

1. Add revision.
2. Delete selected revision.
3. Calculate selected revision.
4. Save selected revision.
5. Save all revisions.

Provide Robust Design Analyses

Please provide the ability to capture information for Robust Design activities. The ability to link to the Hardware FMEA as the starting point should exist.

List View Not Updating When Editing Work View

When editing Hardware module Work View widgets, the corresponding fields in the List View are not updated. The RTK Program database must be closed and re-opened for the changes to be viewed in the List View. The edits should be viewable in the List View immediately.

Cannot Import Complete Project

RTK currently provides only functionality to import Hardware and Incident module information. Please add support for importing information into other RTK modules. At minimum, the import routines should support Excel (.xls[x]), text, and delimited text (.csv) file formats.

Licence file

I would like to use this project but copyright laws prevent certain use without a license included in the software. I would recommend BSD-3, however, the decision is up to you.

No Method to Select Confidence Bound Types for RG Assessments

Currently RTK defaults to Crow bounds for the Crow-AMSAA assessment model. There should be a method for the user to select from Crow, Fisher, or Bootstrap bounds. Add a rtk.Combo() for the user to select the confidence method. This may require changes to one or more RTK Program database tables.

Add Maintainability Analysis

The Hardware class currently has no maintainability analysis. Add maintainability analysis per MIL-STD-471, MIL-HDBK-470, and MIL-HDBK-472.

Revision Sprint 2.0.0 Coding Convention Updates

This issue is for collecting changes that will be required during the next Revision sprint resulting from changes to the RTK coding conventions. None of these issues affect performance or reliability if left uncorrected.

rtk.gui.gtk.listviews.FailureDefinition.py:

1. Rename _on_cell_edited() to _do_edit_cell()
2. Rename _on_button_press() to _do_press_button()
3. Rename _request_delete() to _do_request_delete()
4. Rename _request_insert() to _do_request_insert()
5. Rename _request_update_all() to _do_request_update()
6. Rename _create_toolbar() to _make_toolbar()
7. Add method _do_change_row()
8. Have _do_change_row() method send 'selectedFailureDefinition' message
9. Have _do_edit_cell() method send 'lvwEditedFailureDefinition' message

rtk.gui.gtk.listviews.Revision.py:

rtk.gui.gtk.listviews.UsageProfile.py:

1. Rename _on_cell_edited() to _do_edit_cell()
2. Rename _on_button_press() to _do_press_button()
3. Rename _request_delete() to _do_request_delete()
4. Rename _request_insert() to _do_request_insert()
5. Rename _request_update_all() to _do_request_update()
6. Rename _create_toolbar() to _make_toolbar()
7. Rename _on_row_changed() to _do_change_row()
8. Rename _load_tree() to _do_load_tree()
9. Have _do_change_row() method send 'selectedUsage' message
  1. Have _do_edit_cell() method send 'lvwEditedUsage' message

rtk.gui.gtk.moduleviews.Revision.py:

rtk.gui.gtk.workviews.Revision.py:

1. Rename _create_toolbar() to _make_toolbar()
2. Rename _create_general_data_page() to _make_general_data_page()
3. Rename _create_assesment_results_page() to _make_assessment_results_page()
4. Rename _request_calculate() to _on_request_calculate()
5. Rename _request_delete() to _on_request_delete()
6. Rename _request_insert() to _on_request_insert()
7. Rename _request_save() to _on_request_update()

Work Book widgets not updated when Hardware Module Book is edited.

The Work Book widgets are not updated immediately when the Module Book is edited. After editing the Module Book, the edited row must be unselected and re-selected to see the edit in the Work Book. The edit should be visible in the Work Book as soon as the cell being edited in the Module Book is no longer active.

Create Mission and Environmental Profile Report(s)

Need to create saveable and printable reports for the Mission and Environmental Profile. These reports should include at minimum:

1. Excel
2. XML
3. Text

This will also require connecting the menu item in WorkBook.py to a report creation method or Assistant.

No Method to Export RTK Data

There is no method for sending RTK data to external files. RTK shall be able to output data to the following types of files, at minimum:

1. Excel (*.xls[x])
2. LibreOffice/OpenOffice (*.ods)
3. Text
4. Delimited text (*.csv)
5. PDF
6. *.jpeg, *.png, *.svg (graphics only)

RTK may also support the following files types:

1. LaTeX (*.tex)
2. *.bmp (graphics only)

Default reports for each RTK module are documented in separate issues.

Add Pugh Concept Selection Matrix

Please add a Pugh concept selection matrix page to the Revision List View. This will also require RTK Program database table(s) and a model/controller pair.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.