Grupo: 5
Nome | Matricula |
---|---|
Amanda Oliveira Alves | 150116276 |
Rafael Alves Fernandes | 140030395 |
Igor Sodré | 130114553 |
Frederico Dib | 150125925 |
Guilherme Gomes | 150128274 |
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.
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.
O MVP do projeto pode ser utilizado no link: https://serieflix.herokuapp.com/
O storyboard do projeto pode ser encontrado nesse link: https://xd.adobe.com/view/af694e06-a62e-4afa-968b-22f9acab67c5/
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.
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.
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.
-
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.
-
Para testes decidimos fazer mais de um tipo. Majoritariamente BDD com Tdd somente onde o rails não nos fornece features já prontas.
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.