Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

36
Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas

Transcript of Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

Page 1: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

Introdução aos

Processos de Desenvolvimento

de Software

Prof. Pedro A. Oliveira

PUC Minas

Page 2: 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?

Page 3: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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.

Page 4: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

Processos 4

Como Estimar Tamanho, Esforço Tempo e

Qualidade?

Neste caso,

como seria

avaliada a

qualidade?

Page 5: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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?

Page 6: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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?

Page 7: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 8: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 9: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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!

Page 10: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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?

Page 11: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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!

Page 12: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 13: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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.

Page 14: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 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).

Page 15: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 2002 Wilson de Pádua Paula Filho

Definição de processos

Passos de um

processo. Passo 1

Passo 2a Passo 2b

Passo 3

Page 16: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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.

Page 17: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

Processos 17

Ciclo de Vida

Page 18: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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:

Page 19: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 20: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 21: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 2002 Wilson de Pádua Paula Filho

Especificação

(???)

Produto

Ciclos de vida

Codifica-remenda:

Page 22: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 23: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 2002 Wilson de Pádua Paula Filho

Processos de software

A cascata:

Requisi tos

Análise

Desenho

Implementação

Testes

Page 24: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 25: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 26: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 2002 Wilson de Pádua Paula Filho

Processos de software

A cascata com

realimentação:

Requisi tos

Análise

Desenho

Implementação

Testes

Page 27: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 2002 Wilson de Pádua Paula Filho

Processos de software

A espiral:

Ativação Análise

DesenvolvimentoOperação

Page 28: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 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

Page 29: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 30: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 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”.

Page 31: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

© 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

Page 32: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 33: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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

Page 34: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

RUP Processo de software PBH/Prodabel 34

Organização estrutural do RUP

Page 35: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

Processos Processo de software da PBH/Prodabel 35

Page 36: Introdução aos Processos de Desenvolvimento de Software Prof. Pedro A. Oliveira PUC Minas.

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