Harmonica (BlockcHain fRaMewOrk for the desigN and Implementation of deCentralized Application) is a semi-automatic framework dedicated to helping practitioners in the design and implementation of Blockchain applications. The framework is composed of two different tools: (1) BLADE (BLockchain Automated Decision Engine), a decision-making tool for the selection of the most suitable blockchain and software patterns in a given case, and (2) BANCO, a configurator capable of assembling parts of the blockchain application to design using core assets (ie. templates), an approach from the Software Product Line (SPL) research field (to come). A knowledge base, formalized as an ontology, has also been designed to support the two different tools. The Figure 1 shows a graphical organization of the project:
Figure 1: Framework organization. Orange artifacts have been implemented in their first version, and red artifacts are in design or development.
Other tools have also been created to support the construction of the knowledge base and artifacts: Ardent, a platform to extract software knowledge during systematic literature studies and identify patterns and connections between software components, and a benchmarking tool for Ethereum smart-contracts.
If you want to learn more on those, feel free to read the project publications below, or have a look at project repositories!
- (EN) Six, N., Correa-Restrepo, C., Herbaut, N., Salinesi, C., "An ontology for software patterns: application to blockchain-based software development." Accepted for publication at EDOC'22 Forum. PDF
- (EN) Six, N., Herbaut, N., Lopez-Herrejon, R. E., & Salinesi, C. (2022, September). Using software product lines to create blockchain products: application to supply chain traceability. In Proceedings of the 26th ACM International Systems and Software Product Line Conference-Volume A (pp. 97-107). PDF
- (EN) Six, N., Herbaut, N., & Salinesi, C. (2022). Blockchain software patterns for the design of decentralized applications: A systematic literature review. Blockchain: Research and Applications, 100061. PDF
- (EN) Six, N., Herbaut, N., & Salinesi, C. (2021). Harmonica: A Framework for Semi‐automated Design and Implementation of Blockchain Applications. INSIGHT, 24(4), 25-27. PDF
- (FR) Six, N., Herbaut, N., & Salinesi, C. (2021). BLADE: Un outil d’aide à la décision automatique pour guider le choix de technologie Blockchain. Revue ouverte d’ingénierie des systèmes d’information, 2(1). PDF
- (EN) Six, N. (2021). Decision process for blockchain architectures based on requirements. CAiSE Doctoral Consortium. PDF
- (EN) Six, N., Ribalta, C. N., Herbaut, N., & Salinesi, C. (2020, December). A blockchain-based pattern for confidential and pseudo-anonymous contract enforcement. In 2020 IEEE 19th International Conference on Trust, Security and Privacy in Computing and Communications (TrustCom) (pp. 1965-1970). IEEE. PDF
- (FR) Six, N., Herbaut, N., & Salinesi, C. (2020, June). Quelle Blockchain choisir? Un outil d'aide à la décision pour guider le choix de technologie Blockchain. In INFORSID 2020 (pp. 135-150). PDF
This organization holds many repositories. The following artifacts constitutes the framework core:
- BLADE - A decision-making tool for the selection of a blockchain and software patterns.
- BANCO - Generating blockchain applications based on software product line principles (WIP)
- A list of blockchain-based software patterns identified during a systematic literature review
- An ontology of blockchain-based software patterns and a tool able to explore it.
Along these contributions, tools have been designed to facilitate the creation of core parts of the framework:
- Ardent - A platform to assist data extraction and processing of software architectures during systematic literature reviews
- An implementation of our blockchain-based pattern for confidential and anonymous contract enforcement
- A benchmarking tool to evaluate blockchain network performance
This project is developed in the context of my Ph.D. thesis at Université Paris 1 Panthéon-Sorbonne. However, great contributions were also made by others! The following list references all the contributors for this project:
- Nicolas Six - Ph.D. student *
- Claudia Negri Ribalta - Ph.D. student *
- Camilo Correa-Restrepo - Ph.D. student *
- Nicolas Herbaut - Associate Professor *
- Camille Salinesi - Full Professor *
- Roberto Erick Lopez-Herrejon - Full Professor '
* : Université Paris 1 Panthéon-Sorbonne ' : École de Technologie Supérieure (ÉTS)
This project gladly accepts new contributions! Feel free to make pull requests or open issues if you want to contribute. You can also contact me if you have some ideas that could fit in this project, maybe we might sort out an academic collaboration on those!
Email: [email protected]
Twitter: @Nicothesixth
Github: nicoSix
LinkedIn: https://www.linkedin.com/in/nicolas-six/