From 2e23d672aa78c37e41f7bf564f61a338d20fc2a9 Mon Sep 17 00:00:00 2001 From: Patrick <50352812+Mueller-Patrick@users.noreply.github.com> Date: Sun, 6 Dec 2020 22:40:15 +0100 Subject: [PATCH] Added first version of SAD --- Software-Architecture-Document-(SAD).md | 95 +++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 Software-Architecture-Document-(SAD).md diff --git a/Software-Architecture-Document-(SAD).md b/Software-Architecture-Document-(SAD).md new file mode 100644 index 0000000..09f8e84 --- /dev/null +++ b/Software-Architecture-Document-(SAD).md @@ -0,0 +1,95 @@ +# Software Architecture Document + +# Table of Contents +- [Introduction](#1-introduction) + - [Purpose](#11-purpose) + - [Scope](#12-scope) + - [Definitions, Acronyms and Abbreviations](#13-definitions-acronyms-and-abbreviations) + - [References](#14-references) + - [Overview](#15-overview) +- [Architectural Representation](#2-architectural-representation) +- [Architectural Goals and Constraints](#3-architectural-goals-and-constraints) +- [Use-Case View](#4-use-case-view) +- [Logical View](#5-logical-view) +- [Process View](#6-process-view) +- [Deployment View](#7-deployment-view) +- [Implementation View](#8-implementation-view) +- [Data View](#9-data-view) +- [Size and Performance](#10-size-and-performance) +- [Quality](#11-quality) + +## 1. Introduction + +### 1.1 Purpose +This document provides a comprehensive architectural overview of the system, using a number of different architectural views to depict different aspects of the system. It is intended to capture and convey the significant architectural decisions which have been made on the system. + +### 1.2 Scope +This document describes the technical architecture of the Betterzon project, including the structure of classes, modules and dependencies. + +### 1.3 Definitions, Acronyms and Abbreviations + +| Abbrevation | Description | +| ----------- | -------------------------------------- | +| API | Application programming interface | +| REST | Representational state transfer | +| SRS | Software Requirements Specification | +| UC | Use Case | +| VCS | Version Control System | +| n/a | not applicable | + +### 1.4 References + +| Title | Date | Publishing organization | +| ------------------------------------------------------------------------------------------------------------------------------------|:------------:| ------------------------- | +| [Betterzon](https://blog.betterzon.xyz/) | 2020-12-06 | Betterzon | +| [Repository on GitHub](https://github.com/Mueller-Patrick/Betterzon) | 2020-12-06 | Betterzon | +| [Documentation](https://github.com/Mueller-Patrick/Betterzon/wiki) | 2020-12-06 | Betterzon | +| [UC Search for Product](https://github.com/Mueller-Patrick/Betterzon/wiki/Use-Case-Specification:-Search-for-Product) | 2020-12-06 | Betterzon | +| [UC Price Alarm List](https://github.com/Mueller-Patrick/Betterzon/wiki/Use-Case-Specification:-Price-Alarm-List) | 2020-12-06 | Betterzon | +| [UC Web Crawler](https://github.com/Mueller-Patrick/Betterzon/wiki/Use-Case-Specification:-Web-Crawler) | 2020-12-06 | Betterzon | +| [UC Manage Vendor Shop](https://github.com/Mueller-Patrick/Betterzon/wiki/Use-Case-Specification:-Manage-Vendor-Shop) | 2020-12-06 | Betterzon | +| [UC Favorite Shop List](https://github.com/Mueller-Patrick/Betterzon/wiki/Use-Case-Specification:-Favorite-Shop-List) | 2020-12-06 | Betterzon | +| [SRS](https://github.com/Mueller-Patrick/Betterzon/wiki/SRS) | 2020-12-06 | Betterzon | + +### 1.5 Overview +This document contains the Architectural Representation, Goals and Constraints as well +as the Logical, Deployment, Implementation and Data Views. + +## 2. Architectural Representation +![Architecture](TODO) + +## 3. Architectural Goals and Constraints +The Frontend and the Backend are split up into different components. The web crawler which will be developed later will be an independent component as well. This ensures maximum maintainability and the option to switch one of these components to a different technology in the future without having to rewrite the whole application. + +### Database +For the Database we use [mariaDB](https://mariadb.com/) as we already have multiple mariaDB servers up and running which we can use, which saves time because we don't have to set up a new server. + +### Backend +For the Backend we use a [Node.js](https://nodejs.org/en/) Server with [ExpressJS](https://expressjs.com/). These are used to create a RESTful API in TypeScript. + +### Frontend +We use [Angular](https://angular.io/) to create a single-page application. This application will connect to our RESTful API. + +## 4. Use-Case View +![Use Case](https://github.com/Mueller-Patrick/Betterzon/blob/develop/doku/use-case-betterzon.png) + +## 5. Logical View +TODO + +## 6. Process View +TODO + +## 7. Deployment View +![Deployment View](TODO) + +## 9. Data View +![Database View](TODO) + +## 10. Size and Performance +n/a + +## 11. Quality/Metrics +We use Jenkins as CI/CD server. Our Jenkins instance fullfills two purposes: +1. Every commit is automatically built by Jenkins. The build status is then sent back to GitHub. That way, we can easily see if a commit contains changes that brake the application and fix them before we merge a pull request. +2. Once we merge a pull request to master, the project gets built and deployed to our Webserver by Jenkins automatically +This way, we can assure that no breaking changes are deployed which would result in a website downtime.