quarta-feira, 14 de dezembro de 2011

Redes Sociais no The Walking Dead

Boa Tarde Pessoal,

Pensando na situação atual de nossas principais Redes Sociais Virtuais, resolvi extravasar e fazer um comparativos das mesmas com o mundo do seriado The Walking Dead.



Confiram o Resultado!

Regards ;D


 



 



segunda-feira, 19 de setembro de 2011

Palestra sobre Gerencimento de Projetos - UNIPAM - Patos de Minas

Bom Dia a todos...

Quero compartilhar com vocês mais uma experiência com palestras e coisas do gênero. Na última quinta-feira, 15 de Setembro de 2011, fui à UNIPAM, em Patos de Minas-MG, ministrar uma palestra sobre o Gerenciamento de projetos em equipes de desenvolvimento de software, assim como o panorama mercadológico das empresas desse gênero, especialmente na região de Uberlândia-MG. O coordenador do Curso de Sistemas de Informação, professor Sandro, pediu que eu relatasse minha experiência com o gerenciamento de projetos na empresa que trabalho: SANKHYA Gestão de Negócios, em Uberlândia.

A palestra correu de forma tranquila e a interatividade dos alunos para com o tema foi surpreendente. Assim como foi citado na palestra, muitas vezes lemos sobre técnicas de Gerencimento de Projetos, como caso do Scrum, e não acreditamos que isso possa funcionar realmente na prática; apenas vivenciando essas experiências e ouvindo relatos de quem já usou podemos ter uma idéia de como metodologias como essas podem otimizar exponencialmente nosso trabalho.

Enfim, gostaria de agradecer a receptividade da equipe acadêmica da UNIPAM, assim como o interesse dos alunos pelo assunto da Palestra.

Agradeço também à Sankhya e à ULBRA pela contribuição com o conteúdo e apoio de formas diversas.

Os slides apresentados na Palestra se encontram no link: http://www.megaupload.com/?d=8OD0ETJT

Algumas fotos seguem abaixo.








Uma boa semana a todos!

Prof. Daniel Carrara
@dhcarrara

quarta-feira, 10 de agosto de 2011

Aula de POO 1 - 09/08/11

Bom dia a todos,

Resolvi postar sobre a aula de POO 1 pois achei-a interessante de digna de ser compartilhada. (Link para os Slides: http://www.megaupload.com/?d=1P4977JS)

Ontem, dia 09/08, ministrei uma aula para o curso de Sistemas de informação do ILES/ULBRA de POO 1 (Programação Orientada a Objetos). Os tópicos abordados foram: continuação do conteúdo de Encapsulamento, Níveis de Acesso: public, private e protected; mensagens e métodos, conceitos de abstração, classes, herança e herança múltipla, além de alguns exemplos de codificação em Java.

Os alunos do 3º período estavam bem integrados com o conteúdo da disciplina e participaram assíduamente da aula com perguntas e sugestões.

Espero que tenha atingido o objetivo de apresentar aos alunos esses conceitos e proporcionar o aprendizado sobre eles.

Tenham um bom dia a Todos.

Abraços

Prof. Daniel Carrara

quarta-feira, 6 de julho de 2011

Por que as coisas têm que ser assim?

Não sou filófoso, nem alguém com tanto conhecimento da ciência da mente, mas sou alguém que sente, que questiona e que percebe em um blog da internet, que pode ser lido por alguém ou não, uma oportunidade de expressar tais coisas. Estou escrevendo essas palavras hoje porque minha cabeça está à mil. Tantas coisas aconteceram ou deixaram de acontecer nesses últimos dias que carrego em minha mente e coração mais que vestígios dos fatos, mas ainda estão presentes e são como espinhos na carne, machucando, ferindo, incomodando e insistentemente dizendo que estão ali, que não foram fatos pequenos, corriqueiros, mas que foram e são situações dignas que um post como esse. Ontem recebi uma notícia de um familiar de um amigo que está doente, e esse amigo ficara muito abalado com a notícia; olhando para como ele ficou, meu lado altruísta gritou e me fiz pensar: "E se fosse comigo?" e hoje, com mais calma, posso pensar de forma mais ampla: "O que temos feito de nossas vidas?" Sabe, já ouvi muita balela em vários lugares pelos quais passei. Cada um acredita no que quer, e em quem quer mas eu hoje acredito que nosso futuro a nós pertence. Somos eternamente responsáveis pelos nossos atos, por nossas escolhas e por aquilo que fazemos hoje. Além do mais, tudo o que vivemos hoje parecerá sem importância no futuro ou importante demais para ser esquecido, pois na vida tudo passa, tanto as coisas boas, quanto as ruins. Só as lembranças são eternizadas.
Por isso, ame pra valer. Goste, chore, xingue, se expresse, não tenha medo de ser o que você é, do jeito que você é, pois a vida é pequena demais para ser vivida para os outros, em função dos outros. Viva em função de você mesmo, em busca de seu bem estar. Diga a quem você ama que você ama pra valer. Mesmo que isso não seja recíproco, ou na mesma intensidade, mas sua parte será feita, seu sentimento será comunicado e expressado. Enfim, o conselho que dou pra quem estiver lendo, mas antes, dou a mim mesmo é: VIVA a vida!

Abraços, e não se importem se o texto está com erros de concordância ou de redação, é apenas uma forma sucinta de expressar fragmentos de pensamentos.

Daniel Carrara
06.07.11

terça-feira, 28 de setembro de 2010

Internet ajuda na escolha de deputado; conheça sites de serviços

Internet ajuda na escolha de deputado; conheça sites de serviços

Recebi por e-mail de: Gilmar Morais
24/09/2010 19:00

Questionários que cruzam ideias e expectativas do eleitor com informações dos candidatos são a maior inovação da internet em 2010. No entanto, o Datafolha indica que a rede ainda tem pouca importância na definição do voto.
A multiplicação de páginas na internet com informações sobre os candidatos a deputado federal é uma das novidades da eleição deste ano. São páginas que associam as posições do eleitor a dos candidatos, que analisam a vida pregressa dos postulantes ou informam sobre o papel da Câmara dos Deputados.
Tudo para ajudar o eleitor a escolher um nome entre os 6 mil que buscam as 513 vagas da Câmara dos Deputados. Segundo o Instituto Datafolha, a menos de um mês do pleito, 66% dos eleitores dos oito estados pesquisados ainda não tinha definido o voto para deputado federal.
A maior inovação dessas eleições são os testes que relacionam as posições dos eleitores às ideias e ao comportamento dos candidatos. É o caso dos sites :
Repolítica (www.repolitica.com.br);
Extrato Parlamentar (www.extratoparlamentar.com.br);
Ficha Limpa http://www.fichalimpa.org.br/;
Divulga Candidatos http://divulgacand2010.tse.jus.br/divulgacand2010/jsp/index.jsp

Comportamento parlamentar
O Repolítica faz o cruzamento entre expectativas do eleitor com dados do Tribunal Superior Eleitoral (TSE), da organização Transparência Brasil e a opinião dos internautas e da comunidade sobre os candidatos a deputado federal - sejam novatos na política ou os que concorrem à reeleição.
Daniel Veloso, um dos organizadores do site, explica que o objetivo é comparar todos os candidatos a partir dos mesmos quesitos. "Ninguém, por mais engajado que seja, consegue comparar tantos candidatos a partir de informações tão diferentes. Colocamos todos eles em uma base de dados só", disse.
Segundo ele, o resultado do teste pode ajudar o eleitor ao limitar o universo de candidatos potenciais. "O que a gente espera é que o eleitor veja um grupo de candidatos adequados ao seu perfil e, a partir disso, pesquise mais sobre cada um deles antes de definir o voto".
Votações nominais
Já o Extrato Parlamentar está voltado apenas para os candidatos que buscam a reeleição (são 420 deputados nessa situação) e está focado no comportamento do deputado nas votações nominais em Plenário. Ele cruza o voto dado pelo deputado à posição do eleitor sobre o tema, em busca dos que se posicionaram de maneira mais próxima à do eleitor.
O resultado do teste pode trazer surpresas. Uma pessoa que se considere de esquerda, por exemplo, pode ter deputados de direita no topo da afinidade. A cientista política Andréa Freitas, responsável pela base de dados do projeto, esclarece que isso ocorre porque o voto do parlamentar é fortemente influenciado pela orientação do partido e não reflete necessariamente a posição de cada um.
Isso pode explicar o fato de o deputado José Genoino ter ficado em nono no resultado do seu teste, realizado a pedido de um jornal. O deputado se declarou favorável a determinados projetos nos quais votou contra, seguindo o voto do partido.
"As coisas no Congresso se dividem, de forma geral, entre quem está no governo e quem não está. Assim, o voto de cada deputado pode retratar a posição em relação ao governo, não a postura mais sincera de cada um", disse Andréa. Um dos objetivos do Extrato Parlamentar, segundo ela, é aproximar o processo legislativo do eleitor e alertar para os interesses em jogo.
"É importante se dar conta das muitas variáveis que afetam o posicionamento do parlamentar, como o fato de ser governo ou oposição. O objetivo é tornar transparente como se processam as coisas dentro do Congresso", disse a cientista política.
De acordo com o consultor Rafael Lamardo, parceiro da cientista política no Extrato Parlamentar, o site já recebeu mais de 100 mil visitas e já foi visualizado por mais de um milhão de internautas desde que foi entrou no ar, em agosto deste ano. O Repolítica também registra mais de 100 mil acessos, segundo Daniel Veloso.

Reportagem - Carol Siqueira
Edição - Patricia Roedel

segunda-feira, 23 de agosto de 2010

Você sabe o que é "RIA"?

Bom Dia meus Caros,

Muito se fala sobre RIA - Rich Internet Aplications, mas você já sabe do que se trata?

Resolvi postar uma pesquisa feita por um aluno meu, do Curso de Sistemas de Informação do ILES/Ulbra, Marco Túlio.

Segue o artigo.

Boa Leitura!

---------


Ferramentas e Conceitos sobre RIA

Marco Túlio Oliveira Souto¹, Daniel Humberto Carrara de Azevedo²

¹Aluno do Instituo Luterano de Ensino Superior – ILES/ULBRA – Itumbiara-GO
² Professor do Instituo Luterano de Ensino Superior – ILES/ULBRA – Itumbiara-GO



Resumo

Este trabalho apresenta a atualidade do desenvolvimento Web mediante a Aplicativos Ricos para Internet (RIA – Rich Internet Applications). O artigo cita conceitos de RIA, seu funcionamento e aplicação. São citadas também algumas das ferramentas para o desenvolvimento destas aplicações. O artigo é baseado em trabalhos de autores internacionais e tem por finalidade apresentar de forma resumida o funcionamento das RIAs no contexto WEB. As ferramentas de desenvolvimento aqui apresentadas são desenvolvidas pela Microsoft, Adobe, Laszlo e Java, e suas referências podem ser encontradas nos devidos sites destas empresas.


Palavras chaves: Rich Internet Applications, Microsoft Silver Light, Adobe Flash.


1. Introdução

O uso da Internet está mudando, permitindo que usuários reconsiderem as experiências de uso da WEB. No princípio, os usuários da Internet deveriam ter um alto nível de conhecimento, principalmente em programação, porém, atualmente o perfil destes usuários mudou, e agora possuem um nível diversificado com entendimento técnico e experiências no uso da Internet. Dessa forma, o que é utilizável para um desenvolvedor, não é sempre tão utilizável para um usuário.
A Usabilidade tem se tornado o centro das concorrências entre desenvolvedores de software, e mais ainda, para os aplicativos da Internet. Segundo MULLET (2003), os modelos de networking estritamente controlados têm historicamente feito com que, proporcionar a usabilidade melhorada, se torne uma tarefa mais formidável. E complementa, “o objetivo das melhorias nas experiências na Internet é trazer os usuários o mais perto possível dos produtos ou atividades sem estar fisicamente em um evento ou em um showroom.
Rich Internet Applications (RIA), têm se tornadas altamente importantes e populares. Estasquais têm muitas das características e funcionalidades dos softwares de desktop mesmo sendo executadas on-line,.
RIAs fazem com que programas executados na Internet se tornem mais fáceis de usar e mais funcionais, e também superam os problemas tradicionais dos aplicativos WEB, como por exemplo, a baixa performance, e interatividade limitada.
Segundo David Temkin, administrador técnico chefe da plataforma Laszlo System RIA, estes programas são mais práticos de serem desenvolvidos do que as aplicações tradicionais. Existem várias aplicações na WEB altamente utilizadas hoje em dia, como o correio eletrônico (e-mail), comércio eletrônico, transações financeiras, e até mesmo a educação, não se esquecendo das músicas, vídeos, emissoras de rádio e televisão que também estão fortemente presentes na WEB.
Surgem então grandes visões sobre o futuro do uso a Internet como também grandes problemas. A migração para aplicativos na WEB mantendo os requisitos de usabilidade das aplicações cliente-servidor é uma exigência e um desafio para estes novos aplicativos. Interfaces amigáveis, segurança e eficiência são alguns requisitos destes novos aplicativos.
Segundo ROCHA, dados disponíveis mostram que em 1998 aproximadamente três bilhões de dólares deixaram de ser ganhos na WEB norte-americana por causa de design mal feito de páginas, que dificultava a compra em vez de facilitar.
O termo RIA (Rich Internet Application) usado pela Adobe ou pela Microsoft (Rich Interative Application) mantém as características das aplicações desktop porem sendo utilizadas na WEB e mantidas em servidores de internet, sem a necessidade de instalação da aplicação, porém seus plug-in deve estar disponíveis no navegador.
Este artigo prove uma breve explicação sobre os tipos de RIAs, suas características e funcionamento, e ferramenta de desenvolvimento.


2. Rich Internet Applications

Esta nova tecnologia é conhecida como RIA. Estas são tecnologias emergentes, assíncronas, possivelmente não cliente-servidor e em plug-in presentes para permitir que os aplicativos sejam executados. Segundo BOZZON (2006), consequentemente, o processo de desenvolvimento é mais complexo e introduz mais variáveis em seus processos.
BOZZON (2006) também explica que a característica comum entre as tecnologias RIA é a habilidade de alavancar a renderização e o poder de comunicação entre os mecanismos de script que requerem dados necessários a execução, tudo isso para atualizar a interface do usuário. Isso proporciona melhora significante da interface e facilita a intuitividade das aplicações melhoradas. Por exemplo, estes tipos de aplicações podem prover aos usuários um feedback de qualquer ação que eles executem.
Além disso, embora o ambiente da aplicação é frequentemente onde execuções rápidas são ressaltadas a fim de preservar a característica de real time das aplicações, a natureza assíncrona das RIAs podem também ser usada para atualizar os status dos processos longos que estão sendo executados.
Devido ao fato de que as aplicações apenas enviam dados pertinentes ao servidor e apenas recebem pequenas quantidades de informações que são trocadas, o volume de trafico na rede que está sendo gerado é fortemente reduzido. A aplicação continua comunicando-se com o servidor, porém de forma fracionada, diferente das páginas tradicionais.
Segundo Mullet, esta característica proporciona pequenas atualizações incrementadas que refletem as ações dos usuários, chegando a uma interface resultante muito fina e permitindo interfaces com única página para as aplicações. Isso sugere que até mesmo os usuários com baixa largura de banda (exemplo, conexão discada) sejam capazes de aproveitar ao máximo as grandes riquezas destas aplicações.


3. Tipos de RIA

RIAs podem ser organizadas em três tipos diferentes conforme suas funções, como são desenvolvidas e implantadas.

3.1. Baseadas em Plug-in

O primeiro tipo de RIA são as baseadas em plug-in, que envolve a criação de aplicações em uma plataforma dedicada, ou em um ambiente dedicado, e então implantando-as tanto em soluções embarcadas ou em aplicações autônomas, executadas pelo navegador. Um exemplo de característica embarcada é a tecnologia do Adobe Flex2, o qual usa uma linguagem de marcação XML, chamada de MXML, para declarativamente criar Flash baseados em aplicações. Estes podem então ser incluídos à páginas HTML usando padrões de identificação HTML.
Um exemplo de aplicação autônoma é o Java Web Start, que utiliza o Java Network Launch Protocol (JNLP) para executar uma definida aplicação Java no navegador. Fazendo isso através do navegador, desenvolvedores podem assegurar que a versão especificada esteja sempre disponível.
A grande vantagem de uma aplicação baseada em plug-in é a simplicidade para ser desenvolvida. Normalmente referida como “Sandbox”, e permite que os desenvolvedores tenham uma estável e conhecida plataforma de desenvolvimento, e provê seguranças que serão executadas da mesma forma entre as variadas formas de plataformas, considerando que os plug-in estejam disponíveis.
De fato, aplicações Java estão entre as primeiras RIA já criadas para WEB. Outros exemplos de ferramentas para desenvolvimento de RIA com suporte baseado em plug-in incluem o Microsoft Windows Smart Client e o Open Laszlo.



3.2. Baseadas em Script

O segundo tipo de RIA é o mais conhecido. Criadas com a tecnologia Ajax são referidas como RIA Baseadas em Script. Estas aplicações empregam uma combinação de tecnologias para alcançar seus resultados, tipicamente incluindo XHTML/HTML, CSS, DOM, e JavaScript. A idéia é usar CSS e HTML para estilizar e apresentar a interface, usar JavaScript para fazer requisições assíncronas ao servidor, e finalmente usar DOM Scripting para realizar rederizações “on-the-fly”.
Esta estratégia dá à aplicação um rastro mínimo e não requer softwares para ser pré-instalada. Contudo, algumas das tecnologias têm problemas de compatibilidade documentados, referente a plataformas e navegadores. Por causa das incompatibilidades, os desenvolvedores devem ter cautela a fim de prevenir instancias de recursos “mortos”. A melhor técnica de sucesso para o desenvolvimento de aplicações em estilo Ajax é assegurar que o navegador dos usuários não tenham acesso ao JavaScript.
Uma aplicação é primeiramente desenvolvida usando modelos tradicionais para aplicações normais de Internet. Então o JavaScript é utilizado para conferir sua própria existência e modificar componentes das páginas, se necessário. Isso é particularmente um processo longo e difícil que requer profundo conhecimento de incompatibilidades que existem, e como dar suporte aos vários processos que existem nos navegadores mais antigos.
Por causa desta complexidade, uma variedade de frameworks têm sido criados para aliviar as questões de compatibilidade com navegadores. Dois dos mais populares são Prototype e o Dojo. Frameworks são conjunto de instruções reunidas em grupos denominados “bibliotecas”.


3.3. Baseadas em Navegadores de WEB

O terceiro e último tipo de RIA são as Baseadas em Navegadores, que geralmente incorporam uma linguagem de interface do usuário, construídas em XML, que permite aos desenvolvedores especificarem os elementos necessários e suas interações em um formato declarativo. Um exemplo é a linguagem XUL da Mozilla Foundation.
A principal vantagem desta categoria é a base de normas existentes no XML, apoiadas pelo W3C, como CSS1 e CSS2, DOM nível 1 e 2, e o JavaScript 1.5 + XUL, que são desenhados para serem independentes de plataformas, assim permitem a portabilidade entre estas plataformas.


4. Funcionalidade


Figura 1 – Tradicional v. Rich Internet Application. Fonte: Arquivo próprio.

Em toda RIA, há uma sequência consistente de eventos conduzidos pelas chamadas assíncronas e a recuperação de dados, conforme mostra a imagem 1. Conforme Heilmann (2006), mesmo no modelo de comunicação Ajax, o navegador ainda carrega a interface normalmente. Durante essa etapa, o JavaScript é usado para habilitar as funcionalidades requeridas pela página.
Não há nenhum tipo de detecção envolvida, se o JavaScript não estiver disponível, simplesmente nada é executado; a página com a suposição de que o JavaScript está ativo, porém nenhuma modificação pode ser feita nesta página. Por outro lado, se o JavaScript estiver disponível, este é usado para adicionar os manipuladores dos eventos e configura os vários métodos para facilitar o processo Ajax.
No Estágio Inicial, é criado um objeto chamado XML http Request, com função de dar suporte ao envio e o recebimento de dados entre o usuário e o servidor. A combinação de funções anônimas e nomeadas são registradas para os eventos de enviar dados e manipular solicitações de retorno. Conforme Heilmann (2006), quando uma solicitação de retorno é recebida, o JavaScript é usado para manipular o Documento Object Model (DOM), atualizando a interface do usuário para refletir o resultado da ação.
Ao criar RIA, um dos principais objetivos é manter a sincronização de dados, e permitir a interface do usuário ser atualizada em resposta as ações do usuário. Por exemplo, se o usuário deletar um determinado item de uma lista, este item deve visivelmente desaparecer da tela. Esta funcionalidade deve ser reforçada como um efeito de enfraquecimento, criando uma impressão ao usuário que o item está sendo deletado em tempo real.
No entanto, alguns usuários não notam quando uma atualização ocorreu. Sendo assim, as RIA devem também prover alguma forma de notificar quando uma tarefa ou processo foi completado. Os usuários podem também ser direcionados para um conteúdo mais importante, ou apresentar notas coloridas ou ainda sugestões visuais.
Usuários são sensíveis a respostas relativas e perceptíveis. Os processos não devem demorar tanto quanto os usuários podem aguardar enquanto são completados. Uma das principais razões do uso de RIA é para criar uma impressão ao usuário de que as tarefas estão sendo realizadas no instante em que a requisição do usuário é iniciada.
Uma execução longa de um processo facilmente frustrará o usuário se ele estiver aguardando uma resposta rápida. Neste caso, a RIA deve prover um meio de mostrar o progresso da operação, e indicar aproximadamente quando tempo irá demorar. As RIA devem suportar desfazer ou refazer as tarefas. Quando se pretende emular uma aplicação desktop, é necessário prover um tipo de componente e funcionalidade que os usuários possam se familiarizar e entender de forma fácil.


5. Modelo Para Construção de Aplicação

Aplicações que serão desenvolvidas para serem usadas na WEB terão que observar os princípios da usabilidade das aplicações desktop, tais como, visibilidade, feedback, facilidade de aprendizado, eficiência, satisfação subjetiva, facilidade de navegação, simplicidade, tempo suportável e foco no usuário.

5.1. Microsoft SilverLight

É um projeto desenvolvido pela Microsoft para a construção RIA para uso na WEB. Suporta Ajax, Python, Ruby e as linguagens .Net, Visual Basic e C#. O Microsoft SilverLigth é composto por um run time (programa necessário para executar aplicativos da Microsoft), um SDK (Software Development Kit ou pacote para desenvolvimento dos aplicativos) e ferramentas de desenvolvimento e design. A linguagem utilizada para o design é, segundo a Microsoft, a mesma utilizada para o desenvolvimento da interface do Windows Vista, o XAML.

5.2. Adobe Flex 2

O Adobe Flex 2 é um pacote de ferramentas e tecnologias para a construção de RIA, é desenvolvido pela Adobe e está composto pelo Adobe Flex 2 SDK, Builder 2, Data Services 2, Charting 2.
O Adobe Flex 2 SDK é a base da tecnologia e consiste de um conjunto de classes (framework), compilador, debugger, duas linguagens de programação MXML e ActionScript.

5.3. Laszlo

É um projeto chamado OpenLaszlo, pois possui código aberto, porém é distribuído sob a proteção de uma OSI de autoria da IBM. É composto pela linguagem LZX, um servidor, um compilador e run times. O OpenLaszlo Server é um servidor implementado com um servlet Java e roda dentro de um servlet container, ou um servidor J2EE compatível e é independente de sistemas operacionais.

5.4. Java Web Start

É um sistema desenvolvido pela Sun Microsystens para distribuir aplicações J2SE pela internet. Essas aplicações usam em sua interface objetos da biblioteca Swing ou AWT. São componentes desenvolvidos para aplicações desktop. As aplicações distribuídas via Java Web Start são na verdade aplicações com interface de desktop e estão associadas a um navegador WEB.
Assim que o usuário acessa uma página que contenha um link para um tipo de arquivo JNLP, o navegador lança o Java Web Start, que por sua vez transfere a aplicação pela rede, coloca na memória e executa a aplicação.


6. Conclusões

Com esse trabalho foi possível obter conhecimento sobre os novos conceitos que abordam a WEB e seus aplicativos. Pode-se concluir que os Aplicativos Ricos para Internet, desenvolvidos por ferramentas específicas, podem mudar o conceito de aplicações WEB, possibilitando a estas possuírem características de programas desktop.
Conforme apresentado no trabalho é possível diferenciar os modelos de sites e aplicativos WEB atuais com os novos modelos que estão a surgir.
Possibilitou também conhecer as novas ferramentas que proporcionam a criação das RIAs.


7. Referências

BOZZON, A, Comai, S. Fraternali, P. and Carughi, G. Conceptual Modeling and Code Generation for Rich Internet Applicationss. ACM International Conference Proceedings Series (2006).

HEILMANN, Christian. Beginning JavaScript with DOM Scripting an Ajax. New York: Apress Publishing, 2006.

MULLET, KEVIN. The Essence of Effective Rich Internet Applications. Macromédia Whitepapers, 2003.

ROCHA, H. V.; BARANAUSKAS, M. C. Design e Avaliação de Interfaces Humano-Computador. Núcleo de Informática Aplicada à Educação Unicamp. Disponível em: < http://pan.nied.unicamp.br/>. Acesso em abril 2010.

Smart Client Software Factory - http://msdn.microsoft.com/en-us/library/aa480482.aspx

Open Laszlo - http://www.openlaszlo.org/

Mozilla Foundation - http://www.mozilla.org/

quinta-feira, 22 de abril de 2010

Resenha sobre artigo: A Thread Performance Comparison: Windows NT and Solaris on A Symmetric Multiprocessor

Olá pessoal,

A partir de hoje vou postar algumas trabalhos que tenho feito no mestrado e acho que pode contribuir com o meio acadêmico e tecnológico.
Hoje, vou postar uma resenha que escrevi para a disciplina de SO sobre o artigo: A Thread Performance Comparison: Windows NT and Solaris on A Symmetric Multiprocessor.

Caso queiram ler o artigo original esse é o link: http://www.sagecertification.org/publications/library/proceedings/usenix-nt98/full_papers/zabatta/zabatta.pdf

RESENHA

Resenha sobre a obra: A Thread Performance Comparison: Windows NT and Solaris on A Symmetric Multiprocessor. Autores: Fabian Zabatta e Kevin Ying

A obra acima citada, um artigo, é um estudo comparativo do desempenho de threads em dois Sistemas Operacionais distintos: o Windows NT e o Solaris. O autor apresenta, através de experimentos, os resultados de desempenho de cada Sistema em distintas etapas de execução de determinados processos em situações diversas.
O artigo é iniciado com um breve histórico dos processadores: custo e desempenho do mesmo. É então citada a criação do processador Pentium Pro (PPro), pelo fabricante Intel, onde o autor alega que esse é um processador de alto desempenho construído como suporte para o propósito do multiprocessamento. Em seguida, o autor aborda o assunto de multiprocessamento simétrico (SMP) definindo-o como uma arquitetura paralela primária onde os processadores compartilham a mesma unidade do sistema operacional assim como compartilham memória, barramento e dispositivos de entrada e saída. O autor aborda o conceito de processo e o define como objetos de execução, e os classifica em multitarefa quando aborda sobre concorrência e paralelismo; ainda fala sobre mutex. O autor inicia a explanação sobre os sistemas operacionais descrevendo as características dos SO’s Windows NT e Solaris, afirmando que ambos são sistemas que utilizam prioridades básicas, tempo de partida e algoritmos multitarefa para escalonar seus objetos de nível de kernel.
Ao abordar o assunto de threads, o autor explica que no Windows NT a menor unidade de execução no nível de usuário é a fibra (fiber).
Assim, um thread é constituído de múltiplas fibers que conseguem acessar os threads aleatoriamente. No Solaris, a menor unidade de execução no nível de kernel é o LWP (light weight process), sendo esses os constituintes dos processos do Solaris. Diferentemente do NT, no Solaris, a menor unidade de execução no nível de usuário é a thread, e assim como as fibers, essas não executam sozinhas. No caso do Solaris elas são implementadas e controladas pela biblioteca de sistema. A biblioteca de threads no Solaris define dois tipos de threads, a thread bound (encadeada) e a thread unbound (independente).
Na seção de experimentos, o autor elenca sete experimentos que, segundo o mesmo, foram importantes para determinar se as diferenças na implementação, design e camadas de threads produziriam diferenças de desempenho significantes. São eles:
1. Medida do número máximo de threads de kernel que poderia ser criada por cada sistema;
2. Medida do tempo de execução da criação de threads;
3. Medida da velocidade de criação de thread quando se força o processador com vários processos em execução;
4. Determinar como cada implementação de threads de sistemas operacionais desempenharia em processos com threads em intensivo processamento que não requereram nenhuma sincronização;
5. Determinar como cada implementação de thread desempenharia em processos de processamento intensivo que solicitaram sincronização extensa;
6. Determinar o desempenho de cada implementação do sistema operacional em pesquisas paralelas implementadas com threads;
7. Determinar o desempenho de cada implementação do sistema operacional nos processos com threads que tiveram os requisitos de processador espalhados.
Quanto ao ambiente dos experimentos, trata-se de uma mesma máquina para ambos os sistemas, com PPro SMP e 512Mb de RAM e um grande HD. O modo de instalação do SO foi dual-boot, com as versões de Solaris 2.6 e Windows NT Server, versão 4.0. O compilador utilizado foi o GNU gcc versão 2.8.1.
Para descrever os experimentos a seguir, será usado em conjunto a análise crítica dos resultados apresentados a cada etapa.

O primeiro experimento mensura a quantidade máxima de objetos do nível de kernel que cada SO poderia criar. Para o NT em 24.12 segundos foram criados 9817 threads contra 2294 threads no Solaris em apenas 2.68. Contudo para o Windows foram necessários 68MB de memória enquanto no Solaris apenas 19MB. Porém, o objetivo desse primeiro processo era observar a quantidade de threads que cada sistema conseguiria criar e nesse ponto o Windows NT obteve um melhor resultado como visto acima, pois no Solaris, quando se obteve o número de 2294 apresentou uma falha.

No segundo experimento foi abordada a velocidade de criação dos threads. Os sistemas operacionais Windows NT e Solaris apresentaram um desempenho parecido, no caso do Solaris para Threads agregadas. Segundo o autor isso pode ser atribuído devido o fato de que cada SO requer System Call (chamadas de sistema) para a criação dos threads. Quando o Solaris utilizou apenas uma chamada da biblioteca o desempenho do mesmo superou o NT, através dos threads independentes. Para o caso do CL=4 no Solaris apresentou um bom desempenho, porém muito inferior ao caso dos threads independentes. Com esse segundo experimento pode-se observar que para o caso dos threads independentes, onde há uma chamada à biblioteca de threads o desempenho supera o NT e até mesmo as outras formas de criação utilizadas no Solaris. Isso pode ser observado através dos tempos apresentados na tabela 2 da seção 3.2.
Também abrangendo a criação de threads tem-se o terceiro teste. Nesse caso, mediu-se a velocidade de criação dos threads da mesma forma que o teste anterior, porém com sobrecarga de threads no processador. Mais uma vez nesse caso o Solaris superou o Windows NT. O terceiro experimento retrata uma realidade corriqueira para os processadores e processos e através do teste em questão se pôde observar a veracidade dos fatos.

No quarto experimento foi determinado o desempenho que cada implementação de thread poderia atingir para os processos sem requisição de sincronização. O thread teria que ficar ociosa por 10 segundos até ser concluído, após sua conclusão o processo de criação poderia se findar. As diferenças entre os dois SO’s são sutis, exceto para os threads unbound, que apresentaram valores muito acima do NT. Devido à ligação entre o thread unbound e a CL=4, essa última impactou no tempo de chamada do thread unbound o que fez com que a mesma executasse em tempo 10N.

O quinto teste é semelhante ao quarto, contudo, a sincronização nesse caso é requerida. Para tanto, utilizou-se o programa “array.c” que implementa a criação de threads para modificar dados compartilhados em uma estrutura de 10.000 iterações. A cada momento que um thread necessitava modificar um dado compartilhado era requisitada uma exclusão mútua. O Windows NT apresentou dois objetos de exclusão mútua: o mutex e a sessão crítica. Já o Solaris utilizou apenas o mutex. O desempenho no Solaris foi consideravelmente melhor especialmente com o processo de CL=4. Contudo o NT apresentou bons resultados quando utilizou sessão crítica. Acredita-se que essa otimização é devido o fato de que na sessão crítica há um objeto usuário simples que apresenta um estado global.

O sexto teste aborda a pesquisa paralela com threads que requisitam sincronização limitada. O autor implementa nesse teste o problema do caixeiro viajante. Os threads foram implementados no paradigma de pilha de trabalho. Como resultado, o NT apresentou um desempenho fraco quando uma sincronização foi requisitada. O interessante nesse experimento é que o NT supera ligeiramente o Solaris. Um resultado surpreendente, visto que no teste anterior, utilizando chamada síncrona o NT apresentou um desempenho inferior. Outro ponto interessante apresentado pelo autor é que utilizando uma ou mais thread unbound no Solaris o desempenho foi o mesmo que utilizando dois threads encadeados no mesmo SO.

O último experimento demonstra como cada implementação de thread de sistema operacional desempenharia em processos que apresentam muitos threads com explosão (espalhamento) de CPU (bursts). Pode-se citar como exemplo os processos de E/S como, uma rede ou uma aplicação de cliente/servidor. O tempo de espera foi determinante nesse teste e no desempenho dos SO’s. O Solaris utilizando concorrência restrita apresentou um resultado um pouco melhor que o NT.
Enfim, o autor conclui o estudo afirmando que ambos os Sistemas Operacionais foram aptos para a utilização de multiprocessadores. Um fator pertinente para o problema de desempenho de cada sistema foi a falta de documentação. O sistema Windows NT apresentou ótimos resultados quando se utilizou a sessão crítica, porém, na maioria dos outros testes o Solaris apresentou melhores resultados, algumas vezes muito próximo ao NT, especialmente na utilização das unbounds threads. Realmente esses aspectos foram observados no estudo. Ele cita ainda, o POSIX (Portable Operating System Interface) como solução para padronização de threads e assim, quem sabe, uma otimização gradual dos threads em todos os Sistemas Operacionais, presentes ou futuros.

O estudo demonstra ainda que embora o Solaris seja um Sistema considerado em alguns pontos superior aos demais, alguns aspectos precisam ser melhores aproveitados. Já o Windows NT, um sistema criado pela Microsoft para complementar as distribuições do Windows, com foco empresarial, demonstra alguns pontos inferiores ao Solaris, contudo, o mesmo pode ser explorado para programação paralela e sessão crítica.
Enfim, com esse estudo, pode-se observar que do ponto de vista de Sistemas Operacionais e seus recursos, tudo é relativo, ou seja, cada categoria de thread é melhor ou pior em determinados momentos e com determinados ambientes, tanto no Windows NT quanto no Solaris.


Resenha escrita por:
Daniel H. Carrara de Azevedo
Mestrando em IA - UFU
E-mail: dhcarrara@gmail.com