Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
DANIELE PEREIRA FREITAS
ESTUDO COMPARATIVO ENTRE REDES BAYESIANAS E
SISTEMAS DINÂMICOS PARA APOIAR ASPECTOS DE PREDIÇÃO
EM DESENVOLVIMENTO DE SOFTWARE
CANOAS, 2011
DANIELE PEREIRA FREITAS
ESTUDO COMPARATIVO ENTRE REDES BAYESIANAS E
SISTEMAS DINAMICOS PARA APOIAR ASPECTOS DE PREDIÇÃO
EM DESENVOLVIMENTO DE SOFTWARE
Trabalho de Conclusão apresentado para a banca examinadora do Curso de Ciência da Computação do Centro Universitário La Salle – Unilasalle, como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação com ênfase em Desenvolvimento de Software.
Orientador: Prof. Me. Abraham Lincoln Rabelo de Sousa
CANOAS, 2011
DANIELE PEREIRA FREITAS
ESTUDO COMPARATIVO ENTRE REDES BAYESIANAS E
SISTEMAS DINAMICOS PARA APOIAR ASPECTOS DE PREDIÇÃO
NO DESENVOLVIMENTO DE SOFTWARE
Trabalho de Conclusão aprovado como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação com ênfase em Desenvolvimento de Software do Curso de Ciência da Computação pelo Centro Universitário La Salle – Unilasalle.
Aprovado pela banca examinadora em ___ de _________ de 2011.
BANCA EXAMINADORA
______________________________________________
Prof. Me. Abraham Lincoln Rabelo de Sousa Unilasalle
______________________________________________
Prof. Me. Eder Stone Fontoura Unilasalle
______________________________________________
Prof. Me. Roberto Petry Unilasalle
AGRADECIMENTOS
Agradeço a todos que contribuíram de forma direta ou indireta para a
realização deste trabalho, mas especialmente a minha família e aos meus amigos
pela colaboração a mim dedicada.
Agradeço também ao meu orientador Prof. Lincoln por ter me auxiliado ao
longo desta pesquisa com sua experiência e atenção.
RESUMO
Apesar da constante evolução vinculada aos processos e métricas relacionados e
engenharia de software, as estimativas ainda constituem-se como um problema vital
durante o planejamento. Tendo em vista esta situação, inúmeros trabalhos
atualmente apontam as técnicas de Redes Bayesianas e Sistemas Dinâmicos como
uma possível solução no que diz respeito à predição de estimativas mais exatas de
prazo e custo dentro de um projeto de software. Contudo não há um estudo que
compare estas duas técnicas que, apesar de metodologias de abordagem
diferentes, tendo em vista que uma baseia-se em probabilidades e outra em
equações, ambas obtém resultados satisfatórios. Este trabalho, portanto, tem como
objetivo realizar uma analise comparativa entre Redes Bayesianas e Sistemas
Dinâmicos.
Palavras chave: Redes bayesianas. Sistemas dinâmicos. Engenharia de software.
ABSTRACT
Despite the constant evolution linked to the processes and metrics related to
software engineering, the estimates still represent itself as a vital issue during
planning. Given this situation, several studies indicate that techniques of Bayesian
Networks and System Dynamics as a possible solution with regard to prediction of
more accurate estimates of time and costs within a software project. Nevertheless
there is not any study that compares these two techniques, in spite of their very
different methodological approaches, these techniques get pretty relevant results.
This study therefore aims to conduct a comparative analysis between Bayesian
Networks and System Dynamics.
Key words: Bayesian networks. System dynamics. Software engineering.
LISTA DE ILUSTRAÇÕES
Figura 1- Estimativas e riscos ................................................................................... 14
Figura 2- Apresentação dos principais elementos que compõem modelos de
sistemas dinâmicos ............................................................................................ 17
Figura 3- Sistema simples de feedback .................................................................... 18
Figura 4 - Representação gráfica básica de uma rede bayesiana ............................ 22
Figura 5- Nética ......................................................................................................... 28
Figura 6- Vensim ....................................................................................................... 30
Figura 7- Lei de brooks modelada em sistemas dinâmicos ....................................... 32
Figura 8- Simulação da lei de brooks considerando o aumento da quantidade de
pessoas novas ................................................................................................... 33
Figura 9- Lei de brooks modelada em redes bayesianas .......................................... 34
Figura 10 - Modelo exemplificando retrabalho em sistema dinâmico ........................ 35
Figura 11- Modelo exemplificando retrabalho em redes bayesianas ........................ 36
Figura 12- Modelo exemplificando curva de aprendizado em sistema dinâmico ...... 37
Figura 13- Simulação da curva de aprendizagem em sistema dinâmico .................. 37
Figura 14- Modelo exemplificando Curva de aprendizado em redes bayesianas ..... 38
LISTA DE QUADROS
Quadro 1- Comparativo considerando as ferramentas .............................................. 44
Quadro 2- Comparativo considerando a etapa de modelagem ................................. 45
Quadro 3- Comparativo considerando a etapa da simulação.................................... 46
SUMÀRIO
1 INTRODUÇÃO .................................................................................................... 10
2 FUNDAMENTAÇÃO TEÓRICA ............................. ............................................. 12
2.1 Inferência de Software ............................ .......................................................... 12
2.2 Simulação ......................................... ................................................................. 15
2.3 Sistemas Dinâmicos (System Dynamics) .............. ......................................... 15
2.3.1 Sistemas Dinâmicos e Engenharia de Software ............................... 19
2.4 Redes Bayesianas .................................. .......................................................... 21
2.4.1 Regra de Bayes ................................................................................ 23
2.4.2 Redes Bayesianas ........................................................................... 23
2.4.3 Inferência em Redes Bayesianas ..................................................... 25
3 ESTUDO COMPARATIVO ENTRE AS TECNICAS DE REDES BAYES IANAS E
SISTEMAS DINÂMICOS................................. .......................................................... 27
3.1 Nética ............................................ ..................................................................... 27
3.2 Vensim ............................................ ................................................................... 29
3.3 Modelos Analisados ................................ ......................................................... 30
3.3.1 Lei de Brooks ................................................................................... 31
3.3.2 Retrabalho ........................................................................................ 34
3.3.3 Curva de Aprendizado ...................................................................... 36
3.4 Critérios de Análise .............................. ............................................................ 38
3.5 Estudo Comparativo ................................ ......................................................... 39
3.5.1 Modelagem....................................................................................... 40
3.5.2 Simulação......................................................................................... 42
4 CONCLUSÃO ......................................... ............................................................ 47
REFERÊNCIA ........................................................................................................... 49
10
1 INTRODUÇÃO
Apesar das constantes mudanças e evoluções vinculadas a processos e
métricas relacionadas ao planejamento e gerenciamento de projetos de software, há
um problema que ainda persiste, a elaboração de estimativas (FENTON, 1999).
As estimativas constituem a parte inicial do planejamento e exercem uma
imensa influência em todo o projeto, tendo em vista que é nesta fase que se formam
as bases do software a ser desenvolvido, bem como as demais fases do projeto.
Segundo Pressman (2006), antes de iniciar um projeto de software é
necessário possuir um escopo bem definido e ter questões administrativas bem
identificadas para que, finalmente, se possam realizar as estimativas mais precisas e
que forneçam sinais significativos de progresso ao longo do desenvolvimento do
produto.
No entanto, muitas vezes o gerente de projetos não possui um conhecimento
muito extenso sobre o escopo do problema, levando a estimativas imprecisas e
conseqüente falta de qualidade no produto final.
Devido a isto, duas técnicas de simulação têm sido largamente utilizadas para
apoiar aspectos de predição no desenvolvimento de software, são elas: Redes
Bayesianas e Sistemas Dinâmicos.
A principal vantagem na utilização destas duas técnicas citadas anteriormente
é o fato de que, mesmo com um conhecimento limitado sobre o escopo, tornam
possível a elaboração de estimativas com pouca margem de erro.
Tendo em vista este cenário, este estudo tem como objetivo apresentar uma
análise comparativa entre as técnicas de Redes Bayesianas e Sistemas Dinâmicos,
apontando suas características e funcionamento dentro do contexto de
desenvolvimento de software. Este estudo também apresenta um comparativo entre
as ferramentas utilizadas além de propor modelos em redes bayesianas para
problemas já existentes na literatura apenas na forma de sistema dinâmico.
Esta pesquisa esta disposta ao longo de cinco seções, sendo a segunda
delas um estudo sobre o estado da arte dos assuntos relacionados à esta pesquisa.
A terceira seção aborda as questões que envolvem este estudo comparativo,
contendo os modelos escolhidos bem como os critérios de análise.
11
Na quarta seção é apresentada a análise comparativa em si, como foi
realizada e seus resultados.
Finalmente, na quinta seção é possível verificar as conclusões alcançadas
com o desenvolvimento desta pesquisa.
12
2 FUNDAMENTAÇÃO TEÓRICA
Uma das atividades fundamentais durante o projeto de construção de um
software é o planejamento (PRESSMAN, 2006).
Durante o planejamento inicial o gerente de projetos deve definir as
estimativas de esforço humano necessário, duração do projeto, os custos do mesmo
dentre outros fatores.
Em geral os esforços com relação às estimativas concentram-se em garantir
uma melhor qualidade do software, bem como ganhos de produtividade, satisfação
dos clientes e diminuição do desenvolvimento e custos (CLEMENTES, 2001).
Para auxiliar nesta fase tão crucial do projeto, foram propostos vários modelos
para estimativas que visam fornecer métricas que permitam atender com a menor
margem de erro as informações necessárias relativas ao projeto, considerando-se
que estimativas errôneas podem prejudicar fortemente o seu andamento.
Todavia, há muitas variáveis desconhecidas que podem aparecer ao longo do
projeto levando a erros na estimativa inicial.
Outro fator que leva a geração de estimativas imprecisas é o fato de que
muitos gerentes de projeto dispõem de pouco conhecimento disponível sobre os
fenômenos e/ou incertezas que podem afetar e influenciar no desenvolvimento de
software e de como reagir diante deles (LEHAMAN, 1989).
Atualmente, duas técnicas de simulação têm sido fortemente indicadas para
apoiar tais aspectos de predição no desenvolvimento de software, são elas:
Sistemas Dinâmicos e Redes Bayesianas.
2.1 Inferência de Software
Inferência trata-se de um processo pelo qual, através de determinadas
proposições, se obtém uma outra proposição/conclusão.
Durante a fase de planejamento de um projeto de software é necessário
estimar o custo e o tempo relativos ao desenvolvimento do mesmo, sendo
extremamente necessário o uso da inferência.
13
Segundo Pressman (2006), a ação de inferir dados para se obter estimativas
precisas constitui um dos problemas que mais afligem o desenvolvimento de
software.
Muitas vezes as estimativas são feitas utilizando-se como base apenas
experiências passadas do gerente de software, tornando da estimativa uma decisão
empírica. No entanto, apesar de experiências anteriores serem importantes, há
inúmeras variáveis que envolvem cada projeto de maneira individual, sendo que
nenhum projeto é igual ao outro, levando a graves erros de inferência.
Outro fator a ser destacado é que a maioria das técnicas utilizadas para
estimativas precisam de dados para processar e, por conseqüência, inferir as
informações necessárias. Contudo, há situações em que não é possível dedicar
tempo para coletar dados relativos ao processo de implementação sobre o software
a desenvolver. Com poucos dados históricos como guia, as estimativas tem sido
empíricas, com resultados previsivelmente ruins.
Sem nenhuma informação sólida não se pode avaliar com precisão e eficácia
prazos e custos. Tal problema leva a insatisfação do cliente e falta de confiança
(PRESSMAN, 2006).
Tendo em vista este problema, surgiram inúmeras técnicas de estimativas
para desenvolvimento de software que visam utilizar dados de projetos passados
como bases históricas para ajudar nas próximas estimativas, bem como dividir o
projeto em partes menores para estimar cada uma individualmente.
Tais ferramentas podem utilizar diversas técnicas, destacando-se as que
conseguem inferir informações sem possuir um grande conhecimento sobre o
domínio do projeto, como Redes Bayesianas e Sistemas Dinâmicos, por exemplo.
Ainda segundo Pressman (2006), a realização de estimativas carrega riscos
inerentes e há fatores que são extremamente relevantes, como ilustra a figura 3.1,
tais como o tamanho do projeto, o grau de estrutura do projeto e a complexidade
baseada em esforços passados.
14
Figura 1- Estimativas e riscos Fonte: Pressman, 2006, p.89
A complexidade do projeto influencia muito sobre a incerteza sobre o mesmo.
No entanto a característica de o quão complexo tal projeto é muda muito de
acordo com a familiaridade da equipe com projetos similares no passado.
A questão do tamanho do projeto poder resultar em inferências ruins é devido
ao fato de que, quanto maior o projeto, mais difícil se torna manter a
interdependência dos módulos, tornando-se mais difícil aplicar técnicas de
decomposição do problema, que trata-se de uma abordagem importante durante a
realização de estimativas.
O grau de estrutura do projeto é também um fator que merece atenção
segundo Pressman (2006), pois quanto maior a estruturação do projeto, maior
também a capacidade de avaliar com maior precisão os riscos relativos ao mesmo.
Deve-se ressaltar que os dados históricos compõem outro fator de extrema
importância quando da fase de inferência de tempo e custo sendo que, com
informações passadas, torna-se muito mais fácil pontuar os riscos e possíveis
problemas.
Há ainda outros fatores, como as pessoas envolvidas no processo de
desenvolvimento bem como a produtividade das mesmas, a questão do retrabalho e
ainda adição de novos recursos. Enfim, há inúmeras variáveis que influenciam no
planejamento e desenvolvimento do projeto tornando-se inviável analisá-las sem o
auxilio de uma técnica confiável para inferência.
Entretanto, segundo Pressman (2006), as estimativas de projeto jamais
poderão ser uma ciência exata, mas uma combinação de bons dados históricos com
técnicas sistemáticas para melhorar a precisão da estimativa.
15
2.2 Simulação
Por se tratar de uma prática bastante comum para muitas áreas, há inúmeras
definições para simulação na literatura.
Segundo Shannon (1992) a simulação trata-se de uma ferramenta que
permite projetar o modelo de um sistema real e praticar experimentos com o mesmo,
a fim de compreender seu comportamento. Para Banks (1999) a simulação trata-se
de uma imitação da operação de um processo ou sistema do mundo real.
Pode-se definir ainda simulação como uma avaliação matemática utilizada
para descrever um sistema ou parte dele. Em muitos sistemas complexos a
simulação torna-se a principal solução para se verificar as entradas e saídas ao
longo da execução do mesmo (MADACHY, 2008).
Apesar das diversas definições, verifica-se que a simulação, além da
construção do modelo, trata-se de um método experimental que busca (Shannon
1992):
a) Descrever o comportamento do sistema;
b) Deduzir hipóteses e teorias sobre o sistema;
c) Estimar e deduzir o comportamento futuro do sistema como um todo.
A simulação pode ser utilizada para explicar determinados comportamentos
do sistema ou ainda melhorar sistemas já existentes.
O processo de simulação é uma tecnologia padrão em muitas disciplinas de
engenharia, sendo que vários autores vem indicando a simulação para projetos de
desenvolvimento de software.
2.3 Sistemas Dinâmicos (System Dynamics)
O conceito de sistemas dinâmicos foi desenvolvido por Jay W. Forrester em
1956 e foi aplicado inicialmente em sistemas industriais e de gerenciamento de
negócios, sendo utilizado para expandir a adversidade dos problemas tanto para a
melhoria da qualidade nas corporações quanto para o planejamento de recursos.
16
Atualmente a técnica de Sistemas Dinâmicos tem sido aplicada com sucesso
nas áreas de biologia, economia e, recentemente na engenharia de software,
utilizando-se estruturas de loop causal para representar a dinâmica das relações
entre os parâmetros do sistema e simulando o efeito da estrutura no comportamento
do processo ao longo do tempo (ABDEL-HAMID, 1991; JENG 2007).
Segundo Churchman (1972), a dinâmica de sistemas trata-se de uma
contínua revisão do mundo, do sistema total e de seus componentes, onde o
domínio é encarado como um conjunto de sistemas e subsistemas que visam atingir
um objetivo em comum.
De acordo com Hjortha e Bagheria (2006), a técnica de Sistemas Dinâmicos
envolve a quebra do problema em componentes, estudando cada parte isolada, e
assim desenhar conclusões sobre o todo. Este método representa uma forma de
entender a realidade e enfatizar as relações ao longo de uma parte do sistema,
através de modelagem e simulação.
Pode-se afirmar que o foco principal dos Sistemas Dinâmicos consiste na
análise das tendências dinâmicas de sistemas em geral. O objetivo é saber se o
sistema é estável ou instável, se possui tendência a oscilar ou ainda se tende ao
equilíbrio. O pressuposto central dessa teoria é que o comportamento dinâmico que
se observa em sistemas complexos é gerado pela sua estrutura causal.
A imagem 2, que segue abaixo, exibe uma rápida apresentação dos
elementos que compõem um modelo de sistema dinâmico, utilizados ao longo desta
pesquisa.
17
Figura 2- Apresentação dos principais elementos que compõem modelos de sistemas dinâmicos Fonte: Madachy, 2008, p.15.
Um conceito de bastante relevância dentro de Sistemas Dinâmicos é o do
feedback, onde as decisões ou os padrões de comportamento das funções são
derivadas de informações do sistema. Tais decisões resultam em ações que podem
modificar todo o sistema.
O feedback ocorre quando a variável x afeta a variável y e, y, por sua vez,
afeta x., portanto, não se pode apenas observar o efeito que uma variável irá causar
em outra variável. Não se pode estudar a relação entre X e Y de forma
18
independente, a ligação entre X e Y prevê como o sistema se comporta. Apenas
observando todo o sistema de feedback é que se pode entender o comportamento
dinâmico do sistema. Uma premissa aqui é que o comportamento dinâmico é uma
conseqüência da estrutura do sistema (STERMAN, 2002).
A figura 3, por exemplo, exemplifica um sistema simples de feedback, onde as
variáveis de entrada (requisitos, recursos e padrões) integram o processo de
software, gerando artefatos que, por sua vez, auxiliam no gerenciamento das novas
variáveis.
Figura 3- Sistema simples de feedback Fonte: Madachy, 2008, p. 13
Para representar a estrutura de feedbacks de um sistema, independente da
área, é utilizado um diagrama de loops causais. Neste tipo de diagrama cada link é
mostrado por setas e estas assumem uma polaridade, que pode ser positiva ou
negativa.
As polaridades descrevem a estrutura do sistema e o que pode acontecer se
houver uma mudança (STERMAN, 2002).
Os Sistemas Dinâmicos possuem origens nas teorias de controle e dinâmica
não linear, portanto existem rigorosos fundamentos matemáticos para a teoria e
modelos desenvolvidos nessa área. A metodologia acredita que não-linearidades
são importantes para explicar o comportamento de sistemas complexos.
Segundo Sterman (2002), um dos objetivos da Dinâmica de Sistemas é ter
um modelo que consiga simular o comportamento do sistema real endogenamente,
ou seja, considera-se que a fonte dos problemas em um sistema faz parte da
estrutura do próprio sistema.
Atualmente há inúmeras ferramentas de Sistemas Dinâmicos, tais como
simuladores gerenciais que permitem a criação de mundos virtuais onde espaço e
19
tempo podem ser comprimidos e desacelerados de tal forma a permitir a
experimentação de efeitos em longo prazo.
Segundo Sterman (2000), a metodologia de modelagem e simulação de
sistemas dinâmicos envolve as seguintes etapas:
a) construção de diagramas de influência, representando mapas mentais, que
visam demonstrar de forma mais clara um problema bem como as relações entre os
componentes relacionados.
b) especificação e desenvolvimento de modelos matemáticos com o objetivo
de formalizar as relações de feedback e defasagens – tempo decorrido entre o
estímulo e a resposta – do sistema.
c) desenho e simulação do modelo que testam hipóteses diferentes em
relação ao comportamento da estrutura.
O processo de modelagem é iterativo, partindo da definição do problema,
construindo-se o modelo de acordo com o formalismo escolhido e, finalmente se
define as políticas de intervenção no sistema (MADACHY, 2008). O passo mais
importante é a articulação do problema, tendo em vista que esta fase é a base de
todas as fases posteriores.
Destaca-se ainda que uma modelagem efetiva deve envolver uma constante
iteração entre a experimentação e aprendizado no mundo real quanto no mundo da
simulação.
2.3.1 Sistemas Dinâmicos e Engenharia de Software
Devido à constante melhoria computacional cada vez mais aumenta o uso de
simulação em diversos campos, sendo um deles a engenharia de software.
Além de a simulação ser um método poderoso para mostrar os processos
envolvidos no domínio, outro fator significante é a possibilidade de reduzir riscos ao
longo do processo de desenvolvimento de software (MADACHY, 2008).
Tendo em vista a definição de sistemas dinâmicos como uma modelagem que
simula partes do domínio e que auxilia a modelar e visualizar as relações e
tendência de um sistema, tal modelagem é cada vez mais utilizada em projetos de
desenvolvimento de software para tomadas de decisão com relação aos fatores que
20
surgem ao longo do ciclo de vida do software, tais como o impacto do tempo, custo e
qualidade.
A técnica de Sistemas Dinâmicos oferece a possibilidade de estimar o
desempenho da abordagem efetuada no projeto e ajudar o gerente de projetos a
tomar melhores decisões que vão impactar no resultado final do software.
Segundo Madachy (2008), sistemas dinâmicos podem fornecer uma visão
mais exata de qualquer aspecto do processo de software, tanto em alto ou baixo
nível. Pode ser usado ainda para avaliar e comparar os diferentes processos do ciclo
de vida bem como técnicas de detecção de defeitos.
Pode- se afirmar que, tecnicamente, sistemas são compostos de muitos
componentes que interagem entre si para atingir determinados objetivos. Em
simulação, sistemas são tipicamente definidos como um conjunto de entidades.
Os sistemas podem ser classificados como “abertos” ou “fechados”, levando
em consideração a influência que as entradas exercem sobre as saídas (MADACHY,
2008).
Sistemas classificados como “abertos” possuem entradas que influenciam nas
saídas e não salvam estados passados. Já um sistema classificado como “fechado”
salva suas situações passadas, utilizando estas informações para controlar ações
futuras.
Tendo em vista a distinção realizada anteriormente entre sistemas “abertos” e
”fechados” pode-se definir que os sistemas podem ser caracterizados por:
a) Parâmetros independentes que configuram a entrada e a estrutura do
sistema
b) Variáveis que dependem de outros parâmetros e variáveis.
O conjunto de variáveis necessárias para descrever um sistema em qualquer
etapa no tempo é chamado de “estado” do sistema (MADACHY, 2008). Como
exemplos de variáveis de estado em um processo de software pode ser o número de
pessoas que executam determinado processo, o montante do software que já foi
desenvolvido ou testado, o número de defeitos encontrados etc.
Segundo Madachy (2008), outra classificação possível para sistemas é
qualificar como “dinâmico” ou “estático”, levando em consideração se suas variáveis
de estado mudam ao longo do tempo.
21
Por conseguinte, sistemas dinâmicos podem ser divididos entre contínuos,
discretos e como sendo uma combinação dos dois anteriores, sendo a principal
diferença o fato de como a simulação avança ao longo do tempo.
2.4 Redes Bayesianas
Pode-se definir Redes Bayesianas como uma representação gráfica, que
mostra as dependências e relações de casualidade entre as variáveis de um
sistema, permitindo representar o conhecimento sobre o domínio, utilizando-se da
Teoria da Probabilidade Bayesiana, publicada pelo matemático Thomas Bayes em
1763.
As Redes Bayesianas são largamente utilizadas em situações onde não se
conhece totalmente o escopo do problema, ou seja, quando há um conhecimento
incerto sobre as variáveis do domínio.
O conhecimento incerto é aquele que apresenta deficiências. Em algum
momento, os dados podem ser uma representação não exata, parcial ou aproximada
da realidade (BHATNAGAR, 1986).
A falta de conhecimento do escopo pode ser gerada principalmente devido a
dois fatores: a instabilidade e a ignorância teórica (RUSSEL; NORVING, 2003).
A instabilidade pode ocorrer quando o trabalho necessário para inserir todos
os dados necessários para constituir uma base de conhecimento pode ser muito
oneroso e, a ignorância teórica ocorre quando não se possui todo o conhecimento
do domínio do problema.
As duas situações citadas levam à incerteza com relação ao problema, sendo
necessário atribuir níveis de confiabilidade a cada informação da base de
conhecimento além de criar relações entre elas.
A sua representação gráfica é composta por nodos representando variáveis
aleatórias, discretas ou contínuas, o elemento que relaciona estes nodos são arcos,
que representam as conexões ou dependências diretas. Estas relações são sempre
direcionadas e representam casualidades entre nodos.
22
Figura 4 - Representação gráfica básica de uma rede bayesiana Fonte: Oliveira, 2007, p.63
Para atribuir níveis de confiabilidade, utiliza-se a teoria da probabilidade, que
atribui a cada sentença um grau numérico de crença entre 0 e 1.
Segundo Russel e Norving (2003), atribuir a probabilidade 0 a uma dada
sentença corresponde a uma crença inequívoca de que a sentença é falsa,
enquanto a atribuição da probabilidade 1 corresponde a uma crença inequívoca de
que a sentença é verdadeira. As probabilidades entre 0 e 1 correspondem a graus
intermediários de crença na veracidade da sentença.
Estes graus de crença sempre são aplicados a proposições, que tratam-se de
afirmações de que determinada situação está ocorrendo.
Contudo, é importante ressaltar que um grau de crença é diferente de um
grau de verdade. Uma probabilidade de 0,9 não significa que a sentença é 90%
verdadeira, mas sim que seu grau de crença é igual a 90%. Estas probabilidades de
crença podem ainda serem alteradas conforme são adicionadas mais sentenças a
base de conhecimento.
Dentro de Redes Bayesianas há dois tipos de probabilidades, a Probabilidade
a
Priori e a Probabilidade a Posterior (RUSSEL; NORVING, 2003).
Pode-se definir a probabilidade a priori, ou probabilidade incondicional, como
sendo o grau de crença utilizado para a proposição quando não se possui nenhuma
informação sobre a mesma. A representação da probabilidade a priori é determinada
por P(a).
Contudo, à medida que algumas informações novas surgem, deve-se
raciocinar com a probabilidade condicional de “a”.
Quando se possui alguma evidencia sobre as variáveis aleatórias que
constituem o domínio usa-se probabilidade a posterior também chamada de
probabilidade condicional.
23
A representação da probabilidade a posterior é determinada por P(a|b), onde
a e b são proposições quaisquer.
2.4.1 Regra de Bayes
O teorema de Bayes mostra a relação entre uma probabilidade condicional e
sua inversa e que traz como resultado um grau de conhecimento que um evento
exerce sobre o domínio (RUSSEL; NORVING, 2003). A distribuição probabilística,
dado um determinado evento, é calculada pela formula de inferência bayesiana:
P(Y|X) = ( P(X|Y) * P(Y)) / P(X)
A expressão cima trata-se de uma representação de um conjunto de
equações, onde cada uma lida com valores específicos das variáveis.
A regra de Bayes exige três termos, uma probabilidade condicional e duas
probabilidades incondicionais, apenas para calcular uma probabilidade condicional
(RUSSEL; NORVING, 2003).
A regra de Bayes é muito utilizada quando se possui probabilidades
condicionais sobre relacionamentos causais e se deseja obter um resultado final.
2.4.2 Redes Bayesianas
Uma rede bayesiana é constituída de um conjunto de variáveis e um conjunto
de arcos ligando estas variáveis, onde cada variável possui um conjunto limitado de
estados.
Segundo Russel e Norving (2003), a topologia da rede (conjunto de nós e
vínculos) representa os relacionamentos de independência condicional que são
validos no domínio.
24
Outro fator importante é que uma rede bayesiana fornece uma descrição
completa do domínio, pois toda a entrada na distribuição de probabilidade pode ser
calculada a partir das informações armazenadas na rede.
Uma vez que a topologia da rede bayesiana é definida, é preciso se
especificar uma distribuição de probabilidade condicional para cada variável,
considerando seus pais.
Ressalta-se ainda que o peso da influência entre as variáveis envolvidas é
representado por probabilidades condicionais que são associadas a cada nodo da
rede.
As redes Bayesianas oferecem, portanto, um sistema de inferência com o
objetivo de buscar novos relacionamentos a partir dos que já existem, conforme a
topologia da rede.
A representação Bayesiana é composta de uma parte qualitativa e outra
quantitativa. A parte qualitativa trata-se de uma representação gráfica das variáveis
com relação a sua distribuição e relações. Esta representação tem a forma de um
grafo acíclico dirigido, onde cada vértice representa a variável estatística e os arcos
representam a influência direta ou a relação de causalidade entre variáveis.
Para a parte quantitativa, um conjunto de funções são definidas
representando quantidades numéricas de distribuição probabilística sobre as
variáveis do domínio.
Cada vértice do grafo é associado a uma avaliação da função de
probabilidade que descreve a influencia de cada vértice e seu predecessor. O fato
de que cada nó é conectado aos nós mais antigos na rede garante ainda que o grafo
será sempre acíclico (RUSSEL; NORVING, 2003).
Além da função de probabilidade referente a cada variável do domínio deve
haver uma forma de calcular como os eventos podem influenciar a distribuição
probabilística sobre a variável e seus dependentes.
Isto significa que sempre que qualquer evento que ocorrer a probabilidade de
distribuição de todo o vértice dependente da variável que representa o evento deve
ser recalculado. Nas redes Bayesianas a probabilidade de distribuição sobre as
variáveis do domínio é calculada pela Regra de Bayes.
25
2.4.3 Inferência em Redes Bayesianas
A inferência em Redes Bayesianas trata-se de um procedimento para a
construção de uma distribuição de probabilidades posteriores em relação aos
objetos do domínio, dadas as probabilidades a priori.
A inferência se utiliza de cálculos probabilísticos e utiliza informações já
existentes nas redes bayesianas.
Pode-se afirmar que a principal tarefa de um sistema de redes bayesianas é
computar a distribuição da probabilidade condicional para um conjunto de variáveis
de consulta, dado os valores de um conjunto de variáveis de evidencia.
Segundo Castilho e Gutierrez (1997) há três tipos distintos de algoritmos de
inferência:
Exatos: A inferência exata é intratável para redes grandes e muito
conectadas. Há três algoritmos principais:
a) Enumeração: Neste algoritmo calcula-se as somas dos produtos de
probabilidades condicionais da rede. Contudo, este algoritmo efetua o somatório
sobre a distribuição conjunta total sem construí-la de uma forma explicita, possuindo
uma complexidade muito alta considerando-se redes muito extensas.
b) Eliminação de Variáveis: este algoritmo avalia as expressões na ordem
da direita para a esquerda. Os resultados intermediários são armazenados e os
somatórios sobre cada variável são efetuados apenas para as porções da expressão
que dependem da variável.
c) Formação de Agrupamento: a idéia da formação de agrupamento é unir
nós individuais da rede para formar nós de agrupamento, de tal modo que a rede
resultante seja uma poliarvore. Então é aplicado um algoritmo de inferência que, na
verdade, trata-se de uma forma de propagação de restrições, em que estas
restrições garantem que os agrupamentos vizinhos concordam sobre a
probabilidade posterior de quaisquer variáveis que eles tenham em comum.
d) Aproximados: Tendo em vista a intratabilidade da inferência exata em
redes extensas, surge a inferência aproximada como uma possível solução. Estes
algoritmos de amostragem aleatória, também chamados algoritmos de Monte Carlo,
fornecem respostas aproximadas, cuja exatidão depende do número de amostras
geradas.
26
e) Amostragem Direta: Dada uma fonte de números aleatórios no
intervalo de [0,1], torna-se simples realizar a amostragem de qualquer distribuição
sobre uma única variável, sendo que a idéia principal deste algoritmo é fazer a
amostragem para uma variável de cada vez, em ordem topológica. A distribuição de
probabilidade a partir da qual se obtém uma amostra do valor esta condicionada aos
valores já atribuídos aos pais da variável.
f) Simulação de Cadeias de Markov Monte Carlo (CMMC): Diferente dos
outros algoritmos de amostragem, que geram cada evento a partir do nada, o CMMC
gera cada evento fazendo uma mudança aleatória no evento precedente. O CMMC
vaga ao acaso pelos estados, intervindo em uma variável de cada vez, mas
mantendo fixas as variáveis de evidencia. Neste tipo de simulação o próximo estado
é gerado por amostragem aleatória de um valor para uma das variáveis. Este
processo de amostragem se fundamenta em um “equilíbrio dinâmico” no qual a
fração a longo prazo do tempo gasto em cada estado é exatamente proporcional a
sua probabilidade posterior.
27
3 ESTUDO COMPARATIVO ENTRE AS TECNICAS DE REDES
BAYESIANAS E SISTEMAS DINÂMICOS
Para realizar esta pesquisa foram necessários seguir alguns passos, sendo o
primeiro deles a realização de um estudo sobre as técnicas de Redes Bayesianas e
Sistemas Dinâmicos para compreender o funcionamento, características,
similaridades e diferenças entre elas.
A partir deste estudo foi possível escolher duas ferramentas, uma para cada
técnica, tendo em vista a escolha mais freqüente nos trabalhos relacionados e
artigos recentes.
Após esta escolha, pode-se então definir os casos a serem modelados bem
como os critérios para a realização da analise. Por fim, foi elaborada a análise,
considerado todos os passos anteriormente descritos.
As seções seguintes se dispõem a esclarecer e apresentar o estudo
comparativo e os resultados obtidos ao final deste.
3.1 Nética
Para modelagem das redes bayesianas desenvolvidas neste trabalho, apesar
das inúmeras opções disponíveis, foi escolhida a ferramenta Nética, por ser também
largamente citada em pesquisa e projetos relacionados.
A versão utilizada foi a versão limitada 4.16 para Windows 7, que é a última
disponível no site, que é limitada a poucas variáveis e não possui suporte a
aprendizagem da rede.
Esta versão está disponível para download no site http://www.norsys.com,
junto com as demais versões licenciadas e as API’s disponíveis para as linguagens.
28
Figura 5- Nética Fonte: Disponível em <www.norsys.com>. Acesso em 08 mar. 2011
Foi verificado que, apesar da versão gratuita não possuir muitos dos recursos
que tornam a modelagem em Redes Bayesiana mais vantajosa, a versão licenciada
apresenta uma vasta lista de recursos extremamente relevantes, como a questão do
aprendizado das redes, largamente utilizada em pesquisas e simulações.
Outro fator de extrema relevância é o fato de haver no site diversas API's,
compatíveis com as linguagens Java, C, C#, C++, Visual Basic, Matlab e CLisp. Tal
fator constitui-se como um ponto favorável pois trata-se de um critério comum nos
métodos de avaliação estudados.
Para a instalação da ferramenta, basta fazer download da mesma no site da
Norsys e descompactar o arquivo em um diretório.
Junto com a ferramenta vem instalados mais de dez exemplos de Redes
Bayesianas já modeladas bem como um simples manual simples de utilização. Este
material, unido com o vasto conteúdo do site, forma um ponto positivo durante o
aprendizado.
No site do Nética há também um material muito completo sobre como
funciona a ferramenta, explicando o funcionamento das redes e porque elas são
importantes para realizar simulações de sistemas bem como a forma como são
analisados os dados definidos nas redes.
Foram verificados alguns problemas durante a simulação que acabavam
fechando a aplicação e gerava a perda de dados durante a modelagem. O principal
29
e pior deles é quando se aponta a seta de causa- conseqüência para o mesmo
nodo. Muitas vezes além, da ferramenta fechar, perdiam-se dados adicionados
recentemente.
Uma questão que ficou em aberto com relação à ferramenta, que não foi
encontrada na documentação nem nos manuais relacionados, foi com relação à
possibilidade de utilizar fórmulas para construir as tabelas probabilísticas. Também
não foi encontrado, na versão utilizada, como gerar gráficos ou outros tipos de
saídas com os resultados obtidos.
3.2 Vensim
O software escolhido para modelagem dos sistemas dinâmicos desenvolvidos
ao longo deste trabalho foi o Vensim-PLE (Personal Learning Edition), versão 5.10e
para o Windows 7, que trata-se de uma versão gratuita do Vensim, produzida pela
Ventana Systems Inc. para uso exclusivo pessoal e na educação.
Foi escolhida esta ferramenta, pois a mesma é extremamente citada em
trabalhos relacionados e demais pesquisas envolvendo a modelagem de sistemas
dinâmicos.
A linguagem de simulação Vensim foi inicialmente desenvolvida em 1988 e
era uma extensão da linguagem Pascal. Esta linguagem sofreu constantes
modificações e evoluções até esta versão presente utilizada, que é a ultima versão
disponível para download no site http://www.vensim.com, junto com as demais
versões licenciadas.
O Vensim é uma ferramenta de modelagem visual que permite conceituar,
documentar, simular, analisar e aperfeiçoar modelos de sistemas dinâmicos,
independente da área a que pertence.
Apesar de gratuita, a ferramenta disponibiliza inúmeros recursos importantes
na modelagem de sistema, como pode ser verificado na figura 5.
30
Figura 6- Vensim Fonte: Disponível em <www.vensim.com>. Acesso em 08 mar 2011
Foi verificado que, a versão gratuita utilizada nesta pesquisa, não perde
tantos recursos para as quatro outras versões licenciadas, diferentemente do que
ocorre com o Nética.
Dos recursos ausentes na versão gratuita destacam-se o de múltiplas visões,
simulação de sensibilidade de Monte Carlo, a criação de macros e a importação de
planilhas para a obtenção de dados.
Um fator que conta negativamente é a questão da falta de interface com
outras aplicações. Não foi encontrado nenhuma API ou um WebService no site nem
na internet que pudesse ser utilizado para a comunicação com outras aplicações e
sistemas.
3.3 Modelos Analisados
Para a realização deste estudo comparativo entre Redes Bayesianas e
Sistemas Dinâmicos foram adotados três situações/problemas recorrentes em
projetos de desenvolvimento de software que são:
31
a) Lei de Brooks
b) Retrabalho
c) Curva de Aprendizado
Todos os modelos analisados já possuíam a modelagem na forma de
sistema dinâmico na literatura relacionada, com fórmulas pré-estabelecidas e
modelos conhecidos, sendo necessário traduzi-los para a técnica de redes
bayesianas da forma mais próxima possível e utilizando-se variáveis muito próximas
e sistema similar de causa- conseqüência entre as mesmas.
3.3.1 Lei de Brooks
Frederick Phillips Brooks Jr, mais conhecido como Fred Brooks, publicou em
1975, no livro mundialmente conhecido “The Mythical Man-Month” (posteriormente
revisado e republicado) a famosa lei de Brooks que afirma que, adicionando-se
pessoas a um projeto atrasado, o projeto atrasará ainda mais.
Em seu livro, Brooks explica que tal fato deve-se ao motivo de que, quando
programadores novos são introduzidos no projeto, eles demoram a se tornarem
produtivos além de interromper e atrasar os membros com mais experiência.
Demandam tempo de treinamento e aumentam a necessidade de comunicação.
Para a modelagem do sistema dinâmico correspondente a Lei de Brooks foi
adotado o modelo sugerido por Madachy (2008). Segundo este modelo,
representado na figura 7, verifica-se a criação de três taxas, determinantes neste
modelo, a Taxa de Alocação de Pessoal, a Taxa de Assimilação e a Taxa de
Desenvolvimento de Software.
A Taxa de Alocação é determinada pelas variáveis de Software Planejado e
Software Desenvolvido. Já a Taxa de Assimilação considera principalmente a
variável de Experiência Pessoal, enquanto a Taxa de Desenvolvimento de Software,
núcleo deste modelo, considera as variáveis de Produtividade Nominal, a
Sobrecarga de Comunicação, o Pessoal Novo, a Experiência Pessoal e o Pessoal
com Experiência necessária para Treinamento.
32
Figura 7- Lei de brooks modelada em sistemas dinâmicos Fonte: Autoria própria
Durante a simulação de um sistema dinâmico é possível perceber a
casualidade entre as variáveis devido aos pequenos gráficos.
Na figura 8 é possível verificar que, quando houve um aumento da quantidade
de pessoas novas no projeto, aumentou também a quantidade de comunicação, por
exemplo.
33
Figura 8- Simulação da lei de brooks considerando o aumento da quantidade de pessoas novas
Fonte: Autoria própria
Para a modelagem em Redes Bayesianas deste mesmo modelo, foram
necessárias algumas alterações, tendo em vista as características desta técnica.
Como não há uma equação/taxa que definirá o comportamento do modelo em
redes bayesianas, apenas as tabelas probabilísticas, as taxas da representação de
sistema dinâmico perderam sentido neste tipo de técnica, sendo descartadas ou
modificadas neste modelo.
As variáveis de Requisitos, de Software Desenvolvido e de Software
Planejado transformaram-se no nodo denominado Requisitos/Tamanho SW
(software).
Já a Taxa de Alocação de Pessoal, no sistema dinâmico, tornou-se o nodo
Alocação, que sofre influência do nodo Requisitos e exerce nos nodos de Pessoal
Novo e Pessoal com Experiência (que trata-se da tradução da variável Pessoal com
Experiência necessária para Treinamento em sistemas dinâmicos).
Além das traduções de algumas variáveis e exclusão de outras, há no modelo
de Rede Bayesiana o nodo de Tempo, que não possui uma variável no sistema
dinâmico. Isto porque o tempo exerce uma influência diferente nos dois modelos.
34
No sistema dinâmico além do tempo de simulação ser informado no início da
mesma, é possível atribuir uma variável temporal ligada à outra, como ocorre na
variável de Software Planejado. Contudo, na Rede Bayesiana, para verificar o tempo
é necessário a criação de um nodo para tal.
Figura 9- Lei de brooks modelada em redes bayesianas Fonte: Autoria própria
3.3.2 Retrabalho
A questão do retrabalho trata-se de um problema constante e inerente a
maioria dos projetos de desenvolvimento de software.
Geralmente o aumento do custo de correção aumenta significamente
conforme o defeito avança nas fases de desenvolvimento (PRETZ, 2009).
Há inúmeras causas relacionadas ao surgimento de retrabalho apontado em
diversos artigos relacionados, sendo os mais freqüentes:
a) Restrições desconhecidas só descobertas durante o projeto
b) Restrições muito subjetivas
c) Testes modelados de forma ineficiente
35
d) Codificação
e) Entendimento incorreto do requisito
Por ser um ponto tão importante dentro de projetos, optou-se por considerar
este problema no estudo. Segue abaixo os modelos desenvolvidos:
Figura 10 - Modelo exemplificando retrabalho em sistema dinâmico Fonte: Autoria própria
O modelo de sistema dinâmico para representação do retrabalho traz quatro
taxas, a taxa de Descoberta de Tarefa, Desenvolvimento da Tarefa, Tarefa
Incorretamente Desenvolvida e Tarefa Desenvolvida Corretamente.
Na rede bayesiana tais taxas foram substituídas pelos nodos Tarefas, Tarefas
Incorretas e Retrabalho, pois não havia a necessidade de migrar as demais variáveis
para representar este modelo.
36
Figura 11- Modelo exemplificando retrabalho em redes bayesianas Fonte: Autoria própria
3.3.3 Curva de Aprendizado
Considerando-se outros trabalhos relacionados a estimativas, outro vilão,
freqüentemente citado, que pode afetar a realização de um projeto de
desenvolvimento de software dentro do tempo previsto é a questão da
aprendizagem das pessoas envolvidas no projeto.
Devido a isto, as curvas de aprendizado, criadas inicialmente em 1936, foram
desenvolvidas para auxiliar gerentes de projetos no monitoramento de desempenho
de um ou mais recursos submetidos a uma nova tarefa ou projeto.
Destaca-se que o problema da curva de aprendizado pode ser considerado
com uma parte de todo o contexto da Lei de Brooks.
Segue abaixo as modelagens realizadas:
37
Figura 12- Modelo exemplificando curva de aprendizado em sistema dinâmico Fonte: Autoria própria
No modelo de sistema dinâmico, para representar a questão da Curva de
Aprendizado em Projetos, há apenas uma taxa, a Taxa de Desenvolvimento, mas há
as variáveis de Pessoal, Produtividade, Curva de Aprendizado, Percentual de
Tarefas Completas e Tamanho do Trabalho. Analisando-se o modelo acima,
percebe-se que a variável que irá ditar a curva de aprendizado é a quantidade de
Tarefas Completas. Segue abaixo a imagem enfatizando a curva de aprendizado,
quando da simulação deste modelo.
Figura 13- Simulação da curva de aprendizagem em sistema dinâmico Fonte: Autoria própria
Contudo, para a transcrição deste modelo para rede bayesiana, a Taxa de
Desenvolvimento e as variáveis de Tamanho do Trabalho e Tarefas Completas
estão representadas pelo nodo Tarefas Completas, como mostra a figura 14.
38
As demais variáveis, com exceção da relativa ao Percentual de Tarefas
Completas, se mantiveram como nodos na rede.
Figura 14- Modelo exemplificando Curva de aprendizado em redes bayesianas Fonte: Autoria própria
3.4 Critérios de Análise
Há inúmeros trabalhos de autores de áreas distintas que se propõem a definir
critérios diferentes de avaliação de modelagem e simulação.
Apesar de constituírem estudos diferenciados, com foco nos mais variados
tipos de simulação, muitos deles apresentam vários critérios em comum.
Dentre estes trabalhos, três foram escolhidos para balizar os critérios de
avaliação utilizados nesta pesquisa, que seguem abaixo:
a) Jerry Banks – Em seu livro “Handbook of Simulation”, publicado em 1991,
divide a analise em cinco critérios principais de avaliação: critérios de entrada, de
processamento, de saída, de custo, e de suporte. Estes critérios ainda possuem
sub-critérios elencados que auxiliam na avaliação.
b) Lesley Davis e Glyn Williams – Propuseram no artigo “Evaluating and
Selecting Simulation Software Using the Analytic Hierarchy Process”, publicado em
39
1994, os critérios de custo, integralidade do sistema, integração com outros
sistemas, documentação, treinamento, facilidade de uso, hardware e instalação e
questões vinculadas a fornecedores. Como o trabalho também apresenta sub-
critérios e se propõe a mais uma avaliação mais elaborada.
c) Jalal Nikoukaran, Vlatka Hlupic e Ray J. Paul – Publicaram no artigo
“Criteria for Simulation Software Evaluation”, em 1998, os critérios do fornecedor, de
desenvolvimento do modelo e entrada, de execução, de animação, de eficiência e
teste, de saída e critérios do usuário. Esta pesquisa, mais focada em projetos de
software, se baseia na experiência dos autores, trazendo critérios para próximos do
cenário de desenvolvimento.
Para esta pesquisa, decidiu-se mesclar os critérios de análise dos três
trabalhos citados acima, para garantir uma melhor avaliação, sem priorizar uma
pesquisa especifica.
3.5 Estudo Comparativo
Como explicado ao longo deste trabalho, devido ao fato de muitos estudos,
teses e pesquisas buscarem resolver o problema da geração de estimativas em
projetos de software através de simulações realizadas utilizando-se Redes
Bayesianas e Sistemas Dinâmicos, optou-se por se realizar esta análise comparativa
de forma a balizar a escolha de uma delas em trabalhos futuros.
Para a realização desta pesquisa foram modeladas e simuladas três
situações corriqueiras e que refletem na geração de estimativas dentro de projetos
de desenvolvimento de software que são a questão do retrabalho, a curva de
aprendizado e a famosa Lei de Brooks, já descritas anteriormente.
A tática adotada foi buscar estas três situações modeladas na forma de
Sistema Dinâmico e realizar a transcrição para a Rede Bayesiana e, após isso,
realizar a análise comparativa em si.
Contudo, quando se trabalha com modelos com características e
funcionamento tão distintos,sendo eles determinísticos ou probabilísticos, um dos
modelos tende a sofrer certas modificações de maneira que se obtivesse o cenário o
mais parecido possível entre os mesmos.
40
Levando em consideração esta adversidade, foram modeladas as redes
bayesianas destes sistemas da forma mais próxima possível do sistema dinâmico,
mas de forma a manter a integridade e contexto do problema corretamente.
Para garantir a integridade das variáveis, foram consideradas, além da
experiência do orientador, a opinião de outros profissionais da área de software.
Antes de iniciar a descrição da análise, é necessário enfatizar que, para
realizar estimativas em cima de simulações o gerente deve estar atento que,
independente da técnica escolhida, deve-se escolher uma boa ferramenta e,
principalmente, definir muito bem a modelagem, para que a estimativa seja válida.
Com relação à escolha das ferramentas, esta pesquisa utilizou a versão de
uso pessoal e limitada do Nética, para Redes Bayesianas, e a versão também
gratuita do Vensim.
Apesar das limitações de recursos devido ao fato de serem versões gratuitas,
isto não invalida este estudo, pois não houve nenhum recurso extremamente
necessário a modelagem e simulação que estivesse ausente nas mesmas.
Os critérios considerados nesta análise comparativa foram divididos em três
grandes grupos:
a) Ferramenta
b) Modelagem
c) Simulação
Por já haver um capítulo dedicado as ferramentas, segue abaixo a análise
quando da utilização das técnicas sob a perspectiva da modelagem e simulação,
seguida dos quadros comparativos, bem como a posterior conclusão, com base na
experiência e resultados obtidos.
3.5.1 Modelagem
Quando da modelagem de um sistema ou parte dele, deve ser considerado os
pré-requisitos necessários para a construção deste modelo, como o conhecimento
prévio por exemplo.
Foi verificado que o conhecimento prévio pesou mais quando da modelagem
de sistemas dinâmicos do que Redes Bayesianas.
41
Isto se verifica, pois, além de haver a necessidade do conhecimento do
funcionamento de um sistema dinâmico e sua relação de casualidade, há ainda a
questão matemática envolvida, sendo que trata-se de uma técnica de causa -
conseqüência fundamentada em equações, que podem ser ou não derivadas.
Além desta constatação, foi verificado que em outros trabalhos relacionados
também houve uma curva de aprendizado relativamente alta, devido ao grau de
complexidade relacionado à formulação das equações, que são à base desse tipo
de técnica.
Há três tipos de variáveis a serem utilizadas durante a definição de um
modelo em sistema dinâmico:
a) Auxiliares- são variáveis que são definidas com um valor inicial, mas
que podem receber outro valor durante a simulação. Ao ser alterado seu valor,
influencia nas demais variáveis com formulas pré-definidas.
b) Variáveis de Nível- possuem fórmulas pré- estabelecidas, levando em
conta as auxiliares, mas não podem ser alteradas durante a simulação.
c) Taxas – são as equações chave, que vão ditar o comportamento do
sistema dinâmico ao longo do tempo estabelecido de simulação. Não sofrem
alteração durante a simulação.
Tendo em vista estes tipos de variáveis, percebe-se que, para a modelagem
de um sistema dinâmico é imprescindível a criação de equações e um certo domínio
no desenvolvimento das mesmas.
Já, com relação a Redes Bayesianas, após definido as variáveis,
denominadas como nodo nesse tipo de técnica, há apenas a necessidade de definir
a relação nas tabelas probabilísticas.
Apesar de aparentar ser mais simples, a modelagem em redes bayesianas
também demanda conhecimento prévio quando da definição dos nodos e da relação
de casualidade entre eles, mas certamente apresenta uma maior facilidade quando
da necessidade do aprendizado.
Todavia, o fator mais problemático da utilização da Rede Bayesiana é a
qualidade das probabilidades. Para estimativas mais exatas há a necessidade de um
especialista inferir os valores iniciais da rede. Porém, na ausência de um, pode-se
aplicar valores aleatórios e, devido ao aprendizado desse tipo de técnica, é possível
ir aprimorando os relacionamentos da rede com tempo e conforme a mesma vai
sendo utilizada.
42
Com relação à documentação e material disponível, as duas técnicas, bem
como suas ferramentas, dispõem de um vasto conteúdo devido à forte utilização das
duas.
Tanto no site do Nética quando do Vensim, por exemplo, há manuais relativos
ao funcionamento tanto da técnica, relatando a questão da importância e da
funcionalidade, quando com relação à ferramenta. Considerando o Nética, além de
exemplos de modelos no site, foram instalados exemplos com a ferramenta e, o
Vensim apenas no site.
Durante a modelagem das duas técnicas, percebe-se que há críticas quando
da inserção de dados incorretos. Não há como executar a simulação se houver uma
tabela sem a definição de probabilidade correta, no caso de redes bayesianas, ou se
a definição da equação não envolver todas as variáveis vinculadas no Vensim.
3.5.2 Simulação
Com relação à execução da simulação, as duas técnicas são de fácil
aprendizagem e visualização.
Os sistemas dinâmicos apresentam gráficos para apresentar os resultados e
permite a alteração das variáveis auxiliares para a verificação das tendências do
sistema como um todo.
Por exemplo, ao se alterar a quantidade de pessoas em um projeto,
percebem-se alterações nos gráficos das demais variáveis do sistema.
Tendo em vista tal característica, percebe-se que, a técnica de sistema
dinâmico é extremamente indicada para cenários grandes, com muitas variáveis
envolvidas, e levando em consideração um tempo maior de simulação, pois é mais
fácil a visualização das casualidades através dos gráficos.
Na rede bayesiana, percebe-se a casualidade dos nodos relacionados através
da alteração dos percentuais de um especifico.
Por exemplo, ao se alterar a probabilidade de um nodo, percebe-se a
alteração nas probabilidades nas variáveis mais próximas.
43
Considerando estas características, verifica-se que, a técnica de redes
bayesianas é mais indicada para sistemas menores, para períodos de tempo mais
imediatos e com necessidade de uma verificação mais próxima.
Ou seja, quando da necessidade de verificar a influência de uma variável
sobre o sistema como um todo, os sistemas dinâmicos permitem a visualização mais
imediata ao gestor.
Porém, quando da necessidade de verificar um subsistema, com maior
exatidão de influência, o mais indicado são as Redes Bayesiana, até pela sua
característica probabilística e pelo possível aprendizado da mesma.
Isto ocorre, pois, em sistema dinâmico, o sistema é todo ligado através das
taxas definidas, já nas redes bayesianas a casualidade é mais especifica.
Segue abaixo o quadro comparativo relativo às ferramentas utilizadas neste
estudo. Destaca-se que, com relação à licença do software, todas as ferramentas
pesquisadas, incluindo o Nética e o Vensim, possuem uma licença para aprendizado
e outras versões proprietárias não sendo isto, portanto, um impedimento para a
utilização de nenhuma das duas técnicas.
44
Ferramenta
Critérios Redes Bayesianas Sistemas Dinâmicos
1. Aquisição da licença de software
O Nética possui uma versão gratuita, que apresenta limitação de nodos e não possui suporte a aprendizagem da rede.
As versões pagas variam entre o valor de duzentos e oitenta e cinco a quinhentos e oitenta e cinco dólares.
É possível adquirir qualquer uma das licenças pelo site da Norsys http://www.norsys.com
Possui uma versão gratuita para uso educacional e pessoal com limitação de saída e recursos.
A licença da versão completa denominada como PLUS possui um valor de cento e sessenta e nove dólares.
É possível comprar pelo site do Vensim http://www.vensim.com
2. Há alguma restrição quanto a hardware ou Sistema Operacional?
A última versão está disponível para os sistemas Windows (95/98/NT4/2000 /XP/Vista) e Mac OSX
A ultima versão está disponível para os sistemas Windows (XP/VISTA/7) e Mac OSX (10.4+)
3. Possui interface para outros softwares?
O nética possui API’s para Java, C, C#, Visual Basic, C++,Matlab e CLisp.
Não foram encontradas API’S nem webservices no site do Vensim.
4. É de fácil instalação? É necessário apenas descompactar o arquivo no diretório C.
Instalação através de executável.
5. Possui boa documentação?
Possui fóruns, livros, manual, exemplos no site da Norsys além dos exemplos que são instalados juntos com a ferramenta. Tem também a opção de treinamento, consultoria além da documentação das API’s
Possui fóruns, Wiki, tutoriais, livros e treinamento no site do Vensim
Quadro 1- Comparativo considerando as ferramentas Fonte: Autoria própria
Segundo Banks (1991), para a classificação e escolha de uma técnica de
modelagem, deve ser considerado os aspectos relacionados como o tempo de
desenvolvimento do modelo, a complexidade e o treinamento necessário.
Segue abaixo os critérios utilizados para avaliar o processo de modelagem
das técnicas de Redes Bayesianas e Sistemas Dinâmicos.
45
Modelagem
Crit érios Redes Bayesianas Sistemas Dinâmicos
1. É de fácil aprendizado?
Exige conhecimento prévio em Redes Bayesianas e em tabelas de probabilidade. Apresenta uma curva de aprendizado menor que sistemas dinâmicos.
Exige conhecimento prévio em Sistemas dinâmico e em equações matemáticas derivadas.
Possui um ciclo de aprendizado mais complexo.
2. Possui manuais que auxiliem na modelagem?
Sim, possui uma vastidão de materiais, livros e trabalhos relacionados devido à forte utilização da técnica. Além disso, há ainda o manual e o site da Norsys.
Sim, possui uma vastidão de materiais, livros e trabalhos relacionados devido à forte utilização da técnica. Além disso, há ainda o manual e o site do Vensim.
3. Possui exemplos de modelos já prontos?
Sim, além de vários modelos disponíveis nos trabalhos relacionados, são instalados mais de dez tipos de exemplos na ferramenta escolhida.
Há ainda inúmeros outros modelos no site também.
Sim, além de vários modelos disponíveis nos trabalhos relacionados, há alguns modelos no manual.
4. O processo de modelagem demanda muito tempo?
A técnica de Redes Bayesianas não demanda muito tempo, pois apesar de exigir conhecimento prévio de conceitos e funcionamento, a fase mais complexa é a definição das probabilidades nas tabelas dos nodos modelados. Essa definição pode ser realizada por um especialista ou a rede pode aprender conforme é utilizada.
A técnica demanda um tempo maior de modelagem, pois além de haver a necessidade do conhecimento do funcionamento de um sistema dinâmico e sua relação de casualidade, há ainda a questão matemática envolvida, sendo que trata-se de uma técnica de causa - conseqüência fundamentada em equações, que podem ser ou não derivadas.
5. Há criticas durante a modelagem de dados de entrada inválidos?
Sim, não é possível realizar simulação se há dados probabilísticos incorretos.
Sim, não é possível realizar simulação se há formulas incompletas ou variáveis não inicializadas.
Quadro 2- Comparativo considerando a etapa de modelagem Fonte: Autoria própria
46
Com relação à simulação, todos os trabalhos relacionados considerados
nesta pesquisa, consideram a facilidade de visualização dos resultados como o fator
principal quando da escolha de uma técnica para auxiliar na tomada de decisão.
O quadro 3 apresenta os critérios analisados para comparar o processo de
simulação.
Simulação
Critérios Redes Bayesianas Sistemas Dinâmicos
1. Qual o grau de complexidade para executar uma simulação?
Baixo, pois a visualização dos resultados bem como a alteração de variáveis do cenário durante a simulação são realizadas de forma simples.
Baixo, pois a visualização dos resultados bem como a alteração de variáveis do cenário durante a simulação são realizadas de forma simples.
2. Os resultados da simulação são de fácil compreensão?
Sim, a simulação é de fácil compreensão
Sim, a simulação é de fácil compreensão
Quadro 3- Comparativo considerando a etapa da simulação. Fonte: Autoria própria
47
4 CONCLUSÃO
Este trabalho apresentou um estudo comparativo entre as técnicas de Redes
Bayesianas e Sistemas Dinâmicos através da modelagem e simulação de cenários
pertencentes à área de desenvolvimento de projetos de software, trazendo a
experiência de utilização na modelagem, simulação e análise dos resultados obtidos.
Muitos trabalhos buscam minimizar a questão dos erros vinculados a
realização de estimativas em projetos de desenvolvimento de software utilizando as
técnicas de Redes Bayesianas e Sistemas Dinâmicos. Todavia, poucos deles
preocupam-se em descrever o porquê e que fatores motivaram a escolha de
utilização destas técnicas.
Tendo em vista isto, este trabalho se propôs a balizar as futuras pesquisas
quando da escolha de uma destas técnicas analisadas, através da analise realizada
neste trabalho. Esta pesquisa apresentou também modelos propostos em redes
bayesianas para situações retratadas apenas em sistemas dinâmicos na literatura,
além da análise comparativa entre as ferramentas utilizadas, Vensim e Nética.
Ao final deste estudo, concluí-se que, devido a características já exploradas e
identificadas ao longo deste, a técnica de sistema dinâmico é mais indicada para a
análise do sistema como um todo, ou seja, na influência que uma variável pode
exercer no cenário inteiro ao longo do tempo estabelecido. Para verificar de forma
rápida, por exemplo, a influência de um novo recurso no projeto, como ocorre no
modelo da Lei de Brooks, é mais fácil a visualização dos impactos nas demais
variáveis através do modelo de sistema dinâmico.
Já, a rede bayesiana é mais indicada para sistemas menores ou subsistemas,
para períodos de tempo mais imediatos e com necessidade de uma verificação mais
próxima, ou seja, para verificar a influência direta entre as variáveis ou eventos mais
exatos. No mesmo exemplo citado anteriormente, da Lei de Brooks, para verificar a
influência que a adição de um recurso exerce na carga de treinamento, é mais exata
a visualização na rede bayesiana.
Portanto, entende-se que, apesar das duas técnicas serem muito utilizadas, o
ideal seria que fossem aplicadas para objetivos de visualizações diferentes,
dependendo da situação que se deseja compreender. Por exemplo, para verificar de
forma rápido a influência do retrabalho em um projeto, de forma a identificar quais
48
suas causas, a modelagem em sistema dinâmico é mais indicada. Contudo, se a
intenção é saber com maior exatidão, qual a influência de uma variável específica
sobre o retrabalho, o melhor é a modelagem em redes bayesianas. Outro ponto
verificado é que, as duas técnicas são compatíveis no quesito referente à
possibilidade de modelagem de problemas iguais, alterando-se alguns pontos, no
entanto, são completamente diferentes quando da visualização dos resultados.
Como trabalhos futuros, pode-se considerar outras técnicas para
comparação, também utilizadas para realizar estimativas em projetos de software,
como a utilização de Redes Neurais, por exemplo, em relação as técnicas de Redes
Bayesianas e Sistemas Dinâmicos
49
REFERÊNCIA
ABDEL-HAMID, T. K.; MADNICK, S. E. Software Project Dynamics: An Integrated Approach. Englewood Cliffs, NJ: Prentice-Hall, 1991. BANKS, Jerry. Handbook of Simulation , Wiley, 1991. BARRY, Richmond. System Dynamics/Systems Thinking: Let's Just Get On With It, International Systems Dynamics Conference in Sterling, Scotland, 1994. BROOKS, F.P.; O Mítico Homen-Mês : Ensaios sobre a engenharia de software. Elsevier, 2009. CARNEIRO, Alexandre Lênin, Aprendizado automático em redes bayesianas , Dissertação de Mestrado em Ciência da Computação, Universidade de Brasília, Brasília, 1999. CHOI, KeungSik, BAE,Doo-Hwan, Dynamic project performance estimation by combining static estimation models with system dynamics, Information and Software Technology , V. 51, Issue 1, January 2009, Pages 162-172, 2009. CLEMENTES, P., L.M. Northrop, Software Product Lines - Practices and Patterns, Addison-Wesley, 2001. COSTA, Hua Lin Chang; Um Ambiente Cooperativo de Simulação para o Ensino de Gerência de Projeto de Software , Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2009. DEMARCO, Tom, Controle de Projetos de Software , Campus, 1991. FERNANDES, A C, Scorecard dinâmico: em direção à integração da dinâmica de sistemas com o balanced scorecard, Tese de doutorado, Programa de Engenharia de Produção, Rio de Janeiro, 2003. FREITAS, P.J, Introdução à Modelagem e Simulação de Sistemas. Visual Books- Santa Catarina, 2001. JAIN, R. The art of computer systems: Performance Analysis: Techniques for experimental design measurement, simulation and modeling. Wiley, New York, N.Y, 1991. JANISKI, Rafael, Explorando a Dinâmica da Produção de Serviços de Manutenção Industrial: Uma abordagem Sistêmica, Universidade Católica do Paraná, Paraná, 2006. KOEHLER, Cristiane, Modelagem de Redes Bayesianas a partir da Identific ação de Padrões em Base de Dados, Tese de Doutorado (Programa de Pós-Graduação em Computação) - Universidade Federal do Rio Grande do Sul, Porto Alegre, 2002.
50
LAW, A. M., W. D. Kelton, Simulation Modeling and Analysis, 3rd ed. McGraw-Hill, New York, 2000. LEHMAN, M.M, Process Models, Process Programs, Programming Suppo rt . In: Proceedings of the 9th International Conference on Software Engineering, Monterey, CA, 1987. MADACHY, Raymond J., Software Process Dynamics , IEEE Press Editorial Board, 2007. Oliveira, P. E. L.. Aplicação de Redes Bayesianas na Administração Estr atégica das Organizações , Dissertação de Pós-Graduação: Universidade Federal de Pernambuco. 2007 PRESSMAN, Roger S., Engenharia de Software, McGraw-Hill, 2006. RUS, I.; COLLOFELLO, J.; LAKEY, P, Software Process Simulation for Reliability Strategy Assessment, International Workshop on Software Process Simulation Modeling,1998. RUSSEL, J. Stuart; NORVING, Peter, Artifical Intelligence: A modern Approach, Prentice Hall , 2003. STERMAN, John. D. Business Dynamics: Systems Thinking and Modeling for a Complex World, McGraw-Hill. 2000. STERMAN, John. D. System Dynamics Modeling: Tools for learning in a complex world. California Management Review, 2001. TOTLAND, T; CONRAD, R. A Survey and Classification of Some Research Areas Relevant to Software Process Modeling, 4th European Workshop on Software Process Technology, Noordwijkerhout, Holland, April, 1995. VASQUEZ, Carlos E; SIMÕES, Guilherme S. Albert, Análise de Pontos de Função , Erica, 2005.