Note

This version of the template contains some help and explanations. It is used for familiarization with arc42 and the understanding of the concepts. For documentation of your own system you use better the plain version.

1. Introduction and Goals

LoMap es un sistema de gestión de mapas y lugares desarrollado por la empresa HappySw. El objetivo principal de este software es permitir a una red de usuarios crear mapas personalizados con los lugares y rutas que él haya decido incorporar. Además este grupo de personas podrán interactuar entre ellos a modo de red social, tendrás la posibilidad de dejar reseñas y comentarios o llegar a ver y utilizar los maas de otro usuarios.

Describes the relevant requirements and the driving forces that software architects and development team must consider. These include

  • underlying business goals, essential features and functional requirements for the system

  • quality goals for the architecture

  • relevant stakeholders and their expectations

1.1. Requirements Overview

Requisitos funcionales
  • La aplicación permitirá la utilizacion de varios roles de usuario que podran identificarse para obtener la vista de sus mapas guardados.

  • Los usuarios podran realizar acciones de "feedback" (ya sea comentar, reaccionar, asociar imagenes) a los lugares añadidos.

  • Cada usuario podra crear y compartir un mapa con las ubicaciones que el escoja con otros usuarios de la aplicacion.

  • La visualización de los mapas permitira el uso de filtros .

Requisitos funcionales opcionales
  • Creacion de mapas para una comunidad.

  • Los usuarios podran crear rutas y obtener información de nuevos lugares que puedan aparecer.

  • Creación de un "Newsfeed" para estar al dia de las ultimas actualizaciones.

  • Roles distintos en el sistema.

Requisitos no funcionales
  • La aplicación guardara de manera segura los datos de los usuarios que la utilicen.

  • El tiempo de respuesta debe ser relativamente razonable bajo para evitar que al usuario no tenga la sensacion de que la aplicacion esta "colgada".

  • La aplicación se realizara en React usando TypeScript.

Contents

Short description of the functional requirements, driving forces, extract (or abstract) of requirements. Link to (hopefully existing) requirements documents (with version number and information where to find it).

Motivation

From the point of view of the end users a system is created or modified to improve support of a business activity and/or improve the quality.

Form

Short textual description, probably in tabular use-case format. If requirements documents exist this overview should refer to these documents.

Keep these excerpts as short as possible. Balance readability of this document with potential redundancy w.r.t to requirements documents.

1.2. Quality Goals

Contents

The top three (max five) quality goals for the architecture whose fulfillment is of highest importance to the major stakeholders. We really mean quality goals for the architecture. Don’t confuse them with project goals. They are not necessarily identical.

Motivation

You should know the quality goals of your most important stakeholders, since they will influence fundamental architectural decisions. Make sure to be very concrete about these qualities, avoid buzzwords. If you as an architect do not know how the quality of your work will be judged …

Form

A table with quality goals and concrete scenarios, ordered by priorities

Los principales atributos de calidad que queremos que tenga nuestro proyecto son los siguientes:

Objectivo Detalles

Privacidad

Guardaremos la privacidad del usuario. Lo lograremos usando SOLID, que principalmente se basa en almacenar en la base de datos información a cerca del usuario cliente quién será el que nos autorice guardar dicha información.

Rendimiento

Para la creación de esta aplicación queremos garantizar la máxima rapidez que se pueda a la hora de responder a las peticiones del usuario.

Usabilidad

El uso de la aplicaicón debe resultar un proceso intuitivo y sencillo para el usuario cliente.

Mantenibilidad

Procuraremos cuidar la arquitectura de la aplicación de manera que se pueda añadir, modificar o quitar funcionalidad con el menor número posible de cambios.

Testeabilidad

Nuestra aplicaicón también podrá ser testeable, es decir, estará sometida a una serie de pruebas unitarias que realizaremos para asegurar un correcto funcionamiento del sistema, además de identificar pequeños errores y poder corregirlos en tal caso.

1.3. Stakeholders

Contents

Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that

  • should know the architecture

  • have to be convinced of the architecture

  • have to work with the architecture or with code

  • need the documentation of the architecture for their work

  • have to come up with decisions about the system or its development

Motivation

You should know all parties involved in development of the system or affected by the system. Otherwise, you may get nasty surprises later in the development process. These stakeholders determine the extent and the level of detail of your work and its results.

Form

Table with role names, person names, and their expectations with respect to the architecture and its documentation.

Role/Name Contact Expectations

Cliente

Ayuntamiento de Bruselas

Una aplicación en la que los ciudadanos puedan disponer de mapas personalizados sobre lugares y negocios locales de la ciudad

Empresa contratada

HappySw

Desarrollo de un software genérico que pueda ser utilizada y desplegada en otras ciudades

Equipo de desarrollo

Desarrolladores de HappySw

Información clara y concisa sobre los requisitos de la aplicación

Usuarios

Ciudadanos de Bruselas

Una aplicación usable y sencilla que les permita crear mapas personalizados de los lugares que les interesen

Jefe de proyecto

Profesores de la asignatura

Desarrollo por parte de los estudiantes de una aplicación que cumpla sus criterios

2. Architecture Constraints

Contents

Any requirement that constrains software architects in their freedom of design and implementation decisions or decision about the development process. These constraints sometimes go beyond individual systems and are valid for whole organizations and companies.

Motivation

Architects should know exactly where they are free in their design decisions and where they must adhere to constraints. Constraints must always be dealt with; they may be negotiable, though.

Form

Simple tables of constraints with explanations. If needed you can subdivide them into technical constraints, organizational and political constraints and conventions (e.g. programming or versioning guidelines, documentation or naming conventions)

2.1. Rectricciones técnicas

Restricción Descripción

SOLID

Permite guardar/alamcenar información de datos de los usuarios de una forma segura en Pods, que consisten en unos alamcenes de infromación que son descentralizados y los usuarios eligen qué aplicaciones y qué usuarios pueden acceder a dicha información.

GIT (FLOW)

Se usuará como un sistema de control de versiones.

GITHUB

Lugar donde nuestro repositorio de trabajo esté localizado.

2.2. Restricciones de organización

Restricción Descripción

Tamaño del equipo

Actualmente este equipo está formado por 4 personas.

Planificación

Este trabajo consta de varias entregas parciales y presentaciones en un plazo de aproximadamente 3 meses.

Reuniones

Tenemos una reunión semanalmente (jueves a las 9:00) que es presencialmente. También hacemis reuniones a traves de la aplicación Discord donde debatimos también a cerca del trabajo.

Distribución del equipo

Al ser un número par hemos nos hemos organizado de la siguiente manera: 2 personas son las encargadas del backend y 2 personas del fronted. La división del trabajo ha sido de acordado por todos los miembros del equipo

2.3. Convenciones

Restricción Descripción

Documentación

Queremos usar la plantilla Arc42 que nos han facilitado.

SOLID

Seguiremos las convenciones SOLID preestablecidad.

Protección de datos

Queremos que haya un mínimo de seguridad en nuestro proyecto.

Accesibilidad

Procuraremos que la aplicación sea intuitiva y fácil para el uso de todos los usuarios.

3. System Scope and Context

Contents

System scope and context - as the name suggests - delimits your system (i.e. your scope) from all its communication partners (neighboring systems and users, i.e. the context of your system). It thereby specifies the external interfaces.

If necessary, differentiate the business context (domain specific inputs and outputs) from the technical context (channels, protocols, hardware).

Motivation

The domain interfaces and technical interfaces to communication partners are among your system’s most critical aspects. Make sure that you completely understand them.

Form

Various options:

  • Context diagrams

  • Lists of communication partners and their interfaces.

3.1. Business Context

Contents

Specification of all communication partners (users, IT-systems, …​) with explanations of domain specific inputs and outputs or interfaces. Optionally you can add domain specific formats or communication protocols.

Motivation

All stakeholders should understand which data are exchanged with the environment of the system.

Form

All kinds of diagrams that show the system as a black box and specify the domain interfaces to communication partners.

Alternatively (or additionally) you can use a table. The title of the table is the name of your system, the three columns contain the name of the communication partner, the inputs, and the outputs.

El siguiente diagrama muestra el entorno en el que se va a desarrollar la aplicación y sus relaciones. Example Context Diagram

3.2. Technical Context

Contents

Technical interfaces (channels and transmission media) linking your system to its environment. In addition a mapping of domain specific input/output to the channels, i.e. an explanation with I/O uses which channel.

Motivation

Many stakeholders make architectural decision based on the technical interfaces between the system and its context. Especially infrastructure or hardware designers decide these technical interfaces.

Form

E.g. UML deployment diagram describing channels to neighboring systems, together with a mapping table showing the relationships between channels and input/output.

En cuanto al contexto técnico, en la siguiente tabla se muestra que herramientas se usarán.

Nombre

Descripción

SOLID

Permite almacenar datos de forma segura en almacenes de datos descentralizados llamados Pods

React

Biblioteca de JavaScript que facilita el desarrollo de aplicaciones mediante interfaces

MongoDB

Sistema de base de datos orientado a documentos y código abierto

GitHub

Herramienta para realizar el control de versiones con el equipo

API

Se usará una API externa para mostrar el mapa

4. Solution Strategy

Contents

A short summary and explanation of the fundamental decisions and solution strategies, that shape the system’s architecture. These include

  • technology decisions

  • decisions about the top-level decomposition of the system, e.g. usage of an architectural pattern or design pattern

  • decisions on how to achieve key quality goals

  • relevant organizational decisions, e.g. selecting a development process or delegating certain tasks to third parties.

Motivation

These decisions form the cornerstones for your architecture. They are the basis for many other detailed decisions or implementation rules.

Form

Keep the explanation of these key decisions short.

Motivate what you have decided and why you decided that way, based upon your problem statement, the quality goals and key constraints. Refer to details in the following sections.

4.1. Technology Decisions

Se han tomado las siguientes decisiones.

React

Se usará esta herramienta ya que es la más adecuada para el proyecto y nos facilitará el trabajo. EL lenguaje principal del poyecto será TypeScript.

MongoDB

Esta herramienta nos ayudará ya que tiene elementos dinámicos y esto contribuirá a la rapidez de la aplicación.

SOLID

Es una potente herramienta de base de datos. Se usará para almacenar la información de la aplicación.

4.2. Decisions about the top-level decomposition

Durante la fase de desarrollo de la aplicación, el proyecta se basará en el modelo Vista-Controlador.

4.3. Decision on Quality Goals

La principal decisión es la relacionada con el objetivo de calidad de mayor prioridad, la privacidad, y también con el objetivo de calidad con prioridad 3, la seguridad. Estos dos objetivos de calidad se conseguirán con el uso de los PODs. Por otro lado, el objetivo de calidad de usabilidad se conseguirá con una construcción de la aplicación accesible e intuitiva.

4.4. Organizational Decisions

La organización del proyecto se hizo en las reuniones de equipo de las semanas pasadas. Se repartieron las tareas iniciales y se decidió que dos integrantes del equipo se dedicarian a frontend y los dos restantes a backend. Tanto los que se dedicarán a frontend como los que se decicarán a backend podrán participar en ambas partes si se necesitara.

5. Building Block View

Content

The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, datas structures, …​) as well as their dependencies (relationships, associations, …​)

This view is mandatory for every architecture documentation. In analogy to a house this is the floor plan.

Motivation

Maintain an overview of your source code by making its structure understandable through abstraction.

This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details.

Form

The building block view is a hierarchical collection of black boxes and white boxes (see figure below) and their descriptions.

Hierarchy of building blocks

Level 1 is the white box description of the overall system together with black box descriptions of all contained building blocks.

Level 2 zooms into some building blocks of level 1. Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks.

Level 3 zooms into selected building blocks of level 2, and so on.

5.1. Whitebox Overall System

Here you describe the decomposition of the overall system using the following white box template. It contains

  • an overview diagram

  • a motivation for the decomposition

  • black box descriptions of the contained building blocks. For these we offer you alternatives:

    • use one table for a short and pragmatic overview of all contained building blocks and their interfaces

    • use a list of black box descriptions of the building blocks according to the black box template (see below). Depending on your choice of tool this list could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements (in a modeling tool).

  • (optional:) important interfaces, that are not explained in the black box templates of a building block, but are very important for understanding the white box. Since there are so many ways to specify interfaces why do not provide a specific template for them. In the worst case you have to specify and describe syntax, semantics, protocols, error handling, restrictions, versions, qualities, necessary compatibilities and many things more. In the best case you will get away with examples or simple signatures.

Level 1

Motivation

La aplicación de LoMap es un sistema para crear mapas personalizados por los usuarios. Además, podrá añadir amigos, filtrar y otras opciones. La información privada de los usuarios se guarda en su propio POD.

Contained Building Blocks

Nombre

Descripción

LoMap

Sistema con el que interactuarán los usuarios

Usuario

Cliente que usa la aplicación

POD

Guarda la información de los usuarios. Cada usuario tiene su propio POD

5.2. Level 2

Level 2

Motivation

Estructura interna LoMap. Se diferencia la parte de WebApp y RestApi. También se distingue la base de datos donde se guardará la información general.

Contained Building Blocks

Nombre

Descripción

WebApp

La interfaz del sistemacon la que el usuario interactuará para hacer todas sus peticiones

RestApi

Procesa y resuelve las peticiones. Pide información a la base de datos

Base de datos

Guarda la información pública y accesible para otros usuarios

5.3. Level 3

Level 3

Motivation

Estructura interna de LoMap más detallada. Se distingue los componentes que forman la aplicación y las peticiones que puede realizar el usuario.

Contained Building Blocks

Nombre

Descripción

Home

Pagina principal de la aplicacion

Login

Pagina para registrarse

Mapas Favs

Se guardarán los mapas que se marquen como favoritos

Amigos

Se podrá añadir a amigos y ver sus mapas favoritos

Mi Cuenta

Lugar donde ver y editar tu perfil

6. Runtime View

Contents

The runtime view describes concrete behavior and interactions of the system’s building blocks in form of scenarios from the following areas:

  • important use cases or features: how do building blocks execute them?

  • interactions at critical external interfaces: how do building blocks cooperate with users and neighboring systems?

  • operation and administration: launch, start-up, stop

  • error and exception scenarios

Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is their architectural relevance. It is not important to describe a large number of scenarios. You should rather document a representative selection.

Motivation

You should understand how (instances of) building blocks of your system perform their job and communicate at runtime. You will mainly capture scenarios in your documentation to communicate your architecture to stakeholders that are less willing or able to read and understand the static models (building block view, deployment view).

Form

There are many notations for describing scenarios, e.g.

  • numbered list of steps (in natural language)

  • activity diagrams or flow charts

  • sequence diagrams

  • BPMN or EPCs (event process chains)

  • state machines

  • …​

6.1. Usuario crea una cuenta o se loguea.

En este caso vemos la interaccion de un usuario nuevo que va a realizar por primera vez el ingreso de sesion o se va autenticar en el sistema.

Login

6.2. Accesos de opciones

Este caso tiene lugar una vez los usuarios estan logeados dentro de la aplicacion y se va a mostrar un panel con diversas opciones para que el usuario elija entre todas ellas, como por ejemplo compartir con otros usuarios.

InteractiveMap 00

6.3. Interaccion con el mapa

Veremos el caso en el que el usuario interacciona con el mapa para añadir lugares o realizar interacciones tales como escribir comentarios en ellos.

InteractiveMap 01

7. Deployment View

Content

The deployment view describes:

  1. the technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and

  2. the mapping of (software) building blocks to that infrastructure elements.

Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments.

Especially document the deployment view when your software is executed as distributed system with more then one computer, processor, server or container or when you design and construct your own hardware processors and chips.

From a software perspective it is sufficient to capture those elements of the infrastructure that are needed to show the deployment of your building blocks. Hardware architects can go beyond that and describe the infrastructure to any level of detail they need to capture.

Motivation

Software does not run without hardware. This underlying infrastructure can and will influence your system and/or some cross-cutting concepts. Therefore, you need to know the infrastructure.

Form

Maybe the highest level deployment diagram is already contained in section 3.2. as technical context with your own infrastructure as ONE black box. In this section you will zoom into this black box using additional deployment diagrams:

  • UML offers deployment diagrams to express that view. Use it, probably with nested diagrams, when your infrastructure is more complex.

  • When your (hardware) stakeholders prefer other kinds of diagrams rather than the deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure.

7.1. Infrastructure Level 1

Describe (usually in a combination of diagrams, tables, and text):

  • the distribution of your system to multiple locations, environments, computers, processors, .. as well as the physical connections between them

  • important justification or motivation for this deployment structure

  • Quality and/or performance features of the infrastructure

  • the mapping of software artifacts to elements of the infrastructure

For multiple environments or alternative deployments please copy that section of arc42 for all relevant environments.

Arquitectura.drawio
Motivation

La estructura mostrada anteriormente, representa nuestras intenciones a la hora de desplegar la applicación en un primer lugar. Posiblemente, en un futuro, sufra ligeras variaciones durante el desarrollo del proyecto.

Quality and/or Performance Features

Uno de nuestros principales objetivos, es conseguir que el buen desempeño de la aplicación sea siempre constante, y solo pueda depender de factores externos, como por ejemplo el rendimiento del software de terceros (las APIs usadas) o la conexión a internet del cliente. Por último también mencionar que se hará un grán énfasis en la seguridad y privacidad de los usuarios.

Mapping of Building Blocks to Infrastructure

Nombre

Descripción

Client Device

Dispositivo utilizado por el cliente con el que accede a nuestra aplicación.

Solid POD

Tecnología usada para gestionar la información privada del cliente.

Web Server

Servidor en el que se alojará nuestra aplicación web (falta por definir).

Docker

Contenedor software que automatizará el despliegue de nuestra aplicación web.

WebApp

Parte de la aplicación mostrada al cliente y renderizada por el buscador. También conocido como Front-End.

RestApi

Parte de la aplicación encargada de gestionar principalmente los datos. También conocido como Back-End.

MapApi

Aplicación externa utilizada para realizar funciones relacionadas con los mapas y ubicaciones.

MongoDB

Base de datos NoSQL encargada de almacenar toda la información necesaria.

8. Cross-cutting Concepts

Content

This section describes overall, principal regulations and solution ideas that are relevant in multiple parts (= cross-cutting) of your system. Such concepts are often related to multiple building blocks. They can include many different topics, such as

  • domain models

  • architecture patterns or design patterns

  • rules for using specific technology

  • principal, often technical decisions of overall decisions

  • implementation rules

Motivation

Concepts form the basis for conceptual integrity (consistency, homogeneity) of the architecture. Thus, they are an important contribution to achieve inner qualities of your system.

Some of these concepts cannot be assigned to individual building blocks (e.g. security or safety). This is the place in the template that we provided for a cohesive specification of such concepts.

Form

The form can be varied:

  • concept papers with any kind of structure

  • cross-cutting model excerpts or scenarios using notations of the architecture views

  • sample implementations, especially for technical concepts

  • reference to typical usage of standard frameworks (e.g. using Hibernate for object/relational mapping)

Structure

A potential (but not mandatory) structure for this section could be:

  • Domain concepts

  • User Experience concepts (UX)

  • Safety and security concepts

  • Architecture and design patterns

  • "Under-the-hood"

  • development concepts

  • operational concepts

Note: it might be difficult to assign individual concepts to one specific topic on this list.

Possible topics for crosscutting concepts

8.1. Domain model

lomap uml

8.2. Security

Como en todo sistema informático la seguridad de nuestra aplicación, y la privacidad e integridad de los datos de nuestros usuarios es una de las partes más importantes del proyecto. En este proyecto se hará principal incapié en la eliminación de cualquier brecha de seguridad web que pueda poner en peligro el producto final. Se tomarán medidas antes distintos tipos de vulnerabilidades como ataques XSS (Cross-Site Scripting).

8.3. Privacy

Como se mencionó anteriormente, la privacidad de los datos de nuestros usuarios es un factor que se tiene en primer lugar. Para ello nos encargamos de usar tecnologías como Solid POD, con la intención de descentralizar la información personal de nuestros usuarios. Además usaremos un sistema de encriptación de claves, para que la base de datos no muestre a simple vista las contraseñas de los distintos usuarios.

8.4. User Experience (UX)

Una de nuestras principales estrategias para hacer de nuestra aplicación web un producto competitivo es con seguir que le usuario tenga una buena experiencia. No solo nos centraremos en mejorar el diseño y estética, sino que también tendremos muy en cuenta dos aspectos de vital importancia: la usabilidad y la accesibilidad. Para ello pasaremos rigurosas pruebas tanto manuales como automatizadas, además de aplicar diferentes estadares web.

8.5. Testability

Como una buena práctica, a lo largo del desarrollo, someteremos a nuestro código a múltiples pruebas unitarias, encargadas de asegurar el robustez y eficacia de nuestro producto antes de ser desplegado en la web.

9. Design Decisions

A continuación mostraremos una tabla con las decisiones que hemos tomado en conjunto:

Decisión tomada Ventaja Desventaja

React JS

Es de código abierto e intuitivo además de fácil de aprender. Se encuentra documentación en Internet y hay muchos vídeos tutoriales en Youtube.

Es la primera vez que la usamos.

MongoDB

Para la parte de la BBDD hemos optado por esta opción. Es una base de datos no relacional y con una implementación sencilla.

Tampoco hemos trabajado ninguna vez con esta base de datos.

NodeJs

Buen lenguaje para la parte del backend

también es la primera vez que la utilizamos.

MapBox GL

Es una librareía que nos permite usarla para mostart mapas interactivos en nuestra aplicación creada con REACT

A veces puede llegar a ser impreciso.

SOLID

Nos permitirá guardar información del usuario con cierta seguridad.

Tampoco nunca hemos trabajado con ello.

Idioma español e inglés

La documentación del proyecto estará redactada en español aunque las actas de las reuniones estrán en inglés

Es mucho menos internacionalizado.

Contents

Important, expensive, large scale or risky architecture decisions including rationals. With "decisions" we mean selecting one alternative based on given criteria.

Please use your judgement to decide whether an architectural decision should be documented here in this central section or whether you better document it locally (e.g. within the white box template of one building block).

Avoid redundancy. Refer to section 4, where you already captured the most important decisions of your architecture.

Motivation

Stakeholders of your system should be able to comprehend and retrace your decisions.

Form

Various options:

  • List or table, ordered by importance and consequences or:

  • more detailed in form of separate sections per decision

  • ADR (architecture decision record) for every important decision

10. Quality Requirements

En esta sección ampliaremos los requisitos de calidad anteriormente mencionados para poder explicarlos de una mejor forma. También hablaremos de como estos requisitos afectaran a la arquitectura planeada.

Content

This section contains all quality requirements as quality tree with scenarios. The most important ones have already been described in section 1.2. (quality goals)

Here you can also capture quality requirements with lesser priority, which will not create high risks when they are not fully achieved.

Motivation

Since quality requirements will have a lot of influence on architectural decisions you should know for every stakeholder what is really important to them, concrete and measurable.

10.1. Quality Tree

Quality Tree

Content

The quality tree (as defined in ATAM – Architecture Tradeoff Analysis Method) with quality/evaluation scenarios as leafs.

Motivation

The tree structure with priorities provides an overview for a sometimes large number of quality requirements.

Form

The quality tree is a high-level overview of the quality goals and requirements:

  • tree-like refinement of the term "quality". Use "quality" or "usefulness" as a root

  • a mind map with quality categories as main branches

In any case the tree should include links to the scenarios of the following section.

10.2. Quality Scenarios

Atributo Escenario Prioridad

Privacidad

Los datos personales de los usuarios se almacenaran de forma segura mediante SOILID y uso de PODs.

Alta

Fiabilidad

Queremos que nuestro producto no tenga errores mientras el servicio este disponible.

Alta

Seguridad

Queremos que la aplicacion sea segura para los usuarios, por lo tanto no se guardaran datos sensibles, por ello es que se validaran en servidor. Cualquier "transaccion" realizada contara con los principios ACID.

Alta

Mantenibilidad

Debido a la magnitud del proyecto, se realizara un diseño y arquitectura el cual permita la flexibilidad ante eventos inesperados durante desarrollo, esta caracteristica es importante debido a que se quiere reducir gastos en cuanto tiempo.

Alta

Rendimiento

Se probara mediante tests que el sistema pueda ser lo suficientemente robusto para que aguante simultaneamente varios usuarios conectados a la vez sin que esto perjudique la esperiencia del usuario debido a las excesivas cargas.

Media

Usabilidad

Esto se logra a través de una interfaz intuitiva, una buena organización de la información y una respuesta rápida del sistema. La usabilidad es importante porque mejora la eficiencia y eficacia del usuario al interactuar con el software.

Media

Compatible

Se va a procurar que la aplicacion sea accesible desde distintos dispositivos ya que recordemos que los moviles son ya el medio mas utilizado superando asi las busquedas web en mas de un 50%. Aunque no es un objetivo prioritario se realizara en la medida de lo posible esta adaptación.

Media

Testeable

Se realizaran las debidas pruebas tanto automatizadas como a mano para ver que la aplicacion es estable y completamente funcional.

Baja

Internacionalizacion

Se podra cambiar de idioma.

Baja

Contents

Concretization of (sometimes vague or implicit) quality requirements using (quality) scenarios.

These scenarios describe what should happen when a stimulus arrives at the system.

For architects, two kinds of scenarios are important:

  • Usage scenarios (also called application scenarios or use case scenarios) describe the system’s runtime reaction to a certain stimulus. This also includes scenarios that describe the system’s efficiency or performance. Example: The system reacts to a user’s request within one second.

  • Change scenarios describe a modification of the system or of its immediate environment. Example: Additional functionality is implemented or requirements for a quality attribute change.

Motivation

Scenarios make quality requirements concrete and allow to more easily measure or decide whether they are fulfilled.

Especially when you want to assess your architecture using methods like ATAM you need to describe your quality goals (from section 1.2) more precisely down to a level of scenarios that can be discussed and evaluated.

Form

Tabular or free form text.

11. Risks and Technical Debts

En todo proyecto además de puntos positivos también hay ciertos puntos débiles o riegos debemos tener en cuenta. Y los nuestros son los siguientes:

Riesgo Descripción Nivel

Tiempo

No nos sobra tiempo precisamente, todos los del equipo tenemos más asignaturas que cursar por lo debemos organizarnos lo más que podamos.

Nivel medio.

Uso de las nuevas tecnologías

La mayor parte de ellas ninguno de los del grupo han trabajdo con ellas por lo que estaríamos constantemente informándonos sobre su funcionalidad y aprendiendo de forma autónoma.

Nivel alto.

Equipo

Es la primera vez que trabajamos todos juntos en un mismo proyecto por lo que no conocemos la forma de trabajar del resto así que debemos establecer la máxima comunicación posible

Nivel bajo.

Github

Podría ocurrir que no nos coordinemos en un momento dado y entonces a la hora de hacer los "merges" surjen los famosos conflictos.

Nivel medio.

Contents

A list of identified technical risks or technical debts, ordered by priority

Motivation

“Risk management is project management for grown-ups” (Tim Lister, Atlantic Systems Guild.)

This should be your motto for systematic detection and evaluation of risks and technical debts in the architecture, which will be needed by management stakeholders (e.g. project managers, product owners) as part of the overall risk analysis and measurement planning.

Form

List of risks and/or technical debts, probably including suggested measures to minimize, mitigate or avoid risks or reduce technical debts.

12. Glossary

Contents

The most important domain and technical terms that your stakeholders use when discussing the system.

You can also see the glossary as source for translations if you work in multi-language teams.

Motivation

You should clearly define your terms, so that all stakeholders

  • have an identical understanding of these terms

  • do not use synonyms and homonyms

Form

A table with columns <Term> and <Definition>.

Potentially more columns in case you need translations.

Term Definition

REACT

Biblioteca de JavaScript que se encarga de construir interfaces de usuario

GITHUB

Lugar donde nuestro código va a estar almacenado.

AsciiDoc

Lenguaje que usaremos cuando creamos la documentación.

Node.js

Entorno donde se ejecuta javascript.

POD

Contenedor donde se muestran los datos del usuario.

Typescript

Es un lenguaje de programación libre y de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto de JavaScript.

MongoDB

Es un sistema de base de datos NoSQL, orientado a documentos y de código abierto.

Arc42

Plantilla de documentación para arquitectura de sistemas y de software. Nuestra documentación la creamos en base de ella.

About arc42

arc42, the Template for documentation of software and system architecture.

By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.

Template Revision: 7.0 EN (based on asciidoc), January 2017

© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke.