Sistemas autonômicos: O que o futuro em TI nos reserva

Hoje temos a disposição inúmeras ferramentas e linguagens de programação que nos permitem construir sistemas voltados à gestão de recursos do mundo físico. Os sistemas computacionais embarcados além de apoiarem diversas atividades do nosso dia, de forma que percebemos: cadastro de dados para a consulta médica, uso do internet banking, etc.; nos rodeiam de outras tantas que não observamos: veículos, eletrodomésticos, etc.  A esta última condição damos o nome de ubiquidade, que é fazer uso de tecnologias em nossas atividades de forma tão natural, que não atentamos a estes acessórios.

O que acontece é que, a cada vez que um sistema se comunica com outro, o nível de complexidade desta relação aumenta os cuidados que precisam estar envolvidos em ambos os lados. E aí estão inseridos esforços em construir e mais ainda em manter tais funcionalidades. Pelo ritmo em que vivemos, essa integração tende a crescer exponencialmente, pois estamos fazendo uso de diversas ferramentas integradas para que desta forma consigamos gerir várias rotinas de nossas vidas: hora de acordar, hora de tomar água, quantos quilômetros corremos, qual o menor caminho para chegar ao trabalho, qual o bar mais badalado ou bem aceito da cidade, entre outras.

O sistemas ubíquos são uma modalidade dos sistemas autonômicos, que são aqueles sistemas que possuem a responsabilidade de manterem a si próprios. Dentre os sistemas autonômicos mais pesquisados no momento, estão os sistemas self-organizing, aqueles que não conhecem a si próprios: mapas e componentes, mas possuem a capacidade de manterem-se. Eles se baseiam nas funções biológicas da natureza e são voltados à computação de alta performance, pois devem atuar em cenários altamente dinâmicos.

Continuar lendo

Editor UML Papyrus

Papyrus é um editor EMF(Eclipse Modeling Framework) que permite a construção de modelos UML. Ele funciona integrado à IDE Eclipse e suporta as linguagens: UML 2, SysML e MARTE. Ele possui uma função bastante útil para arquitetos de software: importação do modelo gráfico para arquivo UML.

Os passos básicos para utilizar esta função do Papyrus são:

  1. Verificar a versão do Eclipse, previamente instalado (Help > About Eclipse);
  2. Acessar o site do projeto e copiar o link de repositório relacionado à versão do Eclipe (em meu caso, a versão Luna);
  3. De volta ao Eclipse, clicar no menu Help > Install New Software;
  4. Colar o link copiado no campo Work With, aguardar o Eclipse apresentar resultados para a consulta e selecionar a opção Papyrus;
  5. Clicar no botão Next e aguardar o download da ferramenta;
  6. Quando o download houver finalizado, o plugin pedirá para reiniciar o Eclipse. Permita o reinício clicando no botão Sim da mensagem apresentada;
  7. Após o reinício do Eclipse, clicar no menu Arquivo > Novo > Projeto;
  8. Digitar o nome Papyrus e selecionar a opção Papyrus Projeto;
  9. Clicar no botão Next e Informar um nome para o projeto.
  10. Escolher a opção de linguagem UML e clicar no botão Next;
  11. Selecionar um tipo de diagrama e informar nome para o modelo, pressionar o botão Finish;
    1. Mudar para a perspectiva Papyrus, se quiser (Window > Open Perspective > Papyrus);
  12. Inserir elementos no diagrama e salvar o projeto. Verificar que foi criado um arquivo de extensão .uml na pasta do projeto.
  13. Abrir o arquivo e conferir que ele apresenta as tags da UML 2.
Edição de um diagrama UML no Papyrus

Edição de um diagrama UML no Papyrus

Arquivo UML gerado pelo Papyrus

Arquivo UML gerado pelo Papyrus

MapServer

O MapServer é um ambiente para o desenvolvimento de sistemas para geolocalização. Ele é um pouco mais que um framework e um pouco menos que um SIG(Sistema de Informação Geográfica). Essa é uma ferramenta criada pela universidade de Minessota, EUA, em parceria com a NASA para prestar apoio ao à visualização dos serviços de localização.

O MapServer suporta diversos formatos vetoriais de imagens, que possibilitam a manipulação e análise dos mapas geográficos. Ele também suporta formatos matriciais, a exemplo do: PNG e JPEG. Através de seu uso, é possível explorar a visualização e projeção dos mapas, pela seleção de um ponto no espaço, por exemplo. As projeções dependem de abordagens complementares, como o uso de bibliotecas acopladas à ferramenta.

O MapServer disponibiliza uma interface que permite customização e expansão de suas funções à nível de código-fonte: a interface MapScript. Podem ser utilizadas as linguagens de programação PHP, Python, Java, PERL, Ruby ou C# para tanto. Seu ambiente pode ser executado em plataformas como Linux, Windows, Mac OS, FreeBSD, Solaris, entre outras plataformas  e distribuições desses sistemas operacionais.

O MapServer funciona como uma camada de intermediação entre o sistema de alto nível (o sistema que o cliente opera), o serviço presente no servidor e a base de dados, cluster, data warehouse ou outra fonte de armazenamento/coleta de informações do(s) GIS(s) relacionado(s). Um exemplo de banco de dados que se relaciona diretamente com ele é o PostGreSQL. Essa estrutura deve estar montada no ambiente local ou ambiente distribuído da aplicação. Quando uma requisição é realizada pelo cliente, ao sistema GIS, o MapServer busca na fonte de dados as informações necessárias para montar a visão requerida e “produz” a imagem no servidor do serviço. Ele funciona como um script integrado ao ambiente do servidor (CGI).

Através do MapServer, é possível buscar informações de várias fontes de dados e assim montar uma visão (imagem de mapa) consistente que represente os dados requisitados. Cada um desses dados podem estar presentes em camadas distintas (de forma genérica, uma camada é um pedaço da visão – outras pequenas imagens). Juntas, as camadas formam uma imagem completa ou mais detalhada que a anterior. O MapServer realiza esta atividade através de templates HTML. Um arquivo Mapfile guarda as informações da requisição: quais camadas buscar, qual o foco sobre o mapa, qual a projeção utilizada, entre outros, e direciona a edição dos templates HTML, os quais contém as camadas das visões. O formato dos arquivos Mapfile e templates HTML podem ser vistos no link à seguir: Link para o material introdutório.

Referências:

http://mapserver.org/

JBoss ESB

SOA(Service Oriented Architecture) é uma arquitetura orientada à serviços que recentemente vem sendo bastante utilizada para compor sistemas com aspecto de distributividade. Ela apresenta o meio de disponibilizar as funcionalidades implementadas nos sistemas como serviços. Esses serviços são oferecidos através de um barramento (ESB – Enterprise Service Bus), que publicam suas interfaces  em Web Services. A arquitetura SOA utiliza o paradigma request/reply como forma de estabelecer a comunicação entre os sistemas clientes e os sistemas que contém os serviços.

Apesar de apresentar inúmeras vantagens, a arquitetura SOA não é de fácil implementação (cara e complexa) e por conta disso, algumas empresas tem sugerido soluções específicas ao tratamento dela. Neste contexto, a Red Hat apresentou  o JBoss ESB, um ESB open source que abstrai a complexidade do SOA.

esbO JBoss ESB se comporta como uma camada de alto nível sobre a estrutura da aplicação. Ele provê flexibilização do  SOA, integração entre serviços de sistemas distintos e apoio à infra-estrutura do barramento de serviços. Com a adoção dele, o barramento ESB passa a ter o suporte à mediação, roteamento, transformação de dados e  orquestração para os serviços. O JBoss ESB permite distribuir instâncias de serviços por vários nós de rede. Cada um deles pode ser uma máquina física ou virtual que executam o próprio JBoss ESB.

O JBoss ESB também implementa uma MI (messaging infraestructure). Sobre o JBoss ESB, um serviço é definido como uma lista de classes do tipo Action (Action Pipeline) que processam uma mensagem ESB de forma sequencial. Um serviço pode definir uma lista de listeners, que atuam como roteadores de inputs para ele e desta forma encaminham mensagens para o Action Pipeline. Ele suporta duas formas de configuração de listeners:

  1. Gateway Listeners: obtém mensagens do barramento ESB e as encapsula como mensagens ESB antes que elas sejam enviadas para o Action Pipeline do serviço;
  2. ESB Aware Listeners: é utilizado para a troca de mensagens no barramento, entre os próprios componentes ESB.

action

O JBoss ESB Tools apresenta uma plataforma que contém:  um editor (interface GUI) e um assistente ESB, e assim permite criar arquivos de configuração ESB. O JBoss ESB também disponibiliza funções como: monitoramento e gerenciamento de processo de negócio, gerenciamento de transações; elementos como: conectores, contâiner de aplicações, serviço de mensagem, repositório metadata e diretório de nomes e serviços; e com isso aspectos de: robustez e segurança, ao sistema. 

jboss_esb jboss_esb2

Este link http://www.furutani.com.br/tag/jboss-esb/ apresenta um projeto simples que utiliza o JBoss ESB.

Referências:
http://jbossesb.jboss.org/
http://www.devmedia.com.br/artigo-java-magazine-59-jboss-esb/10202#ixzz3CIqOvatJ
http://www.mastertheboss.com/jboss-soa/jboss-esb-tutorial 

Sistemas Self-Organizing

O aumento desordenado da complexidade é um fator limitante para o desenvolvimento e manutenção dos novos sistemas computacionais. Os sistemas atuais: apresentam múltiplas camadas e tecnologias que se interconectam, trabalham de forma distribuída, são altamente dinâmicos, apresentam grande volume de informações, abertura a novos componentes (heterogeneidade) e devem estar disponíveis todo o tempo. Com isso, cresce a necessidade em dispor de pessoal cada vez mais especializado para construir e controlar esses sistemas.

A partir do início dos anos 90, pesquisadores do campo de Ciência da Computação vêm sinalizando a possibilidade da ocorrência de uma crise de complexidade do software, fenômeno esse que está se consolidando no momento. Desde então, os sistemas auto-gerenciáveis têm sido apontados como a solução mais adequada para conter essa crise. Suprir um sistema com a característica de auto-gerenciamento é uma forma de delegar ao próprio sistema a capacidade de lidar com sua complexidade e resolver suas crises.

Os sistemas self-organizing são uma categoria de sistema auto-gerenciado e são ideais para trabalhar em ambientes que apresentem muitas mudanças e precisem coordenar vários mecanismos que simultaneamente se relacionam. Eles apresentam as seguintes características:

  • São auto-adaptativos;
    • Apresentam abordagem top-down (visão macro influencia visão micro);
    • Não conhecem modelo arquitetural, políticas, nem as propriedades do sistema e ambiente.
  • Implementam propriedades self-* (basicamente: auto-configuração, auto-recuperação, auto-proteção e auto-otimização);
  • Trabalham de maneira distribuída;
  • Trabalham baseados no contexto do ambiente (context-awareness);
  • Permitem alterações em runtime;
  • Operam em um Ambiente:
    • Altamente dinâmico;
    • Utilizado em larga escala.

Seus aspectos de emergência e imprevisibilidade tornam ainda mais difíceis as tarefas de projetar, implementar e testar  sistemas deste tipo. Algumas ferramentas já foram disponibilizadas para oferecer suporte a este cenário, das quais são exemplos a “IDE” VAStudio e o framework JASOF.

Exemplos de uso dos sistemas self-organizing estão presentes nos projetos: Kilobot (http://www.eecs.harvard.edu/ssr/projects/progSA/kilobot.html), TaxSOM (http://soma.arb-silva.de/) e ABROSE (http://cordis.europa.eu/infowin/acts/analysys/products/thematic/agents/ch3/abrose.htm). É possível perceber através da comparação entre eles quão amplo é o campo de aplicação desse tipo de sistema: o projeto Kilobot tem aplicação no tema cibernética, o TaxSOM no campo da medicina e o ABROSE na área de comércio. Eles ainda podem ser aplicados sobre uma variedade de redes (redes de sensores, redes Kohonen, redes veiculares), comunidades web, cloud computing, computação em grid e até sobre os processos de gerência,  como é o caso do BPI.

Ainda é necessário realizar avanços para amadurecer o processo, os métodos, tecnologias e ferramentas próprias ao desenvolvimento dos sistemas self-organizing, mas o fomento das pesquisas neste sentido é uma forma de transformar essa proposta em realidade.

CONADEV 2015

Galera,

Fiquem ligados no evento CONADEV 2015.

O Conadev 2014 acabou de acontecer e foi muito legal! Ele foi gratuito e contou com palestras diversas sobre desenvolvimento de software e empreendedorismo. Os palestrantes, nomes já conhecidos ,  mudaram a minha visão a respeito de arquitetura de software, métodos ágil e outros assuntos.

Veja mais detalhes e acompanhe o evento no site: http://www.conadev.com/

Dica bônus: assista ao mega-hangout do conadev neste link – https://www.youtube.com/watch?v=0KyednM2pGQ

Fica aí o meu obrigada ao Jansen e ao Rafael. Até ano que vem meninos! \o/