Simulação de Projetos Conceitos e Aplicações Thierry Araujo [email protected] Verlaynne Rocha [email protected] Roteiro Conceitos ◦ Motivação ◦ Simulação ◦ Modelagem de sistemas Modelos Mentais e Explícitos Modelos Informais e Formais Modelos Estáticos e Dinâmicos Modelos Discretos e Contínuos ◦ Modelagem de processos de software • Eventos Discretos Simulação Baseada em Regras Modelos Baseados em Diagramas de Estados Modelos Baseados na Dinâmica de sistemas Aplicações – Vensim – Crystal Ball – Jogos • SIMSE • Incredible Manager • Virtual Team Conceitos Motivação A indústria de software está cada vez mais interessada em diminuir os custos de produção e aumentar a qualidade dos seus produtos[Gue06]. Variáveis de Interesse conflitantes [Ins04] Motivação Na tentativa de suprir essa necessidade vem surgindo novos modelos de desenvolvimento. No entanto, para testar a eficiência dos modelos ou processos é necessário o amadurecimento desses na organização. Vale a pena correr o risco? Motivação 50% dos projetos de software custam o dobro do orçamento que foi estimado. [price waterhouse coopers 2004] Motivação Simuladores podem ajudar nesse processo pois permitem a aplicação e teste de um processo em ambiente virtual onde os recursos envolvidos não são reais e o tempo de simulação, comparado ao tempo real, é curto. Motivação Alguns propósitos para os quais a simulação pode ser utilizada na área de gerência de projetos [KMR99]: ◦ ◦ ◦ ◦ ◦ Planejamento Gerenciamento e controle operacional Melhoria de processo e inovação tecnológica Entendimento de um processo Treinamento e aprendizado Simulação A simulação é um processo que reproduz o comportamento de um sistema [Gue06]. Uso de simuladores teve início na década de 50. Inspirados em Jogos de Guerra que eram utilizados na formação de oficiais das forças armadas [War07]. São bastante úteis em situações em que testar do ambiente real pode ser inviável, caro ou perigoso. Por que simular? Equipamento para simulação de cirurgia endoscópica desenvolvido na Alemanha em parceria com a Universidade de Karlsruhe (VEST - Virtual Endoscopic Surgery Training). Por que simular? Simuladores de Voo Por que simular? Teste com carros Modelagem de Sistemas Um sistema representa uma parte da realidade, sendo formado por componentes que interagem entre si para realizar tarefas que não podem ser realizadas isoladamente [Bar01]. Podem ser classificados como abertos e fechados e se diferenciam, pois o primeiro possui ciclos de realimentação (feedback). Modelagem de Sistemas Todo modelo é, por sua vez, a representação simplificada de um sistema. Seja ele um sistema ecológico, social, uma empresa, ou mesmo, um projeto de software [GUE06]. São utilizados para analisar o sistema, sem que seja necessário realizar as atividades na prática. Classificação de Modelos Mentais Explícitos Formais Estáticos Informais Dinâmicos Discretos Contínuos Modelos Mentais Representam a percepção que o indivíduo forma a respeito das interações entre os componentes de um sistema e do comportamento resultante dessas interações. São flexíveis, podendo ser adaptados através de simplificação ou expansão. São modelos restritos devido a incapacidade humana de lidar com um grande número de fatores distintos [Bar01]. Tratam-se portanto de modelos simples, que consideram poucos componentes e relações entre eles. Residem no conhecimento tácito de cada indivíduo, sendo difícil de compartilhar e validar. Modelos Explícitos São representações dos modelos reais em uma linguagem capaz de ser compartilhada com outros indivíduos. Possuem um conjunto de símbolos e semânticas, e são úteis para representação, validação e difusão do conhecimento. Podem ser classificados em Formais e Informais. Modelos Mentais X Modelos Explícitos Segundo Sterman e Forrester, os modelos explícitos são limitados a influenciar os modelos mentais, visto que nenhuma decisão é tomada a partir deles, mas a partir dos modelos mentais [Gue06]. Modelos Informais Possuem uma semântica pouco esquematizada, com possíveis ambigüidades, sendo portanto pouco utilizados em simulação por computador. No entanto, podem ser entendidos e executados por pessoas que entendam sua semântica dentro de uma organização. Modelos informais têm sido utilizados para formalizar processos produtivos, em especial a Engenharia e Software[Gue06] Modelos Informais Modelagem de processos de software normalmente possuem uma linguagem gráfica. Vários tipos de diagrama foram utilizados com esse fim ao longo do tempo, por exemplo o DFD – Diagrama de Fluxo de Dados e UML . UML tem sido utilizada tanto para modelar as várias formas de observar um sistema de software, quanto para modelagem de processos, através de mecanismos de extensão (profiles). Modelos Formais São modelos que são capazes de serem executados computacionalmente. Possuem semântica não ambígua, podendo ser transformados em definições matemáticas passíveis de simulação. Podem ser classificados como estáticos e dinâmicos Modelos Estáticos X Modelos Dinâmicos Modelos Estáticos ◦ São os modelos formais nos quais as variáveis não sofrem alterações ao longo do tempo. Modelos Dinâmicos ◦ Podem sofrer alterações em suas variáveis à medida que a simulação ocorre. ◦ Dividem-se em discretos e contínuos de acordo com a forma em que as mudanças de estado ocorrem. Modelos Discretos Modelos Contínuos Modelos Discretos ◦ O intervalo de tempo entre as ocorrências de mudança de estado não é previamente definido. Modelos Contínuos ◦ As mudanças de estado ocorrem em um intervalo de tempo constante. Simulação Computacional A simulação computacional é um processo que reproduz o comportamento de um sistema através de operações numéricas realizadas por computador [Mar97]. A simulação pode ser utilizada para verificação do modelo, especialmente quanto o efeito das interações entre os componentes e o sistema como um todo, apresentam-se separadas no tempo e no espaço [Bar01]. As técnicas de simulação podem ser classificadas em: ◦ Simulação discreta ◦ Simulação Contínua Simulação Discreta O simulador possui uma fila de eventos ordenada pelo tempo para a ocorrência do evento. Em cada iteração do processo de simulação, é tratado o primeiro evento da fila, adiantando um relógio interno até o próximo instante de ocorrência de cada evento. As variáveis do modelo são atualizadas de acordo com o evento. O tratamento de um evento pode gerar novos eventos que vão para o final da fila. A simulação acaba de acordo com um tempo pré-determinado ou quando não há mais eventos a serem tratados. Simulação Discreta Um exemplo de interpretação desses eventos poderia ser uma lista de atividades para execução de um determinado projeto. Sistemas baseados em regras são um caso particular de simulação discreta. Simulação Contínua Ocorrem em intervalos de tempo infinitesimais, constantes e previamente determinados. As variáveis são alteradas a cada iteração da simulação. A simulação termina após o fim do número de iterações previstos para a simulação [Bar01]. Dinâmica de Sistemas É uma disciplina criada na década de 50 por Forrester [For61], no MIT. Apresenta um conjunto de ferramentas que nos permite entender a estrutura e a dinâmica de um sistema de dinâmica complexa [Ste00]. Sistema de dinâmica complexa é um sistema com componentes ou atividades inter-relacionadas, cujas relações não são lineares, e possuem relação causaefeito distantes do tempo, além de possuírem realimentações. Dinâmica de Sistemas Essa técnica pode ser aplicada para entender e influenciar o comportamento de um sistema ao longo do tempo. Forrester criou essa técnica após observar que as dificuldades enfrentadas pelos gerentes seriam advindas não do lado da engenharia, mas do lado do gerenciamento, dado que os sistemas sociais são muito mais árduos de se entender que os sistemas físicos [Gue06]. Dinâmica de Sistemas A dinâmica de sistemas disponibiliza dois tipos de diagramas: Diagramas de Causa e Efeito e Diagramas de Repositório e Fluxo. Diagramas de Causa e Efeito Apresentam os diversos componentes de um sistema e os efeitos que a acumulação ou redução no volume de um componente provoca sobre os demais componentes do sistema[Bar01]. São o mecanismo mais simples para representação de modelos de dinâmica de sistemas[Bar01]. Diagramas de Causa e Efeito Um diagrama de causas e efeitos Diagramas de Causa e Efeito Feadback positivo no desenvolvimento de software [Bar01] Feadback negativo no desenvolvimento de software [Bar01] Diagramas de Causa e Efeito Devido a sua simplicidade diagramas de causa e efeito são normalmente utilizados para explicar o conhecimento extraído do modelo, mas não servem para serem utilizados para análise de regras e simulações [Alb97]. Diagramas Repositório e Fluxo Os diagramas de repositórios e fluxos apresentam um nível de detalhe maior que os diagramas de causa e efeito, forçando o responsável pela modelagem a refinar sua definição da estrutura do sistema [Alb,97]. Estes diagramas são compostos por quatro blocos básicos – repositórios, fluxos, processos e conectores – e dois elementos complementares – os produtores e os consumidores infinitos. Diagramas Repositório e Fluxo Exemplo de diagrama de repositórios e fluxos Blocos básicos dos modelos de dinâmica de sistemas Modelagem de Processos de Software Modelos de Eventos discretos Modelos Baseados em Diagramas de Estado Modelos Baseados em Dinâmica de Sistemas Modelagem de Processos de Software Modelos de Eventos discretos Exemplos de eventos relevantes em um projeto de desenvolvimento de software: o início da execução de uma tarefa, a conclusão de uma tarefa, a contratação de um desenvolvedor, a chegada de um recurso, etc. Cada evento relevante para um modelo contém um procedimento associado que indica as alterações realizadas sobre os valores das variáveis do modelo e as características de novos eventos gerados em decorrência destas alterações. Modelagem de Processos de Software Modelos Baseados em Diagramas de Estado Um diagrama de estados é uma ferramenta de modelagem que apresenta os diversos estados em que um conjunto de entidades pode se encontrar ao longo de sua existência, e as possíveis transições entre estes estados. As transições entre estados são disparadas por eventos, cuja ocorrência é determinada por condições de guarda. Uma condição de guarda é uma expressão lógica geralmente dependente do estado do sistema e avaliada periodicamente durante uma simulação. Modelagem de Processos de Software Modelos Baseados em Diagramas de Estado Os diagramas de estado podem ser decompostos hierarquicamente. Os estados dos componentes são representados por diagramas de estados independentes. O conjunto destes diagramas forma o diagrama de estados do sistema. Os diagramas de estado também permitem a descrição de ciclos de realimentação através de ciclos de transição. Modelagem de Processos de Software Modelos Baseados em Dinâmica de Sistemas Os modelos produzidos através das técnicas da Dinâmica de Sistemas permitem a descrição de características que não são facilmente expressas em outros modelos. Estas características e sua aplicação na modelagem de processos de desenvolvimento de software são discutidas a seguir. Comportamento Endógeno Integração Sistemas Fechados Causas e Conseqüências Distantes no Tempo Mapeamento de Modelos Mentais Aplicações Vensim Dois tipos de diagramas ◦ Causa e efeito ◦ Estoque e fluxo Resultados visualizados em gráficos e planilhas Mais de uma visão Vensim Vensim Menu Principal Barra de Ferramentas Simular o Modelo Vensim Rate – valores somados ou subtraídos Equations – Editor de equações Relacionamento entre variáveis Variável Auxiliar - Constante Variável Nível Stock Gráficos – variáveis afetantes Gráfico – variável selecionada Quadros – valores das variáveis Vensim IF THEN ELSE( Time<7 , Saldo*Taxa de juros, Saldo*Taxa de Juros Maior) Entrada-Retirada Valor Inicial=1000 <Time> Saldo Entrada Taxa de juros Constante=0.15 Retirada Taxa de Juros Maior Constante=100 Constante=0.20 Vensim Variável Saldo Vensim Variável Entrada Vensim Modelo – Desenvolvimento de tarefas Crystal Ball Simulação de Monte Carlo Calcula vários casos diferentes Guarda as entradas e resultados de cada cálculo em cenários individuais Análise dos cenários ◦ Probabilidade de ocorrer ◦ Que entradas são mais relevantes (têm mais efeito) no modelo Crystal Ball Crystal Ball Aplicações Jogos de simulação Jogos - SIMSE Simulador de projetos de software Objetivo ◦ Criar um sistema na WEB para Groceries@Home [Emi] Papel do usuário ◦ Gerenciar o projeto dispondo de $280,000 e 1350 ciclos [Emi] Jogos - SIMSE Tarefas do usuário: ◦ ◦ ◦ ◦ ◦ Alocar os funcionários Demitir os funcionários Criar artefatos Monitorar o progresso das tarefas Comprar ferramentas Jogos - SIMSE Jogos - SIMSE SimSE deve: ◦ Ilustrar lições específicas e práticas dos processos de software ◦ Apoiar o instrutor em especificar as lições que ele deseja ensinar ◦ Fornecer ao estudante feedback claro em relação às suas decisões ◦ Ser fácil de aprender, agradável e comparativamente rápido Jogos - SIMSE O código do modelo a ser simulado não foi implementado ◦ Gerado a partir de um construtor de modelos Permite a criação de versões distintas com processos diferentes: ◦ Walterfall ◦ eXtreme Programming ◦ Incremental Jogos - SIMSE Possui 3 principais componentes: ◦ Modelo de simulação ◦ Interface gráfica com usuário (GUI) ◦ Engine de simulação Arquitetura do SIMSE [Emi]. Jogos – The Incredible Manager Objetivos ◦ Jogador assume o papel de um gerente de projetos de software de uma companhia e tem um novo projeto para executar [GUE06] ◦ O projeto é o desenvolvimento de um sistema acadêmico para uma grande universidade [GUE06] Jogos – The Incredible Manager Atividades do gerente [GUE06] : ◦ Criar um time a partir de desenvolvedores possíveis ◦ Estimar duração de tarefas ◦ Atribuir tarefas apropriadas a cada tipo de desenvolvedor ◦ Negociar o plano de projetos com os stakeholders ◦ Controlar o projeto Jogos – The Incredible Manager Descrição do projeto e demandas de tempo, qualidade e custo Jogos – The Incredible Manager Visualizar tarefas Estimativas acumuladas para o plano do projeto Edição de horas de trabalho Selecionar ou demitir desenvolvedores Jogos – The Incredible Manager Feedback das tarefas desenvolvedor Tempo e orçamento restantes Pause, configuração e planejamento Detalhes de atividades e tarefas Jogos – The Incredible Manager Sucesso de projeto ◦ Executar o projeto dentro das estimativas feitas no planejamento Cancelamento do projeto ◦ Não completar as tarefas do projeto e ultrapassar o limite dos recursos (tempo e custo) Jogos – Virtual Team Produto do projeto Smartsim ◦ Framework para o desenvolvimento de jogos sérios baseados em máquinas de simulação e utilização de atores sintéticos [Smart06] Idealizado para treinamento de gerentes de projeto [Smart06] Com ênfase no gerenciamento de projeto de software e gestão de pessoas [Smart06] Jogos – Virtual Team Jogos – Virtual Team O Jogador: ◦ ◦ ◦ ◦ ◦ ◦ Assume o papel do gerente de projetos Monta a equipe Atribui tarefas Avalia eficiência, satisfação e vitalidade dos atores Trocar componentes da equipe Dar gratificação e feedback sobre o trabalho realizado ◦ Avalia satisfação do cliente e da equipe Jogos – Virtual Team Escolha da Equipe ◦ Sete opções de capital humano Custo Perfil Habilidades relativas a codificação, análise e arquitetura de software Jogos – Virtual Team Escolha da Equipe Jogos – Virtual Team Ambiente de escritório Cinco atores por projeto Controle de cronograma Monitoramento de atividades Jogos – Virtual Team Jogos – Virtual Team Integração com o Project [Ara06] ◦ Add-in para o Microsoft Project 2003 ◦ Possibilitando a captação de dados reais para simulação ◦ Funciona como um wizard Jogos – Virtual Team Integração com o Project [Ara06] Referências Eletrônicas e Bibliográficas [GUE06] GUEDES, MARCELO SANTIAGO. Um Modelo Integrado para Construção de Jogos de Computador Aplicada à Capacitação em Gestão de Projetos. Dissertação de mestrado, CIn – UFPE, Recife, 2006. [Ara06] Araujo, Thierry da S. Um Plug-in que Integra um Simulador de Projetos a uma Ferramenta de Gerenciamento de Projetos. 2006, Trabalho de Graduação, UFPE, Recife. [Smart06] Projeto Smartsim. Disponível em http://www.cin.ufpe.br/~smartsim [acessado em 06/10/2007] [Bar01] M. Barros. Gerenciamento de Projetos Baseados em Cen´arios. PhD thesis, UFRJ, December 2001. [Ins04] Project Management Institute, editor. A guide to the Project Management body of knowledge: PMBOK Guide. Project mamagement Institute, Inc, third edition, 2004. [KMR99] M.I. Kellner, R.J. Madachy, and D.M Raffo. Software process simulation: Why? what? how? Journal of Systems and Software, 46(2/3), 1999. [Mar97] L. A. Martin. The first step.Technical report, MIT System Dynamics Group, Cambridge, MA, December 1997. [Ste00] J. Sterman. Business Dynamics: System Thinking and Modeling for a Complex World. McGraw-Hill Higher Education, 2000. Referências Eletrônicas e Bibliográficas ◦ [Alb97] S., 1997, Building an System Dynamics Model Part 1: Conceptualization, IN: Relatório Técnico D-4597, MIT System Dynamics Group, Cambridge, MA [Emi] Emily Oh Navarro e André van der Hoek. SimSE: an Interactive Simulation Game for Software Engineering Education. Disponível em http://www.ics.uci.edu/~emilyo/papers/CATE2004.pdf [acessado em 04/10/2007]. [War07] WarGaming. Disponível em http://en.wikipedia.org/wiki/War_games [Acessado em 10/09/2007]. [Mcar07] Wikipedia. Método de Monte Carlo. Disponível em http://pt.wikipedia.org/wiki/M%C3%A9todo_de_Monte_Carlo [acessado em 05/10/2007]. [Ven07] Tutorial do Vensim. Disponível em http://www.vensim.com [acessado em 04/10/2007]. DÚVIDAS ? Thierry Araujo [email protected] Verlaynne Rocha [email protected] Simulação de Projetos Conceitos e Aplicações Thierry Araujo [email protected] Verlaynne Rocha [email protected]