diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc index 111623a4..31614be3 100644 --- a/docs/src/02_architecture_constraints.adoc +++ b/docs/src/02_architecture_constraints.adoc @@ -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. diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 51e9aad9..a1d97317 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -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. ****