---
# System prepended metadata

title: Software Design Document
tags: [kevin-depelseneer, gww, requirements]

---

---
title: Software Design Document
author: Kevin De Pelseneer
reviewer:
tags: kevin-depelseneer,requirements,gww
---

# Software Design Document

## Overview

Software requirements can be found [here](docs/requirements.md).

## Audience

- Current developers
- Future developers within VIB
- Open source contributors
- Operations (person deploying)
- Customers
- Internship supervisors

## Glossary of terminology
- Include references where it makes sense

## Constraints

- Time. Hard deadline for delivery of satisfactory software is:
> The end of the traineeship, June 2022?

## System architecture: potential solutions

- Describe rejected architectures and reasons for rejecting them.
> #### Desktop application with local database
> - Not accessible by external parties
> - Installation of software is required
> - Only usable on desktop
> #### Mobile application
> - Not cross-platform
> - Core not reusable
> #### Website with direct database access
> - No secure database access
> - User login is also not secure.

## System architecture

### Figure/diagram of the whole system
![](https://i.imgur.com/bYJzWFj.png)
### Components
- User Interface
- Admin Interface
- API
- Database
- Reusable Core Application that can be implemented in other projects.
### Responsibilities
#### User Interface
- Accepts the input from the user and passes it to the core application
- Returns a visual representation of the construct made by the user
#### Admin Interface
- Create new users
- Application maintenance (Database back-ups)
#### API
- At login: Redirect the user to a identity provider
- Accepts HTTP requests from the user interface
- Query the database and return the requested data
- Return HTTP responses to the user interface
#### Database
- Store user information
- Store the vectors information
- Store constraints
#### Core Application
- Performing the Golden Gateway experiment
### Data flow

## Data Structures

#### User
- name
- OpenID Connect issuer (maybe, depends if we support multiple issuers)
- OpenID Connect subject (unique id from an issuer)

#### Level 0 construct or donor vectors
- name
- MP-G0-number
- Sequence
- Length (Not strictly necessary: can be calculated from sequence length)
- Annotations (from genbank)
- Features (from genbank) (can be together with annotations)
- BSA I Overhang
- Owner / Designer
- Remarks
- Constraints?

#### Backbones or destination vectors
- name
- MP-G0-number
- Level => Can it be used for level 0, 1 or 2?
- Sequence
- Length (Not strictly necessary: can be calculated from sequence length)
- Annotations (from genbank)
- Features (from genbank) (can be together with annotations)

#### Level 1 construct
- name
- MP-G1-number
- [ level 0 elements ] in a list? Store an object?
- Backbone

#### Access Control
- White list:
    - Sven Eyckerman
    - Delphine De Sutter
    - Louis Delhaye
    - Tessa Van de Steene
    - George Moschonas
    - Jarne Pauwels
    - Margaux De Meyer
    - Annick Verhee


## User interface

- Wireframes
- Screenshots
![](https://i.imgur.com/EduyLfH.png)
![](https://i.imgur.com/k6NvYK1.png)
![](https://i.imgur.com/juHaee5.png)



## Testing plan

- User A/B testing ...
- Acceptance testing by Sven/Delphine/...

## Development and documentation methodology

## Goals

1. Deliver a useful GUI for Sven and his lab
2. Publish the core component as a seperately usable library locally and in WebAssembly
3. Publish JavaScript bindings to the **core component** to NPM
4. Publish user interface components to NPM

## Milestones

* 2021-Nov-12: Finalise first draft of SDD (+ 1 week)
* 2021-Dec-10: Initial Demo with Sven and Delphine (+ 4 days)
* 2021-Dec-13: Mid-project review meeting
* 