Boas práticas de programação com Object Calisthenics
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
1.
2. A PREOCUPAÇÃO COM QUALIDADE DO SOFTWARE
Período Características
Anos 50 -Erros conhecidos, APÓS término do programa
Anos 70 -Análise/programação estruturada.
-Falta de consenso: teste ANTES do término
Anos 80 - Primeiras preocupações e PADRÕES com QUALIDADE
de software
Anos 90 -Primeiros processos de testes.
-Motivação: Bug do milênio.
Anos
2000
-Estruturação dos procedimentos de testes dentro do
processo de desenvolvimento.
-Surgem excelentes ferramentas de testes.
-QUALIDADE Total no processo de desenvolvimento e
produto de software
3. A CRISE DO SOFTWARE
Fatos reais - Projetos de Software
+ 30% dos projetos – CANCELADOS
+ 70% dos projetos – FALHAM as funcionalidades
Custos e Prazos EXTRAPOLAM a Previsão
Custos – em mais de 180%
Prazos – em mais de 200%
Custos do DESENVOLVIMENTO
80% - identificar e corrigir defeitos de programação
4. ASPECTOS RELEVANTES sobre SW e processo de desenvolver
• Software NÃO é tangível. Requer muita ABSTRAÇÃO para desenvolvê-lo.
• O processo de desenvolvimento é executado e gerenciado por pessoas,
sendo portanto SUBJETIVO.
•Discute-se idéias, necessidades e desejos dos usuários (também
pessoas).
• ABSTRAÇÃO E SUBJETIVIDADE conferem dificuldades ao processo de
desenvolvimento.
• O software em si é consequência direta da forma (processo) pelo qual foi
desenvolvido. PROCESSO MANUFATURADO
•Processo de desenvolvimento eficiente Software eficiente.
Na medida em que os softwares crescem em tamanho e
complexidade, ABSTRAÇÃO e COMPLEXIDADE conferem cada
vez mais DIFICULDADES ao processo de desenvolvimento
5. Acúmulo
de trabalho
Abandono de
planos e
procedimentos
Sucesso depende muito do
esforço heróico das pessoas Pouca
repetibilidade
Produto funciona, mas
com defeitos; prazo e
custo maiores; e menos
funcionalidade
Clientes e
funcionários
insatisfeitos
Situação atual da maioria das empresas de SW
6. ONDE ESTÃO OS DEFEITOS ?
• A maior dificuldade esta na fase
INICIAL, de entendimento do sistema
- Requisitos – ALTO grau de
ABSTRAÇÃO + Comunicação com
pessoas
• A segunda maior abrangência está
na modelagem – ALTO Grau de
ABSTRAÇÃO + domínio das técnicas
• O erros de codificação em si,
representam um % pequeno,
mostrando que o foco do problema
não é da Implementação.
7. Processo de Desenvolvimento de SW
•Conjunto de atividades, métodos,
práticas e tecnologias que as pessoas
usam para desenvolver e manter
softwares
•O processo adequado garante que o
software será desenvolvido de maneira
organizada, disciplinada e previsível.
•O processo descreve formalmente e de
forma organizada as atividades que
devem ser seguidas para a obtenção
segura de um produto de software.
•A dificuldade está no gerenciamento do
processo (existem vários modelos), que
geralmente está dividido em fases.
8. Qualidade de Software
O que o cliente quer?
◦ Atendimento aos requisitos especificados
◦ Defeito zero
◦ Grande número de funções
◦ Alto desempenho
◦ Baixo custo
◦ Desenvolvimento rápido
◦ Facilidade de uso
◦ Eficiência nos serviços associados
◦ Inovação
9. Benefícios da Qualidade
Na visão do fornecedor (ex: equipe interna de TI ou fornecedor externo
– do mercado)
◦ Maior produtividade
◦ Maior precisão nas estimativas
◦ Redução de defeitos no produto
◦ Aumento da confiabilidade do produto
◦ Menos esforço de re-trabalho
◦ Menos horas extras de trabalho
◦ Redução do tempo para atender o mercado
◦ Redução de custo de desenvolvimento e manutenção
◦ Maior competitividade
◦ Maior índice de satisfação do cliente/usuário final
10. Vídeo: EmpresaFazSite - Problemas processo de
desenvolvimento de software
◦ https://www.youtube.com/watch?v=QPiR8jTMLdI
11. Exercícios:
11
1) O que você observa no vídeo sobre a “Empresa Faz sites”? Explique com suas
palavras.
2) Em sua opinião por que devemos nos preocupar com qualidade no processo?
3) Faça suas considerações como profissional que a empresa “Faz site” conseguir
alcance a implementação do sistema em projeto em questão com QUALIDADE no
processo de Desenvolvimento de Software?
4) Explique por que Qualidade é ter conformidade com os requisitos?
5) Dentre as fases do processo de desenvolvimento, qual a que concentra a
maior % de defeitos (problemas)? Explique porquê.
13. Vimos que…
Os processos de desenvolvimento são essenciais para o bom
andamento do projeto de software, assim como a compreensão do
sistema como um todo. Quanto mais aumenta a complexidade dos
sistemas, mais difícil se torna a sua visibilidade e a sua compreensão,
portanto sem um processo bem defino o projeto tem grande chance de
INSUCESSO!
14. Conceito:
O processo envolve atividades
necessárias para definir, desenvolver,
testar e manter um software
(PMI, 2004).
15. É um conjunto de atividades
relacionadas que levam a produção de
um produto de Software
(SOMMERVILLE, 2007).
16. Objetivos:
- Alinhar todas as atividades a executar no decorrer de todo o projeto,
e, assim, desenvolver tudo o que foi previsto no seu escopo.
- Planejamento: definir, em um cronograma, quando, como (quais os
recursos de hardware e software necessário) e quem irá realizar
determinada tarefa.
- Padronização: seguir as mesmas metodologias por todos os envolvido
no projeto para não haver dificuldades de entendimento.
- Controle: ter sempre meios de saber se o cronograma está sendo
cumprido e criar planos de contingência caso haja problemas no fluxo.
17. Atividades:
Análise - Investigar os requisitos dos usuários
Especificação – Definir claramente as características necessárias ao
sistema
Projeto/ Design - Criar (ou adptar) uma solução adequada
Implementação/ Codificação - Desenvolver a solução proposta
Teste - Garantir que a solução resolve o problema originalmente
levantado e que garantir que a solução funcione corretamente no seu
contexto (integração)
Manutenção - Modificar a solução de trabalho quando novos requisitos
forem identificados
20. Engenharia de Requisitos
20
Processo de descobrir, analisar, documentar
e verificar serviços requeridos para um
sistema e suas restrições operacionais.
22. Engenharia de Requisitos
1. Estudo de viabilidade
2. Elicitação/Levantamento e análise de
requisitos
3. Especificação e documentação
4. Validação
22
Resultado:
DOCUMENTO DE REQUISITOS
4 atividades
( alto nível)
23. 1) Estudo de Viabilidade
23
Avaliar sob o ponto de vista tecnológico e organizacional se o projeto
é VIÁVEL!
24. 2) Elicitação de Requisitos
Elicitar: descobrir, tornar explícito, obter o máximo de informações para
o conhecimento em questão.
Dificuldades:
24
25. Visão de um projeto:
Exemplo da diferença de visão de cada profissional envolvido em um
projeto.
28. 2) Análise de Requisitos
28
Atividades envolvidas nesta fase:
Classificação:
Resolução:
Priorização:
Confirmação:
29. 3) Especificação e Documentação
29
É a produção do:
DOCUMENTO DE ESPECIFICAÇÃO DE REQUISITOS
Requisitos funcionais
Requisitos não funcioanais
Requisitos do Usuário
Requisitos de Sistema
30. 4) Validação de Requisitos
Pretende-se demonstrar que o documento
produzido corresponde ao que o cliente pretende.
Deve ser especificados os CHECKLISTS:
30
31. 4) Validação de Requisitos
o VALIDADE = se está entre as partes envolvidas
oCONSISTÊNCIA = se há conflito entre os requisitos requisitados
oCOMPREENSIBILIDADE = não está de forma equivoca
oCOMPLETUDE = se possui todas as funcionalidades pretendidas
oREALISMO = se é implementável (tecnologicamente e financeiramente)
oVERIFICABILIDADE = se está descrito de forma evitar discordância
oRASTREABILIDADE = origem dos requisitos
oCONFORMIDADE = obedece as normas de todos os documentos
31
32. Projeto
Projeto Arquitetural: onde é desenvolvido um modelo conceitual para
o sistema, composto de módulos mais ou menos independentes.
Projeto de Interface: onde cada módulo tem sua interface de
comunicação estudada e definida.
Projeto Detalhado: onde os módulos em si são definidos, e
possivelmente traduzidos para pseudocódigo.
32
33. Implementação
Escrever o código
Documentar o código
Depurar (debug) o código
Preparar o código para ser testado
Retornar informações ao projetista e/ou analistas
Enviar informações ao testador e/ou integrador
Saída: código de trabalho (e a documentação associada) preparado
para ser testado
33
34. Teste e Integração
Precisa checar se a implementação corresponde ao projeto (e esta
funciona)
Precisa checar se a implementação atende aos requisitos (e esta
funciona corretamente)
Deve testar os módulos individuais e o sistema por completo
Então testa a interação com o(s) ambiente/softwares/dados/etc.
existente(s)
Saída: código devidamente testado, funcionando corretamente
34
35. Manutenção
Os requisitos dos usuários mudam com o tempo. Mesmo teste
exaustivos podem não descobrir todos os problemas antes da entrega
do software. Portanto, o software deve também mudar no decorrer do
tempo. Mudanças nos requisitos podem culminar em implementações
e testes extras, ou trabalho adicional de projeto, ou até mesmo de
análise.
Nesta fase, o software em geral entra em um ciclo iterativo que
abrange todas as fases anteriores
35
37. Texto: Qualidade de Software: Uma
questão de eficiência.
Você sabia que, a grande maioria das
empresas de software no Brasil gasta 70%
do tempo de desenvolvimento corrigindo
erros, ao invés de inovar e desenvolver
novas soluções?
https://1drv.ms/b/s!AlYeF3KfJshJxBBq1n1gOz9aUY2X
38. Exercícios:
1) Qual a importância de registrar e documentar todos os requisitos de software levantados pelo
Desenvolvedor?
2) Qual a importância do Desenvolvedor fazer uma análise de todos os Requisitos de software
levantados antes de iniciar o desenvolvimento do software?
3) Qual a importância de um Software ser testado referente à questão de eficiência e qualidade de
Software?
4) Quando há falta de alguma documentação de Software, quais são as dificuldades encontradas?
5) Qual a importância de existir a chamada Fase de Projeto para o desenvolvimento de um software?
6) Qual a importância de existir uma Equipe de testes para o desenvolvimento de um software?
7) Qual é o Erro mais grave e geralmente na maioria dos Projetos de Software cometido durante o
Desenvolvimento de Software se tratando do prazo de Entrega?
40. Modelo de Desenvolvimento de Software:
Há um bom tempo, vem se tentando encontrar um
processo ou metodologia previsível e repetível que melhore
a produtividade e qualidade. Vários modelos foram
idealizados com o intuito de “organizar” o processo,
podendo assim redundar em mais eficiência e menor custo
para o mesmo.
41. Modelos de Desenvolvimento de Software:
Cascata
Espiral
Interativo e Incremental
Prototipação
Modelos Ágeis: Scrum e XP
Processo Unificado: RUP