Page Properties | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Goals
Background and strategic fit
Table of Contents |
---|
Expand | ||
---|---|---|
| ||
|
Assumptions
Requirements
Actors
Actor name | Role definition |
---|---|
The Iroha peer | One of active peers of the Iroha network, accessible by network for the current user. |
The administrator | The user of the Iroha network with the extended rights towards manipulating the peers and network configuration |
Functional requirements
For the functional requirements, we should follow the default use case template by example:
Use case title | [FR0000] Example use-case; ID should be unique | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||||||||||
Source | Source (or list of sources) of the function: project name / stakeholder name / document title (e.g., whitepaper) / etc. | ||||||||||||||||||
Preconditions |
| ||||||||||||||||||
Use case flow |
| ||||||||||||||||||
Postconditions |
| ||||||||||||||||||
Alternative flow |
| ||||||||||||||||||
Exception flow |
|
Info | ||
---|---|---|
| ||
Assuming, that each section would not have more than 100 use cases, the use case ID should be formed using that template: FR<section_number><use_case_number_in_section_starting_from_zero> For example, for second use case in section 02 it should be: FR0201 |
00. Iroha network operations
Info |
---|
❇️❇️❇️ In this section all use cases related to generic operations with Iroha network and peers will be described |
Use case title | [FR0001] Starting the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0002] Adding peer to the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0003] Removing peer from the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow | Postconditions | Alternative flow | Exception flow | Use case title |
| ||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0004] Configuring initial state of the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
01. Making changes in Iroha network data by Iroha special instructions
In this section all use cases related to changing data in the Iroha network will be described
Use case title | [ |
---|
FR0005] Changing configuration of working Iroha network | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
Preconditions |
|
|
Use case flow
- The user sends the transaction to the Iroha peer through the API
- The Iroha peer receives the transaction and validates its contents
- The Iroha peer checks that the user's account have enough permissions to run all instructions included in the transaction
- The Iroha peer executes the transaction by applying it to the current block
- The Iroha peer returns the result of the operation to the user
- The transaction is successfully executed and applied to the network state
- On step 4, if the current user's account is multi-signature, the result of the transaction will be applied to the block-store only when the number of signatures will reach the current quorum value. In other cases, the Iroha peer will return "pending" status as a response on step 5.
- On step 2, one of the instructions has invalid structure, the Iroha peer returns an error message with description to the user and stops the flow
- On step 3, if the user's account does not have required permissions to execute one of the instructions, the Iroha peer returns information about that error and stops the flow
- On step 3, in case of a multi-signature transaction, if the instruction signed using the key pair, which was already used for signing that instruction, the Iroha peer will return "already signed" error status and stop the flow
[FR0101] Creation of the account in the Iroha network
Status | ||||
---|---|---|---|---|
|
- Iroha 2 whitepaper ( Vadim Reutskiy)
- The user has permission to create accounts
Use case flow
- The user prepares information about the account that should be created, which includes name, domain, the public key and permissions list
- The user prepares instruction to send to the Iroha network according to the prepared information
- The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
- The Iroha peer returns the result of the instruction execution to the user
- The new account in the Iroha network is created
- On step 3, if the account with the provided name or public key already exists in the network, the Iroha peer will return "already exists" error status; user case flow will stop.
| |
Use case flow | |
Postconditions |
|
Alternative flow | |
Exception flow |
Use case title | [FR0006] Changing configuration of the particular peer | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow | |||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
01. Making changes in Iroha network data by Iroha special instructions
Info |
---|
❇️❇️❇️ In this section all use cases related to changing data in the Iroha network will be described |
Use case title | [FR0100] Sending the transaction to the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0101] Creation of the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | [FR0102] Granting permissions for the account in the Iroha
| Use case title |
|
Use case title | [FR0102] Configuring permissions for the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| Use case title | [FR0104] Sending complex instruction using ISI DSL
|
Use case title | [FR0102] Granting permissions for the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0105FR0104] Sending complex instructionandcribing to the status of finalizationusing ISI DSL | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | [FR0106] Creation of the multi-signature account in the Iroha network
| Use case title |
|
Use case title | [FR0105] Sending instruction andcribing to the status of finalization | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow | Source | Sora 2 project (from Zilya by Vadim Reutskiy
| |||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
Use case title | [FR0107] Changing quorum for the multi-signature account | ||||||
Status |
| ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0106] Creation of the multi-signature account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0108FR0107] Changinglist of signatoriesquorum for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0109] SigningFR0108] Changing list of signatories for the multi-signaturetransactionaccount | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | |||||||
Use case title | [FR0110] Changing the conditions for the multi-signature account | ||||||
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | Exception flow | Use case title | [FR0111] Assigning weights to the signatories of the multi-signature
| ||||
Exception flow |
| ||||||
|
Use case title | [FR0109] Signing multi-signature transaction | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0110] Changing the conditions for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0111] Assigning weights to the signatories of the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Bogdan Mingela | ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0112] Associating and changing arbitrary data payload with the account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
02. Acquiring data from the Iroha network by queries
Info |
---|
❇️❇️❇️ In this section all use cases related to retrieving data from the Iroha network will be described |
Use case title | [FR0200] Acquiring data from the Iroha network by query | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0201] Acquiring the information about the selected account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Bogdan Mingela | ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A Use case flow | ||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0202] Acquiring of the current permissions for the selected account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0112] Associating and changing arbitrary data payload with the accountFR0203] Acquiring a list of pending multi-signature instructions | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
02. Acquiring data from the Iroha network by queries
❇️❇️❇️
In this section all use cases related to retrieving data from the Iroha network will be described
|
Use case title | [FR0200] Acquiring data from the Iroha network by queryFR0204] Acquiring a list of current conditions for a multi-signature account | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| Postconditions | User receives the response with the requested data
| ||||||
Postconditions |
| ||||||||
Alternative flow | N/A | ||||||||
Exception flow |
| ||||||||
Use case title | [FR0201] Acquiring the information about the selected account | ||||||||
Status |
| ||||||||
Source | Preconditions | Use case flow | Postconditions | Alternative flow | Exception flow
|
Use case title | [FR0202FR0205] Acquiringof the current permissions for the selected accounta block by its number | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Preconditions | Use case flow | Postconditions | Alternative flow | Exception flow | ||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0203FR0206] Acquiringa list of pending multi-signature instructionsblocks subscription | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flowOn | step 3, if there are no currently pending transactions, the Iroha peer will return "empty response" status N/A |
Use case title | [FR0204FR0207] Acquiringa list of current conditions for a multi-signature accountpending transactions subscription | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0205] Acquiring a block by its numberFR0208] Subscribing on the query results | |||||||
---|---|---|---|---|---|---|---|---|
Status |
| |||||||
Source | Bogdan Mingela
| |||||||
Preconditions |
| |||||||
Use case flow |
| Postconditions | The user receives the requested block from the blockstore
| |||||
Postconditions |
| |||||||
Alternative flow | N/A | |||||||
Exception flow |
| |||||||
Use case title | [FR0206] Acquiring blocks subscription | |||||||
Exception flow | N/A
| discuss | (can be extended with a start block number index)||||||
Source | ||||||||
Preconditions |
| |||||||
Use case flow |
| |||||||
Postconditions |
| |||||||
Alternative flow | N/A | |||||||
|
Use case title | [FR0207] Acquiring pending transactions subscriptionFR0209] Validate result of the query | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flowN/Aflow |
|
Use case title | [FR0208] Subscribing on the query resultsFR0210] Query old Iroha state (e.g., query balance month ago) | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions | The user has continuous results of query execution
| ||||||
Preconditions |
| ||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0209FR0211]Validate resultQuerying list of accounts with thequerypredefined filter | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| Source | Kamil Salakhiev, Sora project (by Ruslan Rezin )- probably optional for MVP, if there will be another way for gathering data for the award calculation for liquidity providers in DEX solution | ||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
Postconditions |
| ||||||||
Alternative flowN/A |
| ||||||||
Exception flow |
|
Use case title | [FR0210] Query old Iroha state (e.g., query balance month ago)FR0212] Retrieving the list of keys of data payload, associated with the target account | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| Source |
| |||||||||
Source |
| |||||||||||
Preconditions | Postconditions |
| ||||||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| |||||||||||
| ||||||||||||
Use case flow |
| |||||||||||
Postconditions |
| |||||||||||
Alternative flow | N/A | |||||||||||
Exception flow |
|
Use case title | [ |
---|
FR0213] Retrieving the value of data payload by the key, associated with the target account | |||||||
---|---|---|---|---|---|---|---|
Status |
|
Source |
|
Preconditions |
|
| |
Use case flow |
|
|
|
|
| |
Postconditions |
|
| |
Alternative flow | N/A |
Exception flow |
|
|
|
|
|
|
Use case title | [FR0212FR0214]Retrieving theQuerying list ofkeys of data payload, associated with the target accounttransactions with predefined filter | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | Exception flow |
|
[FR0213] Retrieving the value of data payload by the key, associated with the target account
Status | ||||
---|---|---|---|---|
|
- Sora 2 project (from Zilya by Vadim Reutskiy)
- The user has access to account with permissions to retrieve data payload related to the target account
Use case flow
- The user prepares the target account identifier and required key for forming the corresponding query
- The user sends the transaction with prepared query to the Iroha peer (<<include>> FR0200)
- The Iroha peer returns results of query to the user, which contains value of data payload, associated with target key on target account
- The user acquired value of data payload, associated with target key on target account
N/A
| |
Exception flow |
|
|
|
Use case title | [FR0214] Querying list of transactions with predefined filterFR0215] Subscription on incoming transactions | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
Postconditions |
| ||||||||
Alternative flow |
| ||||||||
Exception flow |
| ||||||||
Postconditions |
| ||||||||
Alternative flow |
| ||||||||
Exception flow | N/A |
03. Setting up and executing triggers
Info |
---|
❇️❇️❇️ In this section all use cases related to triggers in the Iroha network will be described |
Use case title | [FR0215] Subscription on incoming transactionsFR0300] Setting up a trigger in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
03. Setting up and executing triggers
Info |
---|
❇️❇️❇️ In this section all use cases related to triggers in the Iroha network will be described |
Use case title | [FR0300] Setting up a trigger in the Iroha network
| ||||||
---|---|---|---|---|---|---|---|
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0301] Manually firing the trigger | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| Use case flow |
| ||||||
Use case flow |
| Postconditions | The trigger was configured and ready to fire
| ||||||
Postconditions |
| ||||||||
Alternative flow | N/A | ||||||||
Exception flow |
|
Use case title | [FR0301FR0302]Manually firingRemoving the trigger | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
09. High-level use cases
Info |
---|
❇️❇️❇️ In this section all high-level use cases will be described |
Use case title | [FR0302] Removing the triggerFR0900] Configuration of fees for transfers inside the current Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| Use case flow |
| ||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
09. High-level use cases
In this section all high-level use cases will be described
Use case title | [FR0900] Configuration of fees for transfers inside the current Iroha networkFR0901] Sending transaction with fees | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [ |
---|
FR0902] Delegation of account control with time limit | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
|
Preconditions |
|
|
Use case flow
- The user prepares the information about needed transfer of assets
- The user sends the query to the Iroha peer in the aim to get the needed structure of transaction, including all required fees (<<include>> FR0200)
- The response also contains the time frame until the provided information will be relevant.
- The user creates the transaction with all required instructions included within the provided time frame
- The user sends the prepared instruction to the Iroha peer (<<include>> FR0100)
- The Iroha peer returns results of the instruction to the user
- The transfer instruction was successfully applied, together with all needed instructions for fees deduction.
- On step 3, if the time frame has passed, the user needs to request the information about fees again in the aim to create correct transaction
| |
Use case flow | |
Postconditions |
|
Alternative flow | |
Exception flow |
Use case title | [FR0903] Inheritance of the account after period of inactivity | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
Non-functional requirements
Non-functional requirements (also named as "Quality attributes") describes the behavior of the system not directly related to the functions of the system, but answers the question "How system works?". The template for all quality attributes should follow the example (link to source):
Quality attribute name | [NFR0000] Example quality attribute; ID should be unique | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||||||||||
Source | Source (or list of sources) of the quality characteristic: project name / stakeholder name / document title (e.g., whitepaper) / etc. | ||||||||||||||||||
Source of stimulus | Entity, which initiates the stimulus, may be one of system users, another software system, etc. | ||||||||||||||||||
Stimulus | Condition, which requires the response from the system | ||||||||||||||||||
Environment | Definition of specific conditions when stimulus occurs, and which is important for the result of response. Typical environment values are: normal operation, overload of requests, starting up the system, etc. | ||||||||||||||||||
Artifact | Particular subject of stimulus, may be the whole system, some subset of parts or single part of the system. | ||||||||||||||||||
Response | Result of reaction of the system to the stimulus | ||||||||||||||||||
Response measure | Measurable characteristic of the response, which can be checked for understanding how the system satisfies the requirements |
Performance
Quality attribute name | [NFR0001] Transaction processing speed | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Source of stimulus | Client applications of the Iroha network | ||||||
Stimulus | Client application sends transactions to the Iroha network | ||||||
Environment | Normal operation of the system | ||||||
Artifact | Whole Iroha network | ||||||
Response | The Iroha peer accepts the transactions and adds them to the blockchain | ||||||
Response measure | The Iroha network should process at least 20.000 transactions per second |
Quality attribute name | [NFR0001] Delay of block creation | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Source of stimulus | Client applications of the Iroha network | ||||||
Stimulus | Client application sends transactions to the Iroha network | ||||||
Environment | Normal operation of the system | ||||||
Artifact | Whole Iroha network | ||||||
Response | The Iroha peer accepts the transactions and to the block | ||||||
Response measure | The Iroha network should create new block each 2-3 seconds |
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|