Difference between revisions of "The MNE-CPP Project Structure"

From MNE-CPP Wiki
Jump to: navigation, search
 
Line 1: Line 1:
* Highly modular and easily extendable
+
MNE-CPP is designed as a two-layer framework, see Figure below. The library layer (Li) provides the core functionalities, which can be used during development and loaded by applications during runtime. The stand-alone applications, examples and tests are realized within the application layer of MNE-CPP. As a stand-alone software, MNE Scan (Sc) is part of the application layer and makes use of the functionality of the library layer.
* Cross platform capable: Windwos, Linux, Mac, handheld devices & embedded systems
+
Minimizing the use of Software of Unknown Provenance (SOUP) is favorable when developing medical software applications meeting regulatory requirements: each third-party dependency must be tracked and its development life cycle must be auditable. Furthermore, all dependencies should be able to compile on multiple platforms and devices for cross-platform capability. MNE-CPP and MNE Scan make use of one external dependency, namely the Qt framework. Also, we use a so-called Clone-and-Own approach of the Eigen library, which is integrated in our repository. Qt provides tools for GUI creation whereas Eigen provides mathematical operations for linear algebra.
* Purely written in C++
+
 
* MNE-CPP is set up as a two layer structure:
+
*:# Library layer:
+
*:#:* Backbone of the MNE-CPP framework
+
*:#:* Different libraries providing core features & functionalities
+
*:# Application layer:
+
*:#:* User interaction of the MNE-CPP framework
+
*:#:* Full scale GUI applications with rich user experience
+
*:#:* Command line applications
+
*:#:* Simple examples for an easy start
+
*:#:* SUnit tests: Safeguarding correctness of results
+
* Dependencies:
+
*:# Keep dependencies to a minimum
+
*:# Qt for Graphical User Interface integration
+
*:# Light-weight template library Eigen for linear algebra
+
*:# Future proof: Qt/Eigen are highly & activley maintained
+
*:# Avoid SOUP (Software Of Unknown Pedigree)
+
  
 
[[File:MNE-CPP_design_less_color.png|400px]]
 
[[File:MNE-CPP_design_less_color.png|400px]]

Latest revision as of 15:22, 19 September 2017

MNE-CPP is designed as a two-layer framework, see Figure below. The library layer (Li) provides the core functionalities, which can be used during development and loaded by applications during runtime. The stand-alone applications, examples and tests are realized within the application layer of MNE-CPP. As a stand-alone software, MNE Scan (Sc) is part of the application layer and makes use of the functionality of the library layer. Minimizing the use of Software of Unknown Provenance (SOUP) is favorable when developing medical software applications meeting regulatory requirements: each third-party dependency must be tracked and its development life cycle must be auditable. Furthermore, all dependencies should be able to compile on multiple platforms and devices for cross-platform capability. MNE-CPP and MNE Scan make use of one external dependency, namely the Qt framework. Also, we use a so-called Clone-and-Own approach of the Eigen library, which is integrated in our repository. Qt provides tools for GUI creation whereas Eigen provides mathematical operations for linear algebra.


MNE-CPP design less color.png