Arquivo de Março de 2008
Uma (Excelente) Biblioteca de Engenharia de Software e SOA à Sua Disposição

A Internet nos trouxe as bibliotecas digitais. Bibliotecas digitais são excelentes mecanismos para conhecer novos assuntos, nos aprofundarmos em assuntos já conhecidos ou mesmo aumentar a nossa produtividade enquanto engenheiros de software.
Melhor ainda se a biblioteca digital puder ser usada sem a violação de direitos autorais, fato que infelizmente não ocorre com outras “bibliotecas” de endereço e reputação duvidosa.
Em particular, recorro sempre à um biblioteca de excelente qualidade chamada RedBooks. O RedBooks (http://www.redbooks.ibm.com) é uma biblioteca pública de livros diversos de TI. O download dos livros em formato digital é gratuito e os livros podem eventualmente ser comprados em formato impresso.
O segredo do Redbooks é que esta é uma rede social, i.e., qualquer pessoa com conhecimento técnico suficiente pode se inscrever e participar de um projeto que irá escrever um novo livro. Vários Brasileiros participam ativamente deste processo, inclusive.
Existem vários domínios (assuntos) dentro desta bibliotecas. Destaco três em particular:
- RedBooks para Desenvolvimento de Aplicações.
- Software Rational (Ferramentas para Governança do Desenvolvimento e Entrega de Aplicações)
- Software WebSphere (Ferramentas para Operações de Aplicações e SOA)
A qualidade dos RedBooks, de forma geral, é muito boa. É possível, inclusive, votar na qualidade e criticar os livros, que eventualmente são melhorados ao longo do tempo. Dados de pesquisa da IBM junto a seus clientes mostraram dados interessantes do aumento de produtividade no uso dos RedBooks. Coloco aqui um fragmento desta pesquisa.


Para não perder o hábito de falar sobre SOA, coloco aqui as dezenas de ocorrências que encontrei sobre SOA no RedBooks Online.
- Redbooks de SOA
Arquiteturas de Referência para SOA - Sobre os Ombros de Gigantes
O que é uma arquitetura de referência?
É uma coleção de de boas práticas arquitetônicas para capturar soluções provadas em um problema de um determinado domínio. Em termos simples, ele oferece uma base de onde criamos boas arquiteturas de software em projetos de TI. Um exemplo interessante de uma arquitetura de referência específica para o domínio Java é o Java EE (Java Enterprise Edition), que define um modelo provado para a montagem de aplicações corporativas em tecnologias Java.
Quando falamos de SOA, estamos falando de gerar agilidade para os negócios. O propósito básico de SOA é prover à TI um mecanismo provado de alinhamento com áreas de negócios. Quando somamos SOA e arquiteturas de referência estamos falando, portanto, de um conjunto de mecanismos provados para projetos SOA. Interessante notar que SOA não é uma arquitetura de TI, mas uma arquitetura de negócio. Portanto, uma arquitetura de referência para SOA envolve aspectos técnicos e também aspectos de negócios. Exemplos incluem:
- Camada de Governança
- Camada de Serviços de Apresentação (ex: Portais e Mash-ups)
- Camada de Serviços de Processos de Negócio
- Camada de Serviços de Dados
Desenhar e montar uma arquitetura de referência, entretanto, não é uma tarefa fácil. São necessários anos de práticas e vários projetos para capturar as boas práticas e afastar as más práticas. Felizmente, podemos contar com duas empresas sólidas, com dezenas de anos de experiência no desenvolvimento, entrega e suporte de aplicações corporativas. Destaco aqui a BEA e a IBM. Exemplos de seus produtos incluem os OLTPs de excelente reputação como o BEA’s TUXEDO (desde 1983) e o IBM CICS (desde 1969). Interessante notar, as duas soluções mais maduras de SOA do mercado são da BEA e IBM. Delas vêm também boas arquiteturas de referência, que podem ser usadas até por empresas e pessoas que não usem produtos destas empresas. Destaco, em particular, dois excelentes white papers da BEA e da IBM, respectivamente.
- BEA’s SOA Reference Architecture SOA - Excelente artigo com a montagem de uma arquitetura de referência para SOA.
- Design an SOA solution using a reference architecture - Também um excelente artigo com uma arquitetura de referência em nove camadas.
Embora com visões diferentes, os dois artigos podem e devem ser usados por qualquer técnico interessado em SOA e BPM. Como disse Isaac Newton certa vez sobre o seu trabalho da figura do começo deste artigo: “Eu pude ver mais longe porque estava apoiado nos ombros de gigantes”.
1 comentário »Suítes BPMS - Magic Quadrant Gartner 2007
Uma suíte BPMS (Business Process Management Suites) é um conjunto de ferramentas para a modelagem de processos de negócio (BPM) fim a fim, cobrindo diversos aspectos como a modelagem, simulação, orquestração, monitoração e geração de indicadores de desempenho de processos de negócio; entre outros.
O Gartner divulgou recentemente um relatório onde avalia e compara suítes de gerenciamento de processos de negócio. Um resumo rápido da situação é colocada na figura abaixo.

Além das 22 excelentes ferramentas comparadas neste estudo do Gartner, notamos que o mercado de ferramentas para BPM está em franca expansão também na comunidade de ferramentas livres e open-source. Bons exemplos incluem:
- JBOSS jBPM - Suíte para modelagem e orquestração baseado na linguagem jPDL.
- Intalio: Suíte completa BPMS para modelagem, simulação, orquestração e monitoração com suporte a BPEL.
Evolução das Plataformas SOA Open-Source - Como criar uma aplicação SOA em Dez Minutos!

O Apache Tuscany é um servidor (ambiente de execução) baseado na Arquitetura de Componente de Serviços (SCA - novo modelo de componente que facilita a construção de aplicações SOA), e se baseia em um conjunto de especificações inicialmente desenvolvido pela IBM e BEA, que está sendo padronizado pela OASIS, como parte da Arquitetura Aberta de Componente de Serviços (Open CSA). Tecnologicamente, o SCA pode ser comparado a especificações de Web-Services (WS-*), só que um estágio evolutivo à frente.
A versão 1.1 do Tuscany foi lançada recentemente e suporta diversas linguagens de implementação em sua versão atual, tais como:
- Java Beans
- Spring
- Scripting - JSR 223(JavaScript, Groovy, Ruby, Python & XSLT)
- BPEL
- XQuery
- OSGI
Algumas das especificações SCA suportadas por este ambiente incluem:
- SCA Assembly Model V1.0
- SCA Policy Framework V1.0
- SCA Java Common Annotations and APIs V1.0
- SCA Java Component Implementation V1.0
- SCA Spring Component Implementation V1.0
- SCA BPEL Client and Implementation V1.0
- SCA Web Services Binding V1.0
- SCA EJB Session Bean Binding V1.0
A princípio, tudo isso pode parecer muito complexo. Por outro lado, podemos entender o SCA como uma tecnologia muito interessante que permite expor códigos legados ou novas funções dentro de uma arquitetura de serviços 100% SOA.
Uma boa forma de desmitificar esta complexidade é rodar o tutorial abaixo, onde você monta uma aplicação SOA baseado em serviços compostos em apenas dez minutos.
1 comentário »
