91
PDS – Teoria e Prática Ralph J. R. Filho

Processos de Desenvolvimento de Software - teoria e prática

Embed Size (px)

DESCRIPTION

Apresentação sobre processo de desenvolvimento de software

Citation preview

Page 1: Processos de Desenvolvimento de Software - teoria e prática

PDS – Teoria e PráticaRalph J. R. Filho

Page 2: Processos de Desenvolvimento de Software - teoria e prática

Objetivos

Esclarecer a importância do processo de desenvolvimento de software bem como explicar suas aplicabilidades e a participação das pessoas

Page 3: Processos de Desenvolvimento de Software - teoria e prática

Conteúdo

Primeiros Passos Visão Geral Tipos de PDS

Tradicionais▪ RUP, Cascata

Ágeis▪ SCRUM, XP

Page 4: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos

Processo Conjunto de passos e instruções para

executar determinadas atividades Desenvolvimento

Criação ou manutenção de um produto ou serviço

Software Conjunto de código-fonte e

documentação

Page 5: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos

Um processo de desenvolvimento de software (PDS) é um conjunto de atividades, disciplinas e papéis que prescreve práticas para se conceber, gerenciar, desenvolver, testar e implantar um software

As atividades do PDS possuem entradas, saídas, ferramentas e técnicas que estão ligadas a artefatos criados ou alterados durante sua execução

Page 6: Processos de Desenvolvimento de Software - teoria e prática

Crise do Software

Os primeiros PDS's surgiram nos anos 70 impulsionados pela crise do software que ocorreu nos anos 60

Os projetos de software dos anos iniciais apresentavam diversos problemas Altos investimentos, sem visibilidade Excesso de falhas (bugs) Requisitos mal compreendidos Quase impossível de manter após pronto

Page 7: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Page 8: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

“Any fool can write code that a computer can understand. Good programers write code that humans can understand”

Martin Fowler

Page 9: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Visão de Projeto Aplicação de boas práticas Indicadores de qualidade Definição de papéis ligados ao plano

de carreira e às atividades executadas

Page 10: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Visão de Projeto Saber sobre o progresso das atividades,

impedimentos, atrasos, dependências, relacionamentos, custos, riscos

Poder organizar/planejar com maior eficiência as tarefas que irão compor cada etapa de um desenvolvimento

Page 11: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Page 12: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Indicadores de qualidade Identificar acuracidade de estimativas Comparar projetos Alinhar objetivos dos projetos com os

objetivos estratégicos da empresa Identificar esforço com defeitos e

retrabalhos Mapear desempenho de recursos

humanos

Page 13: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Page 14: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

20%

50%

20%

10%

Disciplinas

RequisitosDesenvolvimentoNegóciosTestes

Page 15: Processos de Desenvolvimento de Software - teoria e prática

Alguns Objetivos

Aplicação de boas práticas Modelos de documentos a serem

utilizados para agregar valor ao software Lições aprendidas com projetos

anteriores descritos como guias Estrutura de papéis adequada à política

da empresa Estrutura de fases e disciplinas

adequada à natureza dos projetos da empresa

Page 16: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos

O que é? Papel Disciplina Artefato

Page 17: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos - Papéis

• Administrador de Rede

• Analista de Qualidade• Analista de Requisitos• Analista de Negócios• Analista de Testes• Arquiteto de Software• Consultor• Desenvolvedor• Gerente de

Configuração• Gerente de Projetos• Testador• ...

Cada papel tem sua importância, disciplina, artefatos associados e atividades pré-definidas

Page 18: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos - Disciplina

• Análise e projeto de software

• Desenvolvimento de software

• Gerência de Configuração

• Gerência de Requisitos• Gerência de Projetos• Implantação• Modelagem de Negócios• Teste de Software

Categorização de processos que são, teoricamente, independente dos demais

Page 19: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos - Artefato

• Ator• Burndown chart• Caso de Teste• Caso de Uso• Código fonte• E-mail• Glossário• Plano de iteração• Requisito

• Exemplo:• Coleção de Requisitos

• Caso de Uso• Regra de

Negócio

Documento ou elemento pertencente a este, que deve ser criado ou alterado

Page 20: Processos de Desenvolvimento de Software - teoria e prática

Primeiros Passos - Artefato

Page 21: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Page 22: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Organizações bem estruturadas usam PDS em seu ambiente, sempre buscando melhoria

O PDS possui um conjunto de regras e elementos que são criados e refinados ao passar do tempo

Page 23: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Pessoas que desempenham o papel de Analista de Qualidade focam seu trabalho em definir, manter, ensinar e auditar o PDS

Algumas empresas possuem um setor de qualidade

O conhecimento das pessoas que usam o PDS na prática é fundamental para o refinamento dos processos

Page 24: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Page 25: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Page 26: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Page 27: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Uma página web é um bom caminho para centralizar o PDS. Ele deve ser de acesso a todos na empresa

Cada pessoa, de acordo com seus papéis, executa as atividades conforme o PDS e pode dar sugestões de melhorias bem como indagar sobre elementos que não concorda ou que tem dúvidas

Page 28: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

É importante conhecer o PDS como um todo! Conhecer o seu papel na empresa Descobrir e trilhar caminhos de carreira Estudar e aplicar as melhores práticas

Page 29: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Ferramentas são utilizadas pelas pessoas que fazem o PDS acontecer. Através do uso delas as tarefas são executadas, os documentos arquivados e as informações mantidas

Exemplos: MS Project, CVS, Eclipse, IBM Rational Suite, Thunderbird

Page 30: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

O PDS deve evitar referir-se a ferramentas diretamente, ou fazer isso de forma independente, porquê as ferramentas devem oferecer suporte ao PDS, e não o contrário

O PDS deve englobar as diferentes naturezas dos projetos que a organização executa

Page 31: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral - RUP

Page 32: Processos de Desenvolvimento de Software - teoria e prática

Visão Geral

Atualmente existem diversos modelos de PDS no mercado

O PDS ideal é aquele que atende aos tipos de projetos que a organização executa

Customização de modelos é normal

Page 33: Processos de Desenvolvimento de Software - teoria e prática

Modelos de PDS

Tradicionais Possuem uma grande quantidade de papéis,

disciplinas e fases. Chamados desta forma por serem precursores ou serem baseados nestes. Lembram etapas de um processo fabril (Fábrica de Software)

Ágeis Conceito criado nos anos 90 com o pretexto

de que os tradicionais não atendiam determinadas naturezas de projetos (web) e que eram excessivamente burocráticos

Page 34: Processos de Desenvolvimento de Software - teoria e prática

Modelos de PDS

Tradicionais Cascata RUP

Ágeis SCRUM XP

Page 35: Processos de Desenvolvimento de Software - teoria e prática

Cascata

Modelo Cascata Primeiro PDS formalizado, anos 70 Processo sequencial e estático, é simples

de ser aplicado e controlado Várias empresas utilizam atualmente Originou-se em empresas da área

industrial, de manufatura e construção

Page 36: Processos de Desenvolvimento de Software - teoria e prática

Cascata

Page 37: Processos de Desenvolvimento de Software - teoria e prática

Cascata

O modelo Cascata “puro” prescreve que só é possível avançar para uma próxima fase depois que a fase anterior estiver 100% concluída

Existem variações deste modelo

Page 38: Processos de Desenvolvimento de Software - teoria e prática

Cascata

Page 39: Processos de Desenvolvimento de Software - teoria e prática

Cascata

Page 40: Processos de Desenvolvimento de Software - teoria e prática

Cascata

Quais as vantagens? Quais as desvantagens?

Page 41: Processos de Desenvolvimento de Software - teoria e prática

RUP

IBM Rational Unified Process Usa a abordagem O.O. e UML na sua

documentação Organizado em fases e disciplinas inclui

guias de boas práticas e templates Possui um vasto conjunto de papéis e

documentos, abrange a elaboração de softwares de alta complexidade

Page 42: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 43: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 44: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 45: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 46: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 47: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 48: Processos de Desenvolvimento de Software - teoria e prática

RUP

Principais documentos

Page 49: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 50: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 51: Processos de Desenvolvimento de Software - teoria e prática

RUP

Page 52: Processos de Desenvolvimento de Software - teoria e prática

RUP

Quais as vantagens? Quais as desvantagens?

Page 53: Processos de Desenvolvimento de Software - teoria e prática

RUP

Visite http://www.wthreex.com

Page 54: Processos de Desenvolvimento de Software - teoria e prática

Ágeis

SCRUM, XP Porquê está em evidência? Toyota, Honda, HP Inovação Web A abordagem humanitária em

detrimento dos processos bem elaborados

Page 55: Processos de Desenvolvimento de Software - teoria e prática

Ágeis

Princípios Indivíduos e iterações melhor que: processos e ferramentas Software funcionando melhor que: documentação compreensiva Cooperação do cliente melhor que: negociar contrato Resposta à mudanças melhor que: seguir planos

Cuidado com a interpretação dos itens acima

Page 56: Processos de Desenvolvimento de Software - teoria e prática

O case Toyota

Mais de 300 mil colaboradores A maior empresa automotiva em

produção e vendas

Page 57: Processos de Desenvolvimento de Software - teoria e prática

O case Toyota

Toyota-way Pensamento longo prazo como base

para decisões gerenciais Processo para soluções de problemas Adicionar valor à organização através do

desenvolvimento das pessoas Solução de problemas na raiz direciona

ao aprendizado organizacional

Page 58: Processos de Desenvolvimento de Software - teoria e prática

O case Toyota

Respeito aos seres humanos e melhoria contínua Desafio Kaizen Trabalho em equipe

Os ágeis basearam-se neste modelo

Page 59: Processos de Desenvolvimento de Software - teoria e prática

Ágeis

Page 60: Processos de Desenvolvimento de Software - teoria e prática

Ciclo de vida ágil

Page 61: Processos de Desenvolvimento de Software - teoria e prática

XP

Extreme programming Práticas ágeis voltadas para o

desenvolvimento de software

Page 62: Processos de Desenvolvimento de Software - teoria e prática

XP

Page 63: Processos de Desenvolvimento de Software - teoria e prática

XP - Metáforas

Page 64: Processos de Desenvolvimento de Software - teoria e prática

XP - Metáforas

Page 65: Processos de Desenvolvimento de Software - teoria e prática

XP - Metáforas

Page 66: Processos de Desenvolvimento de Software - teoria e prática

XP - Metáforas

Page 67: Processos de Desenvolvimento de Software - teoria e prática

XP - Metáforas

Ok, pode-se entender o significado nos desenhos, mas... precisa ser tão feio? Em alguns casos precisa ser feito de

forma rápida Mantem-se estes rascunhos?

Sim, fotos de quadros também são aceitas como documentação.

Lembre-se que Sw funcionando é melhor que docs

bonitos

Page 68: Processos de Desenvolvimento de Software - teoria e prática

XP

Planejamento com a participação da equipe

Requisitos priorizados pelo cliente Desenvolvimento orientado à testes

Page 69: Processos de Desenvolvimento de Software - teoria e prática

XP – outras práticas

Programação em par

Page 70: Processos de Desenvolvimento de Software - teoria e prática

XP – outras práticas

Refactoring Sacrifício da qualidade interna que

posteriormente é resgatada O funcionamento do sw não pode ser

comprometido Refactoring é aplicação de boas práticas

de codificação em um segundo momento porque no momento do desenvolvimento havia pouco tempo disponível

Page 71: Processos de Desenvolvimento de Software - teoria e prática

XP – outras práticas

Código coletivo Integração contínua Participação ativa do cliente

Page 72: Processos de Desenvolvimento de Software - teoria e prática

XP – cenário ideal

Mudanças constantes Equipes pequenas, experientes e

maduras Requisitos pouco conhecidos

Page 73: Processos de Desenvolvimento de Software - teoria e prática

XP

Quais as vantagens? Quais as desvantagens?

Page 74: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Framework ágil voltado ao gerenciamento de projetos

Foca em planejamento de iterações curtas, envolvimento do cliente e equipes multifuncionais e auto-organizáveis

Page 75: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Page 76: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

... equipes Scrum fazem um pouco de cada coisa, todo o tempo.

Requerimentos Projeto Código Teste

Ao invés de completar uma coisa por vez...

Page 77: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Change

Page 78: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Papéis Dono do Produto (prioriza, aceita ou

rejeita soluções) SCRUM Master (garante a execução do

processo durante o desenvolvimento, resolve impedimentos)

Equipe (de 6 a 9 pessoas, multifuncional e auto-organizável)

Page 79: Processos de Desenvolvimento de Software - teoria e prática

SCRUM - Planejamento

Quero que os usuários do portal possam planejar suas férias, escolhendo itinerários online.

Quero que os usuários do portal possam planejar suas férias, escolhendo itinerários online.

Modelagem (8 horas)Codificar interface (4)Escrever textos (4)Codificar a classe foo (6)Atualizar testes de performance (4)

Page 80: Processos de Desenvolvimento de Software - teoria e prática

SCRUM - Reunião

Page 81: Processos de Desenvolvimento de Software - teoria e prática

SCRUM - Acompanhamento

O que fizeste ontem?O que fizeste ontem?

O que vais fazer hoje?O que vais fazer hoje?

Há algum obstáculo?Há algum obstáculo?

1

2

3

Page 82: Processos de Desenvolvimento de Software - teoria e prática

SCRUM – Cerimônias finais

Retrospectiva de Sprint O que funciona o que não funciona

Revisão de Sprint Resultados obtidos

WTH is sprint anyway?

Page 83: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Artefatos Product Backlog Sprint Backlog Burndown chart

Page 84: Processos de Desenvolvimento de Software - teoria e prática

SCRUM - Burndown

Page 85: Processos de Desenvolvimento de Software - teoria e prática

SCRUM - Burndown

Page 86: Processos de Desenvolvimento de Software - teoria e prática

SCRUM

Quais as vantagens? Quais as desvantagens?

Page 87: Processos de Desenvolvimento de Software - teoria e prática

PDS

Qual o melhor? O que diferencia um artesão de um

operário? Os dois paradigmas de modelos

podem ser combinados? Documentação é necessária? Até

que ponto?

Page 88: Processos de Desenvolvimento de Software - teoria e prática

Evitar

Modelo constrói-conserta (caos)

Page 89: Processos de Desenvolvimento de Software - teoria e prática

PDS

Toyota-way, seção 2 O processo correto trará os resultados

corretos▪ Foco nas pessoas▪ Aproximação do cliente▪ Qualidade interna e externa▪ Evitar processos engessados, aplicar melhoria

contínua

Page 90: Processos de Desenvolvimento de Software - teoria e prática

PDS

O que mais tem a ver com isso CMMI, MPS.BR, PMI (PMBOK), ISO

Page 91: Processos de Desenvolvimento de Software - teoria e prática

Perguntas?

Obrigado!