Archive

Posts Tagged ‘infraestrutura’

Caracterizando a Infraestrutura da Internet – Visão teórica

Introdução

Ando tentando caracterizar, com o máximo possível de precisão, a Infraestrutura da Internet. Como é minha área de interesse e preciso aprender bastante sobre o seu entorno (razão pela qual escrevo esse blog), mais recentemente ando empenhado em um projeto de pesquisa relacionado.

No passado, trabalhei muito em modelos matemáticos, ênfase em modelos lineares, bem mais simples do que os modelos não lineares. Como bolsista de iniciação científica, há muitos anos atrás, senti na pele (oops! – no cérebro), as dificuldades em resolver problemas não linerares. Haviam muitos problemas em aberto que forneciam combustível para meu entusiasmo (e, certamente de muitos outros), na direção da teoria da computação. Naquela época, os membros acadêmicos da ciência se ajustando às mudanças da computação falavam na incrível velocidade com que elas aconteciam [1]. Imaginem tais preocupações hoje, com a Internet se transformando a cada segundo. De qualquer maneira, os problemas continuam os mesmos. Mas com uma número maior de escolhas a serem feitas. As escolhas, são realmente difíceis e estão associadas a paradigmas, de um modo geral, o que piora um pouco o cenário. Paradigmas, teóricos ou práticos induzem-nos a uma enorme perda de tempo, principalmente se a escolha for errada. Um exemplo intuitivo está em Denning [2], quando lembra que do ciclo de desenvolvimento dos sistemas que implementam a memória virtual, só se pode esperar benefícios quando os algoritmos associados forem suficientemente refinados. Ele disse isso em 1980. Em meados da década de 1970, me lembro bem, a IBM implementou a memória virtual em seus sistemas operacionais (nos modelos da linha /370), cuja eficiência estava no mecamismo, por ela denominado DAT (Direct Address Translation), em hardware.

A propósito, Peter Denning sempre foi um brilhante cientista. Presidente da ACM, se preocupou em produzir uma vasta bibliografia na direção de estabelecer modelos para ajudar a eficácia dos pesquisadores, professores alunos e profissionais da ciência da computação, além dos trabalhos de suas áreas de pesquisa. Em [3], um ponto de vista corajoso, na direção de caracterizar a profissão de TI. Feitelson [4], ainda referenciando Denning no seu comentário sobre a memória virtual, compara o método científico com o esforço caracterizado em experimentos de projeto de sistemas. Antes de mostrar o modelo de comparação de Feitelson, vale mostrar dois modelos interessantes (um aperfeiçoando o outro), subsídios consideráveis, para induzir a criação de um modelo para a Infraestrura da Internet. Podem ser vistos em [5], numa abordagem de pesquisadores envolvidos com Sistemas de Suporte a Decisão (DSS), que partiram do modelo tradicional, reproduzido na Figura 1 e, sua evolução, na Figura 2, adicionando perspectivas não existentes no modelo original.

DSSOriginal

Figura 1. Processo de tomada de decisões (DSS tradicional em Shim et ali [5])

Na evolução do modelo DSS tradicional, representado na Figura 2, que segue, a perspectiva técnica (T) foi quem sempre dominou a formulação de problemas com envolvimento no desenvolvimento de banco de dados e modelos, propriamente ditos. As perspectivas organizacional (O) e pessoal (P) asseguram que em um debate entre todos os participantes do processo, todas as variáveis relevantes estarão incluidas no modelo. Por fim, as perspectivas não quantificáveis, mas relevantes: ética e estética.

NovoParadigmaDSS

Figura 2. Novo paradigma para o processo de tomada de decisões (Shim et ali. [5]).

Os pesquisadores da área de DSS, que desde os anos de 1990 se preocupam com a automação do processo de apoio à tomada de decisões contribuiram de forma relevante para confirmar o pensamento do pessoal da área de engenharia de software quando modelam a relação entre o método científico e o projeto de sistemas, reconhecidamente experimental. Eis a comparação na Figura 3, abaixo:

MetodoCientificoXExperiment

Figura 4. Método científico (a) x método experimental (b) (Feitelson [4])

O “loop” infinito

“Loop” infinito é uma boa denominação para a representação da Figura 3 acima. O exemplo da memória virtual, dado por Denning é interessante. No início, os procedimentos envolvendo os sistemas de paginação eram constantes na literatura. Técnicas e mais técnicas foram criadas, desenvolvidas. testadas, melhoraras, numa repetição que dura até hoje. Entretando, de uns poucos anos para cá, ela chegou em um ponto razoavelmente estável que raramente se vê um trabalho de aperfeiçoamento. Só usamos os resultados tendo pouco interesse de rever, exceto em aplicações específicas (portanto, não para). Já está em uma etapa bastante madura. Mas levaram-se alguns anos para o aperfeiçoamento.

Um outro exemplo interessante de se observar, são os navegadores. Não tenho interesse nos navegadores, exceto sob o ponto de vista de usuário. Em minhas máquinas pessoais, tenho o Chrome, o Firefox e o IE. Estou inclinado, seriamente, em instalar outros. Percebo, naturalmente como um usuário especializado, que as atualizações (ou os resultados do “loop” infinito) estão acontecendo por exigência da competição entre os diversos responsáveis pelo ciclo de desenvolvimento. O desejo de atrair usuários através de funcionalidades e facilidades de uso, maiores do que o competidor. O tiro pode, entretanto, sair pela culatra.

Mas, porque tenho tantos navegadores? Por uma razão bem simples. Preciso de domínios (de aplicações) bem definidos, quando uso determinados recursos na Web. Por exemplo, como parte da equipe de desenvolvimento do Sistema FaleOK preciso acessá-lo com autenticações diferentes. Se faço isso em um só navegador, não consigo manter a primeira conexão que fiz. Mas, se cada autenticação for feita em um navegador diferente, consigo manter todas ao mesmo tempo. No Sistema FaleOK há pelo menos 4 ambientes: o administrador geral, o administrador de uma Central OK, o administrador de uma Central OK associada e o usuário final. Assim, abrindo três navegadores diferentes, consigo manter três dominios de aplicações diferentes … Fico precisando de mais um. A Figura 5, abaixo, ilustra o efeito desse tipo de demanda, quando adicionamos o Netscape.

DominiosdeAplicacoes>

Figura 5. Domínios de aplicações e os navegadores.

Naturalmente, o usuário comum ou não especializado não possui tal demanda. Mas não seria uma boa competição se o “loop” infinito dos produtores de navegadores nos entregasse a perspectiva de domínios de aplicações quando abríssemos uma nova janela? Poderíamos ter um só navegador! Nenhuma avaliação mais detalhada foi feita sobre o modelo acima, mas é de se esperar que um respeito adicional sobre o sistema operacional que hospeda um navegador seria, também, de grande valia. O exemplo acima, se aplica quando usamos o Zope e/ou Plone, que provocam uma razoável complexidade no domínio de aplicação de um usuário. Por outro lado, não cabe imaginar que o dominio de aplicação seja um problema dos desenvolvedores de software e não dos navegadores, penso eu.

Projetos em computação e a Engenharia de Software

Até agora, estamos discutindo com ênfase na abstração. Mas, meu projeto é de natureza prática, embora tenha componentes teóricos associados. Não tivesse tal característica prática, talvez simulação fosse uma alternativa interessante. Provavelmente, em alguns casos usaremos simulação. Por exemplo, no treinamento à distância de alguns protocolos. Mas sempre atento ao que diz Floyd, em [6].

A computação é uma área equivalente à engenharia. Nos últimos anos, as instituições de ensino têm popularizado a computação através da criação de cursos de curta duração e alienados do pensamento mais formal e consideravelmente necessário. Apesar disso, uma disciplina tem mantido seu vigor imprescindível: a Engenharia de Software. Muitos tem falado da Engenharia de Software como disciplina fundamental no desenvolvimento de projetos de software ou sistemas de computação. Por exemplo, Dening [7] e, dai para os dias atuais há movimentos bem produtivos. Um conjunto de ferramentas interessantes foi aparecendo, principalmente na área de modelagem de banco de dados e de relacionamento entre os componentes de um sistema de grande porte. Tais ferramentas e o exercício de abstração produzidos pelo pessoal que mantem a engenharia de software no patamar adequado, são essenciais para qualquer projeto e, os manteremos em mente durante as especificações necessárias à caracterização da infraestrutura da Internet. Em particular, estaremos atentos a alguns tópicos propostos em Braga [8], principalmente aqueles relacionados com o gerenciamento do conhecimento.

Referências

[1] Hopcrof, J. E., Computer Science: The emergence of a discipline. Turing Award Lecture, CACM, 30(3), March 1987. pdf.
[2] Denning, P. J., Workink sets past and present. IEEE Trans. Softw. Eng., SE-06(1). ´´; 64-84, Jan 1980.
[3] Denning, P. J., When IT Becomes a Profession. Capítulo 3 do livro The Invisible Future. McGraw Hill, August 2001. pdf.
[4] Feitelson, D. G., Experimental Computer Science: The Need of a Cultural Change, School of Computer Science and Engineering, The Hebrew University of Jerusalem, December 3, 2006. pdf.
[5] Shim, J. P., Warkentin, M., Courtney, J.F., Power, D. J., Sharda, R., Carlsson, C. Past, present, and future of decision support technology. Elsevier, Decision Support System 93, 2002. pdf.
[6] Floyd, S., & Paxson, V. Difficulties in Simulating the Internet. (IEEE/ACM, Ed.) TRANSACTIONS ON NETWORKING , 9(4), pp. 392-403. August 2001.
[7] Denning, P. J., Performance Modeling: Experimental Computer Sciente a its Best, President´s Letter, Communications of ACM, November 1981. pdf.
[8] BRAGA, J. C. . Diretrizes para o Ensino Iterdisciplinar de Engenharia de Software. In: Fórum de Educação Em Engenharia de Software, 2009, Fortaleza. Anais do Simpósito Brasileiro de Engenharia de Software, 2009. http://fees.inf.puc-rio.br/FEESArtigos/FEES09/FEES_7.pdf