13/08/2016
Introdução
Porque os projetos dão errado
Etapas para aplicação de boas práticas
Designer Pattern
Testes
.agenda {}Projetos não falham. Pessoas falham.
Sergey Brin: cofundador do Google apresentou o produto ao mercado antes da hora certa.
Recentemente, o Google anunciou mudanças drásticas no projeto. A equipe será reformulada em parte e o desenho do produto começará do zero.
.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.
.boas Praticas {}.produtividade{}.pomodoro{}.pomodoro{}.pomodoro{}.produtividade {}.kanban{}
.metodologias Agil{}.SCRUM {}Iterativo
Incremental
.SCRUM {}Sprints
Sprints Backlog
.SCRUM {}Sprint backlog
.SCRUM {}Product Owner
Scrum Master
.SCRUM {}Scrum Team
.etapas {}.requisitos {}.requisitos Funcionais {}RF01 - Criar formulário de contato contendo, nome, email e mensagem.
.requisitos Funcionais{}Funcionais
RF02 - validar campo de email
RN02 - Ao clicar no campo de senha, animar coruja
Regra de Negócio
.requisitos {}Não Funcionais
RNF01 Requisitos de portabilidade. o sistema deverá rodar em qualquer plataforma.
.requisitos naoFuncionais{}Segurança
Confidencialidade
.requisitos {}Consequências de Software sem Requisitos
.prototipacao {}Processo que facilita o entendimento dos requisitos, apresenta conceitos e funcionalidades do software.
.prototipos Vantagens{}.prototipos Tipos{}.prototipos Tipos{}São esboços concebidos ainda na fase inicial, durante a concepção do sistema.
.prototipos Tipos {}
Conhecidos por wireframes, são mais detalhados e desenvolvidos na fase da arquitetura da informação, é o layout básico do projeto.
.prototipos Tipos {}
.prototipos Tipos {}
.prototipos Tipos {}.prototipos Ferramentas {}.design Patterns {}.design Patterns {}Ou seja...
É uma solução de um problema que alguém já teve no desenvolvimento e manutenção de softwares orientado a objetos.
.design Patterns {}Criado por
.padroes de Projetos {}Vantagens
.padroes de Projetos {}.padrao MVC{}Model View Controller (MVC)
Vantagens
.padrao MVC{}View
Trata dos dados e da lógica de negócios.
Model
Apresentação dos dados ao usuário, telas (CSS, HTML).
Controller
Interage com o model para criar a view e recebe as requisições do usuário.
.padrao MVC{}.versionar Projeto{}
Guarda as informações de quem alterou alguma funcionalidade.
Controle de versão
.versionar Projeto{}Se alguém fizer algo de errado..
Ou seja...
Já sabem quem é o culpado!
.versionar Projeto{}Porque usar versionamento?
.versionar Projeto{}Quem usa Git?
.Normalizacao {}.Normalizacao {}A finalidade das regras de normalização é evitar anomalias de atualização no banco de dados
.Normalizacao {}Anomalias de alteração é evitar inconsistências e reduzir o esforço para a atualização dos dados
.Normalizacao {}Anomalias de exclusão é evitar a perda de informações associadas a um dado registro
Evitar
Boa Prática
.normalizacao{}Dividir tabelas grandes em tabelas menores, através das formas normais
Objetivo: minimizar danos sofridos no desempenho do banco de dados
.consultas SQL{}Com * o SGBD gasta muito tempo percorrendo todos os campos
Evitar
Boa Prática
.consultas SQL{}SELECT * FROM tabelaxSELECT COLUNAA, COLUNAB FROM tabelaxVerificar se um campo string tem necessidade de usar Char ou Varchar
Evitar
Boa Prática
.consultas SQL {}CREATE TABLE pessoa(
id int not null PRYMARY KEY
sexo varchar(10);
)
INSERT INTO pessoa(
sexo 'F' )CREATE TABLE pessoa(
id int not null PRYMARY KEY
sexo char(1);
)
INSERT INTO pessoa(
sexo 'F' )Objetivo: melhorar desempenho do banco, com EXISTS o banco sabe que é um teste de existência sua busca é interrompida assim que encontrar a a primeira linha
Evitar
Boa Prática
.consultas sql{}O SGBD não consegue otimizar cláusulas de join ligadas por OR. Neste caso é mais eficiente ligar os conjuntos de resultados por UNION.
Evitar
Boa Prática
.consultas sql{}SELECT a FROM tab1, tab2
WHERE tab1.a = tab2.a
OR tab1.x = tab2.xSELECT a FROM tab1, tab2
WHERE tab1.a = tab2.a
UNION SELECT A FROM tab1, tab2
WHERE tab1.x = tab2.xOR
UNION
.testes Automatizados {}UI
Service
Unit
TDD - Test Driven Development
.testes Automatizados {}