# Software Engineering Applications Enabled by Blockchain Technology: A Systematic Mapping Study
## 4 Results
### Blockchain Uses in Software Engineering Reported in Literature (RQ2)  
This section presents the findings of our study with respect to the uses of blockchain to support software engineering activities. Figure 4 is a scatter plot that depicts the intersection of the research type and contribution type facets with the research topic facet. Bubbles' sizes represent the frequency of studies that fall within these intersections (The total number of studies in this map overcomes the number of selected studies, because one study, in specific, [30] refers to more than one topic). Inspired by SWEBOK, we classified the selected studies into 8 categories, namely, (_i_) software requirements [43], (_ii_) software engineering process [30; 44; 45; 46], (_iii_) software testing [47; 48], (_iv_) software quality [49; 50; 51], (_v_) software maintenance [29], (_vi_) software configuration management [30; 41; 52], (_vii_) software engineering management [37; 42; 53; 54; 55; 56], and (_viii_) professional practice [57; 58; 59]. We briefly describe the SE applications below. **Software requirements. ** Requirements management and traceability face a variety of challenges, such as lack of confidence in existing tools, integration issues among heterogeneous tools, manual work, lack of motivation, and confidentiality constraints that impede complete traceability across organizational boundaries [43]. In this regard, a blockchain-based approach was proposed for the trustworthy management and traceability of requirements in interorganizational software projects [43]. Stakeholders register, requirements and metadata on the blockchain and track their evolution through blockchain query functions. Blockchain enables an auditable history of requirements that is visible and verifiable by authorized users, such as partners and customers. Although this study is part of ongoing work, the author claims that blockchain has the potential to enhance the immutability, trust, visibility and traceability of requirements throughout the software development lifecycle (SDLC). **Software engineering process. ** [PERSON] et al. [44] proposed a reliable platform called ChainSoft, for outsourcing software development. This platform makes use of oracles that allow the smart contract to communicate with GitHub/Travis CI. The software request  
Figure 4: Visualization of our systematic map in the form of a bubble plot. creates tests, submits them to a GitHub repository, and submits the task and reward to a smart contract. The developer creates code that passes the tests and uploads the solution to his/her GitHub repository. The smart contract then checks whether all the tests are covered by the solution. It is noteworthy that this is the only study that performs a security analysis. According to this analysis, the platform relies on the honesty of third-parties, which raises several concerns: _(i)_ it may happen that GitHub/Travis CI do not run the tests as intended, intentionally _(ii)_ their services may become unavailable which leads to users submitting tasks at a later time and paying additional transaction fees, and _(iii)_ relying on these systems introduces centralization to some extent, which goes against the decentralized blockchain mindset. [PERSON] et al. [45] introduced two blockchain-based models for the management of Scrum-based and Lean-Kanban projects. According to these authors, smart contracts enable the automation of the acceptance phase and the payment to developers. The customer creates the smart contract for the specific project and the product owner registers user stories, acceptance tests and the hash of expected output. Developers execute the acceptance tests and if the tests pass, they register the hash of the correct output. The smart contract checks the hash of the output against the hash of the expected output. If all the tests passed, Ethers are sent automatically to the developer's address.