ABCDE—agile block chain DApp engineering

Blockchain software development is becoming more and more important for any modern software developer and IT startup. Nonetheless, blockchain software production still lacks a disciplined, organized and mature development process, as demonstrated by the many and (in)famous failures and frauds occurr...

Full description

Bibliographic Details
Main Authors: Lodovica Marchesi, Michele Marchesi, Roberto Tonelli
Format: Article
Language:English
Published: Elsevier 2020-12-01
Series:Blockchain: Research and Applications
Subjects:
Online Access:http://www.sciencedirect.com/science/article/pii/S2096720920300026
_version_ 1818839361732476928
author Lodovica Marchesi
Michele Marchesi
Roberto Tonelli
author_facet Lodovica Marchesi
Michele Marchesi
Roberto Tonelli
author_sort Lodovica Marchesi
collection DOAJ
description Blockchain software development is becoming more and more important for any modern software developer and IT startup. Nonetheless, blockchain software production still lacks a disciplined, organized and mature development process, as demonstrated by the many and (in)famous failures and frauds occurred in recent years. In this paper we present ABCDE, a complete method addressing blockchain software development. The method considers the software integration among the blockchain components—smart contracts, libraries, data structures—and the out-of-chain components, such as web or mobile applications, which all together constitute a complete DApp system. We advocate for ABCDE the use of agile practices, because these are suited to develop systems whose requirements are not completely understood since the beginning, or tend to change, as it is the case of most blockchain-based applications. ABCDE is based on Scrum, and is therefore iterative and incremental. From Scrum, we kept the requirement gathering with user stories, the iterative-incremental approach, the key roles, and the meetings. The main difference with Scrum is the separation of development activities in two flows—one for smart contracts and the other for out-of-chain software interacting with the blockchain—each performed iteratively, with integration activities every 2–3 iterations. ABCDE makes explicit the activities that must be performed to design, develop, test and integrate smart contracts and out-of-chain software, and documents the smart contracts using formal diagrams to help development, security assessment, and maintenance. A diagram derived from UML class diagram helps to effectively model the data structure of smart contracts, whereas the exchange of messages between the entities of the system is modeled using a modified UML sequence diagram. The proposed method has also specific activities for security assessment and gas optimization, through systematic use of patterns and checklists. ABCDE focuses on Ethereum blockchain and its Solidity language, but preserves generality and with proper modifications might be applied to any blockchain software project. ABCDE method is described in detail, and an example is given to show how to concretely implement the various development steps.
first_indexed 2024-12-19T03:53:04Z
format Article
id doaj.art-b85902785dee4239bd3b062435a1e21c
institution Directory Open Access Journal
issn 2666-9536
language English
last_indexed 2024-12-19T03:53:04Z
publishDate 2020-12-01
publisher Elsevier
record_format Article
series Blockchain: Research and Applications
spelling doaj.art-b85902785dee4239bd3b062435a1e21c2022-12-21T20:36:55ZengElsevierBlockchain: Research and Applications2666-95362020-12-0111100002ABCDE—agile block chain DApp engineeringLodovica Marchesi0Michele Marchesi1Roberto Tonelli2DMI, University of Cagliari, Cagliari, 09124, ItalyDMI, University of Cagliari, Cagliari, 09124, ItalyCorresponding author.; DMI, University of Cagliari, Cagliari, 09124, ItalyBlockchain software development is becoming more and more important for any modern software developer and IT startup. Nonetheless, blockchain software production still lacks a disciplined, organized and mature development process, as demonstrated by the many and (in)famous failures and frauds occurred in recent years. In this paper we present ABCDE, a complete method addressing blockchain software development. The method considers the software integration among the blockchain components—smart contracts, libraries, data structures—and the out-of-chain components, such as web or mobile applications, which all together constitute a complete DApp system. We advocate for ABCDE the use of agile practices, because these are suited to develop systems whose requirements are not completely understood since the beginning, or tend to change, as it is the case of most blockchain-based applications. ABCDE is based on Scrum, and is therefore iterative and incremental. From Scrum, we kept the requirement gathering with user stories, the iterative-incremental approach, the key roles, and the meetings. The main difference with Scrum is the separation of development activities in two flows—one for smart contracts and the other for out-of-chain software interacting with the blockchain—each performed iteratively, with integration activities every 2–3 iterations. ABCDE makes explicit the activities that must be performed to design, develop, test and integrate smart contracts and out-of-chain software, and documents the smart contracts using formal diagrams to help development, security assessment, and maintenance. A diagram derived from UML class diagram helps to effectively model the data structure of smart contracts, whereas the exchange of messages between the entities of the system is modeled using a modified UML sequence diagram. The proposed method has also specific activities for security assessment and gas optimization, through systematic use of patterns and checklists. ABCDE focuses on Ethereum blockchain and its Solidity language, but preserves generality and with proper modifications might be applied to any blockchain software project. ABCDE method is described in detail, and an example is given to show how to concretely implement the various development steps.http://www.sciencedirect.com/science/article/pii/S2096720920300026BlockchainSmart contractsBlockchain-oriented software engineeringUMLDApp design
spellingShingle Lodovica Marchesi
Michele Marchesi
Roberto Tonelli
ABCDE—agile block chain DApp engineering
Blockchain: Research and Applications
Blockchain
Smart contracts
Blockchain-oriented software engineering
UML
DApp design
title ABCDE—agile block chain DApp engineering
title_full ABCDE—agile block chain DApp engineering
title_fullStr ABCDE—agile block chain DApp engineering
title_full_unstemmed ABCDE—agile block chain DApp engineering
title_short ABCDE—agile block chain DApp engineering
title_sort abcde agile block chain dapp engineering
topic Blockchain
Smart contracts
Blockchain-oriented software engineering
UML
DApp design
url http://www.sciencedirect.com/science/article/pii/S2096720920300026
work_keys_str_mv AT lodovicamarchesi abcdeagileblockchaindappengineering
AT michelemarchesi abcdeagileblockchaindappengineering
AT robertotonelli abcdeagileblockchaindappengineering