Transition to C++17

@rakhimov rakhimov released this Jan 12, 2018 · 167 commits to develop since this release

Release Notes

With this release, the codebase transitions to C++17,
requiring more modern compilers (gcc 7, clang 5) and dependencies.

Minor Changes

  • Transition to C++17 (#250)
  • Replace header guards w/ '#pragma once' (#253)
  • Replace Nose w/ Pytest (#252)
  • Replace GoogleTest w/ Catch2 (#251)

Removed Features

  • Non-MEF, API-only random deviates (use STL or Boost random directly).

Since v0.16.1

80 commits resulted in 193 files changed, 3321 insertions(+), 4040 deletions(-)

  • Core: 96 files changed, 1061 insertions(+), 1613 deletions(-)
  • Scripts: 1 file changed, 111 insertions(+), 88 deletions(-)
  • GUI: 39 files changed, 240 insertions(+), 443 deletions(-)
  • Tests: 40 files changed, 1724 insertions(+), 1727 deletions(-)
  • Documentation: 4 files changed, 41 insertions(+), 61 deletions(-)
  • Schemas: No change

Automated GUI Testing

@rakhimov rakhimov released this Jan 4, 2018 · 247 commits to develop since this release

Release Notes

This release automates GUI testing with Qt Test and CI on GNU/Linux, macOS, and Windows.

Minor Changes

  • GUI: Automated GUI Testing (#202)
  • GUI: Present interface languages in sorted order (#242)
  • GUI: Doxygen code doc generation and coverage (#243)
  • GUI: Spanish translation (thanks to @NeHoMaR)
  • GUI: Turkish translation (thanks to irfandogan)
  • GUI: Dutch translation (thanks to Omer Surer)
  • GUI: Indonesian translation
    (thanks to @anggaariska, @isaideureka, and Irham21)
  • GUI: Polish translation (thanks to @oschlypajac)
  • GUI: Italian translation (thanks to @aitorres)

Removed Features

  • install.py helper script (use CMake or its front-ends directly)
  • GUI: Crash handler (requires an external process; instead, rely on the OS default)

Bug Fixes

  • GUI: SIGSEGV on model modification with open report tree (#236)
  • GUI: Zoom box is too reactive (#240)
  • GUI: GateTable: Remove element is active w/o selected element (#241)

Since v0.16.0

140 commits resulted in 290 files changed, 117096 insertions(+), 5798 deletions(-)

  • Core: 95 files changed, 531 insertions(+), 582 deletions(-)
  • Scripts: 5 files changed, 236 insertions(+), 139 deletions(-)
  • GUI: 78 files changed, 6694 insertions(+), 3746 deletions(-)
  • Tests: 42 files changed, 421 insertions(+), 659 deletions(-)
  • Documentation: 5 files changed, 58 insertions(+), 20 deletions(-)
  • Schemas: No change

Substitutions

@rakhimov rakhimov released this Nov 18, 2017 · 387 commits to develop since this release

Release Notes

This release introduces support for
declarative and non-declarative Substitutions.

Major Changes

  • Substitutions (#154)

    • Delete Terms
    • Recovery Rules
    • Exchange Events
  • Extern function (#74)

    • External dynamic libraries

Minor Changes

  • Replace libxml++ with libxml2 (#218)

    • 2-2.5x speed improvement for initialization from MEF XML input
    • Removed dependencies: libxml++, glib, glibmm, sigc++
  • Redesign Exception classes w/ boost::exception (#219)

  • Option to omit indentation whitespace in output XML (#220)
    (up to 25% smaller file size and 10% speed improvement)

  • XML stream optimizations for reporting

    • stdio instead of iostream (40% speed improvement)
    • Custom indentation implementation (5% speed improvement)
    • Integer serialization optimization (4-5% speed improvement)
  • GUI: Translation and localization setup with Crowdin

  • GUI: Application Preferences (#210)

  • GUI: Fail-safe file save (#228)

  • GUI: Enable find/filter/search in Importance and Product tables

Bug Fixes

  • GUI: EventDialog name validator allows only ASCII chars (#221)

Since v0.15.0

201 commits resulted in 215 files changed, 36429 insertions(+), 2372 deletions(-)

  • Core: 61 files changed, 3262 insertions(+), 1364 deletions(-)
  • Scripts: No change
  • GUI: 61 files changed, 31086 insertions(+), 471 deletions(-)
  • Tests: 64 files changed, 1566 insertions(+), 198 deletions(-)
  • Documentation: 13 files changed, 202 insertions(+), 76 deletions(-)
  • Schemas: 2 files changed, 103 insertions(+), 26 deletions(-)

Alignment

@rakhimov rakhimov released this Aug 15, 2017 · 588 commits to develop since this release

Release Notes

The release adds support for alignment
(i.e., analysis of a model over mission phases).

Major Changes

  • Alignment, Mission, Phases (#153)

Minor Changes

  • GUI: Elision of long IDs and labels in diagram (#213)

Bug Fixes

  • GUI: QSortFilterProxyModel breaks Gate tree-table model (#214)
  • GUI: Diagram unit dimensions are coupled with character dimensions (#215)
  • GUI: SIGSEGV on exit (Windows, Wine) (#217)

Since v0.14.0

21 commits resulted in 68 files changed, 1516 insertions(+), 748 deletions(-)

  • Core: 19 files changed, 620 insertions(+), 234 deletions(-)
  • Scripts: 2 files changed, 97 insertions(+), 97 deletions(-)
  • GUI: 9 files changed, 308 insertions(+), 305 deletions(-)
  • Tests: 28 files changed, 300 insertions(+), 93 deletions(-)
  • Documentation: 3 files changed, 38 insertions(+)
  • Schemas: 2 files changed, 44 insertions(+)

Initial GUI

@rakhimov rakhimov released this Aug 1, 2017 · 609 commits to develop since this release

Release Notes

This is the first GUI release
with features for simple fault tree analysis.

Major Changes

  • GUI: Fault Tree Visualization (#132)
  • GUI: Fault Tree Construction (#133)
  • GUI: Analysis Configuration (#134)
  • GUI: Fault Tree Analysis (#135)
  • GUI: Probability and Importance analysis (#136)

Minor Changes

  • GUI: Print the Diagram/Graph (#200)
  • GUI: Print Preview (#205)
  • GUI: Export the Diagram/Graph to SVG (#201)
  • GUI: Transfer In/Out symbols (#191)
  • GUI: Start Page (#196)
  • GUI: Undo/Redo mechanism (#194)

Bug Fixes

  • GUI: Icon/Logo quality and scaling issues (#203)
  • Importance factors are not generated for low product order limit (#206)
  • LogicError: MEF Element w/ private role at model scope (#208)

Since v0.13.0

222 commits resulted in 108 files changed, 12550 insertions(+), 1072 deletions(-)

  • Core: 27 files changed, 985 insertions(+), 377 deletions(-)
  • Scripts: No change
  • GUI: 54 files changed, 11169 insertions(+), 450 deletions(-)
  • Tests: 11 files changed, 232 insertions(+), 48 deletions(-)
  • Documentation: 8 files changed, 72 insertions(+), 22 deletions(-)
  • Schemas: 1 file changed, 3 insertions(+), 139 deletions(-)

Event Tree Analysis

@rakhimov rakhimov released this May 12, 2017 · 831 commits to develop since this release

Release Notes

This release introduces limited and experimental support for event tree analysis.
Only necessary and sufficient functionalities are implemented
to allow the most common and basic analysis.
Moreover, the release doesn't implement any optimization specific to event-tree analysis.

Major Changes

  • Event Tree Analysis (#150)
  • Event-Tree-Fault-Tree Linking (#152)
  • Event-Tree Chaining (#151)
  • MEF 'set-house-event' Instruction (#179)
  • MEF Test-Event Expressions (#68)
  • MEF Numerical Operations (#72)
  • MEF Boolean Operations (#73)
  • MEF Conditional Operations (#67)

Minor Changes

  • Fedora RPM Package

  • Report product-order distribution (#168)

  • XInclude support

  • The Open-PSA MEF compliance:

    • House event state expressions are optional and can be implicitly defined to False.
    • CCF level numbers are optional.
    • CCF factors can be declared in any order.
    • Multiple 'model-data' containers are allowed within a single 'opsa-mef' element.
    • Gate formulas can have literal constant args (true, false) instead of house-events.
  • Interval-based expression sample domain validation (instead of min-max)

  • Print line numbers in XML schema validation error messages

  • Report warning messages with XML attributes in the results-layer instead of XML elements.

Bug Fixes

  • Fail to assign a label to a pass-through gate (#166)
  • Zero/One probability events (division by zero total probability) (#169)
  • Segfault with single-event fault tree importance analysis with BDD (#170)
  • Config: Input/output file path format is system dependent (#171)
  • Config: Relative paths are not resolved wrt the config file path (#172)

Since v0.12.0

208 commits resulted in 210 files changed, 9805 insertions(+), 3971 deletions(-)

  • Core: 65 files changed, 4552 insertions(+), 2712 deletions(-)
  • Scripts: 1 file changed, 18 insertions(+), 14 deletions(-)
  • GUI: 2 files changed, 23 insertions(+), 94 deletions(-)
  • Tests: 97 files changed, 2997 insertions(+), 557 deletions(-)
  • Documentation: 23 files changed, 363 insertions(+), 352 deletions(-)
  • Schemas: 4 files changed, 1119 insertions(+), 133 deletions(-)

Safety Integrity Levels

@rakhimov rakhimov released this Mar 13, 2017 · 1039 commits to develop since this release

Release Notes

This release introduces
initial implementation and support for probability calculations over time
to approximate IEC 61508 Safety Integrity Levels
and its Probability of Failure on demand and hourly metrics.

Major Changes

  • Safety Integrity Levels (#160)
  • Probability evaluation over a time period (#161)
  • Report event probability and occurrence with importance factors (#162)
  • The MEF Expression::Lognormal Deviate with 2 (mu, sigma) parameters (#163)
  • The MEF Expression::Built-in::Periodic-Test w/ 4, 5, and 11 arguments (#69)

Minor Changes

  • Remove the constraint on the maximum product size
  • Remove '--input-files' flag and make it implicit as a default positional parameter
  • Rename the configuration file main element "config" to "scram"
  • Random Deviate Expressions always use the mean value of their parameters
  • Expression validation errors show XML file names and line numbers

Since v0.11.6

62 commits resulted in 78 files changed, 2544 insertions(+), 1446 deletions(-)

  • Core : 35 files changed, 1522 insertions(+), 776 deletions(-)
  • Scripts : 1 file changed, 3 insertions(+), 3 deletions(-)
  • GUI : 1 file changed, 1 insertion(+), 6 deletions(-)
  • Tests : 17 files changed, 586 insertions(+), 255 deletions(-)
  • Documentation : 15 files changed, 116 insertions(+), 76 deletions(-)

ZBDD as a Product Container

@rakhimov rakhimov released this Feb 12, 2017 · 1101 commits to develop since this release

Release Notes

Analysis and post-analysis facilities work directly with a ZBDD-based product container
without paying memory or speed overhead of converting ZBDD into other data structures.

Major Changes

  • ZBDD as a fault tree analysis result (product/cut-set) container (#159)
    • Qualitative analysis speedup from 10% to 5x (the more the products, the bigger the effect)
    • Memory consumption decreases by 1.5 - 4x (noticeable only for million or more products)
    • Iteration over products is ~2x slower (graph walk vs. sequential array of products)
    • Quantitative analysis with approximations (rare-event, MCUB) is 2 - 10x slower
      (the fewer the products, the worse the effect)

Minor Changes

  • Package for Windows (#157)
  • Package for macOS (#158)
  • HTTPS support for the website

Bug Fixes

  • Incorrect formula for Histogram distribution expected value (#149)
  • Histogram distribution XML schema missing lower-boundary expression (#148)

Since v0.11.5

83 commits resulted in 109 files changed, 5258 insertions(+), 5303 deletions(-)

  • Core : 52 files changed, 3869 insertions(+), 4030 deletions(-)
  • Scripts : No Changes
  • GUI : No Changes
  • Tests : 23 files changed, 479 insertions(+), 490 deletions(-)
  • Documentation : 20 files changed, 229 insertions(+), 183 deletions(-)

Debian Science Package

@rakhimov rakhimov released this Dec 12, 2016 · 1184 commits to develop since this release

Release Notes

This release includes patches from the initial Debian packaging
at SCRAM's Alioth repository.
In addition, some changes have been inspired by
the Open-PSA community workshop and its new presence at GitHub.

Minor Changes

  • Optional link against JEMalloc
  • Debian Science package
  • Parallelized fuzz testing
  • Move the Open-PSA schemas to https://github.com/open-psa/schemas
  • Move the shorthand_to_xml.py translator to https://github.com/open-psa/translators
  • Rename the shorthand format to the Aralia format
  • Improved build-times after dependency analysis and refactoring with
    cppdep
  • Python API documentation generation with Sphinx

Bug Fixes

  • CCF Alpha factor wrong formula (#146)
  • Misinterpretation of Log-Normal Deviate Error Factor and Level parameters (#147)

Since v0.11.4

55 commits resulted in 123 files changed, 3114 insertions(+), 5925 deletions(-)

  • Core : 47 files changed, 1969 insertions(+), 1640 deletions(-)
  • Scripts : 9 files changed, 284 insertions(+), 1203 deletions(-)
  • GUI : 4 files changed, 112 insertions(+), 63 deletions(-)
  • Tests : 15 files changed, 177 insertions(+), 195 deletions(-)
  • Documentation : 25 files changed, 344 insertions(+), 279 deletions(-)

Transition to C++14

@rakhimov rakhimov released this Sep 15, 2016 · 1239 commits to develop since this release

Release Notes

With this release, the codebase transitions to C++14,
requiring more modern compilers and tools.
The target development platform is upgraded from Ubuntu 14.04 to Ubuntu 16.04.
Boost and LibXML++ dependency versions are upgraded to reflect the new target platform.
The codebase is refactored, taking advantage of C++14 and upgraded libraries.

Minor Changes

  • Transition to C++14 (#142)
  • GUI development setup with Qt5 and CMake (#48)
  • Compilation with Intel C++ compiler
  • Coding style update with the updated GCSG

Bug Fixes

  • mef::Initializer is not exception safe (#144)
  • Memory leaks with invalid cyclic MEF constructs (#145)

Since v0.11.3

120 commits resulted in 130 files changed, 3596 insertions(+), 3046 deletions(-)

  • Core : 56 files changed, 2369 insertions(+), 2172 deletions(-)
  • Scripts : No Changes
  • GUI : 15 files changed, 484 insertions(+), 55 deletions(-)
  • Tests : 29 files changed, 288 insertions(+), 476 deletions(-)
  • Documentation : 12 files changed, 138 insertions(+), 63 deletions(-)