Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de Software
Objectivos
Introduzir a gesto de projectos de software e descrever as suas caractersticas distintivas Discutir o planeamento do projecto e o planeamento do processo Discutir a problemtica dos custos e tempo de desenvolvimento de um projecto de software Mostrar como as representaes grficas do agendamento so utilizadas para a gesto de projectos
Engenharia de Software
Gesto do Projecto
Produto Princpios da Engenharia da Programao Procedimento Gesto do Projecto Gesto da Configurao Verificao e Validao Qualidade do Software
Engenharia de Software
Gesto do Projecto
Processo de planear, organizar, definir recursos, monitorizar, controlar e liderar um projecto de software
Definir um plano para o projecto Alocar pessoas e definir papeis Medir o progresso do projecto
Monitorizao
Controlo
Engenharia de Software
Gesto do Projecto
Responsabilidades do gestor:
Entregar o produto a tempo Planear Prever
Outras responsabilidades:
Interpessoais Liderar a equipa, representar o projecto Informacionais Disseminar o plano pela equipa, monitorizar o desempenho da equipa Decisionais Alocar recursos, negociar alteraes ao projecto, resolver falhas no plano
Engenharia de Software
Decises de Gesto
Tm um grande impacto nos aspectos tcnicos da engenharia de software:
se o desempenho for medido em termos de quantas linhas de cdigo forem produzidas, desencorajada a reutilizao; se um agendamento irrealisticamente agressivo for imposto, haver um encorajar na tomada de atalhos que normalmente afectaro a qualidade do produto e reduzem a sua facilidade / possibilidade de manuteno; uma falta de plano, encoraja no sentido de tomada de decises grandiosas ou no prosseguir cuidadosamente, dado que se pensar haver sempre mais tempo.
Engenharia de Software
7
Engenharia de Software
Engenharia de Software
Planeamento do Projecto
X Definir Definir produtos produtos Definio dos produtos Modelo do processo Definir Definir actividades actividades Work Packages [entradas, actividades, sadas] Estimar Estimar recursos recursosee durao durao Organizao do projecto [entradas, actividades, sadas, recursos, durao] Definir Definir rede redede de actividades actividades Diagrama de PERT Diagrama de Gantt X Requisitos do utilizador Requisitos do software Arquitectura
Standards
Dados histricos sobre custos Consideraes sobre riscos Factores ambientais ( tecnologias)
Definir Definir prazos prazosee custos custos Restries sobre tempo e recursos
Recursos Custos
Engenharia de Software
10
Planeamento do Projecto
D efinir os produtos
Fase R equisitos do softw are Arquitectura Produo Transferncia Entrada R eq. utilizador R eq. softw are D esenho arqui. C digo. M an. U til. Sada R eq. softw are D esenho arqui. C digo, M an. U til. M an. Instalao
D AA D
C C
TT
O M O M
Engenharia de Software
11
Planeamento do Projecto
Definir modelo do processo
incremental - Entrega do produto de acordo com prioridades do utilizador, necessidade de melhorar a integrao com o sistema, evidncia de que o produto ser aceite pelo utilizador
RU RU
RS RS
DA DA
C C
TT
OM 1 OM 1
C C
TT
OM 2 OM 2
Engenharia de Software
12
Planeamento do Projecto
Definir o modelo do processo
Evolucionrio - Necessria experimentao do utilizador para completar os requisitos; partes do produto dependem da disponibilidade de futuras tecnologias; requisitos do utilizador antecipados mas no conhecidos; no impedir o desenvolvimento de partes do produto devido a dificuldades na realizao de outras
Desenv 1 Desenv 1 OM 1 OM 1
Desenv 2 Desenv 2
OM 2 OM 2
Desenv 3 Desenv 3
OM 3 OM 3
Engenharia de Software
13
Planeamento do Projecto
Definir as actividades (continuao) Seleccionar ferramentas a utilizar em cada actividade Definir pacotes de actividades (work packages)
Critrios a utilizar Coerncia - As tarefas de um pacote devem ter o mesmo objectivo Coeso - As dependncias entre pacotes devem ser minimisadas Continuidade - As tarefas de produo devem ser contnuas de modo a maximizar a eficincia Quanto maior o nvel de detalhe maior o grau de preciso na estimao de custos
Engenharia de Software
14
Planeamento do Projecto
Recursos Humanos:
Pode no ser possvel designar as pessoas ideais para trabalhar num projecto O oramento do projecto pode no comportar a afectao ou contratao de pessoal muito bem pago; Pessoal com experincia adequada pode no estar disponvel; Uma organizao pode desejar desenvolver competncias de empregados seus, no mbito de um projecto de software.
Engenharia de Software
15
Planeamento do Projecto
Estim ar recursos e durao R ecursos hum anos
Papeis - G estor do projecto, responsvel pela equipa, program adores, engenheiros de teste, engenheiros de qualidade Regras - G arantir que cada m em bro da equipa reporta a um nico indivduo; garantir que no h m ais de 7 m em bros a reportar a um nico indivduo O rganigram a
G estor snior
Eng. qualidade
Program adores
Engenharia de Software
16
Planeamento do Projecto
E stim ar recursos e durao E sforo
N m ero de pessoas-m s necessrias execuo do projecto. V alor obtido atravs da aplicao de m odelos predictivos (D ecom posio, C O C O M O , P utnam , definidos m ais adiante) 1 pessoa-m s = 1 pessoa a trabalhar durante um m s (22 dias) ou 22 pessoas a trabalhar durante um dia 1 pessoa-ano = 11 pessoas-m s 1 pessoa-m s = 22 pessoas-dia 1 pessoa-dia = 8 pessoas-hora
C ustos no laborais
Ferram entas com erciais utilizadas para produzir o produto, servios externos, despesas com viagens, despesas de envio do produto, seguros
Engenharia de Software
17
Planeamento do Projecto
Definir rede de actividades Representar os pacotes de actividades como um conjunto de ns com ligaes entre eles. Uma sequncia de ligaes define um caminho a seguir pelo projecto. Ligaes circulares no so permitidas O objectivo desenhar um percurso que considera todas as dependncias do projecto Caminho crtico - Percurso mais longo atravs das ligaes entre actividades, em termos de durao do projecto Flutuaes dos pacotes de actividades - Diferena entre o tempo mais adiantado (earliest) e mais atrasado (latest) de incio de um pacote do projecto
Engenharia de Software
18
Planeamento do Projecto
D efinir prazos e custos D efinir datas de incio e fim dos pacotes de actividades
C um prindo com as restries de tem po e recursos M inim izando o custo total Adm itindo riscos que possam atrasar o projecto Se o prazo total do projecto viola restries de tem po, necessrio redefinir os pacotes de actividades
Engenharia de Software
19
loop
Desenhar uma agenda do projecto Iniciar as actividades de acordo com o agendamento ou dada permisso para continuar Esperar (por um tempo, 2-3 semanas) Rever o progresso do projecto e discrepncias notadas Rever as estimativas dos parmetros do projecto Actualizar a agenda do projecto Renegociar os constrangimentos do projecto e entregas (se o projecto estiver atrasado)
22
Organizao de Actividades
As actividades num projecto devem ser organizadas para produzir resultados tangveis. Sem isto no possvel avaliar o processo e as estimativas de custo e a agenda no podem ser actualizadas. Podem ser:
Metas parciais so o ponto final de uma actividade de um processo, findo o qual deve ser apresentado um relatrio do progresso gesto do projecto. Entregas so resultados do projecto a ser entregues aos clientes. Podem ser metas parciais. Constituem em regra o final de uma fase do projecto. Por exemplo, especificao, concepo... As metas parciais no constituem necessariamente entregas, dado que os resultados podem ser para consumo interno.
O processo em cascata conduz definio directa de metas parciais, da a sua grande utilizao.
Engenharia de Software
24
Feasibility report
Requirements definition
Architectural design
Requirements specification
entrega
entrega
Engenharia de Software
25
Agenda do Projecto
Estimar tempo e recursos necessrios para completar as actividades e organiz-las numa sequncia coerente.
Diviso do projecto em tarefas e estimar o tempo e recursos necessrios para completar cada tarefa Organizar as tarefas concorrentemente para permitir uma utilizao ptima da fora de trabalho Minimizar as dependncias entre tarefas para evitar atrasos motivados pela espera forada de uma tarefa, dado que outra ainda no est completa Dependente da intuio dos gestores de projecto e da sua experincia
Engenharia de Software
26
Problemas do Agendamento
Estimar o grau de dificuldade dos problemas e os consequentes custos do desenvolvimento de uma soluo difcil A produtividade no proporcional ao nmero de pessoas a trabalhar numa tarefa Acrescentar pessoas a um projecto atrasado, faz com que ele se atrase mais, devido a sobrecargas de comunicao O inesperado sempre acontece; deve permitir-se sempre margem para as contingncias no planeamento
Engenharia de Software
27
Engenharia de Software
28
Engenharia de Software
29
Rede de Actividades
1 4/ 7/ 94 8 day s T1 4/ 7/ 94 s tart 1 5 d ay s T2 1 0 d ay s T4 1 8/ 7/ 94 M5 2 5 d ay s T8 1 9/ 9/ 94 Fi ni sh 2 5/ 7/ 94 M2 T7 1 0 d ay s T5 1 1/ 8/ 94 M7 1 5 d ay s T1 0 M1 1 5 d ay s T3 5 d ays T6 2 0 d ay s 4/ 8/ 94 M4 1 5 d ay s T9 2 5/ 7/ 94 M3 2 5/ 8/ 94 M6 7 day s T1 1 5/ 9/ 94 M8 10 days T1 2
Engenharia de Software
30
Barra Sombreada: Flexibilidade permitida Barra sem Sombras: Actividades que constituem o caminho crtico, qualquer atraso implica atraso do projecto
Engenharia de Software
31
Mtodos e Tcnicas
Aplicao ao planeamento do projecto
Modelao de processos Organizao de equipas Estimao de recursos e durao Definio de redes de actividades Definio de prazos
Engenharia de Software
32
Organizao de Equipas
R acional - Eficincia o seu objectivo, decises racionais
A organizao tem nveis hierarquicos definidos m as funciona dem ocraticam ente Considera m ltiplas equipas lideradas por engenheiros sniores Cada equipa executa um a dada tarefa. O s engenheiros sniores reportam directam ente ao seu supervisor Aplica-se a projectos de grande dim enso
Engenharia de Software
33
Organizao de Equipas
Descentralizada - Objectivos dispersos, decises imprevisveis
A responsabilidade encontra-se distribuda, no existindo nveis hierarquicos. O trabalho final provm de todo o grupo Privilegia o consenso, satisfao e motivao da equipa Reduz a produtividade individual Mais adequado a projectos complexos e abertos, exigindo criatividade Mais comunicao entre o grupo leva a projectos de longa durao. No apropriada a grandes equipas
34
Organizao de Equipas
Linhas de guia para a definio de equipas
Controlo descentralizado melhor quando a comunicao entre membros da equipa fundamental para o processo de desenvolvimento Controlo centralizado melhor quando o tempo o factor fundamental no desenvolvimento do projecto A organizao deve limitar a comunicao entre os membros da equipa ao essencial, nem mais nem menos A organizao tem de considerar outros factores para alm da produtividade: rotao de pessoal, desenvolvimento de cada individuo, disseminao de conhecimento, etc.
Engenharia de Software
35
Mtodos e Tcnicas
Modelos de estimao de recursos e durao do projecto Comparao do projecto com outros projectos semelhantes, para os quais se possui informao sobre produtividade, durao e custos
Mtodo de Decomposio
Utilizao de frmulas predictivas, obtidas empiricamente, que permitem obter valores para as variveis de estimao em funo das caractersticas do software a desenvolver
Mtodo COCOMO (1981) Mtodo Putnam
Engenharia de Software
36
Mtodo de Decomposio
Aproximao do tipo dividir e conquistar
Decompor o projecto em funes principais Calcular o esforo de cada funo utilizando dados histricos sobre a produtividade Utilizar mtricas sobre a produtividade baseadas em: Linhas de cdigo (LDC) - Medida directa sobre o produto, focando na sua dimenso Pontos de funo (PF) - Medida indirecta sobre o produto.
Em vez de medir directamente as caractersticas do software produzido, classifica-se este de acordo com critrio que medem o seu grau de funcionalidade e utilidade
Engenharia de Software
37
Linhas de Cdigo
Vantagens da utilizao de LDC
LDC um artefacto que existe em todos os processos de desenvolvimento de software LDC facilmente calculvel fcil estabelecer honorrios standard a partir desta mtrica
Desvantagens
LDC depende muito da linguagem de programao utilizada LDC penaliza os programadores mais organizados LDC penaliza a estruturao do cdigo, assim como os programas muito pequenos A utilizao de LDC em estimao requer um nvel de detalhe difcil de obter a priori Falta de consensos (ex: em C, conta-se o n de { ?)
Engenharia de Software
7
38
Pontos de Funo
J sabemos que uma forma de modelar um sistema utilizando diagramas de fluxos de dados (DFDs)
mostram as vrias transformaes de dados proporcionam uma rede das funes a serem executadas. DeMarco desenvolveu um modelo de estimao, baseado em primitivas funcionais; Posteriormente foi desenvolvido um modelo de estimao de custos, baseado na contagem do nmero de estruturas de dados a ser utilizadas.
Neste mtodo assume-se que que o nmero de diferentes estruturas de dados um bom indicador do tamanho.
Trata-se dum mtodo particularmente adaptado a projectos ligados a aplicaes de negcio. Menos bem adaptado em projectos onde as estruturas de dados desempenhem um papel menos preponderante, onde a nfase seja nos algoritmos (p. ex. compiladores e aplicaes em tempo real).
Engenharia de Software
39
Pontos de Funo
Baseia-se numa pontuao da funcionalidade do software Deriva-se a partir de uma relao emprica entre valores mensurveis do software e previses sobre o seu grau de complexidade Valores mensurveis: Entradas - Cada tipo de dados destinado aplicao e introduzido pelo utilizador no sistema Sadas - dados/ecrs/erros fornecidos ao utilizador pela aplicao (itens individuais no so contados separadamente) Queries - Conjuntos indissociaveis de interaces (entradas + sadas) distintas das anteriores Ficheiros - Agrupamentos lgicos de dados (no necessariamente ficheiros) mantidos pela aplicao Interfaces - Trocas de informao com outros sistemas (um ficheiro vindo de outro sistema conta igualmente como interface)
Engenharia de Software
40
Pontos de Funo
Tabela de clculo
P a r m e tro E n tra d a s S a d a s Q u e rie s F ic h e iro s In te rfa c e s N S im p le s 3 4 3 7 5 P esos M d io 4 5 4 10 7 C o m p le xo 6 7 6 15 10 TOTAL S u b -T o ta l
Engenharia de Software
41
Pontos de Funo
FP = total-tabela * (0.65 + 0.01 * SUM (Fi)) i=1-14
(Fi = ajuste de com plexidade, variando entre 0 (sem influncia) e 5 (essencial))
1 - Precisa de sistem a de backup/recovery fivel? 2 - Requer com unicao de dados? 3 - Existem funes de processam ento distribudo? 4 - O desem penho crtico? 5 - Executa-se num am biente pesado? 6 - interactivo? 7 - Entrada de dados requer m ltiplas janelas? 8 - Actualiza ficheiros de dados em tem po real? 9 - Entradas/sadas/queries/ficheiros com plexos? 10 - Com plexidade do processam ento interno? 11 - Cdigo deve ser reutilizado? 12 - Produto deve incluir a instalao? 13 - Cdigo deve ser desenhado para m ltiplas instalaes? 14 - Cdigo deve ser desenhado para facilitar utilizao?
O ajuste de complexidade leva em conta caractersticas da aplicao, que influenciam o esforo de desenvolvimento.
Engenharia de Software
42
Exemplo
Verificador lxico
Utilizador Utilizador
Nome do ficheiro N palavras processadas
Nome do dicionrio
Verificador
N de erros encontrados
Utilizador Utilizador
Dicionrio
Palavras do dicionrio
Lista de erros
N N N N N
de entradas = 2 (nome do ficheiro + dicionrio) de sadas = 3 (n palavras, n erros, lista de erros) de queries = 2 (nome do documento + dicionrio) de ficheiros = 1 (dicionrio) interfaces = 1 (dicionrio)
43
Engenharia de Software
Exemplo
P esos P arm etro E ntradas S adas Q ueries Ficheiros Interfaces N 2 3 2 1 1 S im ples 3 4 3 7 5 M dio 4 5 4 10 7 C om plexo 6 7 6 15 10 S ub-Total 6 12 8 10 0 43 TO TA L
Engenharia de Software
44
Exemplo
1 - Backup/recovery 5 2 - Comunicao dados 0 3 - Proces. distribudo 0 4 - Desempenho crtico 1 5 - Ambiente pesado 4 6 - Interactivo 2 7 - Janelas 0 8 - Acesso a ficheiros 1 9 - Compexidade entradas/... 5 10 - Compexidade process. 4 11 - Reutilizao 2 12 - Instalao 3 13 - Mltiplas instalaes 4 14 - Facilidade utilizao 3 0 - Sem influncia 5 - Essencial
SUM(Fi) = 34
PF = 43 * (0.65 + 0.01 * 34) = 42.57
Engenharia de Software
45
Pontos de Funo
Verso 2 - Mais adequada a programas com complexidade algoritmica (versus manipulao de dados)
P a r m e tro E n tra d a s S a d a s Q u e rie s F ic h e iro s In te rfa c e s A lg o ritm o s N Peso 4 5 4 7 7 3 TOTAL S u b -T o ta l
Engenharia de Software
46
Pontos de Funo
Vantagens da utilizao de PF
Estas mtricas no dependem da linguagem de programao Podem ser aplicadas a programas de grande complexidade Representam a funcionalidade ou utilidade do software Baseiam-se em dados que podem ser conhecidos no incio do projecto
Desvantagens
Baseiam-se em dados subjectivos Os dados so difceis de obter a posteriori PF apenas um nmero, sem qualquer realidade fsica
Engenharia de Software
47
1 LDC de ADA oferece 1.4 vezes mais funcionalidade que 1 LDC de Fortran
Engenharia de Software
48
Mtodo de Decomposio
Estimar esforo do projecto
Examinar o contexto do software e extrair as suas funes principais Estimar para cada funo os valores LDC e PF Determinar valores de produtividade adequados a cada funo Atribuir a cada funo uma estimao do esforo exigido para trs situaes: optimista, mais provvel e optimista Valor esperado do esforo = (a + 4 * m + b) / 6 (a - optimista, m - mais provvel, b - pessimista) Adicionar os valores obtidos para cada funo
Proje cto T1 T2 Opti + mista prov vel Pessi Espe $/LDC mista rado Linha/ Custo Meses ms
Engenharia de Software
49
Mtodo de Decomposio
Quando no existem valores histricos da produtividade
Examinar o contexto do software e extrair as suas funes principais Define-se para cada funo as etapas necessrias sua realizao: anlise, desenho, codificao e teste Estimar para cada actividade um esforo necessrio (em pessoas-ms) Atribuir um custo de mo-de-obra a cada etapa e calcular os valores totais
Funes Anlise Desenho Codificar Testar requisitos F1 F2 F3 Total Total
Engenharia de Software
50
Exemplo
Distribuir caixas pelos contentores
Recursos: Sensor Distribuidor Base de dados MS Access MS Developer Studio Distribuidor Restries: Velocidade das caixas Velocidade do sensor Robustez
1 - Ler cdigo
2 - Enviar o cdigo
Programa
5 - Determinar localizao
Engenharia de Software
51
Exemplo
Funes
F1 - Descodificar cdigo F2 - Pesquisar base de dados F3 - Determinar localizao F4 - Produzir sinal de controlo LDC: F1=100 F2=200 F3=50 F4=500 TOT=850 PF ~= LDC / 30 (para cdigo C++) Produtividade = 25 LDC/pessoa-dia (valor histrico) Esforo = 850 / 25 = 34 pessoas-dia 1 pessoa-hora = 10 KPTE Custo = 34 * 10 * 8 = 2720 KPTE
Engenharia de Software
52
Exemplo
Estimao pessimista
Produtividade = 15 LDC/pessoa-dia (valor histrico) Esforo = 850 / 15 = 57 pessoas-dia Custo = 57 * 10 * 8 = 4560 KPTE
Estimao optimista
Produtividade = 50 LDC/pessoa-dia (valor histrico) Esforo = 850 / 50 = 17 pessoas-dia Custo = 17 * 10 * 8 = 1360 KPTE
Mdia ponderada
E = (a + 4 m + b) / 6 = (57 + 4 * 34 + 17) / 6 = 35 pessoas-dia
(a - optimista, m - mais provvel, b - pessimista)
Engenharia de Software
53
Mtodo de Decomposio
Comparao entre LDC/PF e estimao Se se possuirem valores histricos devem-se utilizar os dois mtodos As diferenas de resultados permitem aferir a preciso da estimao Se o desvio for < 10% a estimao boa Se for > 10% ento:
O contexto e objectivos do projecto no foram bem definidos Os dados utilizados na produtividade so inapropriados ou obsoletos Torna-se necessrio determinar as causas do problema
Engenharia de Software
54
Mtodo COCOMO
COCOMO - Constructive Cost Model Utiliza uma frmula matemtica baseada nas LDC Modelo 1. COCOMO Bsico
Determina o esforo (e o custo) em funo da dimenso do software (LDC)
Engenharia de Software
55
Mtodo COCOMO
Os mtodos COCOMO categorizam o software desenvolvido nos modos Orgnico - Pequenos e simples, com pequenas equipas Semi-independente - Complexidade e dimenso mdias, equipas com conhecimentos diferenciados (e.g. sistema distribudo) Embebido - Projectos com requisitos muito bem definidos e restries muito apertadas (e.g. controlo de voo), equipas multidisciplinares
Engenharia de Software
56
Mtodo COCOMO
M o d o s d e d e s e n v o lv im e n to
F u n cio n a lid a d e O rg n ico C o m p re e n s o d o s o b je c t ivo s d o p ro d u t o E x p e ri n c ia c o m p ro d u t o s s e m e lh a n t e s N e c e s s id a d e d e c o n fo rm id a d e c o m re q u is it o s p r e s t a b e le c id o s N e c e s s id a d e d e c o n fo rm id a d e c o m in t e rfa c e s e x t e rn a s D e s e n vo lvim e n t o c o n c u rre n t e d e h a rd w a re e s o ft w a re N e c e s s id a d e d e e s t ru t u ra s d e d a d o s o u a lg o rit m o s in o va d o re s In t e re s s e e m t e rm in a r o p ro d u t o c e d o D im e n s o d o p ro d u t o A la rg a d o E x t e n s ivo M odo S e m i -d e sta c a d o E m b e b i d o C o n s id e r ve l C o n s id e r ve l G e ra l M o d e ra d o
B s ic o
C o n s id e r ve l
To ta l
B s ic o
C o n s id e r ve l
To ta l
M o d e ra d o
E x t e n s ivo
M n im o R e d u z id o < 50 K LDC
C o n s id e r ve l E le va d o Q u a lq u e r
Engenharia de Software
57
COCOMO Bsico
E = a * K LD C D = c *E d
b
P ro je c to O rg n ic o S e m i-in d . E m b e b id o
a 2 .4 3 3 .6
b 1 .0 5 1 .1 2 1 .2
c 2 .5 2 .5 2 .5
d 0 .3 8 0 .3 5 0 .3 2
Engenharia de Software
58
COCOMO Intermdio
E = a * KLDC b * EAF
EAF - Factor de ajustamento obtido a partir de 15 atributos EAF = Me1 x Me2 x Me3 x . x Me15 Me - Multiplicador de esforo, retirado da tabela seguinte
a 3.2 3 2.8
Engenharia de Software
59
COCOMO Intermdio
M u ltip lic a d o re s d e e s fo r o
C l a ssifi c a o M u i to re d u z id o A tr i b u to s d o p r o d u to F i a b i l i d a d e d o s o ft w a r e n e c e s s ria D im e n s o d a b a s e d e d a d o s C o m p le x id a d e d o p ro d u t o A tr i b u to s d o c o m p u ta d o r R e s t ri e s a o t e m p o d e execuo R e s t ri e s a o a rm a z e n a m e n t o d e d a d o s V o la t ilid a d e d a m q u in a vi r t u a l T e m p o d i s p o n ve l d o c o m p u ta d o r A tr i b u to s d o s i n d i v d u o s C a p a c id a d e d o s a n a lis t a s E x p e r i n c i a n o d e s e n v. D e a p lic a e s C a p a c id a d e d e p ro g ra m a o E x p e ri n c ia c o m a m q u in a vi r t u a l E x p e ri n c ia c o m a lig u a g e m d e p ro g . A tr i b u to s d o p r o j e c to U s o d e p r t ic a s m o d e rn a s d e p ro g ra m a o U s o d e fe r r a m e n t a s d e s o ft w a r e P r a z o s d e d e s e n vo l vi m e n t o R e d u z id o N o m in a l E le v a d o M u i to e le v a d o .7 5 .7 0 .8 8 .9 4 .8 5 1 .0 1 .0 1 .0 1 .1 5 1 .0 8 1 .1 5 1 .4 1 .1 6 1 .3
1 .0 1 .0 .8 7 .8 7 1 .0 1 .0
1 .1 1 1 .0 6 1 .1 5 1 .0 7
1 .3 1 .2 1 1 .3 1 .1 5
1 .4 6 1 .2 9 1 .4 2 1 .2 1 1 .1 4
1 .1 9 1 .1 3 1 .1 7 1 .1 1 .0 7
1 .0 1 .0 1 .0 1 .0 1 .0
.8 6 .9 1 .8 6 .9 0 .9 5
.7 1 .8 2 .7 0
1 .2 4 1 .2 4 1 .2 3
1 .1 1 .1 1 .0 8
1 .0 1 .0 1 .0
.9 1 .9 1 1 .0 4
.8 2 .8 3 1 .1
Engenharia de Software
60
Mtodo COCOMO
O mtodo permite analisar a sensibilidade do projecto a determinados factores (e.g. variar a experincia dos programadores) O mtodo avanado apresenta resultados semelhantes ao mtodo intermdio, pelo que este ltimo deve ser utilizado preferencialmente O mtodo bsico deve ser utilizados apenas para estimativas preliminares No espectvel que este tipo de modelo apresente estimativas precisas Resultados com variaes <20% na estimativa dos custos e <30% na estimativa da durao so considerados aceitveis
Engenharia de Software
61
Exemplo
Distribuio de caixas pelos contentores COCOMO Bsico Projecto orgnico 850 LDC E = 2.4 * 0.85 1.05 = 2.02 pessoas-ms D = 2.5 * 2.02 0.38 = 3.26 meses Nmero de pessoas
N = E / D = 0.6 pessoas (leia-se: ~ dois teros do trabalho de uma pessoa)
Engenharia de Software
62
Mtodo Putnam
Assume uma distribuio do esforo em funo da durao de um projecto Foi derivado de projectos > 30 pessoas-ano
Definio do sistema Especificao Desenho e Desenvol vimento Operao e manuteno Codificao Teste
Instalao Esforo
40% do total
60% do total
Engenharia de Software
63
Mtodo Putnam
Relaciona linhas de cdigo com o esforo e tempo necessrio para desenvolver o software L = Ck * K 1/3 t 4/3
L - n linhas de cdigo fonte K - esforo (pessoas-ano) t - tempo de durao do projecto (em anos) Ck - constante que caracteriza o estado de amadurecimento do ambiente de desenvolvimento (2000 < Ck < 11000; 2000 fraca metodologia, pouca documentao; 8000 - bom ambiente de desenvolvimento, boa documentao; 11000 - ambiente excelente, com ferramentas de gerao automtica de cdigo)
Engenharia de Software
64
Mtodo Putnam
Esforo de desenvolvimento de cdigo K = L 3 / (Ck 3 t 4) (pessoas-ano)
Note-se que o modelo apresenta uma relao no linear entre o esforo e a durao do projecto, pelo que um pequeno aumento do tempo de durao permite reduzir significativamente o esforo
Engenharia de Software
65
Exemplo
Distribuio de caixas pelos contentores 850 LDC Ck = 8000 (bom ambiente) t = 0.25 (3 meses) K = 850 3 / (8000 3 * 0.25 4) = 0.3 pessoas-ano 1 pessoa-ano = 11 pessoas-ms K = 3.3 pessoas-ms
Engenharia de Software
66
Mtodos e Tcnicas
X Definir Definir produtos produtos Definio dos produtos Modelo do processo Work Packages [entradas, actividades, sadas] Estimar Estimar recursos recursosee durao durao Organizao do projecto [entradas, actividades, sadas, recursos, durao] Definir Definir rede redede de actividades actividades Diagrama de PERT Diagrama de Gantt X Requisitos do utilizador Requisitos do software Arquitectura
Standards
Dados histricos sobre custos Consideraes sobre riscos Factores ambientais ( tecnologias)
Definir Definir prazos prazosee custos custos Restries sobre tempo e recursos
Recursos Custos
Engenharia de Software
67
Mtodos e Tcnicas
Definio de redes de actividades Grfico de PERT (Program Evaluation and Review Technique)
Rede de caixas e setas Cada caixa representa uma actividade Cada seta representa uma dependncia entre duas actividades Uma actividade dependente no pode comear antes da anterior terminar Metas importantes (milestones) - Actividade cuja concluso representa um ponto importante na vida do projecto Requer Lista de todas as actividades do projecto Estimativa da durao de cada actividade
Engenharia de Software
68
Exemplo
Engenharia de Software
69
Grfico de PERT
Vantagens Fora o planeamento Mostra as interrelaes entre tarefas do projecto Identifica o caminho crtico Mostra possveis paralelismos entre actividades Permite simular alternativas Permite o control do projecto
Engenharia de Software
70
Mtodos e Tcnicas
Definio de prazos Grfico de Gantt
Grfico de barras onde cada barra representa uma actividade Pode ser utilizado em mltiplas actividades: Definir prazos Definir custos Planear utilizao de recursos Definir flutuaes nas actividades
Engenharia de Software
71
Exemplo
Engenharia de Software
72
Definio de Prazos
Utilizao do grfico de Gantt
Graus de liberdade: custo (esforo) e durao A durao normalmente mais importante do que o custo A relao entre o esforo e durao no linear Formula de Putnam K = L3 / (C3 * t4) L=10 000 LDC C = 8 000 para t = 1 ano - K = 10 0003 / 8 0003 = 1.95 pessoas-ano para t = 1.5 anos - K = 10 0003 / 8 0003 * 1.54 = 0.38 pessoas-ano
73
Definio de Prazos
A relao entre a dimenso da equipa e a produtividade no linear (mythical man-month conflict)
Existe um custo associado comunicao entre os membros da equipa 1 pessoa produz 5 000 LDC/ano individualmente Custo de comunicao = 250 LDC/ano Grupo de 4 pessoas = 6 canais de comunicao Produtividade do grupo = LDC/ano grupo - custo comunicao P = 4*5 000 - (250*6) = 18 500 LDC/ano (7.5% menos) Adicionar 2 pessoas 2 meses antes do fim do ano: Grupo de 6 pessoas = 14 canais de comunicao P = 4*5 000 - (250*6/12*10) + (5 000/12*2) - (250*14/12*2) = 19 000 LOC/ano
Engenharia de Software
74
ao adicionar mais pessoas a um grupo durante a execuo do projecto, leva a que a produtividade decresa a princpio:
no incio, os novos membros da equipa no so produtivos; requerem ateno e tempo por parte dos outros membros, durante o processo de aprendizagem.
Leva lei de Brooks: acrescentar pessoas a um projecto atrasado, s o vai atrasar mais
Engenharia de Software
75
Engenharia de Software
76
Definio de Prazos
Distribuio do esforo pelos pacotes de actividades Utilizar a regra 40-20-40
40 - 50 % - Anlise e desenho 15 - 20 % - Codificao 30 - 40 % - Teste (O planeamento do projecto no deve implicar um esforo superior a 2-3 %)
Engenharia de Software
77