Design Description

image diagram

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])

 

Fork me on GitHub