Smart Contracts Based Agile Software Development

Rong Liu, Associate Professor, Stevens Institute of Technology; and Hemang Subramanian, Assistant Professor, Florida International University

IEEE Blockchain Technical Briefs, June 2019

Discuss this topic on IEEE Collabratec

IEEE Collabratec

 

1. Introduction

This article aims to develop a smart contract system to manage agile software development projects. Smart contract is one of the core enabling technologies of blockchain, a class of distributed-transaction systems which has the potential to automate business processes including software contracting.  Smart contracts are verifiable contracts, enforced in terms of contractual obligations, and, are validated by a network of nodes that provide a consensus, to validate transactions [6]. Owing to the decentralized nature of blockchains, smart contracts infrastructure would reduce other administration costs, verification costs and storage costs that are typical of centralized systems. Moreover, combined with other blockchain technologies, smart contracts are believed to address the lack of trust, traceability, compliance, and stakeholder management issues in multilateral collaboration scenarios [7].

Agile software development is one such collaboration scenario, wherein  one or more software development methodologies are adopted to arrive at solutions for requirements, wherein both the solutions and requirements iteratively evolve through collaboration between cross-functional teams. The context for implementation of smart contracts, in the context of agile software development, could be one of the following: a) a vendor using agile software development creates software for a client, b) A firm internally developing software but choosing to operate based on (i) competitive bidding, (ii) using Xtreme Programming or (iii) fault-tolerant software development (N-version programming, self-checking software, etc..) or (iv) task-based development or (v) scrum product development. In this regard, we propose the following: “Can smart contracts based agile software development help improve cycle time, product quality and reduce costs?”

2. Contracts and Software Development Processes

Contract theory has established that contracts reduce frictions between parties that engage in trade [1]. Contracts for software development are usually extremely complex endeavors and firms that outsource large software portfolios find innovative mechanisms to manage and sustain contractual software product development. Traditional software-based contracting is of four types:

a) Fixed Price Contracts
b) Time and Material Contracts
c) Profit Sharing Contracts and
d) Performance based contracts [5]

Frameworks such as FORT i.e., Reliance, Alliance, Support and Alignment have traditionally driven contractual agreements between the client and vendor when software development is outsourced by the client to one or more vendors. Although such contracting models and development frameworks can often improve the efficiency of such trade by reducing frictions among contracting parties, such contracts are often very long-term contracts. Often the cost of initiating the contract through negotiations is often both time consuming and expensive [2]. This is because often contracts are written among parties that operate across geographic, legal and cultural boundaries with different incentives [1].  As a result, these long-term contracts are not consistent with agile software product development practices and prevent the scaling of agile-based development. This is because, agile software development practices are characterized by ease of work allocation, paperwork reduction, elimination of record keeping, and incremental software methodologies. However, these models are inefficient and inflexible in dealing with scope, cost, and time changes.

3. Blockchain and smart contracts in agile software development

A blockchain based system can either be permissioned or permission-less. A public blockchain is accessible to everyone, while a permissioned blockchain system allows only identified parties to join with membership access control. While community-driven software development finds interest in permission-less blockchain systems (e.g., Ethereum), firms engaged in proprietary software development may prefer permissioned blockchain systems that can better address concerns about security, privacy, scalability, and cost. We suggest Hyperledger [3], a permissioned blockchain framework, to demonstrate how to design software development contracts atop the blockchain.

A smart contract is a protocol or agreement, written in a language like Java or Go, that parties agree to make transactions, e.g., a purchase order, a payment, etc. Figure 1 demonstrates the workflow of invoking a smart contract among parties, e.g., project managers, developers, and users. These parties can be engaged in user acceptance testing through a smart contract. An invocation of the smart contract needs to be approved by relevant parties based on a predefined endorsement policy, e.g., a project manager and m out of n users. By endorsement, each party executes the smart contract code locally, and signs the execution result (endorsing by simulation). A provisional transaction is created if all endorsing parties reach the same result. External information (e.g., test results that claim 80% of unit test cases and 80% of black box test cases have passed) from trusted sources (i.e., oracle) may be used as the source of truth, during contract execution. Then transactions are assembled into blocks and sent to committing parties for commitment based on access control policies.

Figure 1

Figure 1: Smart Contract Execution

In addition to capturing computation logic in smart contract code, we need to consider a number of components governing smart contract execution, including endorsing parties, endorsement policies, committing parties, and access control, etc. A systematic approach to smart contract design is needed in the context of agile software development.

We propose to design a smart contract system for agile software development in order to address issues such as inefficiencies, inflexibilities, and difficulties in change management. Following the initiative of legal smart legal templates [4], agile software development contracts can be designed as a set of reusable smart contract templates to connect legal agreements to automated process logic, simplify contract development, and improve software development efficiency. 

An illustration of smart contract execution in the context of a scrum methodology is shown in Figure 2. At the Sprint planning stage, the set of tasks and the requisite conditions for accepting the incremental software developed are decided and written into a master smart contract, which will be validated by all stakeholders. Meanwhile, additional smart contracts are created for specific tasks based on the Sprint Backlog to specify test cases or conditions for accepting particular deliverables of these tasks along with endorsement parties and consensus protocols.  Consider a project consisting of several developers and a Scrum master for overseeing the project. There are a set of users (either testers or general users), who validate the deliverables from developers. Once a task is complete, its corresponding smart contract is executed to determine that task deliverables meet expectations. This smart contract may access agreed oracles to obtain necessary information, e.g., test results, code quality evaluation etc.  Once all tasks defined in the Sprint are complete (or at the end of the current sprint period), the master smart contract is executed to validate conditions staked by different stakeholders of the project. Upon execution, the requisite software module is accepted, and necessary payouts completed, and the software module is either assigned for further integration or a new Sprint is started.

Figure 1

Figure 2: Execution of a SPRINT in the Scrum model of development.

With this design, we intend to study the following:
a) How much trust in the vendor-client relationship can be offloaded to the smart contract subsystem, which is a network of nodes replacing the legal infrastructure setup in the relationship?
b) How can smart contracts be written so as to generate metrics for tracking progress on contractual obligations and in the software development process?
c) How can versioning of smart contracts facilitate different types of contractual obligations in software outsourcing markets?

Conclusion

Smart-contracts are programmable and enforceable on the blockchain. Traditional outsourcing software development has used long term contract models that have not necessarily been optimal in generating the requisite improvements that are needed by today’s software engineering practices. We believe that smart contracts will fill this gap, and enable us to apply contracts to agile software product development. Researchers can study this by comparing smart contract outcomes with the outcomes of four different modes of contracting typically used in software development namely: Fixed Cost (Price) Contracts  (ii) Time and Material Contracts  (iii) Profit sharing Contracts, and (iv) Performance based contracts. We also believe that smart contract templates created by a single user can fit into a repository and can be reused by other vendor-client relationships, and over a period of time evolve to suite all kinds of contingencies and options in markets for technology development.

 

References

  1. Azariadis, C. "Implicit contracts and underemployment equilibria." The Journal of Political Economy: pp. 1183-1202, 1975.
  2. Barthélemy, J. and B. V. Quélin. "Complexity of Outsourcing Contracts and Ex Post Transaction Costs: An Empirical Investigation*." Journal of Management Studies 43(8): pp. 1775-1797, 2006.
  3. Cachin, Christian, "Architecture of the Hyperledger blockchain fabric," Workshop on Distributed Cryptocurrencies and Consensus Ledgers, 2016. Available at https://www.zurich.ibm.com/dccl/papers/cachin_dccl.pdf.
  4. Clack, Christopher D, Vikram A Bakshi and Lee Braine, "Smart Contract Templates: essential requirements and design options," arXiv preprint, arXiv:1612.04496, 2016. Available at https://arxiv.org/pdf/1612.04496.pdf.
  5. Dey, D., et al. "Design and analysis of contracts for software outsourcing." Information Systems Research 21(1): pp. 93-114, 2010.
  6. Szabo, N. "Formalizing and securing relationships on public networks." First Monday 2(9), 1997.
  7. Underwood, Sarah, "Blockchain beyond bitcoin," Communications of the ACM, 59, 11, pp. 15-17, 2016.

 


 

Rong LiuDr. Rong Liu is an Associate Professor of Information Systems at Stevens Institute of Technology. She holds a Ph.D. in Business Administration from Penn State University. Her research interests are Blockchain, Deep Learning Text Mining and Business Process Management.

 

 

Hemang SubramanianDr. Hemang Subramanian is an Assistant Professor of Information Systems and Business Analytics at Florida International University Business School. He holds a Ph.D. in Information Systems from Georgia Institute of Technology. His research interests include Blockchain, Machine learning,  Electronic Markets and IT based Entrepreneurship.

 

 

Editor:

Qinghua LuDr. Qinghua Lu is a senior research scientist at CSIRO, Australia. Before she joined CSIRO, she was an associate professor at China University of Petroleum. She formerly worked as a researcher at NICTA (National ICT Australia). She received her Ph.D. from University of New South Wales in 2013. Her research interest includes architecture design of blockchain applications, blockchain as a service, model-driven development of blockchain applications, reliability of cloud computing, and service engineering. She has published more than 70 peer-reviewed academic papers in international journals and conferences. She is an IEEE member and serves on the Program Committees of a number of international conferences in blockchain, cloud computing, big data and software engineering community.

 


 

Subscribe to the IEEE Blockchain Technical Briefs

Join our Blockchain Technical Community and receive our Technical Briefs by email.

Subscribe Now


Article Contributions Welcomed

IEEE Blockchain Technical Briefs Editorial Guidelines for Authors (PDF, 382 KB)

If you wish to have an article considered for publication, please contact the Managing Editor at
blk-editor@ieee.org.


Best of IEEE Blockchain Technical Briefs

Read the top five most popular IEEE Blockchain Technical Briefs articles of 2018.
Read more (PDF, 731 KB)


Past Issues

March 2019

January 2019

December 2018

September 2018

July 2018


IEEE Blockchain Technical Briefs Editorial Board

Chonggang Wang, Editor-in-Chief
Olivia Choudhury, Managing Editor
Mohammed Atiquzzaman
Nathan Aw
Claire-Isabelle Carlier
Raymond Choo
Francisco Curbera
Mahmoud Daneshmand
Andy Lippman
Chengnian Long
Qinghua Lu
Ammar Rayes
Khaled Salah
Weisong Shi
Hong Wan
Honggang Wang
Jiang Xiao
Zheng Yan
Shucheng Yu
Yan Zhang