Engenharia de Software 2011-2
Ciência da Computação
ENGENHARIA DE SOFTWARE
Prof. Claudinei Dias
email: [email protected]
Recursos e Cronograma
Engenharia de Software 2011-2
Roteiro
• Introdução;
• Recursos; – Pessoal; – Software; – Hardware; – Outros recursos;
• Cronograma;
– Divisão do esforço no projeto; – Redes de tarefas; – Linha do tempo;
2/23
Engenharia de Software 2011-2
Introdução
• Elaborar escalonamento de atividades
• Alocação de pessoal
• Estimar a necessidade de recursos
– Físicos
– Softwares
– Humanos
• Recursos e Cronograma é tarefa do planejamento do software.
• A disponibilidade de recursos para uma atividade específica deve ser estabelecida o mais cedo possível.
3/23
Engenharia de Software 2011-2
Recursos
• Segundo o PMBOK - "Project Management Body of Knowledge” a área de conhecimento RH do Processo de Planejamento possui 2 processos:
Planejamento Organizacional
Montagem de Equipe
Processos
4/23
Engenharia de Software 2011-2
Recursos
• Pessoas
– Habilidades necessárias
– Disponibilidade
– Duração das tarefas
– Início
• Devem-se avaliar as habilidades necessárias da equipe
• Quantidade de desenvolvedores e suas habilidades técnicas e não técnicas.
• Avaliar a necessidade de novas contratações, terceirização, quarteirização e treinamento.
• O número de pessoas deve ser determinado somente após a estimativa de esforço de desenvolvimento estiver completa.
5/23
Engenharia de Software 2011-2
Recursos
• Ferramentas de Hw/Sw
– Descrição
– Disponibilidade
– Duração
– Data da entrega
• As ferramentas de hardware e software devem sustentar os recursos humanos que irão desenvolver o projeto.
• O hardware pode ser dividido em propósito geral (impressoras, scanners, mouse, teclado), de desenvolvimento (ambiente de testes e desenvolvimento) e de produção, que é onde o software será executado quando estiver pronto.
6/23
Engenharia de Software 2011-2
Recursos
• Planejamento organizacional
• Considerando que um processo de desenvolvimento de software vai ocupar uma equipe de n pessoas com uma duração de k anos, é possível comentar algumas opções organizativas:
– n indivíduos são alocados a m diferentes tarefas com pequeno grau de interação, sendo que a coordenação da equipe fica a cargo do gerente de projeto;
– n indivíduos são alocados a m diferentes tarefas, com m n, formando equipes informais de desenvolvimento, com um responsável em cada equipe, sendo que a coordenação entre as equipes é da responsabilidade do gerente do projeto;
– n indivíduos são organizados em x equipes, cada equipe sendo alocada para uma ou mais tarefas; a organização de cada equipe é específica a ela própria, a coordenação ficando a cargo da equipe e do gerente do projeto.
7/23
Engenharia de Software 2011-2
Recursos - Exemplo
O núcleo de uma equipe vai ser composto dos seguintes elementos:
• um engenheiro sênior (ou programador sênior), responsável pelo planejamento, coordenação e supervisão das atividades relativas ao desenvolvimento do software;
• o pessoal técnico, de dois a cinco membros que realizam as atividades de análise e desenvolvimento;
• um engenheiro substituto, que atua no apoio ao engenheiro sênior e que pode, eventualmente, substituí-lo sem grandes prejuízos ao desenvolvimento do software.
A equipe de desenvolvimento pode ter a colaboração dos seguintes elementos:
• um conjunto de especialistas (telecomunicações, bancos de dados, interface homem-máquina, etc...);
• pessoal de apoio (secretárias, editores técnicos, desenhistas, etc...);
• um bibliotecário, o qual será responsável da organização e catalogação de todos os componentes do produto de software (documentos, listagens, mídia magnética, coleta de dados relativos ao projeto, módulos reutilizáveis, etc...).
8/23
Engenharia de Software 2011-2
Cronograma
• Segundo o PMBOK - "Project Management Body of Knowledge” a área de conhecimento tempo do Processo de Planejamento possui os 4 processos
Descrição de Atividades
Sequenciamento de Atividades
Estimativa de Duração de Atividades
Desenvolvimento do Cronograma
Processos
9/23
Engenharia de Software 2011-2
Cronograma
• Descrição das atividades
• Descrever cada tarefa do projeto de forma a estabelecer relacionamentos, para isto, basta que um gerenciamento dos recursos necessários a cada tarefa (recursos humanos, recursos de software, etc...) seja feito de forma eficiente.
• A possibilidade de se realizar determinadas tarefas em paralelo é um mecanismo interessante como forma de economia de tempo na realização de qualquer trabalho de engenharia.
• Sendo assim, as tarefas a serem realizadas durante um projeto de desenvolvimento de software podem ser expressas na forma de uma rede (rede de tarefas) a qual apresenta todas as tarefas do projeto, assim como as suas relações em termos de realização (paralelismo, seqüência, pontos de encontro, etc...)
10/23
Engenharia de Software 2011-2
Cronograma
• Duas formas de definir:
– Prazo de entrega pré-estabelecido; – Prazo negociado com planejamento detalhado.
• Pontos importantes para definir um cronograma:
– Relação tempo-esforço; – Quantidade de tarefas e paralelismo; – Medir o progresso; – Distribuir esforço; – Métodos para determinar os prazos; – Representar e acompanhar o progresso o cronograma.
12/23
Engenharia de Software 2011-2
Cronograma
• Definição das tarefas:
– Sempre vai existir um conjunto de tarefas adequado para cada problema;
– Alcançar qualidade e não sobrecarregar a equipe.
– Extrair o máximo grau de paralelismo;
– Difícil prever todos problemas (ou tarefas) e os recursos necessários.
13/23
Engenharia de Software 2011-2
Cronograma
• Distribuição de tarefas:
– Dividir projeto em tarefas;
– Alocar tempo e recursos para cada tarefa (Regra 40-20-40);
– Estabelecer margem de segurança mínima;
– Mostrar de forma gráfica.
Análise eProjeto
(40-50%)
Testes
(30-40%)
Codif.
(15-20%)
14/23
Engenharia de Software 2011-2
Cronograma
• Estimativas de duração de atividades
• As tarefas a serem feitas são identificadas e mensuradas;
• O esforço é então estimado e são geradas interdependências entre as tarefas.
• Com base nesses fatos são gerados gráficos de otimização, que tornam claro onde é possível o paralelismo entre as tarefas, e onde será preciso o uso de mais recursos (geralmente chamado de caminho crítico).
• Durante o andamento do projeto, o gerente deve monitorar e controlar o cumprimento das atividades dentro do prazo estimado.
• Caso haja algum problema (e eles certamente surgirão), é preciso atacá-lo, redirecionando recursos, reordenando as tarefas ou até mesmo modificando prazos com o cliente antecipadamente, a fim de não comprometer o projeto.
15/23
Engenharia de Software 2011-2
Cronograma
• Desenvolvimento do cronograma
• A definição do cronograma é uma das tarefas mais difíceis de definir na etapa de planejamento do software.
• O planejador deve levar em conta diversos aspectos relacionados ao desenvolvimento, como:
– a disponibilidade de recursos no momento da execução de uma tarefa,
– as interdependências das diferentes tarefas,
– a ocorrência de possíveis estrangulamentos do processo de desenvolvimento e as operações necessárias para agilizar o processo,
– identificação das principais atividades,
– revisões e indicadores de progresso do processo de desenvolvimento, etc.
• A forma de representação dos cronogramas depende da política de desenvolvimento adotada
• As unidades de tempo consideradas no projeto (dias, semanas, meses, etc...) são anotadas na linha superior da folha de cronograma.
16/23
Engenharia de Software 2011-2
Cronograma
• Desenvolvimento do cronograma
• As tarefas do projeto, as atividades e os indicadores de progresso são definidos na coluna da esquerda.
• O traço horizontal permite indicar o período durante o qual determinada atividade será realizada, o tempo necessário sendo medido em unidades de tempo consideradas.
• Quando atividades puderem ser realizadas em paralelo, os traços vão ocupar unidades de tempo comuns.
• O cronograma deve explicitar as atividades relevantes do desenvolvimento e os indicadores de progresso associados. É importante que os indicadores de progresso sejam representados por resultados concretos (por exemplo, um documento).
• A disponibilidade de recursos deve também ser representada ao longo do cronograma. O impacto da indisponibilidade dos recursos no momento em que eles são necessários deve também ser representado, se possível, no cronograma.
17/23
Engenharia de Software 2011-2
Lista de Tarefas
Tarefas Duração (DIAS) Dependências
T1 8
T2 15
T3 15 T1
T4 10
T5 10 T2,T4
T6 5 T1,T2
T7 20 T1
T8 25 T4
T9 15 T3,T6
T10 15 T5,T7
T11 7 T9
T12 10 T11
Cronograma
18/23
Engenharia de Software 2011-2
start
T2
M3T6
Finish
T10
M7T5
T7
M2T4
M5
T8
4/7/94
8 days
14/7/94 15 days
4/8/94
15 days
25/8/94
7 days
5/9/94
10 days
19/9/94
15 days
11/8/94
25 days
10 days
20 days
5 days25/7/94
15 days
25/7/94
18/7/94
10 days
T1
M1 T3
T9
M6
T11
M8
T12
M4
Cronograma
Lista de Tarefas em Rede - o caminho crítico
esta em destaque
19/23
Engenharia de Software 2011-2
4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
T4
T1
T2
M1
T7T3
M5
T8
M3
M2
T6
T5
M4
T9
M7
T10
M6
T11
M8
T12
Start
Finish
Cronograma
Lista de Tarefas em Gráfico
20/23
Engenharia de Software 2011-2
4/7 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
T4
T8 T11
T12
T1
T3
T9
T2
T6 T10
T7
T5
Fred
Jane
Anne
Mary
Jim
Cronograma
Alocação de Pessoal
21/23
Engenharia de Software 2011-2
Bibliografia
BIBLIOGRAFIA BÁSICA:
PRESSMAN, R.S. Engenharia de Software. Mc Graw Hill, 5ª Edição 2001.
SOMMERVILLE,I. Engenharia de Software. Addison Wesley, 6ª Edição 2003.
REZENDE,D.A. Engenharia de Software e Sistemas de Informação. Brasport, 2ª edição.
BIBLIOGRAFIA COMPLEMENTAR:
WEBER,K.C. et all. Qualidade e produtividade em Software. Makron Books, 1999.
ROCHA,A.R.C et all; Qualidade de Software. Editora Linarth, 1999.
Anais do SBES - Simpósio Brasileiro de Engenharia de Software.
SEI. SOFTWARE ENGINEERING INSTITUTE. CMMI for Development (CMMI-DEV), Version 1.2, Technical report
CMU/SEI-2006-TR-008. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2006.
SOFTEX. MPS.BR - Melhoria de Processo do Software Brasileiro. Guia Geral, versão 1.2. 2007.
ABNT – ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 12207 – Tecnologia de informação -
Processos de ciclo de vida de software. Rio de Janeiro, 1998.
ISO/IEC - The International Organization for Standardization and The International Electrotechnical Commission,
ISO/IEC TR 15504 Software Process Assessment. 1998.
22/23
Engenharia de Software 2011-2
Ciência da Computação
ENGENHARIA DE SOFTWARE
Prof. Claudinei Dias
email: [email protected]
Recursos e Cronograma