A Gestão dos Processos na Fábrica de Software - PDF
A Gestão dos Processos na Fábrica de Software
Download "A Gestão dos Processos na Fábrica de Software"
Paulo Quintanilha Valgueiro
1 A Gestão dos Processos na Fábrica de Software Álvaro Augusto Neto Divisão de Ciência da Computação Instituto Tecnológico de Aeronáutica Resumo Este trabalho apresenta um novo enfoque para o gerenciamento da fábrica de software, baseado na produção em larga escala, na automação dos processos de desenvolvimento e gerenciamento, e na utilização dos modernos conceitos de Engenharia da Produção, representados pelo Sistema Toyota de Produção e pela Produção Enxuta. 1. Introdução O desenvolvimento de software é uma atividade que apresenta importância econômica crescente, na medida em que está sendo incorporada a quase todos os produtos e atividades da sociedade moderna. Atualmente a produção de software com alta qualidade e produtividade está relacionada entre os fatores críticos para o sucesso de diversas áreas de negócios. Apesar de apresentar este crescimento significativo, observa-se que os produtos de software nem sempre atendem satisfatoriamente as necessidades de seus usuários, principalmente com relação aos aspectos ligados à qualidade, prazos de desenvolvimento e custos de produção e manutenção. Estas deficiências decorrem não só da complexidade e variabilidade dos ambientes de desenvolvimento, mas também, da falta de instrumentos gerenciais capazes de controlar e apoiar as decisões ao longo do processo de produção. Estes problemas têm sua intensidade ampliada na medida em que aumenta a escala em que a produção de software é realizada. Neste trabalho são abordados os principais fatores que afetam esse processo de produção e proposto um conjunto organizado de ações, que conduzam ao seu aperfeiçoamento. 2. Processo de Desenvolvimento de Produtos de Engenharia de Software Como nas demais áreas da engenharia, o ciclo de produção de software envolve [1,2]: análise e definição dos problemas a serem resolvidos; desenvolvimento do projeto e análise das soluções propostas; Nilson Sant'Anna Lab. de Computação e Matemática Aplicada Instituto Nacional de Pesquisas Espaciais execução dessas soluções; verificação da sua adequabilidade e conformidade; e gerenciamento de todos os elementos técnicos, humanos, sociais e financeiros envolvidos no processo de produção. Apesar da evolução técnica e metodológica ocorrida nos últimos anos, observa-se que na maioria dos casos esse ciclo ainda não é suficientemente conhecido e padronizado, de forma que possa ser planejado e controlado satisfatoriamente pelos gerentes de desenvolvimento. Sob este enfoque, observa-se que a engenharia de software não apresenta o mesmo grau de evolução que vários outros setores da engenharia como o automobilístico e o aeronáutico. Se por um lado esta defasagem representa um sério problema para a fabricação atual de produtos que contenham componentes com software agregado, por outro, ela deixa em aberto uma série de oportunidades para sua evolução acelerada, pois poderá basear-se diretamente nas experiências obtidas ao longo dos anos em outros setores. 3. A Evolução da Produção de Software O desenvolvimento de software encontra-se em franca evolução tecnológica, não só em virtude da sua importância crescente, mas também, devido aos problemas crônicos encontrados no seu desenvolvimento. Como conseqüência, observa-se que diversas estratégias têm sido propostas para o aperfeiçoamento dos produtos e de seu processo de produção. Numa breve comparação com o que já ocorreu em outros setores da indústria, verifica-se que tais estratégias apresentam duas abordagens principais: a) a primeira enfoca os aspectos associados à melhoria da Engenharia do Produto, ou seja, relacionadas com o aperfeiçoamento das características que permitam a produção de softwares melhores e mais fáceis de usar e manter. Esta abordagem é representada pelas tecnologias que têm proporcionado melhoria nas interfaces homemmáquina, facilidades para manutenção e atualização dos produtos, aumento da tolerância à falhas dos sistemas, etc. b) A segunda envolve as características mais freqüentemente associadas à Engenharia de Produção, representadas principalmente pelas
2 melhorias nos processos de desenvolvimento de software propostas pelo CMM-Capability Maturity Model for Software [3,4], pelas Normas ISO 9000 [5,6,7] e pela proposta de Norma ISO/IEC [8] (SPICE). Além das melhorias nos produtos e no seu processo de produção, verifica-se que também têm sido necessárias melhores técnicas de gerenciamento. Como a produção de software apresenta características típicas do modelo de produção por encomenda, evidenciado pela realização de empreendimentos temporários voltados à produção de produtos ou serviços únicos, atualmente as melhores práticas para o seu gerenciamento são expressas através da sistemática proposta pelo PMBOK [9,10] do PMI- Project Management Institute. Essas abordagens podem ser sintetizadas num conjunto de conhecimentos, técnicas e práticas de engenharia que visam a utilização de melhores: a) métodos, técnicas, ferramentas e materiais utilizados na produção; b) métodos e técnicas para definição, organização e padronização dos trabalhos e procedimentos; c) técnicas para planejamento qualitativo e quantitativo da produção; d) sistemas para mensuração e comparação dos resultados obtidos com os padrões de desempenho estimados; e) práticas para eliminar ou minimizar os desvios e efeitos adversos sobre a produção que tenham ocorrido; e f) métodos para aperfeiçoamento contínuo do trabalho e do sistema de produção. 4. A Fábrica de Software Tradicionalmente uma unidade de produção de software se caracteriza pela execução das seguintes tarefas [11]: a) desenvolvimento de novos produtos; b) ampliação dos produtos em uso; c) manutenção dos produtos entregues; d) suporte aos produtos entregues. O conceito de fábrica de software representa além de uma estrutura formalmente organizada para o cumprimento dos objetivos de produção, um enfoque orientado para obtenção de resultados com a qualidade e previsibilidade de outros setores da indústria [12,13,14]. Essa abordagem acarreta numa mudança do atual paradigma utilizado no desenvolvimento de software, que ainda é baseado numa estrutura pouco automatizada e intensiva em trabalho humano [15]. No novo modelo, boa parte da produção e das tarefas gerenciais, é realizada em ambientes que utilizam intensivamente recursos de capital, tais como as novas ferramentas e ambientes integrados para desenvolvimento de software, representadas pelos I-CASE - Integrated Computer-Aided Software Engineering [13], cujo objetivo é apoiar de maneira automatizada os diversos processos envolvidos. Para se enquadrar nesse perfil as organizações necessitam ser bem administradas e apresentar processos de produção definidos e voltados ao atendimento das necessidades de seus clientes. De maneira semelhante ao que acontece em outros setores industriais, a utilização de um conjunto de recursos automatizados, para suporte ao processo de desenvolvimento e gestão da produção, apresenta custos e necessidades de investimentos que não se mostram rentáveis para pequenos volumes de produção. Isto faz com que outra característica marcante da fábrica de software seja a produção em larga escala. O aumento da escala de produção de software acarreta em um crescimento significativo da complexidade do seu processo de produção. Isto ocorre devido às dificuldades para integração e harmonização das características técnicas dos diversos artefatos produzidos ao longo de todo o processo. Também implica em maiores dificuldades gerenciais para acompanhamento e controle da produção e da interação entre as equipes envolvidas. Ao analisar as mudanças trazidas pelo aumento da escala de produção, verifica-se que ela não altera significativamente a tecnologia de produto em relação aos ambientes tradicionais de desenvolvimento. No entanto, observa-se a falta de uma sistemática mais adequada para identificar as reais necessidades dos clientes e as características que, sob a sua ótica, agreguem maior valor aos artefatos produzidos. Observa-se também que o planejamento e controle da produção de software em larga escala pode ser melhorado através da adaptação de técnicas consagradas para a gerência de grandes volumes de produção, que foram desenvolvidas e aperfeiçoadas em outros setores da indústria. São necessárias apenas algumas modificações para sua adequação às peculiaridades do produto, e do seu modo de produção. Neste aspecto observa-se que existe um grande potencial para melhorias nos processos, de forma a permitir que a produção de software se realize através de um fluxo contínuo, orientado pelas necessidades dos clientes, desde suas especificações, até o produto final. Também verifica-se que o gerenciamento dos processos envolvidos na produção de software em larga escala necessita ser melhor adaptado às alterações causadas pelo aumento da sua complexidade. Finalizando, pode-se constatar que os processos envolvidos na produção de software em larga escala têm sido relativamente pouco estudados e aperfeiçoados quando comparados com outros setores industriais. As sistemáticas usualmente empregadas nesse sentido nem
3 sempre trazem os resultados esperados, ou se mostram aceitáveis sob o ponto de vista econômico. Verifica-se portanto, a necessidade de um conjunto de medidas coerentes e orientadas à obtenção resultados. Neste aspecto reside um grande potencial para as melhorias que serão melhor detalhadas a seguir. 5. A Evolução da Gestão da Qualidade O conjunto de técnicas denominado como Produção Enxuta (Lean Production) representa atualmente uma das mais bem sucedidas iniciativas para implantação de programas de melhoria da qualidade e produtividade. Seus objetivos fundamentais vão muito além dessas questões, abrangendo a flexibilização dos processos de produção e a eliminação das fontes de desperdício. Através deste enfoque muitas organizações têm conseguido ampliar sua capacidade empresarial para produzir e competir num cenário globalizado [15]. Duas grandes linhas de pensamento contribuíram para a sua formação: o Controle da Qualidade Total e o Sistema Toyota de Produção [16]. Essas duas concepções começaram a ser introduzidas nas empresas japonesas na década de 50 e tiveram participação decisiva para o grande aumento da competitividade e sucesso econômico que elas alcançaram Controle da Qualidade Total O sistema gerencial conhecido como CQT-Controle da Qualidade Total envolve a implantação de uma estrutura organizacional adequada, atribuição de responsabilidades, implementação de processos, procedimentos, avaliações, controles, etc. capazes de prover a garantia da qualidade dos produtos e serviços produzidos pelas organizações [17]. Suas abordagens iniciais tiveram o mérito de desencadear um movimento mundial pelo aperfeiçoamento da qualidade, que até os dias de hoje tem produzido alterações nas formas tradicionais de gestão empresarial. Os resultados de sua aplicação foram de tal porte, que possibilitaram ao Japão alcançar em pouco tempo um papel de grande destaque na economia mundial. O CQT nasceu na prática diária das indústrias japonesas, como decorrência dos trabalhos de Deming, Juran, Crosby e Ishikawa. Isto fez com que no início de sua disseminação os conceitos envolvidos necessitassem de uma abordagem mais formal e sistematizada, que foi suprida posteriormente pelas Normas ISO 9000 [6,7,8]. Essas Normas facilitaram a disseminação dos conceitos do CQT pelo mundo. A principal crítica, com relação a sua adoção, tem sido a burocratização e formalismo excessivo que elas acarretam. Para atender alguns dos requisitos de qualidade, como a rastreabilidade das etapas da produção, visando a detecção da origem dos problemas ocorridos, elas utilizam um grande número de controles e procedimentos, cuja relação custo-benefício nem sempre é favorável à sua implementação. Mesmo assim, pode-se constatar que o CQT foi capaz de produzir uma grande evolução nas sistemáticas utilizadas pelos processos produtivos e gerenciais das organizações. No Brasil, dados coletados pela Secretaria de Política de Informática do Ministério da Ciência e Tecnologia [18], relatam que durante o ano de 2001, 25% das empresas participantes do Programa Brasileiro da Qualidade e Produtividade em Software haviam implantado programas de gestão da qualidade total, e que 18% delas já possuíam sistemas da qualidade certificados pelas Normas ISO 9001 e Sistema Toyota de Produção O STP-Sistema Toyota de Produção surgiu através de um conjunto de práticas e políticas empresariais desenvolvidas pela indústria automobilística Toyota Motor Company. Seus fundamentos representam uma evolução do CQT e foram difundidos para o ocidente após a crise do petróleo na década de 70. O objetivo principal do STP é aumentar a eficiência da produção, através da eliminação consistente dos custos desnecessários [16], técnica que foi denominada por Shigeo Shingo, um de seus formuladores, como princípio do não-custo [19]. Dentre os principais conceitos e técnicas que compõem o Sistema Toyota de Produção destacam-se: a) A visão de que os sistemas de produção constituemse numa rede funcional de processos e operações, onde os processos correspondem ao fluxo de materiais ou serviços ao longo do tempo e do espaço; e as operações se referem as ações efetuadas pelos trabalhadores e máquinas; b) A garantia da qualidade baseada no padrão zerodefeitos e em sistemas à prova de erros (poka-yoke); c) O método kanban utilizado para manutenção do fluxo de produção contínuo, onde as operações acontecem apenas no seu devido tempo (just-intime); d) A redução nos tempos de setup através do método da troca rápida de ferramentas; e) O controle visual da produção, cuja finalidade é fornecer uma visão de síntese sobre a produção e, informar a ocorrência de anormalidades de maneira rápida, de forma a antecipar as medidas necessárias para a sua correção. Resumidamente pode-se afirmar, que o STP baseia-se na priorização das melhorias na função processo, via a
4 eliminação contínua e sistemática das perdas ocorridas nos sistemas produtivos. Sua adoção tem proporcionado maior competitividade às empresas através da maior rapidez no atendimento de necessidades que impliquem em maior flexibilidade operacional, menores custos, melhor qualidade e satisfação dos clientes. Sua aplicação ainda é relativamente pouco difundida no Brasil A Produção Enxuta A PE-Produção Enxuta (Lean Production) surgiu como um sistema de manufatura cujo objetivo é otimizar os processos e procedimentos, através da redução contínua de desperdícios e tempos elevados de espera entre os processos de produção. Seus objetivos fundamentais são ampliação da qualidade e flexibilidade dos processos produtivos, de forma a aumentar a capacidade empresarial para produzir e competir num cenário globalizado. Embora alguns autores venham propondo uma abordagem mais ampla dos seus conceitos, denominada como mentalidade enxuta (lean thinking) [20], ela não será utilizada neste trabalho, pois os objetivos pretendidos estão indissociavelmente ligados à melhoria do atual sistema de produção de software empregado pelas organizações. A PE apresenta-se como uma abordagem evolutiva e sistemática do Sistema Toyota de Produção. As maiores diferenças referem-se principalmente ao melhor direcionamento na busca por resultados, sob o ponto de vista da satisfação dos clientes e dos interesses empresariais. Sua adoção pelas empresas brasileiras ainda é restrita a alguns poucos centros de excelência. 6. Os Princípios da Produção Enxuta Para alcançar seus objetivos, a PE utiliza cinco princípios básicos: a especificação do valor, o mapeamento da cadeia de valor, o fluxo contínuo, a produção puxada e o aperfeiçoamento integrado. a) A Especificação do Valor tem por objetivo a determinação de todas as características desejadas pelos seus usuários de um produto. Sua especificação permite a identificar as atividades que contribuem para o atendimento das necessidades dos clientes. As demais são consideradas fontes de desperdícios, e devem ser eliminadas. Assim, ao contrário da visão usual, não é o produtor, e sim o cliente, quem define o que agrega ou não valor a um produto, pois estas características dependem intrinsecamente de suas necessidades e conhecimentos sobre a produção e o mercado. b) O Mapeamento da Cadeia de Valor permite analisar criticamente a cadeia produtiva e separar os processos em três tipos: aqueles que efetivamente geram valor; aqueles que não agregam valor mas são importantes para a manutenção da qualidade; e aqueles que não geram valor e deverão ser sumariamente eliminados. Sua elaboração permite alinhar na melhor seqüência as ações que criam valor e realizá-las sem interrupção toda vez que alguém solicitar. Com isto torna-se possível executá-las de forma mais eficaz. c) O Fluxo Contínuo tem por objetivo a obtenção de um sistema de produção que maximize o aproveitamento dos recursos utilizados. O objetivo é fazer com que as atividades fluam, eliminando as esperas para execução das tarefas. Em grande parte dos casos elas ocorrem devido à maneira de se organizar a empresa, ou de se projetar o sistema de produção. Adequar esse sistema para produzir um fluxo continuo de valor é uma das etapas mais difíceis dos processos enxutos. d) A Produção Puxada leva até as últimas conseqüências o processo de eliminação de desperdícios, pois visa estabelecer um sistema de produção capaz de produzir apenas o que os clientes precisam e quando precisam. Sob esta ótica, os processos de produção de bens e serviços só são executados quando o cliente de uma etapa posterior solicita. Quando isto ocorre a sua elaboração deve ser realizada rapidamente. O objetivo é produzir apenas o que for necessário ao atendimento dos clientes, no momento em que eles necessitarem, ou seja a produção é puxada pelos clientes e não empurrada pela empresa, de forma a criar estoques ou paradas na produção à espera da conclusão de etapas anteriores. e) O Aperfeiçoamento Integrado visa produzir cada vez mais, com cada vez menos, ou seja, aumentar a produtividade dos recursos utilizados na produção, sejam eles materiais, tempo, capital, espaço físico, equipamentos, esforço humano, etc. Esta abordagem pressupõe que o processo de redução de esforços é praticamente infinito, pois sempre será possível especificar melhor o valor, eliminar desperdícios ao longo da cadeia, suprimir obstáculos que interrompam o fluxo do produto e fazer com que o cliente puxe mais a produção. Como normalmente a cadeia de valor de um produto não se limita às atividades de uma única empresa, seu aperfeiçoamento deve ser realizado através de um processo de produção transparente, onde todos os participantes do fluxo de produção (montadores, fabricantes de componentes, distribuidores,
5 revendedores, etc.) têm conhecimento do processo como um todo, podendo dialogar e buscar continuamente as melhores formas de criar valor. Os princípios da PE visam cada vez mais oferecer aos clientes exatamente o que eles desejam, no tempo certo. Constituem-se também em uma forma de tornar o trabalho mais satisfatório, oferecendo feedback imediato aos clientes sobre os esforços para transformar desperdício em valor. 7. A Fábrica Enxuta de Software Embora os conceitos da PE tenham surgido no ambiente fabril de manufatura, seus conceitos são perfeitamente aplicáveis ao desenvolvimento de software, pois abordam as questões clássicas que envolvem a sua produção ou sejam, as necessidades de aumentar a quantidade de software produzida por unidade de mão de obra, capital e insumos necessários para sua elaboração [21]. Algumas metodologias modernas vêm introduzindo paulatinamente algumas de suas prescrições. As chamadas metodologias ágeis, como XP-Extreme Programming, FDD-Feature Driven Development, Scrum, etc. já utilizam alguns de seus princípios como o da especificação e mapeamento da cadeia de valor, embora ainda sem a extensão e sistematização necessária. Alguns aspectos da PE enfocam questões de cruciais para o desenvolvimento de software, como a utilização do mapeamento do fluxo de valor como ferramenta para a redução contínua dos desperdícios ao longo da produção. Ao analisarmos o fluxo dos processos executados e sua influência sobre as atividades que agregam valor sobre a produção de software, verifica-se que de maneira semelhante ao que ocorre em outras áreas, as atividades executadas no início do ciclo produtivo assumem caráter de primordial importância para a obtenção de resultados satisfatórios com relação a qualidade. Este fato foi explorado no modelo de amplificação de defeitos, apresentado pela IBM [apud 22]. Este modelo demonstra, através de uma série de dados coletados em grandes projetos, que o custo de correção dos erros ocorridos nas fases iniciais cresce exponencialmente, conforme o desenvolvimento de software avance ao longo do seu ciclo de produção. Assim, um erro ocorrido na fase de projeto e cuja correção custe apenas uma unidade monetária, poderá ter este valor ampliado para 6,5 unidades, se sua detecção só ocorrer antes da fase de testes; 15 unidades se a descoberta acontecer durante os testes, e entre 60 e 100 unidades, se sua ocorrência só for percebida após o produto ter sido liberado para os usuários finais. Isto se deve ao fato de que as deficiências existentes nesta fase serem ampliadas nas demais etapas da produção, conforme pôde ser mais bem avaliado em trabalhos relacionados com a quantificação dos custos da qualidade de software [23]. Assim, quando os problemas existentes nas etapas iniciais não são resolvidos rapidamente, eles acabam por permitir que a produção avance, sem que ocorra a sua correção e o devido respaldo dos clientes. Este fato acaba por se constituir numa das maiores fontes de desperdícios observados no desenvolvimento de software. Esta característica terá grande importância para a abordagem que se pretende desenvolver em trabalhos futuros. 8. Conclusões Este trabalho apresenta um novo enfoque para o gerenciamento de uma fábrica de software baseado: a) Na produção em larga escala; b) Na automação de todas as etapas possíveis da produção; e c) Na aplicação ao desenvolvimento de software dos conceitos mais modernos da Engenharia de Produção, representados pelo Sistema Toyota de Produção e pela Produção Enxuta. Alguns desses conceitos começam a ser adotados em pequena escala pela comunidade de Engenharia de Software, como se pode verificar através de algumas prescrições contidas nas metodologias ágeis, como Extreme Programming, FDD e Scrum. Nos próximos trabalhos pretende-se avançar na adaptação e aplicação desses conceitos em uma fábrica de software, visando ampliar a sistematização e controle sobre a produção. Para isso pretende-se formular um conjunto de prescrições que facilitem sua utilização e, propor um ambiente integrado para desenvolvimento de software que automatize as etapas de sua aplicação. Bibliografia [1] Sommerville, Ian. Engenharia de Software. São Paulo: Addison Wesley, [2] Abran, Alain; Moore, James W. Guide to the Software Engineering Body of Knoledge: trial version (SWEBOK Guide). IEEE Computer Society [3] Paulk, Mark C. et alli. Capability maturity model for software, version 1.1. (CMU/SEI-93-TR-024). Pittsburgh: Software Engineering Institute, Carnegie Mellon University, [4] Paulk, Mark C. A Comparison of ISO 9001 and the capability maturity model for software. (CMU/SEI-94-TR-12).
6 Pittsburgh: Software Engineering Institute, Carnegie Mellon University, [5] Associação Brasileira de Normas Técnicas. NBR ISO 9000 Sistemas de gestão da qualidade Fundamentos e vocabulário [6] Associação Brasileira de Normas Técnicas. NBR ISO 9001 Sistemas de gestão da qualidade Requisitos [7] Associação Brasileira de Normas Técnicas. NBR ISO 9004 Sistemas de gestão da qualidade Diretrizes para Melhoria de desempenho [8] International Organization for Standardization. ISO/IEC 15504: Information Technology Process Assessment, Part 1 to Part 5, ISO/IEC International Standard, (em desenvolvimento). [20] Cabral, Rodrigo H.Q., Andrade, Reinaldo S. Aplicabilidade do Pensamento Enxuto. Obtido em em 10/03/2003. [21] Augusto Neto, Álvaro. Uma estratégia para gerência da qualidade e produtividade no desenvolvimento de software. Dissertação (Mestrado em Informática) - Instituto Tecnológico de Aeronáutica, São José dos Campos, [22] Pressmann, Roger S. Engenharia de Software. Rio de Janeiro: McGraw-Hill, [23] Augusto Neto, A.; Sant anna, N. Uma Estratégia para Gerência do Processo Baseada nos Custos da Qualidade de Software. In: Simpósio Brasileiro de Qualidade de Software, 2, Fortaleza. Anais...Fortaleza: UNIFOR, 2003, p [9] Project Management Institute. A Guide to the Project Management Body of Knowledge (PMBOK Guide) 2000 ed. Obtido em em 8/10/2002. [10] Martins, José Carlos C. Gestão de Projetos de Desenvolvimento de Software (PMI-UML). Ed. Brasport, [11] Heindel, Lee E., Kasten, Vincent A. Managing the Software Factory. Catalog No CH /93, pp , IEEE Computer Society, [12] Fernström, Christer et alli. Software Factory Principles, Architeture, and Experiments. IEEE Software, pp 36-44, March [13] Thoreson, Sharilyn. The Automated Software Development Project at McDonnell Aircraft Company (The Software Factory). Catalog No CH /89/0000, pp , IEEE Computer Society, [14] Humphrey, Watts S. Software and the factory paradigm. Software Engineering Journal. pp IEEE Computer Society, [15] Nazareno, R.R., Rentes, A.F., Silva, A.L. Implantando Técnicas e Conceitos da Produção Enxuta Integradas à Dimensão de Análise de Custos. Obtido em go.doc em 19/10/2003. [16] Ohno, Taiichi. O sistema Toyota de Produção: além da produção em larga escala. Porto Alegre, Ed. Bookman, [17] Cerqueira, Jorge P., Martins, Márcia C. O sistema ISO 9000 na prática. São Paulo: Ed.Pioneira, [18] Ministério da Ciência e Tecnologia, Secretaria de Política de Informática. Relatório do Programa Brasileiro da Qualidade e Produtividade em Software-2ª Edição. Brasília, [19] Shingo, Shigeo. O Sistema Toyota de Produção do ponto de vista da Engenharia de Produção. Ed.Bookman, 2002.
Administração da Produção de Software através da KanbanSoft
Administração da Produção de Software através da KanbanSoft Álvaro Augusto Neto Nilson Sant'Anna Laboratório de Computação e Matemática Aplicada Instituto Nacional de Pesquisas Espaciais alvaro@comp.ita.br