SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
DESENVOLVIMENTO DE UMA PLATAFORMA DE
BOOKMARKING SOCIAL COM DJANGO E TDD
Trabalho de Conclusão de Curso
Tecnologia em Análise e Desenvolvimento de Sistemas
Universidade Tecnológica Federal do Paraná – Campus Medianeira
Orientador: Prof. M.Sc. Ricardo Sobjak
Rodrigo de Oliveira Fernandes
DESENVOLVIMENTO DE UMA PLATAFORMA DE
BOOKMARKING SOCIAL COM DJANGO E TDD
Objetivo Geral:
●
Elaborar uma plataforma de bookmarking social utilizando o framework
Django e o TDD
Objetivos Específicos:
●
Pesquisa sobre o bookmarking social;
●
Apresentação das tecnologias e metodologias utilizadas;
●
Exposição dos resultados obtidos.
OBJETIVOS
A WEB E O HIPERTEXTO
REFERENCIAL TEÓRICO
●
A WWW é a viabilização da
ideia do hipertexto
●
Tecnologias da WWW
●
Servidor Web
●
Navegador
●
HTML
●
HTTP
●
URLs
●
Expansão e popularização
da Web
BOOKMARKING
REFERENCIAL TEÓRICO
“Hotlist” foi um recurso do Mosaic que oferecia um meio para que o
usuário armazenasse links encontrados na Web.
BOOKMARKING
REFERENCIAL TEÓRICO
WEB SOCIAL
REFERENCIAL TEÓRICO
●
A Web como espaço virtual para
interação social
●
Web 2.0
●
A Web como plataforma
●
O usuário controla os dados
●
Serviços, não software “empacotado”
●
Arquitetura da participação
●
Eficiência visando a escalabilidade
●
Fonte e transformação de dados “remixáveis”
●
Software em mais de um dispositivo
●
Utilização da inteligência coletiva
WEB 2.0 & MÍDIAS SOCIAIS
REFERENCIAL TEÓRICO
●
Serviços online para armazenamento de links
●
Compartilhamento de informações entre usuários
●
Tagging e Folksonomia
SOCIAL BOOKMARKING
REFERENCIAL TEÓRICO
SOCIAL BOOKMARKING
REFERENCIAL TEÓRICO
Recursos comuns:
●
Armazenamento de links online
●
Possibilidade de acesso a coleção de links de outros usuários
●
Filtragem de links por tag, popularidade, ou mais recentes
●
Atribuição livre de tags aos links pelos usuários para facilitar a
identificação do conteúdo
●
Indicação de relevância de um link a partir da sua popularidade
entre os usuários
TEST-DRIVEN DEVELOPMENT (TDD)
Desenvolvimento Guiado por Testes
TEST-DRIVEN DEVELOPMENT (TDD)
REFERENCIAL TEÓRICO
Desenvolvimento Guiado por Testes
●
Testes Primeiro
●
Testes como especificação
do sistema
●
Testes conduzem a
codificação e a arquitetura
●
Código “monitorado”
HISTÓRIAS DE USUÁRIO
REFERENCIAL TEÓRICO
Uma História de Usuário é uma breve declaração que
descreve uma funcionalidade do sistema.
●
Framework Web desenvolvido com a linguagem Python
●
“Baterias incluídas”
●
Promove o desenvolvimento rápido e modular de sistemas Web
●
Apps plugáveis e integração com o ecossistema Python
FRAMEWORK DJANGO
REFERENCIAL TEÓRICO
TECNOLOGIAS UTILIZADAS
MATERIAIS E MÉTODOS
●
Python 3
●
Django 1.8
●
Ubuntu Linux
●
Terminal
●
Sublime Text 3
●
Plugins: Anaconda, Djaneiro, CSS Extended
Completions, Emmet
●
Pip
●
Virtualenv
●
BPython
●
SQLite
●
Bower
●
Semantic UI
1.Definição de funcionalidades
2.Preparação para o desenvolvimento do projeto Django
3.Ciclo de desenvolvimento guiado por testes
4.Inserção de dados na interface de administração do Django
5.Verificação das funcionalidades definidas
PROCESSO DE DESENVOLVIMENTO
MATERIAIS E MÉTODOS
HISTÓRIAS DE USUÁRIO
DEFINIÇÃO DE FUNCIONALIDADES
PROTOTIPAGEM DE UI
DEFINIÇÃO DE FUNCIONALIDADES
●
Criação do ambiente Python com Virtualenv:
$ virtualenv –­python=python3 PY3ENVTD
●
Ativação do ambiente Python:
$ source ./PY3ENVTD/bin/activate
●
Instalação do Django no ambiente:
$ pip install django
PREPARAÇÃO PARA O DESENVOLVIMENTO
DO PROJETO DJANGO
CRIAÇÃO DO PROJETO DJANGO
$ django­admin createproject prjfinal
PREPARAÇÃO PARA O DESENVOLVIMENTO DO PROJETO DJANGO
$ ./manage.py startapp socialbookmarks
CRIAÇÃO DA APLICAÇÃO DJANGO
PREPARAÇÃO PARA O DESENVOLVIMENTO DO PROJETO DJANGO
DESENVOLVIMENTO DA
APLICAÇÃO DJANGO COM TDD
CRIAÇÃO DE TESTE PARA
“VIEWS”
●
O teste verifica se a partir de
uma requisição em determinada
URL, é emitido um status de
sucesso na resposta (código 200
HTTP)
●
Em seguida verifica se a função
associada está utilizando o
template adequado
$ ./manage.py test
TESTE FALHANDO
EDIÇÃO DO ARQUIVO
URLS.PY
●
O arquivo urls.py é responsável
por indicar a função “view”
associada a uma requisição em
uma determinada URL
●
A função “view” deverá conter os
dados que serão exibidos ao
usuário
CÓDIGO PARA O
TESTE PASSAR
EDIÇÃO DO ARQUIVO
VIEWS.PY
CÓDIGO PARA O
TESTE PASSAR
$ ./manage.py test
TESTE PASSANDO
EDIÇÃO DO ARQUIVO
MODELS.PY
$ ./manage.py makemigrations &&   
./manage.py migrate
CRIAÇÃO DE MIGRAÇÕES PARA A GERAÇÃO
DE TABELAS NO BANCO DE DADOS
TESTES PARA
VERIFICAÇÃO DE DADOS
DE CONTEXTO
●
A preparação simula a inserção
de dados
●
Os dados ficarão disponíveis
durante a execução dos testes
TESTES PARA
VERIFICAÇÃO DE DADOS
DE CONTEXTO
●
Testes que verificam se cada
resposta recebida contém os
dados de contexto conforme o
esperado
$ ./manage.py test
TESTES FALHANDO
Cada um dos testes reproduz uma falha similar ao visto na imagem
EDIÇÃO DO ARQUIVO
VIEWS.PY
CÓDIGO PARA O
TESTE PASSAR
●
O código foi alterado para obter
os dados utilizando as
QuerySets do Django
●
Cada QuerySet foi armazenada
em um dicionário de dados, que
é submetido com a resposta e
pode ser utilizado nos templates
$ ./manage.py test
TESTES PASSANDO
INTERFACE DE ADMINISTRAÇÃO DO DJANGO
INSERÇÃO DE DADOS
INTERFACE DE ADMINISTRAÇÃO DO DJANGO
RESULTADOS E DISCUSSÃO
VERIFICAÇÃO DE
FUNCIONALIDADES
RESULTADOS E DISCUSSÃO
VERIFICAÇÃO DE FUNCIONALIDADES
RESULTADO E DISCUSSÃO
VERIFICAÇÃO DE
FUNCIONALIDADES
RESULTADO E DISCUSSÃO
VERIFICAÇÃO DE
FUNCIONALIDADES
RESULTADOS E DISCUSSÃO
VERIFICAÇÃO DE FUNCIONALIDADES
RESULTADO E DISCUSSÃO
VERIFICAÇÃO DE FUNCIONALIDADES
RESULTADOS E DISCUSSÃO
VERIFICAÇÃO DE
FUNCIONALIDADES
RESULTADO E DISCUSSÃO
CONCLUSÃO
CONCLUSÃO

A pesquisa favoreceu a compreensão do funcionamento
dos sistemas de bookmarking social

Histórias de usuário e prototipagem de UI para a
determinação das funcionalidades

Desenvolvimento rápido e confiável com o framework
Django

Vantagens do TDD
CONCLUSÃO
“Code without tests is broken by design.”
Jacob Kaplan-Moss

Más contenido relacionado

La actualidad más candente

Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAndré Luiz Forchesatto
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSFDalton Valadares
 
Melhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM ConnectionsMelhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM Connectionsrodrigoareis
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3Danilo Pinotti
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 

La actualidad más candente (14)

Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2
 
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPR
 
Interfaces ricas JSF
Interfaces ricas JSF Interfaces ricas JSF
Interfaces ricas JSF
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
Avaliacao jsf utfpr
Avaliacao jsf utfprAvaliacao jsf utfpr
Avaliacao jsf utfpr
 
Gwt parte 01
Gwt   parte 01Gwt   parte 01
Gwt parte 01
 
Php11
Php11Php11
Php11
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
PHP: Como não programar em POG
PHP: Como não programar em POGPHP: Como não programar em POG
PHP: Como não programar em POG
 
Melhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM ConnectionsMelhores práticas de deployment do IBM Connections
Melhores práticas de deployment do IBM Connections
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 

Similar a Desenvolvimento de uma plataforma de bookmarking social com Django e TDD

Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indianahellequin
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G Ofabio.thomaz
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Felipe Nascimento
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasAécio Pires
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaAlexandre Gaigalas
 

Similar a Desenvolvimento de uma plataforma de bookmarking social com Django e TDD (20)

Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
 
Django
DjangoDjango
Django
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indiana
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G O
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Engenharia Web
Engenharia WebEngenharia Web
Engenharia Web
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC Goiânia
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Desenvolvimento Web
Desenvolvimento WebDesenvolvimento Web
Desenvolvimento Web
 

Desenvolvimento de uma plataforma de bookmarking social com Django e TDD