Manual do integrante do TerraLAB Igor Muzetti Pereira igormuzetti@gmail.com Tiago Garcia de Senna Carneiro tiago@iceb.ufop.br Departamento de Computação Universidade Federal de Ouro Preto Laboratório Associado INPE/UFOP para Modelagem e Simulação de Sistemas Terrestres 1. Apresentação do TerraLAB Manual do TerraLAB 1.1. Origem do TerraLAB O TerraLAB é o Laboratório INPE/UFOP para Modelagem e Simulação de Sistemas Terrestres. Fruto de uma parceria entre o Instituto Nacional de Pesquisas Espaciais (INPE) e a Universidade Federal de Ouro Preto (UFOP), o laboratório TerraLAB desenvolve sistemas de computação voltados ao geoprocessamento e à modelagem dinâmica espacial. 1.2. Contato Departamento de Computação (DECOM) Instituto de Ciências Exatas e Biológicas (ICEB) Universidade Federal de Ouro Preto (UFOP) Campus Universitário - Morro do Cruzeiro Ouro Preto, MG - 35900.000 +55(31)3559-1253 tiago@iceb.ufop.br 2. Atividades da fábrica 2.1. A ciência dos Sistemas Terrestres A intensificação das mudanças ambientais causadas por processos antrópicos, cujos impactos são quase sempre negativos ao ambiente, exige que pesquisadores, empresários, e governos forneçam respostas aos desafios científicos e tecnológicos ligados ao entendimento do funcionamento dos
sistemas terrestres. A Ciência dos Sistemas Terrestres é um novo paradigma no qual o ambiente terrestre é visto como o resultado das interações dos sistemas socioeconômicos (de origem antrópica: sistema fundiário, sistema de transporte urbano, sistema de uso do solo) com os sistemas biofísicos (de origem natural: sistema climático, ecossistemas aquáticos e terrestres). É centrada no estudo do comportamento integrado de vários modelos quantitativos acoplados, mesmo sem o completo conhecimento sobre o funcionamento dos subsistemas que eles representam. 2.2. Linhas de negócio A fábrica de software e inovação TerraLAB tem como objetivos: O desenvolvimento de modelos dinâmicos espacialmente explícitos para uma melhor compreensão do funcionamento dos sistemas terrestres; A implementação desses modelos na forma de sistemas de computação que forneçam prognósticos sobre o comportamento futuro desses sistemas, e que apoiem a tomada de decisão a respeito das ações humanas ou institucionais sobre eles; O projeto e implementação de geotecnologias que auxiliem o desenvolvimento de modelos para os sistemas terrestres, por exemplo, sistemas de informação geográfica (SIG), sistemas de processamentos de sinais; Servir como plataforma de ensino e de pesquisa para os cursos de graduação e pós-graduação da UFOP; A capacitação de mão-de-obra especializada no desenvolvimento de modelos espaciais dinâmicos; A disseminação das tecnologias desenvolvidas e utilizadas pelo laboratório. 2.3 Parcerias Através do Laboratório para Modelagem e Simulação de Sistemas Terrestres - TerraLAB, a Universidade Federal de Ouro Preto (UFOP) mantém um acordo de cooperação cinco anos (2007-2012) com o Instituto Nacional de Pesquisas Espaciais (INPE) para a realização de projetos científicos e tecnológicos com a Divisão de Processamento de Imagem (DPI / OBT) e do Centro de Ciência do Sistema Terra (CCST). O TerraLAB também mantém um convênio de cinco anos (2010-2015) proporcionando intercâmbio de estudantes e pesquisadores com o Instituto de GeoInformatic (IFIG, WW Universidade de Munster (WWU Munster), Alemanha. 3. Qualidade Mediante também a implantação de uma gerência de qualidade para o processo de desenvolvimento de software no TerraLAB, aplicaremos o método dos 5S à utilização dos computadores. A aplicação do método dos "5S" resulta em importante melhoria da qualidade. A sigla "5S" origina-se de cinco palavras japonesas iniciadas pela letra "S": Seiri, Seiton, Seisou, Seiketsu e Shitsuke.
3.1. Aplicação do método. O emprego da técnica dos "5S" reduz sensivelmente os desperdícios (tempo, máquina, memória e disco) e a entropia (no sentido atribuído por Jensen Randall W.; Software Engineering; Prentice Hall Inc.; New Jersey, 79). Na definição apresentada por Jensen, a entropia é a medida da diferença da energia colocada em um processo e o produto que se obtém dele, ou seja, a energia colocada em um processo é convertida em trabalho útil mais entropia. Quando se tem um ambiente de alta entropia é necessário colocar mais energia no processo para se obter o mesmo resultado útil. O objetivo é a busca de ambientes de menor entropia. Neles, uma parcela maior do esforço alocado é convertido em trabalho útil (e não em código errado, especificações incompletas, documentação contraditória e assim por diante). 3.2. SEIRI (Descarte) "Tenha somente o necessário na quantidade certa; livre-se do que for inútil." 3.2.1. Cada pessoa deve saber diferenciar o útil do inútil. Só o que tem utilidade deve estar disponível. Elimine tudo que for inútil, para poder melhor se concentrar no que é útil; 3.2.2. Remova arquivos, funções, bibliotecas e estruturas de dados desnecessárias; 3.2.3. Mantenha os discos "limpos"; remova tudo que for inútil ou obsoleto, guardando em backup aquilo que possa vir a ser útil no futuro; 3.2.4. Sempre coloque data e hora da última atualização dentro do arquivo (será útil para seu posterior descarte); 3.2.5. Identifique arquivos, variáveis e funções com clareza; dê nomes mnemônicos. Se necessário crie tabelas fazendo correspondência entre o nome do arquivo e palavras-chave que o identificam. (Não use nomes como "xxx.novo", "xxx.novo", "xxx.old", etc.); 3.2.6. Coloque fora listagens, esboços e anotações desnecessárias; 3.3. SEITON (Arrumação) "Tenha um lugar certo para cada coisa; cada coisa em seu lugar." 3.3.1. Prega a existência de um único (e bem determinado) lugar para cada coisa; 3.3.2. Organize seu material. Não há muita diferença entre um documento (ou arquivo) que não existe e outro que existe, mas que não pode ser recuperado quando necessário; 3.3.3. Tenha à mão o que necessita para trabalhar sem interrupções e com eficiência; 3.3.4. Mantenha sigilo sobre as senhas de segurança; 3.3.5. Verifique a configuração do ambiente computacional antes de
iniciar o trabalho. Certifique-se de que nada faltará, que seu ritmo de trabalho não será prejudicado pela falta de arquivos, programas, drives de periféricos, etc; 3.3.6. Trabalhe com estruturas e nomes de variáveis padrão. Toda a equipe deve saber o significado das variáveis "globais" do projeto. Organize as funções genéricas em bibliotecas de modo que possam ser acessadas e reutilizadas de forma fácil e padronizada; 3.3.7. Elimine múltiplas funções que fazem a mesma coisa. Elas aumentam a complexidade do programa, o tamanho do fonte e dificultam a correção de erros; 3.3.8. Utilize as facilidades das linguagens orientadas a objeto que permitem criar bases de objetos e que facilitam sua identificação para reutilização; 3.3.9. Após usar, recoloque os recursos empregados no seu devido lugar, como, se for usar alguma mesa que é de alguma estação de trabalho, coloque novamente o teclado e o cabo de rede na máquina em que deslocou tais recursos; 3.3.10. Tenha em mente aqueles quadros de parede em oficinas mecânicas onde existe o desenho do perfil para cada ferramenta, no lugar onde ela deve ser guardada. Aquele quadro permite rapidamente identificar quais ferramentas estão em uso e onde devem ser guardadas; 3.4. SEISOU (Limpeza) "Mantenha o ambiente de trabalho limpo." 3.4.1. Cada pessoa deve saber a importância de estar em um ambiente limpo. Antes e depois de cada trabalho, cada pessoa deve retirar o lixo resultante e dar-lhe o fim previamente estabelecido. Um ambiente limpo está relacionado com a qualidade e segurança; 3.4.2. Produza código "limpo"; 3.4.3. Depois de cada trabalho, verifique se não há CD's/DVD's, pen-drives sem a necessária identificação externa (etiqueta), ou dentro dos periféricos, sobre mesas, etc; 3.4.4. Dê o destino adequado ao "lixo", ou seja jogue no lixo, garrafas de plástico vazias, copos usados, papéis de bolacha, sacos plásticos, etc; 3.4.5. Após seu programa funcionar, e antes de encerrar a tarefa, reserve algum tempo para limpar o fonte (varrida final), eliminando trechos desnecessários, comentários obsoletos, repetições, etc. Alguns meses depois será muito mais demorado (e arriscado) decidir que uma variável de controle (ou arquivo) é desnecessária e que, portanto, pode ser retirada.
3.5. SEIKETSU (Asseio) Mantenha-se mentalmente asseado. Pense. Concentre-se. 3.5.1. A qualidade tem a ver com o asseio (principalmente mental, no caso do software) e com a ordem. Quem não é asseado (em todos os sentidos), não tem como desenvolver software ou oferecer serviços de qualidade; 3.5.2. Concentre-se; 3.5.3. Pense; 3.5.4. Mantenha-se mentalmente limpo para trabalhar com software; 3.5.5. Concentre-se antes de começar a trabalhar; não deixe que seu ritmo de trabalho seja prejudicado por fatores externos; 3.6. SHITSUKE (Disciplina) Tenha disposição para o cumprimento de regras Ordem, rotina, aperfeiçoamento constante. 3.6.1. Pregue a obediência a rotinas e a educação do ser humano como forma de se atingir a melhoria contínua. A máxima deste 'S' é a de que somente a prática leva a perfeição ; 3.6.2. Crie rotinas. Até o trabalho mais criativo comporta rotinas. Lembre-se: só pode ser melhorado o que estiver padronizado; 3.6.3. Descubra a maneira correta de proceder e faça sempre do mesmo modo. Se toda a equipe procede de forma semelhante, será mais fácil reproduzir situações que provocam erros ocultos, difíceis de serem detectados; 3.6.4. Lembre-se de que a programação é 10% de inspiração e 90% de disciplina. O excesso de criatividade em programação pode ser uma faca de dois gumes; 3.6.5. Seja metódico nos procedimentos de teste de software; 4. REGULAMENTE INTERNO 4.1. Os 3 servidores TerraLAB, Andes e o de simulação nunca devem ser desligados, assim como o estabilizador que alimenta o nosso switch; 4.2. Todas as estações de trabalho, luzes e ar condicionado depois do seu uso devem ser desligados; 4.3. Sempre que o integrante se ausentar por mais de meia hora, deve se efetuar logoff na máquina ou deixá-la bloqueada; 4.4. Quando do atendimento do telefone, o integrante deve identificarse sempre, de maneira clara e polida, cumprimentando o interlocutor; 4.5. É proibido o uso de software P2P(torrent, emule, kazaa, etc) sob a rede do TerraLAB; 4.6. Assim que ingressar no TerraLAB, o novo integrante deve procurar
um dos administradores do laboratório e pedir seu cadastro na rede interna, uma conta na wiki(www.terralab.ufop.br), a inserção no grupo de e-mail e uma conta no sistema NetProject, TRAC e SVN.