Qualidade de Software: algumas
boas práticas adotadas por
Programadores
Carlos Eduardo Dantas
carloseduardodantas@iftm.edu...
Quem sou?
• Professor Efetivo no IFTM Campus
Uberlândia-Centro;
• 9 anos criando gambiarras em diversas
empresas de TI.
“A...
Motivação
• Informação:
• Experiência:
“As três coisas mais difíceis no mundo: guardar segredo, perdoar uma injúria e apro...
Introdução
Sociedade demanda:
• Grande quantidade de sistemas e
aplicações;
• Software complexo, sistemas distribuídos
e h...
Introdução
Expectativa de projetos com menor custo,
no menor prazo, com o maior escopo e a
melhor qualidade
“É impossível ...
Problemas
• A qualidade do Software nem sempre é a
maior prioridade;
• Pouca qualidade = retrabalho;
• Software com falhas...
Problemas
• Projetos possuem uma forte tendência a
entrarem na chamada “curva do pânico”,
sacrificando a qualidade
“Pensa ...
Qualidade de Software
• O Software atende as necessidades do
cliente?
• O Software é funcional para o cliente?
“O êxito nã...
Qualidade de Software
• O Software é flexível?
• O Software é reutilizável?
• O Software é fácil de manter?
“Não é a monta...
Algumas boas práticas adotadas
por programadores
“O primeiro passo para conseguirmos o que queremos na vida é decidirmos o...
Considerar novas metodologias para
criação de Softwares
• Entregas rápidas e incrementais;
• Cliente como membro da equipe...
Considerar novas metodologias para
criação de Softwares
“Uma imagem vale mais que mil palavras”– Napoleão Bonaparte
Aceitar a programação poliglota
“Se está muito difícil encontrar o caminho, faça-o” – Autor desconhecido
Adotar versionamento de
projetos
“Os nossos desejos são como crianças pequenas: quanto mais lhes cedemos, mais exigentes s...
Desconsiderar Programação
estruturada em Linguagens OO
• Aprender os conceitos de POO é fácil, o
problema é modelar o sist...
Desconsiderar Programação
estruturada em Linguagens OO
“A ciência nunca resolve um problema sem criar mais dez” – George B...
Desconsiderar Programação
estruturada em Linguagens OO
“A libertação do desejo conduz à paz interior”– Lao-Tsé
Desconsiderar Programação
estruturada em Linguagens OO
• Diagrama de Sequência POO vs
Estruturado
• Obs: considere a UML c...
Desconsiderar Programação
estruturada em Linguagens OO
• Foco em classes e nas mensagens trocadas
entre estas, ao invés de...
Desconsiderar Programação
estruturada em Linguagens OO
• Adoção de Princípios OO:
Evite o modelo anêmico;
Aberto-Fechado (...
Desconsiderar Programação
estruturada em Linguagens OO
• Adoção de Princípios OO:
Componha comportamentos;
Evite Herança, ...
Desconsiderar Programação
estruturada em Linguagens OO
• Adoção de Padrões de Projeto:
MVC;
• Strategy;
Factory;
Template ...
Aplicar fundamentos da Computação
em Soluções
• Programadores ruins utilizam-se
constantemente de soluções “força bruta”
“...
Aplicar fundamentos da Computação
em Soluções
“Eu diria algo como ‘Software está gerenciando o mundo’. Nosso trabalho é ap...
Aplicar fundamentos da Computação
em Soluções
• Uso de soluções razoáveis de busca;
• Aplicação de diferentes tipos de
Est...
Considerar a “Escalabilidade” na
composição de soluções
• Casos onde a falha de escalabilidade é
momentânea
“Ensinar é apr...
Considerar a “Escalabilidade” na
composição de soluções
• Casos onde a solução pode deixar de ser
escalável com o tempo
“S...
Considerar a “Escalabilidade” na
composição de soluções
• Ferramentas baseadas na cultura noSql
têm ajudado na produção de...
Fazer uso de testes automatizados
“O maior prazer é esperar pelo prazer.”– Gotthold Lessing
Antes gerenciar do que reinventar a
roda
• Servidores de aplicação separam o
desenvolvedor de Software de algumas
das comp...
Escolher e adotar bons frameworks de
Desenvolvimento
“Eu apenas invento e espero que outros apareçam precisando do que inv...
Priorizar convenção sobre
configuração
• Visa diminuir o número de decisões que o
desenvolvedor precisa tomar;
• Definir a...
Práticas clichê adotadas por
programadores
“A arte nunca está terminada, apenas abandonada.” – Leonardo Da Vinci
Seja um Programador Pragmático
“Um homem pinta com seu cérebro e não com suas mãos.”– Michelangelo
Pratique comunicação
“Experiência é apenas o nome que damos aos nossos erros.”– Oscar Wilde
Conheça áreas relacionadas
• Gerenciamento de Projetos;
• Técnicas para coleta de requisitos;
• Infra-estrutura.
“Fazer tr...
Adote o Inglês como primeiro idioma
• Livros e manuais de referência não são
traduzidos do dia para a noite;
• As mais imp...
Participe de fóruns, comunidades e
projetos Open-Source
“A nuca é um mistério para a vista.” – Paul Valéry
Compartilhe conhecimento via blogs
“O caminho do inferno está pavimentado de boas intenções.” – Marx
Considere a opção de criar o seu
próprio negócio
“Nove pessoas não fazem um bebê em 1 mês” – Fred Brooks
Dúvidas?
Próximos SlideShares
Carregando em…5
×

Qualidade de Software: algumas boas práticas adotadas por Programadores

477 visualizações

Publicada em

Palestra ministrada durante a XVI semana de Engenharia de Computação da UEMG campus Ituiutaba, dia 14/05/2014

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
477
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Qualidade de Software: algumas boas práticas adotadas por Programadores

  1. 1. Qualidade de Software: algumas boas práticas adotadas por Programadores Carlos Eduardo Dantas carloseduardodantas@iftm.edu.br http://carloseduardoxp.wordpress.com INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TRIÂNGULO MINEIRO – Campus Avançado Uberlândia “Experiência sem teoria é cegueira, mas teoria sem experiência é mero jogo intelectual” – Immanuel Kant
  2. 2. Quem sou? • Professor Efetivo no IFTM Campus Uberlândia-Centro; • 9 anos criando gambiarras em diversas empresas de TI. “A morte do homem começa no instante em que ele desiste de aprender” – Albino Teixeira
  3. 3. Motivação • Informação: • Experiência: “As três coisas mais difíceis no mundo: guardar segredo, perdoar uma injúria e aproveitar o tempo” – Benjamin Franklin
  4. 4. Introdução Sociedade demanda: • Grande quantidade de sistemas e aplicações; • Software complexo, sistemas distribuídos e heterogêneos; • Requisitos mutantes (todo ano, mês e dia). “A melhor maneira de fugir do seu problema é resolvê-lo” – Robert Anthony
  5. 5. Introdução Expectativa de projetos com menor custo, no menor prazo, com o maior escopo e a melhor qualidade “É impossível para um homem aprender aquilo que ele acha que já sabe” – Epíteto
  6. 6. Problemas • A qualidade do Software nem sempre é a maior prioridade; • Pouca qualidade = retrabalho; • Software com falhas ou indisponibilidades = perda de dinheiro “O pessimista queixa-se do vento, o otimista espera que ele mude e o realista ajusta as velas. “ – Willian George Ward
  7. 7. Problemas • Projetos possuem uma forte tendência a entrarem na chamada “curva do pânico”, sacrificando a qualidade “Pensa como pensam os sábios, mas fala como falam as pessoas simples” – Aristóteles
  8. 8. Qualidade de Software • O Software atende as necessidades do cliente? • O Software é funcional para o cliente? “O êxito não se consegue só com qualidades especiais. É sobretudo um trabalho de constância, de método e de organização” – J. P. Sergent
  9. 9. Qualidade de Software • O Software é flexível? • O Software é reutilizável? • O Software é fácil de manter? “Não é a montanha que nos faz desanimar, mas a pedrinha que trazemos no sapato” – Autor desconhecido
  10. 10. Algumas boas práticas adotadas por programadores “O primeiro passo para conseguirmos o que queremos na vida é decidirmos o que queremos”– Ben Stein
  11. 11. Considerar novas metodologias para criação de Softwares • Entregas rápidas e incrementais; • Cliente como membro da equipe; • Prática/cultura de mudanças; • Foco nos programadores; • Programação em par; • Padronização do código; • Semana de 40 horas. “A cooperação é a convicção plena de que ninguém pode chegar à meta se não chegarem todos” – Virginia Burden
  12. 12. Considerar novas metodologias para criação de Softwares “Uma imagem vale mais que mil palavras”– Napoleão Bonaparte
  13. 13. Aceitar a programação poliglota “Se está muito difícil encontrar o caminho, faça-o” – Autor desconhecido
  14. 14. Adotar versionamento de projetos “Os nossos desejos são como crianças pequenas: quanto mais lhes cedemos, mais exigentes se tornam” – Provérbio Chinês
  15. 15. Desconsiderar Programação estruturada em Linguagens OO • Aprender os conceitos de POO é fácil, o problema é modelar o sistema. “Péssima ideia, a de que não se pode mudar” – Montaigne
  16. 16. Desconsiderar Programação estruturada em Linguagens OO “A ciência nunca resolve um problema sem criar mais dez” – George Bernard Shaw
  17. 17. Desconsiderar Programação estruturada em Linguagens OO “A libertação do desejo conduz à paz interior”– Lao-Tsé
  18. 18. Desconsiderar Programação estruturada em Linguagens OO • Diagrama de Sequência POO vs Estruturado • Obs: considere a UML como ótima solução para realização de esboços entre a equipe. “Não se deseja aquilo que não se conhece”– Ovídio
  19. 19. Desconsiderar Programação estruturada em Linguagens OO • Foco em classes e nas mensagens trocadas entre estas, ao invés de tabelas e seu modelo relacional. “A Inteligência é quase inútil para quem não tem mais nada”– Carrel, Alexis
  20. 20. Desconsiderar Programação estruturada em Linguagens OO • Adoção de Princípios OO: Evite o modelo anêmico; Aberto-Fechado (OCP); Não se Repita (DRY); Responsabilidade Única (SRP); Encapsule o que varia; Substituição de Liskov (LSP); Programe para interface e não para implementação; Entidades de software devem ser abertas a extensão, mas fechadas a modificação.” – Bertrand Meyer
  21. 21. Desconsiderar Programação estruturada em Linguagens OO • Adoção de Princípios OO: Componha comportamentos; Evite Herança, favoreça Composição; Favoreça Imutabilidade e Simplicidade. “Ninguém é dono da multidão, ainda que creia tê-la dominada.”– Eugene Ionesco
  22. 22. Desconsiderar Programação estruturada em Linguagens OO • Adoção de Padrões de Projeto: MVC; • Strategy; Factory; Template Method; Observer; Strategy; Proxy; Decorator, etc.. etc.. etc.. “A verdadeira felicidade vem da alegria de atos bem feitos, o entusiasmo de criar coisas novas.” – Antoine de
  23. 23. Aplicar fundamentos da Computação em Soluções • Programadores ruins utilizam-se constantemente de soluções “força bruta” “Não existe colher. Você verá que não é a colher que se dobra, apenas você mesmo. “ – Garoto com a colher,
  24. 24. Aplicar fundamentos da Computação em Soluções “Eu diria algo como ‘Software está gerenciando o mundo’. Nosso trabalho é apenas polinizá-lo ...”– Brian Foote
  25. 25. Aplicar fundamentos da Computação em Soluções • Uso de soluções razoáveis de busca; • Aplicação de diferentes tipos de Estruturas de Dados para cada contexto (conjuntos, árvores, tabelas hash, mapas, listas); • Paralelização de tarefas com threads; • Domínio de técnicas para controle de concorrência como semáforos e monitores. “Não há uma verdade fundamental, apenas há erros fundamentais”– Bachelard , Gaston
  26. 26. Considerar a “Escalabilidade” na composição de soluções • Casos onde a falha de escalabilidade é momentânea “Ensinar é aprender duas vezes.” – Joseph Joubert
  27. 27. Considerar a “Escalabilidade” na composição de soluções • Casos onde a solução pode deixar de ser escalável com o tempo “São muitos os que usam a régua, mas poucos os inspirados.”– Platão
  28. 28. Considerar a “Escalabilidade” na composição de soluções • Ferramentas baseadas na cultura noSql têm ajudado na produção de soluções performáticas de persistência. “Vivemos todos sob o mesmo céu, mas nem todos temos o mesmo horizonte.” – Konrad Adenauer
  29. 29. Fazer uso de testes automatizados “O maior prazer é esperar pelo prazer.”– Gotthold Lessing
  30. 30. Antes gerenciar do que reinventar a roda • Servidores de aplicação separam o desenvolvedor de Software de algumas das complexidades de um sistema computacional “Saber é compreendermos as coisas que mais nos convém.”– Friedrich Nietzsche
  31. 31. Escolher e adotar bons frameworks de Desenvolvimento “Eu apenas invento e espero que outros apareçam precisando do que inventei” – R. Buckminster Fuller
  32. 32. Priorizar convenção sobre configuração • Visa diminuir o número de decisões que o desenvolvedor precisa tomar; • Definir apenas aspectos não convencionais da aplicação; • Diminuir esforço com arquivos de configuração. “O homem comum fala, o sábio escuta, e o tolo discute”. Sabedoria oriental
  33. 33. Práticas clichê adotadas por programadores “A arte nunca está terminada, apenas abandonada.” – Leonardo Da Vinci
  34. 34. Seja um Programador Pragmático “Um homem pinta com seu cérebro e não com suas mãos.”– Michelangelo
  35. 35. Pratique comunicação “Experiência é apenas o nome que damos aos nossos erros.”– Oscar Wilde
  36. 36. Conheça áreas relacionadas • Gerenciamento de Projetos; • Técnicas para coleta de requisitos; • Infra-estrutura. “Fazer troça da •filoso•fia é, na verdade, filosofar”– Blaise Pasca
  37. 37. Adote o Inglês como primeiro idioma • Livros e manuais de referência não são traduzidos do dia para a noite; • As mais importantes discussões sobre qualquer assunto de TI estão escritas e divulgadas em Inglês. “É uma experiência eterna de que todos os homens com poder são tentados a abusar.” – Baron de Montesquieu
  38. 38. Participe de fóruns, comunidades e projetos Open-Source “A nuca é um mistério para a vista.” – Paul Valéry
  39. 39. Compartilhe conhecimento via blogs “O caminho do inferno está pavimentado de boas intenções.” – Marx
  40. 40. Considere a opção de criar o seu próprio negócio “Nove pessoas não fazem um bebê em 1 mês” – Fred Brooks
  41. 41. Dúvidas?

×