Post on 07-Apr-2016
1
Planejamento e Gerenciamento Iterativo de Projetos de Software
Hermano PerrelliCentro de Informática, UFPE
hermano@cin.ufpe.br
2
Objetivos desta aula Discutir uma metodologia de
desenvolvimento iterativa e incremental Apresentar atividades de planejamento de
projetos de software na ótica de um processo iterativo e incremental
Elucidar dúvidas comuns relacionadas ao planejamento de projetos iterativos e incrementais
E trocar experiências!
3
Agenda1. Introdução – Motivação e Conceitos
Básicos2. Considerando os Riscos3. Planejamento Iterativo – Planejando as
Fases e Iterações
4
Outros tópicos interessantes… Estimativa de esforço
Técnicas – vantagens e dificuldades• Pontos de casos de uso• Wideband Delphi
Organização da Equipe Características de um time vitorioso Alocação da equipe nas fases
• Sincronização de atividades Atividades, artefatos e responsabilidades no
Fluxo de P&G Implementação de processos iterativos e
incrementais
5
Referências bibliográficas The Unified Software Development Process. Ivar
Jacobson, Grady Booch e James Rumbaugh. Addison-Wesley, 1998.
Software Project Management: A Unified Framework. Walker Royce. Addison-Wesley, 1998.
Object-Oriented Project Management with UML. Murray Cantor. Wiley, 1998.
Managing Risk: Methods for Software Systems Development. Elaine M. Hall. Addison-Wesley, 1998.
Object Solutions: Managing the Object-Oriented Project (Addison-Wesley Object Technology Series). Grady Booch. Addison-Wesley, 1999.
6
Outras referências COCOMO 2: sunset.usc.edu/research/cocomosuite.
Center for Software Engineering. Última visita em 8 de outubro de 2001.
Software Engineering Economics. Barry Boehm. Prentice-Hall, 1981.
The Deadline: A Novel About Project Management. Tom DeMarco. Dorset House, 1997.
Applying Use Cases: A Practical Guide. Geri Schneider, Jason P. Winters, Ivar Jacobson. Addison-Wesley, 1998.
Rational web site: www.rational.com.
8
Objetivos deste módulo Apresentar a motivação para
planejamento e gerenciamento de projetos
Apresentar conceitos básicos Apresentar as características de uma
metodologia iterativa
9
Preocupações do Gerente de TI Melhorar a qualidade do desenvolvimento
de software Principais riscos e incertezas no
desenvolvimento de sistemas
10
O que faz um gerente de projetos? Aloca recursos Define prioridades Coordena as interações com clientes e usuários Procura manter a equipe de projeto focada na
meta do projeto Resolve conflitos Gerencia riscos Estabelece um conjunto de práticas para
assegurar a qualidade dos artefatos do projeto
11
Qual é o objetivo do gerente de projetos?
Desenvolver o produto esperado dentro do prazo, custo e nível de
qualidade desejados
12
Algumas estatísticas 31% dos projetos são abortados 53% dos projetos extrapolam o prazo em
mais de 50% % de projetos que são finalizados dentro
do prazo e custo esperados em grandes empresas: 9% em empresas medianas: 16% em pequenas empresas: 28%
Fonte: Standish Group, 1995.
13
Planejamento e gerenciamento é para torná-lo parte do % de
sucesso!!!
Engenharia de SoftwareFator Humano Estratégias
do Negócio
15
Parkinson’s effect O trabalho se expande de modo a
preencher todo o tempo disponível para executá-lo
Se a equipe sentir que tem tempo disponível vai gastá-lo, contribuindo
para elevar os riscos do projeto!
16
Modelos de ciclo de vida de software Conjunto de fases, atividades, marcos e artefatos
que guiam o desenvolvimento, operação e manutenção de um sistema
Não existem modelos certos ou errados, apenas adequados ou não a uma determinada situação
Ferramenta para planejamento e gerenciamento!
17
Modelos de ciclo de vida de software Força bruta, code and fix, nike-way Cascata Espiral Iterativo …
18
Modelo Cascata Um dos mais antigos, e ainda um dos
mais usados! Várias atividades executadas de forma
sistemática e seqüencialEspec. de Requisitos
Análise e ProjetoImplementação
Integração e testes
Implantação
19
Modelo Cascata Fixa pontos específicos para a entrega de
artefatos É simples e fácil de aplicar, facilitando o
planejamento Na prática, existe uma interação entre as
atividades e cada atividade pode levar a modificações nas anteriores na maioria dos casos existe interação e superposição!
Pressupõe que os requisitos ficarão estáveis Atrasa a redução de riscos
20
Desenvolvimento cascata atrasa a redução de riscos
Início da integração
100%
Tempo
Prog
ress
o do
pro
jeto
(% c
odifi
cado
)
Deadlineoriginal
Fonte: Software Project Management, Walker Royce
21
Modelo Iterativo Aplicação do modelo cascata iterativamente As iterações iniciais atacam os maiores riscos
ReqA&P
ImpI/T
Imp
Iteração 1
ReqA&P
ImpI/T
Imp
Iteração 2
ReqA&P
ImpI/T
Imp
Iteração 3
TEMPO
22
Desenvolvimento iterativo antecipa a redução de riscos
100%
Tempo
Prog
ress
o do
pro
jeto
(% c
odifi
cado
)
Fonte: Software Project Management, Walker Royce
Ciclo de vida tradicional
Ciclo de vida iterativo
23
Modelo Iterativo Testes e integração são realizados desde o
início, de forma contínua Riscos críticos são resolvidos antes que grandes
investimentos sejam realizados Permite feedback dos usuários desde cedo Pequenos objetivos, foco em curto-prazo Progresso é medido de forma mais concreta Implementações parciais podem ser implantadas
Utiliza as vantagens do modelo cascata, sem atrasar a resolução de riscos!
24
Ator Qualquer coisa que interage com o
sistema Definem um papel particular São sempre externos ao sistema Exemplos:
um usuário do sistema outro sistema com o qual o sistema a
ser desenvolvido precisa se comunicar
Cliente
25
Caso de uso Seqüência de ações que incorpora uma funcionalidade
específica do sistema, fornecendo um resultado de valor para algum ator.
Forma específica de uso do sistema através da execução de alguma de suas funcionalidades.
Conjunto de cenários que capturam requisitos funcionais do sistema
Mostram apenas o que o sistema faz, e não como Capturam o comportamento pretendido para um
sistema, sem a necessidade de especificar como esse comportamento será implementado
ClienteRealizar pedido
26
Um exemplo – casos de uso do Qualiti Internet Banking
Operadora do DOC
Operadora cartao de crédito
Realizar transferencia
Consultar cheques
Solicitar taloes de cheque
Desbloquear taloes de cheque
Efetuar Login
Alterar senha
Consultar saldo
Consultar extrato
Consultar Qualiti CardRealizar DOC
Efetuar pagamento do Qualiti Card
Cliente
27
Cenários Significa um caminho através de um caso
de uso. Uma instância de um caso de uso Exemplo (Sacar dinheiro):
Saque com sucesso Tentativa de saque MAS senha incorreta Tentativa de saque MAS saldo insuficiente
28
Prioridade de casos de uso Essencial para gerenciar os requisitos Pode interferir no planejamento das
iterações A prioridade pode ser:
Essencial Importante Desejável ou Opcional
30
Apenas a linguagem não basta!
+
++
+Metodologia de
desenvolvimento
Modelos, padrões e guias
Linguagem padrão
Ferramentas de apoio
Equipes treinadas
31
É fundamental a definição de quem faz O Que, Quando e Como
O que é uma metodologia? Processo de desenvolvimento Conjunto de métodos e práticas de
desenvolvimento (com orientações nas linguagens, paradigmas, tecnologias e ferramentas utilizadas)
32
Benefícios de uma metodologia Qualidade de software Produtividade no desenvolvimento, operação e
manutenção de software Permitir ao profissional controle sobre o
desenvolvimento dentro de custos, prazos e níveis de qualidade desejados
Permitir ao profissional estimar custos e prazos com maior precisão
Mas… os benefícios não virão de imediato!Qualidade x Produtividade
33
Características da metodologia Inspirada no RUP (Rational Unified Process)
Processo Unificado de desenvolvimento de software• Conjunto de atividades a serem realizadas para produzir
ou evoluir software Baseado em boas práticas de desenvolvimento Framework para processos
• Para usar o RUP é preciso instanciá-lo e definir padrões e guias específicos para a realidade de cada empresa/projeto
E o que é o RUP?
34
Características da metodologia O desenvolvimento de sistemas
seguindo a metodologia é: Iterativo e incremental Guiado por casos de uso (use cases) Baseado na arquitetura do sistema Orientado a objetos
35
Iterativo e incrementalReq
A&PImp
I/TImp
Iteração 1
ReqA&P
ImpI/T
Imp
Iteração 2
ReqA&P
ImpI/T
Imp
Iteração 3
TEMPO
36
Iterativo e incremental Em cada iteração:
são identificados e especificados os casos de uso mais relevantes
é feita a análise e projeto dos casos de uso, usando-se a arquitetura como guia
são implementados componentes que realizam o que foi projetado
verifica-se se os componentes satisfazem os casos de uso escolhidos
A escolha dos casos de uso é baseada em uma análise dos riscos envolvidos no projeto
Os casos de uso que apresentam os maiores riscos devem ser realizados primeiro, para resolver os riscos o quanto antes!
37
Guiado por casos de uso (use cases)
• Casos de uso são usados para especificar requisitos• Durante a análise, projeto e implementação os casos
de uso são “realizados”• Durante os testes, verifica-se se o sistema realiza o
que está descrito no Modelo de Casos de Uso• Casos de uso são usados no planejamento e
acompanhamento das iteraçõesRequisitos Testes Implantação
Casos de uso são usados durante todo o processo
Análise e Projeto
Implemen-tação
38
Baseado na arquitetura do sistema A arquitetura é prototipada e definida logo nas
primeiras iterações O desenvolvimento consiste em complementar a
arquitetura A arquitetura guia o projeto e implementação das
diversas partes do sistema A arquitetura serve para organizar o
desenvolvimento, estruturar a solução e identificar oportunidades de reuso
Os casos de uso dizem o que deve ser feito e a arquitetura descreve como
39
Orientada a objetos Análise e Projeto em UML
UML é uma linguagem usada para especificar, modelar e documentar os artefatos de um sistema
É um padrão da OMG e têm se tornado o padrão empresarial para modelagem OO
Implementação em Java ou alguma outra linguagem de programação OO
40
Conceitos chave da metodologia Fases e Iterações Fluxos de Atividades Atividades Artefatos Modelos Guias e Padrões Responsáveis (papéis e perfis, não
pessoas)
41
Concepção Elaboração Construção Transição Estabelecer o
escopo e viabilidade
econômica do projeto
Eliminar principais
riscos e definir arquitetura
estável
Desenvolver o produto até
que ele esteja pronto para beta testes
Entrar no ambiente do
usuário
Fases e iterações
42
Fases e iterações O ciclo de vida de um sistema consiste de quatro
fases:
As fases indicam a maturidade do sistema!tempo
Concepção Elaboração Construção Transição
Marcos principais
escopo arquitetura operação release
43
Marcos secundários: releases intermediários
Iteração preliminar
Concepção Elaboração Construção Transição
Iteração arquitet.
Iteração arquitet.
Iteração desenv.
Iteração desenv.
Iteração desenv.
Iteração de transição
Iteração de transição
Fases e iterações Cada fase é dividida em iterações
44
Fluxos de atividades Agrupam atividades correlacionadas Fluxos de atividades de suporte:
Planejamento e gerenciamento Gerência de configuração e mudanças
Fluxos de atividades básicos: Requisitos Análise e projeto Implementação Testes Distribuição
45
Fases, iterações e fluxos de atividades
Concepção Elaboração Construção Transição
IteraçãoPreliminar
Iter.#1
Iter.#2
Iter.#i
Iter.#i+1
Iter.#i+2
Iter.#n
Iter.#n+1
Requisitos.......................................
Análise e Projeto............................
Implementação...............................Testes.............................................Implantação...................................
Planejamento e Gerenciamento.....
Fluxos de Processo
Fluxos de Suporte
Fases
IteraçõesGerência de Configuração e Mudanças
46
Atividades Unidade de trabalho Composta de:
Objetivos Passos Entradas e saídas Responsável Guias e padrões
47
Artefatos Resultantes das atividades Possuem modelos para
indicar como devem ser feitos padronizar os formatos dos documentos
48
Responsáveis Representam perfis ou papéis, não
pessoasGerente do projetoArquitetoAnalistaProgramadorTestador
AnaLeonardoMarconi
Márcia
Rogério
49
Fluxos de atividadesPlanejamento e Gerenciamento
ContratanteAprovarProjeto
IniciarProjeto Atestar Conclusão
do Projeto
Gerente deProjeto
IdentificarRiscos
DesenvolverPlano de Projeto
DesenvolverPlano de Iteração
Executar Plano deIteração
AvaliarIteração
ReavaliarRiscos
FinalizarProjeto
Arquiteto
Priorizar casos de uso
DesenvolverEstudo deViabilidade
51
Objetivos desta parte Introduzir conceitos básicos relacionados
ao gerenciamento de riscos Discutir o levantamento, análise e
tratamento de riscos Exercitar o planejamento de iterações de
acordo com os riscos do projeto
53
Gerenciamento de riscos Relaciona-se com a análise de aspectos
desconhecidos do projeto são esses aspectos que podem fazer com que
o projeto fracasse! Risco
fator, elemento, acontecimento, qualquer coisa que, se concretizada, pode interferir no sucesso do projeto
55
Identificação dos riscos Para levantar os riscos podemos usar:
o conhecimento do negócio estudo de viabilidade, documento de requisitos e plano
do projeto brainstormings checklists
Os riscos podem ser classificados de acordo com sua natureza em: riscos de projeto riscos do negócio riscos técnicos
56
Riscos de projeto Normalmente ameaçam o plano de projeto,
prejudicando o cronograma e/ou custo Estão relacionados ao uso de recursos
organizacionais• financiamento• ambiente de desenvolvimento• processo de desenvolvimento
humanos• equipe• cliente/usuários
tempo• cronograma• escopo
57
Riscos do negócio Normalmente ameaçam a distribuição ou
implantação do produto, prejudicando o retorno do investimento
Muitos são riscos indiretos
58
Riscos técnicos Normalmente ameaçam a qualidade do
produto, prejudicando o tempo de conclusão do projeto
São relacionados ao uso da tecnologia necessária para implementar o sistema
59
Análise dos riscos Encontrados os riscos, é preciso decidir o
que fazer com eles… Para tanto, vamos considerar a
magnitude ou prioridade do risco e criar a lista dos “10 mais”
Magnitude = probabilidade * impacto
60
Estratégias para tratar os riscos Evitar
reorganizar o projeto de modo que ele não seja afetado pela concretização do risco
Transferir reorganizar o projeto de modo que outra
pessoa/instituição fique responsável pelo risco Aceitar
decidir conviver com o risco
61
Aceitando riscos Determinar um Plano de contingência (Plano
B) Estabelecer ações para mitigar ou atenuar o
risco• Muitas vezes, resume-se a uma melhor investigação
de algum ponto específico. Por exemplo:
Risco: o protocolo escolhido para comunicação com o servidor pode não atender aos requisitos de desempenho do sistema
Ação: implementar a comunicação com o servidor e testar o seu desempenho
62
Acompanhamento e controle dos riscos Definir um responsável por cada risco ou pelo
grupo de riscos do projeto o “pessimista”
Monitorar os indicadores relatórios de status dos riscos
Deixar o “caminho livre” para notícias ruins Revisitar a lista de riscos periodicamente
semanalmente ao final de cada iteração
A gerência de riscos deve ser uma atividade contínua!
64
Riscos e casos de uso A realização dos casos de uso é usada
para eliminar riscos Para facilitar a visualização do
relacionamento entre casos de uso e riscos, pode-se usar uma matriz de riscos
68
Objetivos desta parte Responder a perguntas comumente feitas durante o
planejamento de projetos iterativos Como definir a quantidade e duração das iterações em cada
fase do projeto? O quanto realizar de cada fluxo de atividades em cada
fase/iteração? Apresentar padrões do ciclo de vida e estratégias
para o planejamento das atividades de projetos iterativos e incrementais
Conhecer a estrutura de cronogramas iterativos e incrementais
Discutir um exemplo de planejamento de projeto iterativo e incremental
69
Como definir a quantidade e duração das iterações? Iterar é bom, mas acrescenta certo overhead!
planejamento avaliação sincronização de atividades
A agilidade para iterar depende basicamente de: tamanho da equipe experiência com o processo
A complexidade e conhecimento do produto também pesam padrões de ciclo de vida
70
Padrões de ciclo de vida Ferramenta para auxiliar no planejamento
das fases Dependem das características do projeto Exemplos:
Incremental Entrega incremental Evolucionário Híbridos
71
Para começar, não esqueça!
Concepção
Elaboração
Transição
Escopo, objetivos
Construção
Arquitetura
Operacionalidade (beta-releases)
Release (produtos)
72
Ciclo de vida incremental O domínio do problema é conhecido,
familiar Os riscos estão bem entendidos e
razoavelmente controlados A equipe é experiente
74
Entrega incremental O domínio do problema é conhecido, familiar Os requisitos e a arquitetura podem ser
estabilizados bem cedo, durante o desenvolvimento (não existe muita novidade no sistema)
A equipe é experiente É preciso liberar Releases incrementais do
produto
75
“Grande Projeto” Um pequeno conjunto de funcionalidades vai
ser adicionado a um produto já estável As novas funcionalidades são bem conhecidas
e entendidas A equipe é experiente, tanto no domínio do
problema quanto no produto já existente
76
Estratégias Híbridas Na prática, poucos projetos seguem apenas uma dessas
estratégias de ciclo de vida A regra geral é:
• para sistemas onde existe alto risco associado ao negócio do desenvolvimento:
• para sistemas complexos ou onde não se tem domínio do problema:
• para sistemas onde se espera maior complexidade/esforço na produção de código:
• para sistemas onde é preciso entregar o produto em uma série de releases incrementais:
Ênfase na Concepção
Ênfase na Construção
Ênfase na Elaboração
Ênfase na Transição
77
Quantidade de iterações Projetos simples: 3/4 iterações [0/1, 1, 1, 1] Projetos típicos: 6 iterações [1, 2, 2, 1] Projetos grandes: 10 iterações [2, 3, 3, 2]
Resumindo…
Em geral, planeja-se de 3 a 10 iterações!Na maioria dos casos temos de 6 a 8 iterações!
78
Duração das iterações Normalmente variam de fase para fase, de
acordo com as características do projeto Iterações pequenas são típicas da Construção, com
pouca ou nenhuma atividade formal de análise e projeto
Iterações grandes demandam marcos (milestones) intermediários
O tamanho da equipe e sua experiência com o processo é um dos fatores determinantes
79
Duração das iterações Alguns dados da Rational:
Linhas de código Equipe Duração de
1 iteração
10.000 5 1 semana
50.000 15 1 mês
500.000 45 6 meses
1.000.000 100 1 ano
80
O quanto realizar de cada fluxo de atividades em cada fase/iteração? De maneira geral, em cada iteração um
subconjunto do trabalho total é realizado levantado/especificado analisado e projetado implementado testado preparado para a distribuição/distribuído
Como escolher esse subconjunto? conhecimento da equipe no domínio do problema e
arquitetura a ser adotada necessidade de liberação de releases / deadline restrito
81
Estratégias para as iterações Larga e superficial
Todo o domínio do problema é analisado, mas sem muitos detalhes
Casos de uso: todos são definidos e a maioria é detalhada
Arquitetura: definida amplamente – todas as interfaces, serviços, etc.
Muito pouca implementação até a Construção, onde fica o maior número de iterações
Estreita e profunda Um pedacinho do domínio
é analisdo em detalhes Os casos de uso
relacionados com este pedacinho são detalhados
A arquitetura necessária para suportar esse pedacinho é definida
Esse pedacinho é implementado, testado e possivelmente implantado
Híbrida
82
Larga e superficial Apropriada quando:
o time é inexperiente no domínio do problema ou nas tecnologias que serão usadas
a arquitetura é inédita, ou é um requisito chave para as funcionalidades do sistema
Possíveis problemas: analysis paralysis falta de credibilidade e confiança da equipe riscos técnicos não expostos devido a falta de
detalhes (visão apenas de alto nível)
83
Estreita e profunda Apropriada quando:
precisa-se de resultados muito rápido (para obter suporte, provar viabilidade ou eliminar certos riscos)
os requisitos estão continuamente evoluindo o deadline é obrigatório existe alta reusabilidade
Possíveis problemas: dificuldades de integração
• desenvolvimento de software integrado “verticalmente”, mas incompatível “horizontalmente”
muito retrabalho devido a falta de uma visão geral do problema
84
Estatégia híbrida• Na Concepção:
• larga e superficial para obter bom entendimento do escopo• estreita e profunda para verificar a viabilidade de alguma
tecnologia• construção de um protótipo
• Na Elaboração:• na maior parte do tempo, larga e superficial, para garantir
que a arquitetura cobre todas as necessidades• estreita e profunda em alguns pontos para atacar riscos
específicos• Na Construção:
• estreita e profunda, para implementar as funcionalidades do sistema, com alto grau de paralelismo e incrementalmente
• Na Transição:• completar o que falta, de acordo com o feedback do usuário e
bugs encontrados
85
Cronogramas iterativos e incrementais Bem mais complexos que os tradicionais
cronogramas em cascata Normalmente organizados por fases e
iterações
86
Cronogramas iterativos e incrementais Concepção
Iteração 1• atividade X• atividade Y• atividade Z
Elaboração Iteração 2 Iteração 3
Construção Iteração 4 Iteração 5 Iteração 6
Transição Iteração 7
O cronograma não é feito todo de uma vez!
Lembre-se: o processo é
iterativo!
87
Cronogramas iterativos e incrementais
Concepção• Iteração 1
• atividade A• atividade B• atividade C
Elaboração• Iteração 2
• atividade D• atividade B• atividade E
• Iteração 3 Construção
• Iteração 4• Iteração 5• Iteração 6
Transição• Iteração 7
Devido a natureza do processo, várias atividades vão ficar repetidas
As atividades serão as mesmas, mas com
escopos/objetivos diferentes
89
Características do projeto Prazo total: 16 semanas Equipe de 5 pessoas, experiente no
domínio do problema Equipe relativamente inexperiente no uso
da metodologia Um dos objetivos do projeto é treinar os
desenvolvedores no uso da metodologia Apoio de consultoria externa
Estão previstos 2 releases do produto
90
Planejamento do projeto• Concepção
• Iteração preliminar de 2 semanas, larga e superficial, para “iniciar o projeto”
• Elaboração • 1 iteração, de 5 semanas, para eliminar os principais riscos• Estratégia híbrida: larga e superficial para modelar a
arquitetura e estreita e profunda para eliminar o risco de alguns cenários
• Construção• 2 iterações de 2 semanas cada, estreitas e profundas, para
produzir a versao beta do sistema• Transição
• 1 iteração de 2 semanas para finalizar a primeira versão do sistema, com parte das funcionalidades previstas
• 1 iteração de 3 semanas para incorporar as funcionalidades restantes e lançar a versão completa do QIB