Boas práticas no Desenvolvimento de Software

13/08/2016

Danielle Teixeira

  • Engenheira da Computação
    • Esp. Banco de Dados
    • Esp. Desenvolvimento para Aplicativos Mobile
  • Prêmio
    • Proteste Inovação 2015
  • No dia-a-dia
    • Analista de Requisitos
  • Membro
    • Woman Techmackers
    • Raul Hacker Club
    • PHPBA
  • Introdução

  • Porque os projetos dão errado

  • Etapas para aplicação de boas práticas

    • ​Técnicas para aumentar produtividade;

    • Levantar requisitos;

    • Prototipar;

    • Arquitetura;

    • Adotar um padrão de programação;

    • Usar versionamento;

    • Testes.

.agenda {}

Ciclo de Desenvolvimento

Porque os projetos dão errado?

Projetos não falham. Pessoas falham.

Porque os projetos dão errado?

  • Não ter um time no projeto
  • Prazos curtos
  • Funcionalidades do negócio não mapeada
  • Começar a desenvolver sem prototipar
  • Cliente não é envolvido no desenvolvimento do projeto
  • Homologação do sistema é suprimida
  • Procastinação
  • Ambiente não escalável

Projetos que deram "errado"

  • Google Glass
Sergey Brin: cofundador do Google apresentou o produto ao mercado antes da hora certa.

O que são boas práticas?

Técnicas identificadas como as melhores para  realizar uma determinada tarefa.

Porque usar boas práticas?

Benefícios 

  • Redução do Ciclo de Desenvolvimento do Software;
  • Permite uma aplicação mais tolerante a falhas;
  • Melhora manutenibilidade;
  • Entregar o produto mais funcional.
.boas Praticas {}

Construir um software não é somente escrever código e vê-lo funcionar, é você saber que aquele código será manutenível e que outras pessoas vão alterá-lo.

.produtividade{}
  • Pomodoro
  • Kanban
  • Metodologia Agil
.pomodoro{}
  • Técnica de gestão de tarefas, desenvolvida por Francesco Cirillo em 1980
.pomodoro{}
  • Passo a passo para aumentar a produtividade
.produtividade {}
  • Pomodoro
  • Kanban
  • Metodologia Agil
.kanban{}
  • Técnica de cartões, criado pela Toyota, Kanban é um termo de origem japonesa e significa literalmente “cartão” ou “sinalização”;
  • Indicam o andamento dos fluxos de desenvolvimento.

 

.metodologias Agil{}
  • Acelerar o desenvolvimento do software;
  • Melhoria contínua do processo;
  • Aumenta a comunicação e interação da equipe;
  • Atividades organizadas diariamente ;
  • Evitar falhas na elaboração;
  • Respostas rápidas às mudanças;
  • Aumenta produtividade;
.SCRUM {}
  • Processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software.

Iterativo

Incremental

  • Desenvolvido na decada de 90 por Jeff Sutherland
.SCRUM {}
  • São atividades divididas que geralmente duram de 2 a 4 semanas.

Sprints

Sprints Backlog

  • São listas de funcionalidades a serem implementadas no projeto.
.SCRUM {}

Sprint backlog

.SCRUM {}
  • Define os requisitos do produto, decide a data de release e o que deve conter nela.
  • Responsável pelo retorno financeiro do produto.
  • Aceita ou rejeita o resultado de cada Sprint.

Product Owner

  • Líder e mediador que distribui as atividades;
  • Protege o time de interferências externas;
  • Participa das reuniões diárias, revisão da Sprint, e planejamento.

Scrum Master

.SCRUM {}

Scrum Team

  • Multifuncional, entre 5-9 membros.
  • Seleciona, entre os itens priorizados, os que irão ser executados durante a Sprint.
  • Desenvolve e produz com qualidade atividades da Sprint
.etapas {}
.requisitos {}
  • Que são requisitos de software?
    • São características que o  sistema deve possuir
.requisitos {}
  • Baixa qualidade;
  • Retrabalho;
  • Maior números de bugs;
  • Escopo indefinido;
  • Problemas de usabilidade;
  • Insatisfação do cliente;
  • Ciclo de manutenção maior;
  • Vulnerável a falhas e invasões.

Consequências de Software sem Requisitos

.prototipacao {}

Processo que facilita o entendimento dos requisitos, apresenta conceitos e funcionalidades do software.

.prototipos Tipos{}
  • Baixa fidelidade
  • Média Fidelidade
.prototipos Tipos {}
  • Alta Fidelidade

 

.prototipos Tipos {}
.prototipos Ferramentas {}
.Arquitetura {}

Camadas

  • Componentes de software;
  • Aplicativos externos;
  • Integração de sistemas;
  • Propriedades externas.
.Arquitetura {}

Evitar

Boa prática

Qual padrão de projeto você utiliza?

Padrão...

O que são padrões de projeto ?

.padroes de Projetos {}
  • Soluções de problemas que alguém já teve no desenvolvimento e manutenção de  softwares orientado a objetos.
  • Documenta boas soluções para problemas recorrentes
  • Permite o reuso de conhecimento anterior documentados em boas práticas
  • Obtidas através de experiências de sucesso na indústria de software

Gang of Four

.padroes de Projetos {}

Benefícios

  • Facilita a evolução do código.
  • Reuso das soluções
  • Desenvolvimento acelerado
    • Reduz tempo de desenvolvimento e validação
.padroes de Projetos {}
.versionamento {}
  • Permite que você altere um arquivo e, se fizer algo de errado, volte atrás.

 

  • Guarda as informações de quem alterou alguma funcionalidade.

Controle de versão

.versionar Projeto{}

Se alguém fizer algo de errado..

Já sabem quem é o culpado!

.versionar Projeto{}

 

  • Controlar histórico
  • Marcar  e resgatar versões estáveis
  • Ramificar o projeto
  • Segurança
  • Multiplataforma

Porque usar versionamento?

Esqueci alguma coisa?

.testes {}
  • Teste unitários (unit)

  • Testes de integração(service)

  • Testes de aceitação (UI)

.testes {}

UI
 

Service

Unit

Testes Automatizados

  • Reduz significativamente o custo das empresas e re-trabalho dos desenvolvedores com manutenção.

  • Melhorar a performance, consistência e outros fatores importantes.

Onde aprender mais?

Muito obrigada!!!

dannyserena@gmail.com

github.com/dannyserena

https://www.facebook.com/dani.elle.75286

https://slides.com/danielleteixeira/

Boas praticas no desenvolvimento de Software

By Danielle Teixeira

Boas praticas no desenvolvimento de Software

Seminário de Computação na UFBA

  • 1,759