Understanding the software development practices of blockchain projects: a survey

Background: The application of the blockchain technology has shown promises in various areas, such as smart-contracts, Internet of Things, land registry management, identity management, etc. Although Github currently hosts more than three thousand active blockchain software (BCS) projects, a few software engineering research has been conducted on their software engineering practices. Aims: To bridge this gap, we aim to carry out the first formal survey to explore the software engineering practices including requirement analysis, task assignment, testing, and verification of blockchain software projects. Method: We sent an online survey to 1,604 active BCS developers identified via mining the Github repositories of 145 popular BCS projects. The survey received 156 responses that met our criteria for analysis. Results: We found that code review and unit testing are the two most effective software development practices among BCS developers. The results suggest that the requirements of BCS projects are mostly identified and selected by community discussion and project owners which is different from requirement collection of general OSS projects. The results also reveal that the development tasks in BCS projects are primarily assigned on voluntary basis, which is the usual task assignment practice for OSS projects. Conclusions: Our findings indicate that standard software engineering methods including testing and security best practices need to be adapted with more seriousness to address unique characteristics of blockchain and mitigate potential threats.

[1]  Luiz Fernando Capretz,et al.  Addressing User Requirements in Open Source Software: The Role of Online Forums , 2014, J. Comput. Sci. Eng..

[2]  Robert M. Hierons,et al.  Smart contracts vulnerabilities: a call for blockchain software engineering? , 2018, 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE).

[3]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[4]  Michael W. Godfrey,et al.  Code Review Quality: How Developers See It , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[5]  Greg N. Gregoriou,et al.  Handbook of Digital Currency: Bitcoin, Innovation, Financial Instruments, and Big Data , 2015, The Journal of Wealth Management.

[6]  Walt Scacchi,et al.  Understanding the requirements for developing open source software systems , 2002, IEE Proc. Softw..

[7]  Steven Weber,et al.  The Success of Open Source , 2004 .

[8]  Stuart W. Shulman,et al.  Rigor and flexibility in computer-based qualitative research: Introducing the Coding Analysis Toolkit , 2008 .

[9]  Kouichi Kishida,et al.  Evolution patterns of open-source software systems and communities , 2002, IWPSE '02.

[10]  Gustavus J. Simmons,et al.  Symmetric and Asymmetric Encryption , 1979, CSUR.

[11]  Jennifer Seberry,et al.  Public Key Cryptography , 2000, Lecture Notes in Computer Science.

[12]  Andrea Pinna,et al.  Blockchain-Oriented Software Engineering: Challenges and New Directions , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).

[13]  Jeffrey C. Carver,et al.  Process Aspects and Social Dynamics of Contemporary Code Review: Insights from Open Source Development and Industrial Practice at Microsoft , 2017, IEEE Transactions on Software Engineering.

[14]  John Noll,et al.  Requirements elicitation in open source software development: a case study , 2010, FLOSS '10.

[15]  Terry S. Overton,et al.  Estimating Nonresponse Bias in Mail Surveys , 1977 .

[16]  J. R. Landis,et al.  The measurement of observer agreement for categorical data. , 1977, Biometrics.

[17]  Arvind Narayanan,et al.  Bitcoin and Cryptocurrency Technologies - A Comprehensive Introduction , 2016 .

[18]  Markus Jakobsson,et al.  Proofs of Work and Bread Pudding Protocols , 1999, Communications and Multimedia Security.