FEUP-ESOF-2020-21 / open-cx-t7g1-last4

open-cx-t7g1-last4 created by GitHub Classroom
0 stars 0 forks source link

openCX-t7g1-last4 Development Report

Welcome to the documentation pages of the EasyShare of openCX!

You can find here detailed about the (sub)product, hereby mentioned as module, from a high-level vision to low-level implementation decisions, a kind of Software Development Report (see template), organized by discipline (as of RUP):

So far, contributions are exclusively made by the initial team, but we hope to open them to the community, in all areas and topics: requirements, technologies, development, experimentation, testing, etc.

Please contact us!

Thank you!

Guilherme Callasi, Joana Ferreira, José Macedo, Marcelo Reis


Product Vision

EasyShare is an app created to manage an event's social networks and make sure they are all in synchronized.
The app allows the user to manage his events and don't worry about posting updates on social networks.


Elevator Pitch

Have you ever updated an event and forgotten to replicate on all your social networks?
Our name is EasyShare, an app that is made for event owners that allows them to save time and keep tracking the event on social media.
Unlike other applications for managing events, our main goal is to get together in one place tools where the user can control the status of his events on different social networks.
Now is Easy to Share, download and start saving time.


Requirements

In this section, you should describe all kinds of requirements for your module: functional and non-functional requirements.

Start by contextualizing your module, describing the main concepts, terms, roles, scope and boundaries of the application domain addressed by the project.

Use case diagram

UserCaseDiagram

Register:

Login:

Logout:

Create an event:

Update an event:

Delete an event:

See all personal Events:

Sync. Events with social networks:

User stories

User stories map

UserStoriesMap

1. As a conference owner, I want to register so that I have an account on the EasyShare app.

2. As a conference owner, I want to login so that I can access my personal account.

3. As a conference owner, I want to logout so that I close my personal account.

4. As a conference owner, I want to create an event so that I can manage it on the app.

5. As a conference owner, I want to change an event so that I can update data.

6. As a conference owner, I want to delete an event so that It doesn't appear on the app.

7. As a conference owner, I want to see a list of my events so that is easier to access them.

8. As a conference owner, I want to select a specific event and see its details.

9. As a conference owner, I can associate EasyShare account with reddit so that I can communicate between them.

10. As a conference owner, I can automatically add an event on reddit so that it will be syncronize.

11. As a conference owner, I can automatically update an event on reddit so that data will be syncronize.

12. As a conference owner, I can automatically delete an event on reddit so that data will be syncronize.

Domain model

To better understand the context of the software system, it is very useful to have a simple UML class diagram with all the key concepts (names, attributes) and relationships involved of the problem domain addressed by your module.

Domain Model


Architecture and Design

The architecture of a software system encompasses the set of key decisions about its overall organization.

A well written architecture document is brief but reduces the amount of time it takes new programmers to a project to understand the code to feel able to make modifications and enhancements.

To document the architecture requires describing the decomposition of the system in their parts (high-level components) and the key behaviors and collaborations between them.

In this section you should start by briefly describing the overall components of the project and their interrelations. You should also describe how you solved typical problems you may have encountered, pointing to well-known architectural and design patterns, if applicable.

Logical architecture

The purpose of this subsection is to document the high-level logical structure of the code, using a UML diagram with logical packages.

Logical Architecture

EasyShare high-level logical structure follows the Layered Architecture Pattern.

Physical architecture

The goal of this subsection is to document the high-level physical structure of the software system, showing the physical structure of the system.

Physical Architecture

The main technologie considered was Flutter for the mobile UI combined with Firebase to store all the data.

Prototype

To help on validating all the architectural, design and technological decisions made, we usually implement a vertical prototype, a thin vertical slice of the system.

In this subsection please describe in more detail which, and how, user(s) story(ies) were implemented.


Implementation

Regular product increments are a good practice of product management.

While not necessary, sometimes it might be useful to explain a few aspects of the code that have the greatest potential to confuse software engineers about how it works. Since the code should speak by itself, try to keep this section as short and simple as possible.

Use cross-links to the code repository and only embed real fragments of code when strictly needed, since they tend to become outdated very soon.


Test

Unit Tests:
In the Unit Tests we focused our tests in textFields validators.


Configuration and change management

Configuration and change management are key activities to control change to, and maintain the integrity of, a project’s artifacts (code, models, documents).

For the purpose of ESOF, we will use a very simple approach, just to manage feature requests, bug fixes, and improvements, using GitHub issues and following the GitHub flow.


Project management

Software project management is an art and science of planning and leading software projects, in which software projects are planned, implemented, monitored and controlled.

In the context of ESOF, we expect that each team adopts a project management tool capable of registering tasks, assign tasks to people, add estimations to tasks, monitor tasks progress, and therefore being able to track their projects.

Example of tools to do this are:

We recommend to use the simplest tool that can possibly work for the team.


Evolution - contributions to open-cx

Describe your contribution to open-cx (iteration 5), linking to the appropriate pull requests, issues, documentation.