Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Añadida documentación de Ray #50

Merged
merged 2 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 40 additions & 47 deletions docs/src/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,70 +3,63 @@ ifndef::imagesdir[:imagesdir: ../images]
[[section-architecture-constraints]]
== Architecture Constraints

.Contents
Any requirement that constraints 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.
.Introduction
In the development of the WIQ Application, various constraints have been identified to guide the project towards success. These constraints are crucial in aligning with user expectations and meeting the diverse needs of stakeholders.

.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.
=== Functionality-related Constraints
These constraints pertain to the core functionality of the application.


=== Technical Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Application Server Version | Usage of version X.X of the application server is required.
| Compatibility with Operating Systems | The application must be compatible with Windows .
[options="header", cols="1,1"]
|===
| Constraint | Explanation
| Integration with Wikidata API | Enabling seamless integration with the Wikidata API is imperative. This integration allows automatic generation of questions and responses, enhancing the application's functionality.

=== Legal and Regulatory Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Compliance with Privacy Regulations | The application must comply with privacy regulations in country Spain.
|===
| User Authentication | Implementation of a robust login system is mandated to safeguard user privacy and control access to sensitive information within the application.

=== Development Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Development Methodology | The team will follow an agile development methodology.
| Build Tool | The Z build tool will be used for the compilation process.
|===
| Web Deployment | The application must be easily deployable, ensuring convenient access for users through the web.

=== Organizational Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Internal Security Policies | Internal security policies of the organization will be adhered to.
|===

=== Interoperability Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Communication Standard | The application must be compatible with communication standard ABC.
=== Process-related Constraints
These constraints focus on the development process itself.

[options="header", cols="1,1"]
|===
| Constraint | Explanation
| Version Control (GitHub) | Utilization of GitHub and Git for version control is essential. This facilitates collaboration and maintains a structured workflow with effective monitoring of team contributions.

=== Security Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Two-Factor Authentication | Two-factor authentication is mandatory for all users.

=== Data Management Constraints
These constraints are associated with the management of application data.

[options="header", cols="1,1"]
|===
| Constraint | Explanation
| MongoDB Database | The application will leverage MongoDB, a NoSQL document database known for its flexibility in handling dynamic data structures, scalability, and high performance.

=== Performance Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Response Time | The application's response time should not exceed 2 seconds.

=== User Interface Constraints
These constraints focus on the user interface design.

[options="header", cols="1,1"]
|===
| Constraint | Explanation
| React for User Interface | The application's user interface will be built using React, a JavaScript library with a component-based architecture. This choice aims to provide a user-friendly and modular interface with efficient UI updates.

=== Maintenance and Scalability Constraints
[cols="1,1", options="header"]
|===
| Constraint | Description
| Scalability | The application is expected to be scalable to handle a 20% increase in workload.

.Recommended Technologies
While not constraints, the following technologies are recommended for optimal performance and functionality of the WIQ Application.

[options="header", cols="1,1"]
|===
| Technology | Explanation
| React | A JavaScript library for building user interfaces, known for its component-based architecture and efficient UI updates.
| ExpressJS | A fast and minimalist web framework for Node.js, suitable for server-side tasks and supporting various web applications.
| MongoDB | A NoSQL document database, offering schema flexibility, scalability, and high performance for storing application data.

|===

These constraints and recommended technologies collectively shape the architectural decisions, ensuring a robust and effective development process for the WIQ Application.
40 changes: 20 additions & 20 deletions docs/src/09_architecture_decisions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ ifndef::imagesdir[:imagesdir: ../images]
Important, expensive, large scale or risky architecture decisions including rationales.
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).
|====
| Decision | Consequences | Risks
| Uso de React.js | - Facilitates the development of user interfaces.
- React.js is a widely popular library in the development community.
- Improves the efficiency of frontend development. | - Limited experience with React.js.
- Possible learning curve for the team.
| Uso de JavaScript | - Team's prior knowledge in JavaScript.
- Extensive support and resources available.
- Suitable language for frontend and backend development. | - Limitations in compile-time error detection.
- Potential challenges in performance for large projects.
| Uso de MongoDB | - Flexible schema and horizontal scalability.
- Widely used in modern applications.
- Compatibility with unstructured data.
- Already implemented in user registration and login. | - Not familiar with NoSQL databases.
- Possible learning curve.
| Uso de Docker | - Containerization that facilitates deployment and scalability.
- Consistent environment in development and production.
- Streamlines dependency management. | - Potential initial complexity in Docker configuration.
- Requires additional learning resources.
|====

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:

* ADR (https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions[Documenting Architecture Decisions]) for every important decision
* List or table, ordered by importance and consequences or:
* more detailed in form of separate sections per decision

.Further Information

See https://docs.arc42.org/section-9/[Architecture Decisions] in the arc42 documentation.
There you will find links and examples about ADR.

****
Loading