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

chore: Added sections 2 and 8 to the documentation #31

Merged
merged 2 commits into from
Feb 14, 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
40 changes: 24 additions & 16 deletions docs/src/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,30 @@ ifndef::imagesdir[:imagesdir: ../images]

[role="arc42help"]
****
.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.
The application must be developed according to some constraints that were defined by the professors. These constraints are meant to be the cornerstones of our project as they are mandatory and provide a baseline to work on. The following tables will define the constraints.


*Technical constraints*
|===
| *Constraint* | *Description*
| Web accesible front-end | The application must be possible to access through a web browser
| Use of WikiData | The system must make use of WikiData to gather information
| Automatic questions | The questions prompted by the game must be generated automatically
|===

*Organizational constraints*
|===
| *Constraint* | *Description*
| Weekly meetings | Each class week, the team must meet and discuss the development
| Use of GitHub | GitHub must be used to communicate and keep track of the development process
| Deliverables | The project will be reviewed by the professors on three occasions
|===

*Conventional constraints*
|===
| *Constraint* | *Description*
| Documentation in Arc42 | The documentation must follow the Arc42 template
|===

.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)


.Further Information

See https://docs.arc42.org/section-2/[Architecture Constraints] in the arc42 documentation.

****
116 changes: 53 additions & 63 deletions docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,68 +6,58 @@ ifndef::imagesdir[:imagesdir: ../images]

[role="arc42help"]
****
.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

* models, especially domain models
* architecture or design patterns
* rules for using specific technology
* principal, often technical decisions of an overarching (= cross-cutting) nature
* 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.


.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.

image::08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"]


.Further Information

See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
****


=== _<Concept 1>_

_<explanation>_



=== _<Concept 2>_

_<explanation>_

...

=== _<Concept n>_

_<explanation>_
.Domain Model
These diagram is just a sketch, it should be replaced by a more accurate version upon discussion.

[plantuml,"ConceptsDomainModel1",png]
----
@startuml

enum Category {
HISTORY
GEOGRAPHY
MATHS
}

class Question{
id: int
content: String
category: Category
language: String
}

class User{
id: int
name: String
email: String
password: String
answered: List<Question>
}

class Score{
user: User
rightRate: float
timeAvg: float
answeredQuestions: int
}

User o--> Question
User --> Score

@enduml
----

|===
| Class | Explanation
| Question | The model of the questions
| User | The people using the application
| Score | A class that keeps tracks of each user scores
|===

.Architecture and design patterns
We decided to use a React based frontend with BootSpring for the backend, which will follow the model view controller pattern to make the code clear.

.User Experience
As this is a game, the focus must be in user experience so players can have an enjoyable experience, for achieving this, the response time should be as low as possible and the interfaces should be intuitive and beautiful.