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

Post on 17-Apr-2015

110 views 2 download

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

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