Design Description

Complex Dependency Diagram (TheDailyWTF)
Core
XML Parser - Utilizes external libraries to efficiently process XML files.
Validator - Ensures XML project and input files conform to the RELAX NG schema. Validation is integral to initialization, and values passing this process are not re-validated by subsequent components.
Settings - Manages analysis configurations for each run.
Project - Oversees program configurations, analysis inputs, and settings derived from a project file.
Analysis Input - Represents constructs such as models, fault trees, event trees, components, and events, closely aligning with the Open-PSA Model Exchange Format (MEF) architecture. The API is structured as if automatically generated by XML data-binding from the MEF schema, with added functionalities for model manipulation, validation, invariant enforcement, and analysis.
Initializer - Processes input files to build models, fault trees, event trees, common cause failures (CCF), and other analysis constructs. This phase validates both the input data and logic. Initialization adheres to configurations specified in the project file and command line. After initialization, analysis constructs remain unchanged.
Model Container - Acts as the top-level entity that uniquely owns all objects within the model, either directly or indirectly. Analysis inputs and containers persist as long as the parent model remains active.
Risk Analyzer - Operates on validated models with initialized fault trees, event trees, and other constructs to generate results based on user-defined settings. This phase follows initialization.
Analyzers - Perform specialized tasks within the Risk Analyzer, focusing on fault trees, event trees, CCF, uncertainty, and other areas. Shared utilities and functionalities ensure code simplicity and flexibility, adhering to Design by Contract and policy-based design principles.
- Fault Tree Analyzer - Analyzes individual fault trees with a single top event. It identifies primary events, intermediate events, and outputs such as minimal cut sets or prime implicants. Specialized facilities enhance analysis speed and efficiency.
- Probability Calculator - Uses Fault Tree Analyzer results to compute total probabilities and support other quantitative analyzers.
- Importance Analyzer - Calculates the significance of basic events using Probability Calculator results.
- Uncertainty Analyzer - Samples basic event probabilities via the Probability Calculator to derive statistical insights, including mean, confidence intervals, and distributions.
Reporter - Outputs Risk Analyzer results to XML files or streams.
Support Components - Includes logging utilities, XML stream handlers, and library extensions within the ext namespace.
cppdep Component Dependency Report¶
################################################################################
analyzing dependencies among packages in the specified package group scram ...
================================================================================
3 level(s):
level 0:
Dependencies
level 1:
ext
include
level 2:
core
level 3:
gui
================================================================================
SUMMARY:
Components: 4 Cycles: 0 Levels: 3
CCD: 7 ACCD: 1.75 NCCD: 0.92 (typical range is [0.85, 1.10])
################################################################################
analyzing dependencies among components in the specified package scram.core ...
================================================================================
1 cycles detected:
cycle #0 (2 nodes): bdd, zbdd
cycle #0 (2 edges): bdd->zbdd zbdd->bdd
================================================================================
16 level(s):
level 0:
Boost
LibXML
STL
ext
level 1:
env
error
logger
level 2:
element
expression
settings
xml
xml_stream
level 3:
analysis
event
expression/boolean
expression/conditional
expression/constant
expression/exponential
expression/extern
expression/random_deviate
expression/test_event
parameter
project
level 4:
expression/numerical
instruction
substitution
level 5:
alignment
ccf_group
event_tree
level 6:
cycle
event_tree_analysis
fault_tree
level 7:
model
level 8:
initializer
pdag
serialization
level 9:
preprocessor
level 10:
bdd <0>
zbdd <0>
level 11:
fault_tree_analysis
mocus
level 12:
probability_analysis
level 13:
importance_analysis
uncertainty_analysis
level 14:
risk_analysis
level 15:
reporter
level 16:
scram
================================================================================
SUMMARY:
Components: 43 Cycles: 1 Levels: 16
CCD: 483 ACCD: 11.23 NCCD: 2.45 (typical range is [0.85, 1.10])
################################################################################
analyzing dependencies among components in the specified package scram.gui ...
================================================================================
4 level(s):
level 0:
Boost
Qt5
STL
core
ext
level 1:
align
command
guiassert
printable
translate
validator
zoomableview
level 2:
importancetablemodel
language
model
producttablemodel
reporttree
settingsdialog
level 3:
diagram
elementcontainermodel
eventdialog
modeltree
preferencesdialog
level 4:
mainwindow
================================================================================
SUMMARY:
Components: 19 Cycles: 0 Levels: 4
CCD: 71 ACCD: 3.74 NCCD: 1.05 (typical range is [0.85, 1.10])
################################################################################
analyzing dependencies among components in the specified package scram.ext ...
================================================================================
1 level(s):
level 0:
Boost
STL
level 1:
algorithm
bits
combination
find_iterator
float_compare
index_map
linear_map
linear_set
multi_index
scope_guard
source_info
variant
version
================================================================================
SUMMARY:
Components: 13 Cycles: 0 Levels: 1
CCD: 13 ACCD: 1.00 NCCD: 0.32 (typical range is [0.85, 1.10])