From 07f66059b46cb9c35dfb5e17a2ce2c90ab6e395d Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Sat, 17 Feb 2024 14:53:36 +0100 Subject: [PATCH] Done the merge with topic 4 by hand --- docs/src/04_solution_strategy.adoc | 48 +++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc index b53ce6dd..8c85e08b 100644 --- a/docs/src/04_solution_strategy.adoc +++ b/docs/src/04_solution_strategy.adoc @@ -29,4 +29,50 @@ Refer to details in the following sections. See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation. -**** \ No newline at end of file +**** +=== Technology decisions + +The technologies chosen for developing the WIQ web app are :: +* **ReactJS** : A JavaScript library that facilitates the creation of interactive grafical interfaces. +* **Sass** : A scripting language that is compiled into CSS. It extends CSS by providing several mechanisms such as variables, nested rules, mixins, functions, and inheritance. +* **TypeScript** : A superset of JavaScript that adds various features that can resolve code errors before running the actual code. +* **SpringBoot** : An extension of the Spring framework for creating Java applications. SpringBoot offers many preconfigurations that accelerate the code production process. +* **Wikidata Toolkit** : Wikidata Toolkit is a Java library for accessing Wikidata and other Wikibase installations. It can be used to create bots, to perform data extraction tasks (e.g., convert all data in Wikidata to a new format), and to do large-scale analyses that are too complex for using a simple SPARQL query service. +* **Docker** : Docker provides tools and a runtime environment to manage these containers efficiently, allowing developers to build, ship, and run applications consistently across different environments. +* **MySql** : MySQL is an open-source relational database management system that uses SQL for managing and manipulating data. +* **Mongo DB** : MongoDB is a popular open-source NoSQL database management system that stores data flexible, JSON-like documents with dynamic schemas. + + +=== Top-level Decomposition + +To be updated along the development of the application where we will add the most important architectural and design patterns + +==== Architectural Patterns + +* **Microservices** : Selected as our main architecture. We will have various small independent services that interact between them to support all the fuctionalities of the web application + +==== Design Patterns + +* **Façade** : Pattern used to communicate between different parts of the whole application (APIs) + +=== Decisions for achieving quality goals + +|=== +|Quality Goal|Decision +| _Usability_ | _We will try to make some rounds of usability tests with people outside of the development team_ +| _Performance_ | _Our goal is to have a system that will response under 1 second to all petitions, however the consecuences of peak times are unknow_ +| _Security_ | _Using HTTPS, applying input validation, encripting sensible information (As we face new security failures we will add measures)_ +| _Robustness_ | _We will apply different mechanism to reduce the risks that could crash the application_ +| _Accesibility_ | _Testing our User Interface with third party tools like Google's Lighthouse in order to correct them_ +|=== + +Will be updated whenever we find a new quality goal or we change the approach to achieve it + +=== Organizational Decisions + +|=== +|Third Party Product|Reason +| _Git_ | _Easy to use distributed version control application_ +| _Github_ | _Web-based platform for hosting and managing Git repositories. It also provides different services like: a wiki, issues, github actions and many more_ +| _Microsoft Azure_ | _Cloud service use for creating virtual machines in order to deploy the application_ +|=== \ No newline at end of file