GERENCIAMENTO DE PROJETOS BASEADO EM CENÁRIOS: UMA ABORDAGEM DE MODELAGEM DINÂMICA E SIMULAÇÃO. Márcio de Oliveira Barros - PDF
GERENCIAMENTO DE PROJETOS BASEADO EM CENÁRIOS: UMA ABORDAGEM DE MODELAGEM DINÂMICA E SIMULAÇÃO. Márcio de Oliveira Barros
Download "GERENCIAMENTO DE PROJETOS BASEADO EM CENÁRIOS: UMA ABORDAGEM DE MODELAGEM DINÂMICA E SIMULAÇÃO. Márcio de Oliveira Barros"
Ricardo da Fonseca Aires
1 GERENCIAMENTO DE PROJETOS BASEADO EM CENÁRIOS: UMA ABORDAGEM DE MODELAGEM DINÂMICA E SIMULAÇÃO Márcio de Oliveira Barros TESE SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS PROGRAMAS DE PÓS-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE DOUTOR EM CIÊNCIAS EM ENGENHARIA DE SISTEMAS E COMPUTAÇÃO. Aprovada por: Prof. Cláudia Maria Lima Werner, D.Sc. Prof. Guilherme Horta Travassos, D.Sc. Prof. Ana Regina Cavalcanti da Rocha, D.Sc. Prof. Arndt von Staa, Ph.D. Prof. Paulo César Masiero, Ph.D. Prof. Hermano Perrelli de Moura, Ph.D. RIO DE JANEIRO, RJ BRASIL DEZEMBRO DE 2001
2 BARROS, MÁRCIO DE OLIVEIRA Gerenciamento de Projetos Baseado em Cenários: Uma Abordagem de Modelagem Dinâmica e Simulação [Rio de Janeiro] 2001 XI, 238 p., 29,7 cm (COPPE/UFRJ, D.Sc., Engenharia de Sistemas e Computação, 2001) Tese Universidade Federal do Rio de Janeiro, COPPE 1. Gerenciamento de Projetos de Software I. COPPE/UFRJ II. Título (série) ii
3 iii A meus pais.
4 AGRADECIMENTOS Ao longo de mais de quatro anos de trabalho, fico feliz em ter uma grande lista de pessoas a quem agradecer. Antes de mais nada, agradeço a Deus por ter possibilitado o início e a conclusão desta importante conquista em minha vida e pela inspiração nos momentos decisivos. À Prof. Cláudia Werner e ao Prof. Guilherme Travassos, pela orientação impecável ao longo de todo o processo de confecção desta tese. Em especial à Prof. Cláudia Werner, pela confiança no meu trabalho, aceitando um tema de tese tão diferente de sua linha principal de trabalho. Em especial ao Prof. Guilherme Travassos, pelas críticas (melhor aceitas no final do que no início do processo) e por me mostrar que os estudos experimentais podem funcionar na Engenharia de Software. À Prof. Ana Regina, pela contribuição ao meu aprendizado no decorrer dos cursos de Mestrado e Doutorado, pelas críticas construtivas recebidas desde o exame de qualificação e pela participação na banca examinadora da tese. Ao Prof. Arndt von Staa, pela participação na banca do exame de qualificação que precedeu esta tese e na banca examinadora da tese. Ao Prof. Paulo Masiero e ao Prof. Hermano Moura, pela participação na banca examinadora da tese. Ao Prof. Júlio Salek Aude, figura que sempre inspirou meu desenvolvimento na área acadêmica e que deixou um grande vazio nesta Universidade. A meus pais, pelo incentivo constante e pela compreensão no decorrer deste período. À Viviane, que acompanhou os dois últimos anos deste processo, pelo seu carinho e compreensão. À Prof. Shari Lawrence Pfleeger, por suas críticas, suas revisões e pelo apoio oferecido a esta tese. Aos participantes do estudo experimental realizado como parte deste trabalho, por sua preciosa colaboração. Ao pessoal do SIGA 2000, aos que ainda estão na COPPE e aos que já se formaram, em especial ao Alexandre Corrêa, Alexandre Dantas, Dênis Silveira, Gustavo Veronese, Hugo Vidal, José Ricardo, Leonardo Murta, Marcelo Costa, Marcos Mangan, Marcos Kalinovsky, Nelson Miller, Robson Pinheiro e Sômulo Mafra, pelo excelente ambiente de trabalho que me proporcionaram e pelos amigos que criei. Ao pessoal do grupo de reutilização de software, em especial à Prof. Regina Braga, Alessandréia de Oliveira e Luciana. Aos amigos da COPPE, pelo incentivo e motivação. À Franklin Gonçalves, por me mostrar a importância da modelagem quantitativa e de pensar nos fundamentos. iv
5 A Eduarda la Rocque, por me proporcionar conhecer o interessante domínio da análise de riscos, mesmo que não em software. À Ana Paula, por sempre estar disposta a ajudar. Ao pessoal da secretaria do Departamento de Engenharia de Sistemas e Computação, pelo auxílio sempre que necessário. À CAPES, pelo apoio financeiro ao desenvolvimento deste trabalho. Ao pessoal da RiskControl, em especial à César Aragão, Daniel Serman, Felipe Lourenço, Gustavo Machado, Luiz Eduardo, Marcelo de Paula, Rafael Cruz, Rosane Bensusan, pelas informações sobre a análise de riscos no mercado financeiro. Aos meus amigos Cláudio Miguel, Mário João, Roberto Nunes, Rodolfo Lima, Luiz Otávio, Roberta Cardim, pelos ótimos momentos de amizade e pelos incentivos. A todos que, ao longo deste período, estiveram torcendo por mim. v
6 Resumo da Tese apresentada à COPPE/UFRJ como parte dos requisitos necessários para a obtenção do grau de Doutor em Ciências (D.Sc.) GERENCIAMENTO DE PROJETOS BASEADO EM CENÁRIOS: UMA ABORDAGEM DE MODELAGEM DINÂMICA E SIMULAÇÃO Márcio de Oliveira Barros Dezembro / 2001 Orientadores: Cláudia Maria Lima Werner Guilherme Horta Travassos Programa: Engenharia de Sistemas e Computação O gerenciamento de projetos é uma atividade fortemente baseada em conhecimento. Os gerentes utilizam suas habilidades e sua experiência para tomar decisões durante a execução de um processo de desenvolvimento de software. Geralmente, os gerentes experientes obtém mais sucesso que os gerentes novatos em termos de atingir metas de cronograma, custos e funcionalidade. Estes melhores resultados são atingidos devido à experiência acumulada ao longo de situações ocorridas em projetos no passado e no conhecimento derivado destas experiências. Nesta tese, abordamos a criação e reutilização de conhecimento relacionado com o gerenciamento de projetos de desenvolvimento de software. Apresentamos uma representação para este tipo de conhecimento, os modelos de cenários, que permitem que um gerente verifique o impacto de teorias, procedimentos, ações e estratégias gerenciais que podem ser aplicadas ou impostas sobre um projeto de software. Os modelos de cenário são descritos através de formulações matemáticas e avaliados através de simulações. Os modelos de cenário compõem um repositório de conhecimento reutilizável para os gerentes de projeto, que podem utilizar os cenários para determinar o impacto de suas incertezas sobre seus projetos. Apresentamos os resultados de um estudo experimental para análise da viabilidade das técnicas propostas e uma aplicação da abordagem proposta em um processo de gerenciamento de riscos. vi
7 Abstract of Thesis presented to COPPE/UFRJ as a partial fulfillment of the requirements for the degree of Doctor of Science (D.Sc.) SCENARIO BASED PROJECT MANAGEMENT: A DYNAMIC MODELING AND SIMULATION BASED APPROACH Márcio de Oliveira Barros December / 2001 Advisors: Cláudia Maria Lima Werner Guilherme Horta Travassos Department: Computer and Systems Engineering Project management is a knowledge intensive activity. Managers use their skills and experience to make decisions during the execution of a software development process. Usually experienced managers perform better than novice managers in terms of attending to project schedule, budget, and functionality. Such better results are achieved due senior managers accumulated experiences and the knowledge that they can derive from situations faced in past projects. We address the creation and reuse of software project management knowledge. We present a knowledge representation, namely scenario models, which allows a manager to verify the impact of theories, procedures, actions, and strategies that can be applied or imposed upon a software project. Scenario models are represented by mathematical formulations and evaluated through simulations. Scenario models compose a reusable knowledge base useful for project managers, who can reuse scenarios to assess the impact of their assumptions upon their projects. We present an application of the proposed approach within a risk management process and the results from an experimental analysis of the techniques. vii
8 ÍNDICE: 1 Introdução Motivação Objetivos desta Tese Soluções Propostas Justificativa Organização deste Documento Uma Visão Sistêmica do Gerenciamento de Projetos de Software Sistemas e Modelos Classificação dos Modelos Explícitos Avaliação do Comportamento de Modelos Formais O Pensamento Sistêmico e o Processo de Desenvolvimento de Software Componentes Interrelacionados Dinâmica Ciclos de Realimentação Relações Não-Lineares Aspectos Qualitativos Aplicações de Modelos no Processo de Desenvolvimento de Software Planejamento e Controle Treinamento Políticas de Aprimoramento de Processo Técnicas de Modelagem Aplicadas em Software Modelos de Eventos Discretos Modelos Baseados em Diagramas de Estado Modelos Baseados em Dinâmica de Sistemas Representação de Incerteza em Modelos Conclusão Análise de Riscos no Gerenciamento de Projetos de Software Categorias de Risco em Software Processos de Análise de Riscos Identificação de Riscos Representação de Riscos Reutilização de Riscos Avaliação de Riscos Planejamento de Riscos Controle de Riscos Conclusão Gerenciamento de Projetos Baseado em Cenários Os Modelos de Projeto Representação dos Modelos de Projeto Um Exemplo para Modelagem Definições O Processo de Modelagem Modelagem do Domínio Instanciação de Modelo Compilação do Modelo para Construtores da Dinâmica de Sistemas Uma Comparação com uma Abordagem Orientada a Objetos Os Modelos de Cenários Representação de Modelos de Cenários A Integração Entre Modelos de Projeto e Cenários O Processo de Otimização do Modelo Compilado Conclusão Estudo Experimental do Gerenciamento Baseado em Cenários Definição do Estudo Experimental Planejamento do Estudo Experimental viii
9 5.3 O Sistema Utilizado no Estudo Experimental Instanciação do Estudo Experimental Execução do Estudo Experimental Análise dos Resultados do Estudo Experimental Lições Aprendidas Conclusão Gerenciamento de Riscos Baseado em Cenários Arquétipos de Risco O Processo de Identificação de Riscos para Elementos de Projetos O Processo de Análise de Riscos para o Desenvolvimento de Aplicações Um Exemplo de Aplicação dos Processos de Análise de Riscos Estudos Futuros Uma Comparação com Outros Processos de Análise de Riscos Conclusões Contribuições da Tese Limitações das Técnicas Propostas Perspectivas Futuras Referências Bibliográficas Apêndice A - A Dinâmica de Sistemas A.1 Representação de Modelos de Dinâmica de Sistemas A.1.1 Diagramas de Causa e Efeito A.2 Formulação Matemática dos Modelos Apêndice B - Modelos Utilizados no Experimento Apêndice C - A Dinâmica Utilizada no Estudo Experimental C.1 Introdução C.2 O Processo de Desenvolvimento C.2.1 Sobre o Sistema Escolhido para o Estudo Experimental C.2.2 As Etapas e Atividades do Processo de Desenvolvimento C.3 A Dinâmica do Processo de Desenvolvimento C.3.1 Medida de Complexidade C.3.2 Complexidade pelo Processo de Desenvolvimento C.3.3 Produtividade C.3.4 Desenvolvedores C.3.5 Atividades do Processo C.3.6 Pontos de Discussão Apêndice D - Sintaxe BNF do Metamodelo da Dinâmica de Sistemas D.1 Sintaxe BNF para a Construção de Modelos de Domínio D.2 Sintaxe BNF para a Construção de Modelos de Cenário D.3 Sintaxe BNF para a Construção de Modelos e Integração de Cenários Apêndice E - As Ferramentas de Simulação E.1 O Simulador de Modelos da Dinâmica de Sistemas E.1.1 A Linguagem de Definição de Modelos E.1.2 O Simulador E.2 O Simulador Baseado no M etamodelo da Dinâmica de Sistemas E.3 O Emulador de Projetos Manager Master Apêndice F - Questionários Utilizados no Estudo Experimental Apêndice G - Exemplos de Arquétipos de Risco ix
10 ÍNDICE DE FIGURAS Figura A arquitetura do paradigma de gerenciamento de projetos de software baseado em cenários...65 Figura A representação espacial do modelo de projeto Figura Trecho de projeto utilizado nas definições das próximas seções Figura Processo de modelagem baseado no metamodelo da Dinâmica de Sistemas Figura Gráficos de simulação com e sem a ativação de cenários sobre um modelo de projeto...99 Figura Representação gráfica dos dados da Tabela Figura O processo genérico de reutilização de software (MURTA, 1999) Figura Um arquétipo de risco descrevendo o risco de validação Figura O processo para identificação dos riscos relacionados com um elemento de projeto Figura O processo de análise de riscos para o desenvolviment o de aplicações Figura Um exemplo de plano de tratamento de risco Figura Matriz de priorização de riscos do processo de KONTIO (1997) Figura Três primeiros estágios da geração da lista ordenada em uma matriz hipotética Figura A.1 - Um diagrama de causas e efeitos Figura A.2 - Feedback positivo no desenvolvimento de software Figura A.3 - Feedback negativo no desenvolvimento de software Figura A.4 - Blocos básicos dos modelos de dinâmica de sistemas Figura A.5 - Exemplo de diagrama de repositórios e fluxos Figura A.6 - Evolução no tempo do nível de um repositório com fluxo constante Figura A.7 - Evolução no tempo do nível de um ciclo de feedback positivo Figura A.8 - Evolução no tempo do nível de um ciclo de feedback negativo Figura E.1 - Tela principal do simulador com um trecho do modelo de Abdel-Hamid e Madnick Figura E.2 - Gráfico de análise do valor de variáveis no tempo Figura E.3 - O painel de configuração de cenários do gráfico de análise no tempo Figura E.4 - O painel de análise e exportação de dados Figura E.5 - Distribuição de probabilidade da data de fim de projeto Figura E.6 - Tela principal da ferramenta Hector Figura E.7 - Tela principal da ferramenta Manager Master x
11 ÍNDICE DE TABELAS Tabela 2.1- Classificação dos modelos formais Tabela Grau em que os tipos de modelos atendem aos requisitos Tabela As categorias de risco definididas por PRESSMAN (2000) Tabela As categorias de risco definidas por KAROLAK (1996) Tabela 3.3- As categorias de risco definidas por CONROW e SHISHIDO (1997) Tabela Taxonomia de risco do Software Engineering Institute (CARR et al., 1993) Tabela As categorias de risco definidas por HALL (1998) Tabela Resumo das principais características das abordagens de análise de riscos Tabela 4.1- Sintaxe BNF para os modelos de domínio Tabela Modelo simplificado para o domínio de gerenciamento de projetos de software...78 Tabela Um modelo para o domínio de gerenciamento de projetos de software...81 Tabela Sintaxe BNF para modelos utilizando um modelo de domínio Tabela Um modelo para o projeto proposto na Figura Tabela Modelo tradicional da Dinâmica de Sistemas gerado a partir do modelo da seção Tabela Modelo gerado para a instância do desenvolvedor D Tabela Modelo gerado para a instância da atividade de codificação Tabela Cenário que representa o efeito do tempo de participação no projeto sobre a produtividade Tabela Equação de produtividade de um desenvolvedor após a integração do cenário...95 Tabela Efeito da ordem de aplicação em dois cenários hipotéticos Tabela Cenários que representam o traba lho em horas extras e a exaustão de desenvolvedores Tabela Ativação de cenários sobre instâncias do modelo de projeto...98 Tabela Equações que descrevem o desenvolvedor D1 após a integração do cenário da Tabela Tabela Equações do modelo apresentado na Tabela 4.14 após a otimização Tabela 5.1- Resumo da formação e da experiência dos participantes do estudo experimental Tabela Perfil completo dos participantes do estudo experimental Tabela 5.3- Resumo da formação dos grupos no estudo experimental Tabela Tempo e custo obtido por cada participante (após o corte de valores extremos) Tabela Estatísticas descritivas dos dados quantitativos coletados durante o estudo experimental Tabela Resultados intermediários do teste T (FREUND e PERLES, 1999) Tabela Resultados intermediários do teste de Mann-Whitney (WOHLIN et al., 2000) Tabela 6.1- Comparação do processo proposto com outros processos de análise de riscos Tabela C.1 - Pontos de função decorrentes dos arquivos internos do sistema CtrlPESC Tabela C.2 - Pontos de função decorrentes de consultas e operações de cadastramento Tabela C.3 -Fatores de ajuste do números de pontos de função do sistema CtrlPESC Tabela C.4 - Divisão da complexidade pelos artefatos componentes do sistema CtrlPESC Tabela C.5 -Percentual estimado do tempo de projeto dedicado por atividade Tabela C.6 - Percentual estimado do tempo de projeto dedicado por atividade (após o mapeamento) Tabela C.7 - Percentual estimado do tempo de projeto dedicado a cada atividade do sistema CtrlPESC Tabela C.8 - Produtividade de desenvolvedores em projetos com até 100 pontos de função Tabela C.9 - Função de distribuição de probabilidade que modela a produtividade dos desenvolvedores..200 Tabela C.10 - Curva de aprendizado ao longo da execução do projeto Tabela C.11 - Modificador da taxa de geração de erros pelo número horas de trabalho diário Tabela C.12 - Modificador de exaustão devido ao tempo de trabalho diário Tabela C.13 - Percentual de erros ativos ao longo de uma atividade Tabela C.14 - Taxa de regeneração de erros ativos de acordo com a densidade de erros Tabela C.15 - Número de erros gerado por pontos de função por atividade Tabela C.16 - Número de erros por atividade do processo do sistema CtrlPESC Tabela C.17 - Número de erros gerados por pontos de função em cada atividade Tabela E.1 - Sintaxe da linguagem de descrição de modelos dinâmicos Tabela E.2 - Trecho do modelo de Abdel-Hamid e Madnick descrito na linguagem do simulador xi
12 Are we then creatures of action? Do we say that we desire those accepted clichés of comfort when, in fact, it is the challenge and the adventure that truly give us life? Drizzt Do Urden (Legacy of the Drow) xii
13 1 Introdução 1.1 Motivação O estado da prática e a literatura contemporânea comprovam a persistência de um conhecido problema no desenvolvimento de software: muitos projetos consomem mais recursos do que o planejado, demoram mais tempo para serem realizados, possuem menos funções e menor qualidade do que o esperado. Relatos de insucesso na produção de sistemas de software podem ser encontrados em diversos estudos de casos e experimentos documentados ao longo dos últimos anos (STANDISH GROUP, 1994) (CHARETTE, 1996) (LAFLEUR, 1996) (GROSS et al., 1999). Este panorama é particularmente perceptível em projetos complexos, de larga escala ou inovadores. Duas linhas de estudo apresentam opiniões distintas sobre os fatores responsáveis pelos insucessos no desenvolvimento de software na indústria. A primeira linha de estudos associa estas falhas a problemas tecnológicos, agravados pela crescente complexidade dos produtos desenvolvidos (AUGUSTINE, 1982). A segunda linha de estudos transfere a responsabilidade para os problemas de gerenciamento, falta ou excesso de comunicação e dificuldades no tratamento das incertezas que se apresentam nos projetos de software (BROWN, 1996, ROYCE, 1998) (REEL, 1999). As técnicas atualmente aplicadas no gerenciamento de projetos de software foram desenvolvidas nas décadas de 1950 e 1960, para possibilitar a realização de projetos avançados da marinha e da força aérea americanas. Estas técnicas incluem as estruturas de decomposição de projetos, os diagramas de PERT/CPM e os diagramas de alocação de recursos. Estas técnicas assumem algumas premissas que devem ser atendidas pelos projetos para que seu gerenciamento através das técnicas seja eficaz. Estas premissas exigem que os projetos possuam objetivos claros e bem delimitados, que exista pelo menos uma solução conhecida para os problemas abordados, que o cronograma e os recursos necessários para a realização do projeto possam ser estabelecidos antes de seu início, que o ambiente operacional do projeto seja conhecido e que métricas para quantific ar o sucesso do projeto possam ser estabelecidas. As premissas das técnicas de gerenciamento atuais não são facilmente encontradas em projetos de software. O desenvolvimento de projetos em domínios de aplicação inovadores, em domínios com alta volatilidade de requisitos, a necessidade de - 1 -
14 integração de diversos domínios para atender aos requisitos do projeto, incertezas, ambigüidades, complexidade, quebra de continuidade, falta de economia de escala, a existência de relações não lineares e de ciclos complexos de realimentação (feedback loops) são características de projetos de software de larga escala. Estas características invalidam os requisitos para a aplicação das técnicas tradicionais de gerenciamento de projetos, que podem funcionar na teoria, mas não são diretamente aplicáveis na prática. Entretanto, devido ao sucesso de alguns projetos que utilizaram estas técnicas, os gerentes tendem a aceitar suas premissas como presentes em todos os projetos (CHARETTE, 1996). Esta falha de interpretação é comum em projetos de software. O gerenciamento de projetos de software é uma atividade fortemente baseada em conhecimento, onde os gerentes utilizam suas habilidades e sua experiência para tomar decisões enquanto a equipe executa o processo de desenvolvimento de software. Observa-se que os gerentes mais experientes geralmente obtém mais sucesso no controle de projetos de software do que os gerentes inexperientes. Devido às experiências acumuladas ao longo de diversos projetos realizados no passado e ao conhecimento adquirido através destas experiências, os gerentes mais experientes são capazes de perceber determinados aspectos do processo de desenvolvimento que permanecem invisíveis para outros gerentes. O planejamento e controle do projeto passam a considerar estes aspectos, que de outra forma seriam desprezados. O modelo de decisão baseado em reconhecimento de padrões 1, proposto por KLEIN (1998), sugere que os gerentes mantêm uma coleção de padrões em suas mentes e comparam estes padrões ao contexto em que se encontram quando uma decisão se faz necessária. O conhecimento gerencial, contido no repositório mental de experiências dos gerentes experientes, é um recurso valioso. Sua importância para o sucesso de projetos de desenvolvimento de software cria a demanda por uma técnica para representação, armazenamento e reutilização destes padrões mentais, que permita que gerentes menos experientes compartilhem o conhecimento dos especialistas. Os gerentes de projeto mais experientes geralmente realizam este processo de tomada de decisão mentalmente. Eles constróem um modelo mental do projeto sob análise, criam modelos mentais para os problemas e oportunidades que estão sendo investigados e buscam, dentre os padrões de seu repositório mental, ações adequadas 1 No original, recognition-primed decision model
15 para serem tomadas para resolver os problemas e para explorar as oportunidades. Entretanto, como um modelo mental não pode ser diretamente reutilizado por gerentes menos experientes, precisamos de uma representação explícita para o conhecimento tácito dos gerentes experie ntes, assim como uma técnica que permita a avaliação do impacto destes problemas e oportunidades sobre um projeto de desenvolvimento de software. 1.2 Objetivos desta Tese O principal objetivo desta tese é a definição de uma representação para o conhecimento aplicável no gerenciamento de projetos de desenvolvimento de software. Pretende-se definir as bases de um paradigma de gerenciamento de projetos, onde o conhecimento dos gerentes mais experientes é descrito segundo a representação proposta e reutilizado por gerentes novatos, que o aplicam em seus projetos. Para tanto, torna-se necessário que a representação a ser definida permita o auxílio automatizado ao processo de transferência de conhecimento entre gerentes experientes e gerentes novatos. Neste contexto, definimos a transferência de conhecimento como o processo que transforma a informação, que é o elemento representado sob algum formato computacional, em conhecimento de fato, que se reflete no entendimento do gerente dos efeitos decorrentes da aplicação desta informação sobre seu projeto. Pretende-se definir mecanismos que permitam que os gerentes novatos avaliem o impacto da aplicação do conhecimento gerencial reutilizado no contexto de seus projetos, antes de esta aplicação seja feita no projeto real. A necessidade de automação do processo de transferência de conhecimento exige que a representação a ser proposta seja formal. Do contrário, esta representação poderia permitir ambigüidades, limitando assim os resultados que poderiam ser esperados dos mecanismos de avaliação do seu impacto sobre um projeto (contexto do gerente). Dois objetivos complementares suportam o principal objetivo desta tese: a construção de ferramentas de suporte ao paradigma proposto e a avaliação de sua viabilidade através da realização de estudos experimentais. O primeiro requisito visa a construção de ferramentas que, em um primeiro estágio, teriam como objetivo permitir a utilização em laboratório da representação e das técnicas de transferência de conhecimento sendo propostas. O segundo requisito visa determinar, ainda que com limitado poder de conclusão, se o objetivo principal foi atingido em algum grau
16 Um último objetivo desta tese se refere à aplicação das técnicas propostas em um processo de análise de riscos (HALL, 1998; ABNT, 2000). A análise de riscos foi selecionada devido à importância da existência de conhecimento (na forma de especialistas, experiências anteriores, literatura, entre outras) para sua efetiva aplicação. Assim, pretende-se definir um processo de análise de riscos baseado na descrição dos riscos que podem afetar um projeto e de suas estratégias de resolução segundo a representação de conhecimento gerencial proposta. 1.3 Soluções Propostas Propomos o gerenciamento de projetos baseado em cenários, um paradigma para a gerência de projetos de desenvolvimento de software que sugere que um gerente especifique o comportamento esperado para um projeto de forma independente dos problemas e oportunidades que podem afetar este projeto. Entretanto, como estes eventos incertos podem ocorrer durante a execução do projeto, afetando o seu comportamento, o gerente deve testar a sensibilidade do projeto à ocorrência de combinações destes problemas e oportunidades. No paradigma do gerenciamento de projetos baseado em cenários, os problemas e oportunidades que podem afetar o comportamento de um projeto são representados por cenários. Os cenários contêm conhecimento gerencial reutilizável por diversos projetos. Técnicas de modelagem formal e de simulação suportam o paradigma proposto. O projeto e os cenários são representados por modelos dinâmicos de projetos de software. Estes modelos descrevem as leis e políticas que regem a evolução de um projeto através de postulações lógicas e algébricas, representadas em um conjunto de equações. Estas equações permitem a estimação dos resultados de um projeto, com seu custo e tempo de desenvolvimento, a partir de seus parâmetros, como o tempo necessário para a realização de cada atividade, as relações entre as atividades e a equipe disponível. Os modelos propostos descrevem formalmente as relações, lineares e não lineares, e os ciclos de feedback existentes entre estes elementos. Estes modelos também são capazes de representar as incertezas inerentes a estes elementos na forma de distribuições de probabilidade. Entretanto, as técnicas que são aplicadas atualmente na modelagem dinâmica de projetos de software possuem algumas limitações que inibem seu uso prático na gerência de projetos. Entre estas limitações, podemos citar a dificuldade de construção dos modelos, a incapacidade de representar detalhes e limitações na representação de - 4 -
17 conhecimento. Apresentamos um processo de modelagem que procura suprir estas limitações. Este processo de modelagem é utilizado na definição dos modelos de projeto e de cenários. A sensibilidade de um projeto a um cenário é avaliada através da integração do modelo que representa o projeto com o modelo que representa o cenário. Técnicas de simulação permitem a análise do comportamento dos modelos. Primeiro, o modelo que representa o projeto é simulado isoladamente, apresentando o comportamento do projeto sem cenários. Em seguida, o modelo é integrado ao modelo que representa o cenário, sendo novamente simulado. A segunda simulação, quando comparada a primeira, apresenta os efeitos da ocorrência do cenário sobre o projeto. Para avaliar a viabilidade e utilidade das técnicas de integração e simulação de modelos de projeto e cenário realizamos um estudo experimental. Os participantes do estudo foram solicitados a gerenciar um projeto de desenvolvimento de software, controlado por um emulador de projetos. Um grupo de participantes aplicou as técnicas de integração e simulação de cenários para apoiar suas decisões de projeto, enquanto os demais participantes se basearam apenas em sua experiência para a tomada de decisões. Finalmente, apresentamos um processo de análise de riscos que utiliza modelos de cenários para descrever o impacto dos riscos, de seus planos de contenção e contingência sobre um projeto. Os riscos que podem afetar um projeto são documentados através de uma estrutura de dados padronizada, denominada arquétipo de risco. Esta estrutura organiza as informações disponíveis sobre cada risco, tais como mecanismos para identificação em um projeto, seu contexto e possíveis estratégias de contenção e contingência. O processo de análise de riscos é dividido em dois subprocessos: um para identificação dos riscos e outro para determinação de riscos que podem afetar uma aplicação. Os dois processos de análise de risco são organizados como um processo genérico de reutilização, onde o primeiro processo gera artefatos reutilizáveis os arquétipos de risco que são consumidos pelo segundo processo. 1.4 Justificativa A justificativa para a realização deste trabalho pode ser rastreada de origens distintas. A principal delas talvez seja a constatação das dificuldades relacionadas com o gerenciamento de projetos de desenvolvimento de software e sua importância para o sucesso dos projetos. Esta importância foi verificada ao longo de diversos projetos em que tivemos a oportunidade de participar ou acompanhar na indústria de software
18 Mesmo nos sistemas mais complexos, os blocos formadores do software resultante podiam ser descritos de forma relativamente simples. Por que então tantos problemas surgiam quando estes blocos tinham que ser desenvolvidos e integrados? Por que os desenvolvedores tinham que trabalhar 14 horas por dia para atender ao cronograma previamente planejado por eles próprios? Aparentemente, os principais problemas vinham da coordenação de um conjunto de desenvolvedores, da integração dos blocos construídos e, principalmente, do volume de incertezas que assaltavam os projetos ao longo de seu desenvolvimento. A necessidade de organização e a dificuldade em obter maior controle sobre as incertezas utilizando as técnicas tradicionais de gerenciamento de projetos foi assim constatada. Pela importância dada ao tratamento das incertezas que se apresentam ao longo de um projeto de software, consideramos que a análise de riscos, ou seja, o processo que auxilia na identificação e resolução das incertezas que podem causar prejuízos a um projeto, é fundamental para o sucesso dos projetos de software. Entretanto, analisando a literatura sobre o tema, descobrimos que diversas abordagens adotam simplificações que dificultam sua aplicação prática em projetos reais. As limitações e vantagens de diversas técnicas de análise de riscos no desenvolvimento de software são analisadas nesta tese. Passamos então a estudar como a análise de riscos é realizada em outras áreas do conhecimento. Uma área que chamou nossa atenção foi a análise de riscos no mercado financeiro. Empresas de médio e grande porte, que possuem dívidas em moedas estrangeiras, indexadas a taxas que flutuam de acordo com o mercado internacional ou que negociam seus produtos com empresas em outros países, compram instrumentos financeiros para se protegerem dos prejuízos potenciais advindos de variações nestas taxas de juros e de câmbio. Os instrumentos financeiros são oferecidos por bancos de investimento e seguradoras, interessados em assumir o risco da operação contratada pela empresa em troca de uma taxa de compensação (preço do seguro). Entretanto, como o risco é o produto negociado entre as duas partes, ambas devem estar cientes do que estão negociando. Assim, a avaliação de riscos no mercado financeiro evoluiu muito nas últimas décadas. As técnicas de análise de riscos no mercado financeiro se baseiam na modelagem formal dos instrumentos envolvidos, na determinação dos fatores que podem impor riscos a estes instrumentos, na modelagem da incerteza destes fatores e na avaliação do efeito conjunto de diversos fatores sobre os instrumentos financeiros. Em síntese, as - 6 -
19 técnicas de análise de riscos se baseiam em modelagem formal, análise estatística e simulação. Existem algumas dificuldades na aplicação destas técnicas no desenvolvimento de software. O corpo de conhecimento disponível sobre os riscos que podem afetar um projeto de software é muito subjetivo e disperso, quando comparado aos riscos que podem afetar os instrumentos do mercado financeiro. Nos últimos, existem contratos não ambíguos descrevendo os instrumentos, o que permite sua modelagem matemática e sua avaliação em diferentes contextos de mercado (taxas de juros mais altas, taxas de câmbio mais baixas, entre outros). O conhecimento subjetivo e descrito de forma ambígua dificulta a modelagem das incertezas que se apresentam para um projeto de desenvolvimento de software. Entretanto, acreditamos que, mesmo com estas dificuldades, a modelagem formal é extremamente importante. É difícil apresentar justificativas para a modelagem formal sem citar a célebre frase de Lorde Kelvin sobre a necessidade de formalização do conhecimento. Quando se pode medir um elemento sob análise e expressar este elemento em números, é possível demonstrar algum conhecimento sobre o elemento. Mas quando não se pode medir o elemento sob análise, nem expressar suas propriedades em termos numéricos, o conhecimento sobre ele é reduzido e insatisfatório: este pode ser o início de algum conhecimento, mas ainda está muito distante do estágio de ciência. 2 Se ainda não temos um nível de formalização de conhecimento requerido para a construção de modelos fiéis das incertezas que podem afetar um processo de desenvolvimento de software, talvez possamos atingir este patamar começando por modelos simples, que seriam refinados ao longo de diversos anos de pesquisa. Entretanto, para começar a trilhar este caminho, precisamos de uma representação formal para o conhecimento sobre a gerência de projetos de software. O percurso deste caminho já havia começado quando realizamos nossos primeiros passos. Muitos autores já haviam desenvolvido modelos complexos para projetos de software, notoriamente ABDEL-HAMID e MADNICK (1991), com seu modelo baseado na Dinâmica de Sistemas. Entretanto, percebemos algumas dificuldades na interpretação e extensão destes modelos. Estas dificuldades e as soluções propostas para elas, assim como as limitações destas soluções, são apresentadas nesta tese. 2 Tradução livre
20 Nossa precedente formação em reutilização de software também influenciou fortemente este trabalho. Estamos tratando de modelos de conhecimento e na utilização destes modelos de conhecimento em contextos distintos dos quais eles foram originalmente projetados. O gerenciamento do conhecimento disponível em uma organização é fundamental, mas este conhecimento deve estar expresso de forma que possa ser transferido para seus interessados. Acreditamos que as técnicas de reutilização de software podem auxiliar neste processo de transferência, formando a base do processo com que os modelos de conhecimento são construídos e utilizados. 1.5 Organização deste Documento Este documento está organizado em sete capítulos e sete apêndices. O primeiro capítulo contém esta introdução. O Capítulo 2 apresenta uma visão sistêmica do gerenciamento de projetos de desenvolvimento de software, enfatizando a necessidade de modelos formais para a representação das relações complexas existentes entre os elementos que compõem um projeto. O capítulo contém uma revisão bibliográfica sobre algumas técnicas de modelagem de sistemas e suas aplicações na descrição de projetos de software, identificando alguns requisitos desejáveis para que uma técnica de modelagem seja aplicada neste domínio. O Capítulo 3 apresenta uma revisão bibliográfica sobre o estado da arte no gerenciamento de riscos de projetos de desenvolvimento de software, identificando as principais características dos processos de gerenciamento de risco encontrados na literatura da Engenharia de Software e ressaltando alguns pontos em que estes processos podem ser aprimorados. O Capítulo 4 descreve o paradigma do gerenciamento de projetos de software baseado em cenários, apresentando os modelos utilizados por ele e o processo de modelagem que procura atender aos requisitos apresentados no Capítulo 2. O Capítulo 5 apresenta o planejamento e os resultados do estudo experimental de viabilidade da aplicação das técnicas propostas no Capítulo 4 no gerenciamento de projetos de desenvolvimento de software. O estudo foi realizado em meio acadêmico e contou com a participação de 18 desenvolvedores de software, que atuaram como gerentes de um projeto proposto pelo estudo. O Capítulo 6 apresenta a aplicação das técnicas propostas no Capítulo 4 na definição de um processo de análise de riscos. Neste processo, os modelos formais do - 8 -