qualidade de software: algumas boas práticas adotadas por programadores

Post on 20-Jul-2015

188 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Qualidade de Software: algumas boas práticas adotadas por

Programadores

Carlos Eduardo Dantascarloseduardodantas@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

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

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

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

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

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

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

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 deorganização” – J. P. Sergent

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

Algumas boas práticas adotadas por programadores

“O primeiro passo para conseguirmos o que queremos na vida é decidirmos o que queremos”– Ben Stein

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

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 se tornam” –Provérbio Chinês

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

Desconsiderar Programação estruturada em Linguagens OO

“A ciência nunca resolve um problema sem criar mais dez” – George Bernard Shaw

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 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

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

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

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

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

Saint-Exupery

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, Matrix

Aplicar fundamentos da Computação em Soluções

“Eu diria algo como ‘Software está gerenciando o mundo’. Nosso trabalho é apenas polinizá-lo ...”– Brian Foote

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

Considerar a “Escalabilidade” na composição de soluções

• Casos onde a falha de escalabilidade é momentânea

“Ensinar é aprender duas vezes.” – Joseph Joubert

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

Considerar a “Escalabilidade” na composição de soluções

• Ferramentas baseadas na cultura noSqltê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

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 complexidades de um sistema computacional

“Saber é compreendermos as coisas que mais nos convém.”– Friedrich Nietzsche

Escolher e adotar bons frameworks de Desenvolvimento

“Eu apenas invento e espero que outros apareçam precisando do que inventei” – R. Buckminster Fuller

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

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 troça da •filoso•fia é, na verdade, �filosofar”– Blaise Pasca

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

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?

top related