Upload
internet
View
110
Download
2
Embed Size (px)
Citation preview
Introdução aos
Processos de Desenvolvimento
de Software
Prof. Pedro A. Oliveira
PUC Minas
Processos 2
Sistema
Hardware Redes de comunicação
Bases de dadosSoftware
Sistema X Software
Características de Software
Fonte: adaptado de Paula Filha, 2002
O que falta nesta figura?
Processos 3
Características de Software• Invisível: Intangível, incolor, inodoro e insípido.
• Não é manufaturado, como o hardware, sendo desenvolvido por um PROCESSO de engenharia.
• Fabricado “um a um”: PROJETO.
• Não se desgasta; se deteriora. Não há peças sobressalentes.
• Construído, em geral, sob encomenda, apesar das tentativas de “componentizar”.
• Complexidade intrínseca: multidisciplinaridade.
Processos 4
Como Estimar Tamanho, Esforço Tempo e
Qualidade?
Neste caso,
como seria
avaliada a
qualidade?
Processos 5
E neste
caso, como
seria
avaliada a
qualidade?
Bugs?
Conformidade com os requisitos?
Desempenho?
Indicadores de qualidade?
Como Estimar Tamanho, Esforço
Tempo e Qualidade?
Processos 6
Especificidades do Desenvolvimento de
Software
• Grande número de stakeholders (envolvidos).
• Interesses e necessidades diversificados.
• Comunicação truncada e difícil.
• Amplas opções de soluções tecnológicas.
• Mudança é o único componente “imutável”.
• Aplicações corporativas podem ser de larga escala.
• Software é diferente... MAS POR QUE?
Processos 7
• Todos reconhecem a importância do
trabalho com qualidade, motivação e
tecnologia de ponta.
• Entretanto, mesmo as melhores
pessoas não são capazes de fazer o
melhor quando o processo não é
entendido ou executado da melhor
forma.
Trabalho Organizacional e TI
• “Se tivesse seis horas para derrubar uma árvore, passaria as primeiras quatro horas afiando o machado” – Abraham Lincoln
Processos 8
Processo de Desenvolvimento de Software
Processo de Desenvolvimento de Software, de agora em diante, será referenciado neste curso simplesmente como PROCESSO.
Definido por Sommerville (2006) como:” "um conjunto de atividades e resultados associados, que produzem um produto de software".
Processos 9
O Que é Processo?
• “Conjunto de atividades parcialmente ordenadas, planejadas, executadas e controladas para transformar requisitos de cliente em sistema.”
(adaptado de Scott Ambler)
• “Antigamente” processo era chamado de metodologia. Qualquer semelhança NÃO É mera coincidência!
Processos 10
Processo
• Processo é a “liga” ou base para a interligação entre diversos componentes: entradas, saídas, atividades, ferramentas, técnicas, paradigmas, conceitos, pessoas, vontade...
O Que é Processo?
Processos 11
O Que Processo Não É?
• Detalhamento completo de TUDO que deve ser feito a TODO instante durante TODO o trabalho.
• “Algoritmo de fazer doido!”.
• Panacéia para todos problemas (“bala de prata” ou “Personal Process Tabajara- PPT”).
CENSURADO!
Processos 12
Alguns Mitos sobre Processo
• “Processo só serve para burocratizar o trabalho”.
• “Esse negócio é muito complicado. Prefiro trabalhar do meu jeito”.
• “Nasci em f#$@%polis. Não preciso de processo”.
• “Esse trem de processo tira a minha criatividade”.
• “Pra ter um processo 'bão' só precisa ter a ferramenta XPTO”.
• “Processo se resume a preencher
um tanto de documentos sem sentido”.
Processos 13
Desmitificando Processo
• Processo organiza e padroniza. “Arruma a casa”.
• Processo não é complicado, desde que seja adequado. “A ferramenta certa, na hora e no lugar certo.”
• Ninguém é melhor do que ninguém em tudo. Processo se baseia em boas práticas.
• Processo não deve inibir a criatividade da equipe.
• Ferramentas não implementam processo.
• Documentos não são o processo.
© 2002 Wilson de Pádua Paula Filho
Definição de processos
Processo definido tem documentação que
detalha:
o que é feito (produto);
quando (passos);
por quem (agentes);
as coisas que usa (insumos);
as coisas que produz (resultados).
© 2002 Wilson de Pádua Paula Filho
Definição de processos
Passos de um
processo. Passo 1
Passo 2a Passo 2b
Passo 3
Processos 16
Ciclo de Vida
Ciclo de vida define as fases que conectam o
início de um projeto a seu fim. A organização em
fases é um mecanismo que permite um maior
controle gerencial.
A transição de uma fase para outra normalmente é
marcada por alguma entrega e/ou revisão.
Assim como um projeto, um processo demanda
um ciclo de vida para organizar suas atividades.
Processos 17
Ciclo de Vida
Processos 18
Ciclo de Vida
Percepção da necessidade
Concepção
Elaboração
Desenho arquitetônico
Desenho detalhado
Codificação Liberação
Testes de unidade
Construção
Testes de aceitação
Desenvolvimento
Transição
Operação
Ciclo de vida
Retirada
Exemplo de ciclo de vida de PROCESSO:
Processos 19
Ciclo de VidaAtividades típicas do processo de software, segundo uma combinação das
classificações de Schwartz, Pressman e Sommerville:
Especificação:
Engenharia de Sistema: proposta de uma solução geral para o problema, envolvendo questões
extra-software.
Análise de Requisitos: levantamento das necessidades do cliente para o software a ser
implementado. Tem como objetivo produzir uma especificação de requisitos.
Especificação de Sistema: descrição funcional do sistema. Pode incluir um plano de testes para
verificar sua adequação às necessidades.
Projeto:
Projeto Arquitetural (arquitetura): é desenvolvido um modelo conceitual para o sistema,
composto de partes (módulos) mais ou menos independentes.
Projeto de Interface: cada módulo tem sua interface de comunicação estudada e definida.
Projeto Detalhado: os módulos são definidos internamente, podendo ser traduzidos para
pseudo-código.
Fonte: adaptado de http://www.macoratti.net/proc_sw1.htm
Processos 20
Ciclo de Vida
Implementação
Codificação: a implementação em si do sistema em uma linguagem de computador.
Validação
Teste de Unidade e Módulo: a realização de testes para verificar a presença de erros e
comportamento adequado a nível das funções e módulos básicos do sistema.
Integração: a reunião dos diferentes módulos em um produto de software homogêneo, e a
verificação da interação entre estes quando operando em conjunto.
Manutenção e Evolução
Nesta fase, o software em geral entra em um ciclo iterativo que abrange todas as fases
anteriores.
Fonte: adaptado de http://www.macoratti.net/proc_sw1.htm
© 2002 Wilson de Pádua Paula Filho
Especificação
(???)
Produto
Ciclos de vida
Codifica-remenda:
© 2002 Wilson de Pádua Paula Filho
Ciclos de vida
Codifica-remenda:
provavelmente o mais usado;
não exige sofisticação técnica ou gerencial;
alto risco;
impossível de gerir;
não permite assumir compromissos confiáveis.
© 2002 Wilson de Pádua Paula Filho
Processos de software
A cascata:
Requisi tos
Análise
Desenho
Implementação
Testes
© 2002 Wilson de Pádua Paula Filho
Processos de software
A cascata:
subprocessos executados em estrita seqüência:
pontos de controle bem definidos facilitam gestão;
teoricamente, confiável e utilizável;
em projetos de qualquer escala;
interpretado literalmente:
é rígido e burocrático;
© 2002 Wilson de Pádua Paula Filho
Processos de software
A cascata:
requisitos, análise e desenho:
têm de ser muito bem dominados:
não são permitidos erros;
de baixa visibilidade para o cliente:
só recebe o resultado final do projeto.
© 2002 Wilson de Pádua Paula Filho
Processos de software
A cascata com
realimentação:
Requisi tos
Análise
Desenho
Implementação
Testes
© 2002 Wilson de Pádua Paula Filho
Processos de software
A espiral:
Ativação Análise
DesenvolvimentoOperação
© 2002 Wilson de Pádua Paula Filho
Processos de software
A prototipagem evolutiva:
Planejamento da iteração
Requisi tos Análise
Desenho
ImplementaçãoTestesAvaliação da iteração
Projeto terminado
Nova iteração
© 2002 Wilson de Pádua Paula Filho
Processos de software
A prototipagem evolutiva:
espiral é usada para versões provisórias;
chamadas de protótipos;
cobrem cada vez mais requisitos;
até que se atinja o produto desejado;
permite que requisitos sejam definidos
progressivamente;
alta flexibilidade e visibilidade para os clientes;
© 2002 Wilson de Pádua Paula Filho
Processos de software
A prototipagem evolutiva:
requer gestão sofisticada;
desenho deve ser muito robusto;
requer equipe muito disciplinada e experiente;
aplicada em processos “ágeis”.
© 2002 Wilson de Pádua Paula Filho
Processos de software
A entrega
evolutiva:
Requisitos
Anál ise
Desenho arquitetônico
Desenho detalhado
Implementação
TestesAvaliação da iteração
Projeto terminado
Nova iteração
© 2002 Wilson de Pádua Paula Filho
Processos de software
A entrega evolutiva:
em pontos bem definidos:
usuários podem avaliar partes do produto:
fornecendo realimentação quanto às decisões tomadas;
facilita acompanhamento dos projetos:
por parte de gerentes e de clientes;
© 2002 Wilson de Pádua Paula Filho
Processos de software
A entrega evolutiva:
a arquitetura é chave:
deve ser robusta;
deve permanecer íntegra;
ao longo das liberações.
RUP Processo de software PBH/Prodabel 34
Organização estrutural do RUP
Processos Processo de software da PBH/Prodabel 35
Processos 36
Referências bibliográficas PRESSMAN, R. S., Engenharia de Software, São Paulo,
Makron Books, 6a Ed., 2006.
SEI, Capability Maturity Model® Integration (CMMI-DEV), Version 1.2, www.sei.cmu.org/cmmi
IEEE, Software Engineering Body of Knowledge, SWEBOK, 2004, www.swebok.org
PAULA FILHO, Wilson de Pádua. Engenharia de
software: fundamentos, métodos e padrões. 2. ed. Rio de
Janeiro: LTC - Livros Técnicos e Científicos, 2003. 602 p.
ISBN 8521613393
http://www.wthreex.com/rup/portugues/index.htm