rafael-fernandes / serieflix

Repositório para o trabalho prático de Engenharia de Software de 2017/2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Trabalho Prático de Engenharia de Software

Grupo: 5

Nome Matricula
Amanda Oliveira Alves 150116276
Rafael Alves Fernandes 140030395
Igor Sodré 130114553
Frederico Dib 150125925
Guilherme Gomes 150128274

Stakeholders

O cliente deseja uma ferramenta que auxilie cada usuário a acompanhar as séries televisivas de seu interesse. Todo usuário poderá criar um perfil próprio, após preencher alguns dados no formulário, a conta será criada e o usuário usará seu email e sua senha para acessá-la. Através de sua conta o usuário poderá selecionar as séries que acompanha no momento ou que tem intenção de acompanhar, após a seleção ele será notificado sobre novos episódios e poderá visualizar seu progresso em cada série marcada. O usuário também terá a opção de visualizar um calendário (mensal ou semanal) contendo os lançamentos de seu interesse.

Para resolver o problema do cliente a equipe de desenvolvedores produzirá um sistema web utilizando o framework Ruby on Rails e as linguagens de programação Ruby, HTML5 e CSS3. Para hospedar o sistema em nuvem teremos o serviço de hospedagem Heroku e o sistema de gerenciamento PostgreSQL para banco de dados. Como não é necessária uma interface rebuscada, o layout será implementado utilizando Bootstrap, de modo que o sistema seja simples e eficiente. O processo de desenvolvimento será feito de forma iterativa e incremental seguindo preceitos da metodologia ágil.

Os futuros usuários do sistema poderão acompanhar suas séries preferidas de maneira mais fácil. Receber alertas sobre episódios novos garante que não esqueçam de assisti-los e podem se programar para futuros lançamentos pelo calendário. Poderão também acompanhar seu progresso, com isso não esquecem em qual episódio pararam e ficam cientes de quanto tempo falta para assistem todos os episódios e temporadas desejadas. Ideal para fãs de seriados que querem organizar-se e manter-se bem informados.


Arquitetura

Para atender a demanda do cliente e dos usuários, a equipe de desenvolvedores utilizou as tecnologias WEB como HTML 5, CSS 3, JavaScript, Ruby e o Framework Rails. A SerieFlix está hospedada nos servidores em nuvem do Heroku, que utiliza o banco de dados Postgres.

A arquitetura do servidor WEB utilizada foi o MVC (Model-View-Controller). A arquitetura MVC é uma das mais antigas e mais utilizadas atualmente, ela possibilita a divisão do projeto em camadas com responsabilidades muito bem definidas:

  • model: possui a responsabilidade de se comunicar com o banco de dados e atender requisições do controller. O model faz parte da camada de persistência que, no nosso projeto, foi utilizado o padrão Active Record, no qual as tabelas do banco de dados relacional são representadas como classes e as linhas da tabela são objetos dessas classes e qualquer recuperação, criação, atualização e exclusão de objetos deve também ser refletida no banco de dados.

  • view: possui a responsabilidade de exibir os dados ao usuário que solicitou alguma coisa. É a camada que o usuário interage, geralmente é composta por arquivos HTML, de estilo CSS e de alguma linguagem de script, como JavaScript.

  • controller: possui a responsabilidade de processar as requisições do usuário. Ele acessa o model para solicitar dados do banco de dados, encapsula as informações e manda a resposta para a camada view, que apresenta ao usuário o resultado da sua solicitação.


Histórias de Usuário, Pontuação e Cenários








MVP

O MVP do projeto pode ser utilizado no link: https://serieflix.herokuapp.com/


Backlog


Planejamento das Iterações


Telas e Protótipos









Storyboard

O storyboard do projeto pode ser encontrado nesse link: https://xd.adobe.com/view/af694e06-a62e-4afa-968b-22f9acab67c5/


Matriz de Rastreabilidade


Uso de Técnicas

Trabalhar com o desenvolvimento agil foi uma experiência muito boa. A divisão do trabalho em sprints, levando em conta a disponibilidade e o interesse de cada membro da equipe, junto às prioridades para o projeto funcionar com o minimo possivel, foram muito boas para o andamento do projeto. Graças a essa forma, foi possivel desenvolver algo que atenda a maior quantidade de necessidade do cliente em um intervalo de tempo curto e com a menor quantidade de recursos possivel.


Execução dos Testes

Episode
  should belong to season
  should validate that :name cannot be empty/falsy
  should validate that :number cannot be empty/falsy
  should validate that :release_date cannot be empty/falsy
  should validate that :summary cannot be empty/falsy
  should validate that :number looks like a number greater than or equal to 1

Favorite
  should belong to series_list
  should belong to series

Season
  should belong to series
  should have many episodes
  should validate that :name cannot be empty/falsy
  should validate that :number cannot be empty/falsy
  should validate that :number looks like a number greater than or equal to 1

SeriesList
  should have one user
  should have many series

Series
  should validate that :title cannot be empty/falsy
  should validate that :description cannot be empty/falsy
  should validate that :year cannot be empty/falsy
  should validate that :image_path cannot be empty/falsy
  should have many seasons

User
  should belong to series_list
  should validate that :name cannot be empty/falsy
  should validate that :email cannot be empty/falsy
  should validate that :password cannot be empty/falsy

Finished in 1.32 seconds (files took 3.48 seconds to load)
24 examples, 0 failures

Coverage report generated for RSpec to /home/rafael/ES022017/coverage. 53 / 53 LOC (100.0%) covered.

Cobertura dos Testes Unitários


Decisões de Projeto

Obs: Como o cliente já havia deixado bastante claro como ele queria o produto, a maior parte das decisões tomadas foram de gerenciamento, como a divisão de tarefas por exemplo.

  1. No meio do projeto foi verificado a não necessidade de incluir filmes para serem acompanhados devido ao fato de filmes não ser algo que você assiste novos episódioss periodicamente como séries. Essa decisão foi apoiada pelo cliente.

  2. Para testes decidimos fazer mais de um tipo. Majoritariamente BDD com Tdd somente onde o rails não nos fornece features já prontas.


Lições Aprendidas

Houveram pequenos desvios durante o andamento do projeto, algumas sprints não conseguiram ser entregues dentro do prazo, porém nada muito significativo. Estes desvios aconteceram porque algumas tarefas foram subestimadas e outras superestimadas. Alguns poderiam ter sido evitados prevendo melhor a dificuldade das tarefas e nos planejando melhor, mas em certos casos nós não conseguimos fazer esta previsão por falta de experiência e não por falta de atenção.

Outro problema foi a falha de comunicação entre a equipe, em uma ocasião um desenvolvedor entendeu incorretamente uma funcionalidade e esta precisou ser refeita. Ocorreu uma mudança no plano do projeto após o início da execução. Originalmente o sistema deveria lidar com filmes e séries, depois de conversar com o cliente decidimos remover os filmes porque não fazia sentido para a ideia do projeto, portanto a equipe decidiu que seria melhor se fossem usadas somente séries de tv. Algumas funcionalidades são mais complexas do que parecem ser portanto é preciso ter mais atenção ao lidar com o projeto, aproveitar melhor as reuniões e melhorar a comunicação entre a equipe.

Faríamos novamente em projetos futuros: code meetings, canal de comunicação da equipe no slack, uso do framework Rails e reuniões semanais.

Não faríamos novamente em projetos futuros: falhas de comunicação, falta de noção ao mensurar dificuldade dos requisitos e falta de noção ao planejar as sprints.

About

Repositório para o trabalho prático de Engenharia de Software de 2017/2


Languages

Language:Ruby 40.3%Language:CSS 30.0%Language:HTML 28.7%Language:JavaScript 0.7%Language:CoffeeScript 0.2%