Requirements

Who is our project for?

Chris We created a persona in order to get an idea of who our project is targeted towards. This persona 'Chris Jordan' is a fictional person who represents the typical user of our project. He is an architect who is frustrated at the problems in the industry and would love to see how our project can be used to fix this. On top of creating a persona, we were able to speak with our teammate Lim Zi's sister who is an architect. She has experienced the problem of long paper trails and poor record keeping first-hand. She loved our project's concept and thinks it would hugely benefit the industry.

MoSCoW

Must Have: Should Have: Could Have: Won't Have:
Interactive AR Environment displaying 3D Models Application should have friendly accessible user interface Different sections for types of data stored Create database system to store 3D models off-site
Connection/Interaction between Unity and Blockchain Contract migration to live Testnet instead of localhost Progress tracking - ability to update AR model when Blockchain changes Full interaction with individual entities on AR application (opening doors etc.)
Fetching data from the Blockchain through Unity Migration to the Azure Blockchain Service Compatibility with the HoloLens
Connectivity between Unity and Blob Storage
Algorithm for hashing 3D model files, pdfs, etc.
Front-end application that interacts with the Blockchain
Storing inputted data on the Blockchain
Storing 3D files in a backend database
Setting up Solidity Smart Contracts

Achieving MoSCoW

Must have:
Interactive AR Environment displaying 3D Models We are using Unity to develop the AR Environment. Within Unity we can place different types of objects, such as models buildings.
Connection/Interaction between Unity and Blockchain We are using web3 to interact with Infura as an access node to the Ethereum Blockchain through a HTTP or IPC connection.
Fetching data from the Blockchain through Unity Same as previous requirement, we are using web3 for connectivity between Unity and the Blockchain, which allows us to fetch data from Blockchain.
Connectivity between Unity and Blob Storage We will be retrieving the download link from the Blockchain via Web3 and be using a Unity download handler to retrieve the file and display contents
Algorithm for hashing 3D model files, pdfs, etc. We are currently using the SHA-256 algorithm to hash our 3D model files, pdfs, etc.
Front-end application to interact with the Blockchain We currently have a React webapp that allows us to access the Blockchain data. Having a front-end allows us to manipulate Blockchain data independent of the AR model.
Storing inputted data on the Blockchain We achieve this by developing a front-end React.JS Application that links to a Node.JS back-end to handle pushing data onto the Blockchain
Storing 3D files in a backend database We have decided to use Azure Blob Storage as our backend database.
Setting up Solidity Smart Contracts Deployment of these smart contracts onto the Ethereum/Quorum mainnet or test network will allow us to interact with the Ethereum/Quorum Blockchain.
Should have:
Application should have friendly accessible user interface We will achieve this by ensuring that the design is intuitive and aesthetic. This is important as our users may not be hugely experienced in using computers.
Contract migration to live Testnet instead of localhost The Ropsten test network will give us a better representation of the actual Ethereum Blockchain, allowing us to mimic the Ethereum Blockchain better when testing.
Migration to the Azure Blockchain Service We decided to do this due to the performance and data privacy considerations. Private Blockchains handle significantly more transactions per seconds than public blockchains.
Could have:
Different sections for types of data stored The records in construction are often split into sections as there are many types of records. To support this, we could store different types of records in the Blockchain.
Progress tracking - ability to update AR model when Blockchain changes We want the AR model to update whenever it is changed in the Blockchain in order to ensure the latests changes are always shown to the user.
Compatibility with the HoloLens Compatibility with the HoloLens would enhance our applications experience, however due to time constraints and the pandemic outbreak, we are not able to do sufficient testing to implement this feature.
Won't have:
Create database system to store 3D models off-site There are pre-existing database systems which are suitable for our project, therefore there is no need for us to create our own.
Full interaction with individual entities on AR application (opening doors etc.) This would be a useful feature, however due to the time constraints on our project, it is unrealistic for us to implement this properly, as it would most likely be too buggy.


use case diagram


List of Use Cases


Use Cases for Architects, Contractors, Construction Companies
  1. Uploading contract details onto the blockchain
  2. Retreiving contract details onto the blockchain
  3. Uploading models of the construction project onto the blob storage
  4. Retrieving models of the construction project from the blob storage
  5. Update models of construction project with newer version onto the blob storage
  6. Place down models of the construction project onto AR object-based markers
  7. Place down models of construction project to check current construction progress
  8. Place down models of construction project onto detected planes in AR for reference
Use Cases for Construction Workers
  1. Retrieving models of the construction project from the blob storage
  2. Place down models of the construction project onto AR object-based markers for reference before working
  3. Place down models of the construction project onto detected planes in AR for reference before working
  4. Place down models of the construction project to check similarity with actual project