Engenharia de Software - Processos

35
Engenharia de Software

description

Engenharia de Software - Processos

Transcript of Engenharia de Software - Processos

Page 1: Engenharia de Software - Processos

Engenharia de

Software

Page 2: Engenharia de Software - Processos

Engenharia de Software

Sistematizar o processo de criação e manutenção de

software.

Page 3: Engenharia de Software - Processos

Ciclos de Vida de Sofware

Ciclo de Vida Clássico (Cascata)

Prototipação

Modelo Espiral

Técnicas de 4a Geração

Page 4: Engenharia de Software - Processos

Ciclo de Vida Clássico

Comunicação

Início do projeto

Levantamento das

necessidades Planejamento

Estimativas

Cronograma

Acompanhamento Modelagem

Análise

Projeto

Construção

Codificação

testes Emprego

entrega

Suporte

feedback

Page 5: Engenharia de Software - Processos

Engenharia de

Sistemas Análise de

Requisitos Projeto

Codificação

Testes

Manutenção

Cascata

Page 6: Engenharia de Software - Processos

Problemas com o Ciclo de Vida Clássico

projetos reais raramente seguem o fluxo seqüencial que

o modelo propõe

logo no início é difícil estabelecer explicitamente todos

os requisitos. No começo dos projetos sempre existe uma

incerteza natural

o cliente deve ter paciência. Uma versão executável do

software só fica disponível numa etapa avançada do

desenvolvimento

Page 7: Engenharia de Software - Processos

fim

início

construção

produto

refinamento

protótipo

avaliação

protótipo

construção

protótipo

projeto

rápido

obtenção

dos

requisitos

Prototipação

Page 8: Engenharia de Software - Processos

Problemas com a

Prototipação

cliente não sabe que o software que ele vê não considerou,

durante o desenvolvimento, a qualidade global e a

manutenibilidade a longo prazo. Não aceita bem a ideia que a

versão final do software vai ser construída e "força" a utilização

do protótipo como produto final.

Page 9: Engenharia de Software - Processos

Problemas com a Prototipação

desenvolvedor freqüentemente faz uma

implementação comprometida (utilizando o que

está disponível) com o objetivo de produzir

rapidamente um protótipo. Depois de um tempo ele familiariza

com essas escolhas, e esquece que elas não são apropriadas para o produto

final.

Page 10: Engenharia de Software - Processos

Prototipação (comentários)

Ainda que possam ocorrer problemas, a prototipação

é um ciclo de vida eficiente

A chave é definir-se as regras do jogo logo no

começo

O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como

um mecanismo a fim de definir os requisitos

Page 11: Engenharia de Software - Processos

Ciclo de Vida em Espiral

engloba as melhores características do ciclo de vida Clássico e da

Prototipação, adicionando um novo elemento: a Análise de Risco

segue a abordagem de passos sistemáticos do Ciclo de Vida

Clássico incorporando-os numa estrutura iterativa que reflete mais

realisticamente o mundo real

usa a Prototipação, em qualquer etapa da evolução do produto,

como mecanismo de redução de riscos

Page 12: Engenharia de Software - Processos

decisão de continuar ou não

direção de um

sistema

concluído

avaliação

do cliente engenharia

análise dos

riscos

planejamento

Espiral

início

Page 13: Engenharia de Software - Processos

Atividades do Ciclo de Vida em Espiral

Planejamento: determinação dos objetivos,

alternativas e restrições

Análise de Risco: análise das alternativas e

identificação / resolução dos riscos

Construção: desenvolvimento do produto no

nível seguinte

Avaliação do Cliente: avaliação do produto

e planejamento das novas fases

avaliação

do

cliente engenharia

análise dos

riscos

planejamento

Page 14: Engenharia de Software - Processos

é, atualmente, a abordagem mais realística para o desenvolvimento de software em grande escala.

usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva.

pode ser difícil convencer os clientes que uma abordagem "evolutiva" é controlável

exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso

Espiral (comentários)

Page 15: Engenharia de Software - Processos

o modelo é relativamente novo e não tem sido amplamente

usado

Demorará muitos anos até que a eficácia desse

modelo possa ser determinada com certeza

absoluta.

Espiral (comentários)

Page 16: Engenharia de Software - Processos

Técnicas de 4a Geração

Concentra-se na capacidade de se especificar o software a uma

máquina em um nível que esteja próximo à linguagem natural.

Engloba um conjunto de ferramentas de software que

possibilitam que:

o sistema seja especificado em uma linguagem de

alto nível e

o código fonte seja gerado automaticamente a partir

dessas especificações

Page 17: Engenharia de Software - Processos

Obtenção dos

Requisitos Estratégia do

“Projeto” Implementação

usando 4GL Testes

Técnicas de 4a Geração

Page 18: Engenharia de Software - Processos

Ferramentas do ambiente de

desenvolvimento de software de 4GL

O ambiente de desenvolvimento de software que sustenta o ciclo de vida

de 4a geração inclui as ferramentas:

linguagens não procedimentais para consulta de banco de dados

geração de relatórios

manipulação de dados

interação e definição de telas

geração de códigos

capacidade gráfica de alto nível

capacidade de planilhas eletrônicas

Page 19: Engenharia de Software - Processos

1. Revisões

2. Documentação

3. Controle de

Mudanças

CCCooonnnssstttrrruuuçççãããooo

1. Entender

2. Modificar

3. Revalidar

Manutenção “mudanças”

OOOpppeeerrraaaçççãããooo

SSSOOOFFFTTTWWWAAARRREEE

PPPRRROOODDDUUUTTTOOO

AAAtttiiivvviiidddaaadddeeesss dddeee AAApppoooiiiooo

1. Análise de

Sistema

2. Planejamento

do Projeto

3. Análise de

Requisitos

Definição“o que” Desenvolvimento

“como”

1. Projeto de

Software

2. Codificação

3. Teste

Engenharia de Software uma visão genérica

Page 20: Engenharia de Software - Processos

Abordagem Clássica vs. Abordagem Ágil

• Ciclo de vida ágil é semelhante ao clássico

• Define o que o cliente quer e inicia o projeto

• Planeja o projeto, calculando o esforço

• Executa o plano, construindo a solução

• Monitora resultados e entrega ao cliente

20 /

61

Page 21: Engenharia de Software - Processos

Fases

• Planejamento

• Sprints (padrão de processo)

• Reuniões Diárias

• Revisão

• Retrospectivas

• Encerramento

21 /

61

Page 22: Engenharia de Software - Processos

Scrum

Page 23: Engenharia de Software - Processos

23 /

61

Page 24: Engenharia de Software - Processos

Planejamento

• Relativamente curto

• Projeto da arquitetura do sistema

• Estimativas de datas e custos

• Criação do backlog

– Participação de clientes e outros departamentos

• Levantamento dos requisitos e atribuição de prioridades

• Definição de equipes e seus líderes

• Definição de pacotes a serem desenvolvidos

24 /

61

Backlog

Page 25: Engenharia de Software - Processos

Sprint - Reuniões

Diárias

• Cerca de 15 minutos de duração

• Todos respondem às perguntas: – O que você realizou desde a última reunião?

– Quais problemas você enfrentou?

– Em que você trabalhará até a próxima reunião?

• Benefícios: – Maior integração entre os membros da equipe

– Rápida solução de problemas

• Promovem o compartilhamento de conhecimento

– Progresso medido continuamente

• Minimização de riscos

25 /

61

Page 26: Engenharia de Software - Processos

Sprint - Revisão

• Deve obedecer à data de entrega

– Permitida a diminuição de funcionalidades

• Apresentação do produto ao cliente

– Sugestões de mudanças são incorporadas ao backlog

• Benefícios:

– Apresentar resultados concretos ao cliente

– Integrar e testar uma boa parte do software

– Motivação da equipe

26 /

61

Nova funcionalidade

Page 27: Engenharia de Software - Processos

Encerramento

• Finalização do projeto

• Atividades:

• Testes de integração

• Testes de sistema

• Documentação do usuário

• Preparação de material de treinamento

• Preparação de material de marketing

27 /

61

Page 28: Engenharia de Software - Processos

Papéis – Product

Owner

• Responsável por apresentar os interesses de todos os

stakeholders

• Define fundamentos iniciais do projeto, objetivos e planos

de release

• Responsável pela lista de requisitos (Product

Backlog)

• Certifica se as atividades com maior valor para o negócio

são desenvolvidas primeiro

• Priorização freqüente das funcionalidades antes de cada

iteração

28 /

61

Page 29: Engenharia de Software - Processos

Papéis – Scrum Master

• Responsável pelo sucesso do Scrum

• Ensina o Scrum para os envolvidos com o projeto

• Implementa o Scrum na empresa de forma adaptada a sua

cultura, para continuamente gerar benefícios

• Certifica se cada pessoa envolvida está seguindo seus papéis

e as regras do Scrum

• Certifica que pessoas não responsáveis não interfiram no

processo

29 /

61

Page 30: Engenharia de Software - Processos

Papéis – Time

• Responsável por escolher as funcionalidades a serem desenvolvidas

em cada interação e desenvolvê-las

• O time se auto-gerencia, se auto-organiza

• Todos os membros do time são coletivamente responsáveis pelo

sucesso de cada iteração

30 /

61

Page 31: Engenharia de Software - Processos

31 /

61

XP – Extreme Programming

(Programação Extrema)

Page 32: Engenharia de Software - Processos

XP

• Fases:

• Planejamento

• Projeto

• Codificação

• Teste

32 /

61

Page 33: Engenharia de Software - Processos

XP

Planejamento

• Fase de levantamento de requisitos.

• ouvir histórias

33 /

61

Page 34: Engenharia de Software - Processos

XP

Jogo do Planejamento

• Elaboração das Histórias (Exploração)

• 1) Histórias determinam algo que o sistema precisa fazer, são

• descritas pelo cliente.

• 2) O tempo para elaborar uma história é estimado pelo time.

• 3) Caso uma história fique muito grande, ela é dividida em

• tarefas.

34 /

61

Page 35: Engenharia de Software - Processos

XP

35 /

61