Engenharia de Software
Haroldo Amaral (haroldo.amaral@gmail.com)
Aula 03 – Introdução à Engenharia de Software (Parte 2)
Planejamento e Gerenciamento Desenvolvimento de Software: Uma Visão
Prática
Sabemos agora em que consiste o processo de desenvolvimento de software. O que falta agora
para que tudo dê certo?
Sabemos agora em que consiste o processo de desenvolvimento de software. O que falta agora
para que tudo dê certo?
Planejamento e Gerenciamento
O Gerenciamento de Projetos de Software é uma parte essencial da Engenharia de
Software, no que diz respeito ao desenvolvimento de software
Um bom gerenciamento não garante o sucesso de um projeto
Porém, um mau gerenciamento resulta em falhas do projeto:
Atrasos na entrega
Aumento dos custos
Planejamento e Gerenciamento
Custo
Desempenho
Tempo
Objetivo:
• Limite de orçamento
• Prazo de entrega
• Desempenho Almejado
Planejamento e Gerenciamento
O Gerente de Projeto
Responsável pelo desenvolvimento de planos (projeto, testes, requisitos, ...) e cronogramas do projeto
Supervisiona o trabalho para assegurar que ele esteja sendo desenvolvido dentro dos padrões exigidos
Monitoram o progresso para verificar se o desenvolvimento está no prazo e dentro do orçamento
O trabalho do gerente de projeto de software é
assegurar que o projeto de software atenda a essas restrições e entregue um software que contribua para as metas da empresa
E quem gerencia?
Planejamento e Gerenciamento
Para tal, o Gerente de Projeto deve ter qualidades:
Liderança
Comunicação
Resolver problemas
Negociação
Influenciar a organização
Mentor
Especialista técnico e em processo
Planejamento e Gerenciamento
TAREFAS
Milestones (marcos)
Ponto final de uma atividade do processo de software (um marco no cronograma)
Deliverables (resultados)
Resultado do projeto a ser entregue ao cliente
Usualmente entregue ao final de uma fase
O que gerenciar?
Planejamento e Gerenciamento
Quais as dificuldades?
Como gerenciar?
Planejamento e Gerenciamento
O software é intangível
Se o projeto de construção de uma edificação atrasa, o efeito sobre o produto é visível
O software não pode ser visto ou tocado, ou seja, os gerentes não podem ver o seu progresso
Os gerentes contam apenas com
documentações para analisar o
progresso do projeto
Planejamento e Gerenciamento
Não existem processos-padrão de software
Na Engenharia, com um longo histórico, os
processos são testados e experimentados, ou seja, os processos (por ex., de pontes e
prédios) são bem compreendidos
Os processos de software variam
drasticamente de uma organização para outra
Não podemos prever quando determinado processo apresentará problemas de
desenvolvimento
Planejamento e Gerenciamento
Projetos de software são projetos
“únicos”
Projetos de software são diferentes de outros projetos anteriores
Mesmo com grande experiência, os gerentes podem ter dificuldades na previsão de problemas
Além disso, as rápidas mudanças tecnológicas em computação e
comunicações podem tornar a experiência
dos gerentes obsoleta
Planejamento e Gerenciamento
É impossível fornecer uma descrição de trabalho padrão para um gerente
O trabalho varia muito em função da organização e do produto de software
No entanto, na maioria das vezes, envolve as seguintes atividades:
Elaboração da proposta
Planejamento do projeto
Desenvolvimento do cronograma do projeto
Estimativa de Custos do projeto
Monitoração e revisões do projeto
Seleção e avaliação de pessoal
Gerenciamento de riscos
Elaboração de relatórios e apresentações
Planejamento e Gerenciamento
Planejamento e Gerenciamento
O gerenciamento eficiente de um projeto de software depende de um planejamento
minucioso do progresso do projeto
Os gerentes devem prever os problemas que podem ocorrer e preparar soluções
O plano preparado no início do projeto deve ser usado como guia
Esse plano inicial deve ser o melhor possível em face das informações disponíveis
Ele deve evoluir à medida que o projeto
progride e melhores informações se tornem
disponíveis
Planejamento e Gerenciamento
Planejamento e Gerenciamento
Planejamento e Gerenciamento
Plano Descrição
Plano de Qualidade Descreve os procedimentos e os padrões de qualidade usados no projeto
Plano de Validação Descreve a abordagem, os recursos e o cronograma usados para a validação do sistema
Plano de Gerenciamento de Configuração
Descreve os procedimentos e as estruturas de gerenciamento de configuração a serem usados
Plano de Manutenção Prevê os requisitos de manutenção do sistema, os custos de manutenção e os esforços necessários
Plano de Gerenciamento de Descreve como as habilidades e a
O Início de Tudo ...
“A intenção do cliente é...”
O Mais Importante Aqui É Saber Se ...
A Idéia
Viável??? é
O Que Devo Fazer Exatamente?
Ou, em outras palavras, quais são os requisitos
da aplicação?
Requisitos
O Que devo fazer?
Funcionalidades
Há restrições sobre as funcionalidades?
Limites de tempo, memória, etc.?
Há restrições mais amplas?
Empresa, Governo, etc.?
O Que Faço, Então, para Registrar Essas Informações?
“O documento de requisitos...”
Como Apresentar Esse Documento ao Cliente?
“O cliente
não vai ler
500 páginas
requisitos!!!” de
Então, “Uma Figura Vale Mais Que ...”
Mas, Paralelamente ...
“Precisamos saber quanto tempo
levaremos para fazer nosso trabalho, quanto
isso custará, o que pode nos atrapalhar,
como vamos nos
organizar ...
Mas, Paralelamente ...
... Ou seja,
precisamos
PLANEJAR E
GERENCIAR!!!”
Planejando ... Precisamos Estimar
Equipe
Custo
Tempo
Planejando ... Precisamos Estimar
X horas
F( )
Planejando ... Precisamos Estimar
Agora, Podemos Iniciar a Construção da Solução
“Temos que identificar em nossos requisitos, quais são os elementos
essenciais para
satisfazê-los...
Agora, Podemos Iniciar a Construção da Solução
Ou seja, como vamos construir a solução, desde que atenda-se
aos desejos (requisitos)
do cliente”
Agora, Podemos Iniciar a Construção da Solução
Precisamos criar uma ARQUITETURA,
baseada em MODELOS
Agora, Podemos Iniciar a Construção da
Solução
Agora, Podemos Iniciar a Construção da
Solução
Sedimentando a Solução
“A partir dos elementos essenciais, precisamos definir estratégias para
satisfazê-los incluindo
suas restrições...”
Sedimentando a Solução
Sedimentando a Solução
Sedimentando a Solução
Agora, Operacionalizando a Solução
“Com a solução definida, o passo final é
operacionalizá-la. Isto é, codificá-la
(IMPLEMENTÁ-LA).”
Agora, Operacionalizando a Solução
public class Account { private int balance;
...
void debit(int amount) { if(amount<=balance)
balance = balance – amount;
else throw new AccountException(“...”);
} ...
}