A nova versão do Archimate, a linguagem de modelagem corporativa do Open Group

Foi publicada oficialmente nessa semana a especificação do Archimate 3.0, linguagem de arquitetura corporativa do Open Group.

Se você nunca ouviu falar do Archimate, montei um diagrama de Venn para ajudá-lo a se posicionar no mundo das linguagens de modelagem em TI.

Relação de Linguagens de Modelagem
Relação entre o Archimate e outras linguagens de modelagem

Note que o Archimate não substitui a modelagem de dados (IDEF1X) ou a modelagem de classes da UML ou mesmo a modelagem de processos do BPMN. Ele os complementa e os integra em uma visão muito mais ampla, chamada de modelagem corporativa. O Archimate possui um grande conjunto de construtos de modelagem e permite que trabalhemos mais de 30 pontos de vista de modelagem para capturar os diversos aspectos de uma organização de maneira integrada, da sua motivação até a sua implementação física.

Na figura baixo podemos observar essa extensão da linguagem ao longo das cores – Lilás, para modelagem da visão estratégica e visão de motivação, Amarela – Visão de negócio, Azul – Visão de aplicação, Verde – Visão de Tecnologia e Salmão – Visão de Implementação e Migração.

Extensão da linguagem Archimate

No seminário realizado nessa semana pudemos acompanhar as novidades com o Mark Lankhorst, líder da especificação, que incluem:

  1. Introdução de duas novas camadas de modelagem. A camada S para modelar estratégia e camada P para modelar aspectos físicos da sua organização.
  2. A introdução de *Business Capabilities* como um recurso oficial de modelagem. Business capabilities (ou capacidades de negócio) permitem representar em amplitude as competências que a sua organização possui.
  3. A introdução de elementos para modelagem estratégica, como *Course of Action* e *Resource*.  Estratégias e táticas organizacionais, por exemplo, podem ser modeladas como um curso de ação. E ativos organizacionais podem ser modelados como recursos.
  4. Maior alinhamento com o TOGAF 9 (Framework de Arquitetura Corporativa)  do Open Group.
  5. Introdução de qualificadores de cada elemento da linguagem para representar se o mesmo está sendo na camada M (Motivacional), S (Estratégia), B (Negócio), A (Aplicação), T (Tecnológico), P (Físico), I (Implementação e Migração).
  6. Introdução de um meta-modelo que explica a estrutura geral da linguagem.
  7. Algumas novas notações e reorganizações gerais que trouxeram mais ortogonalidade à modelagem.

Fica aqui a dica. Se você precisar desenhar a “planta da cidade” da sua organização, não pense duas vezes, use o Archimate pois ele é uma linguagem excelente para esse fim. Observamos que vários arquitetos de aplicação e arquitetos corporativos no Brasil tem usado essa linguagem e baseado em experiência prática, ela tem sido muito útil no meu trabalho para me ajudar com a modelagem sistêmica de organizações complexas.

E, para esclarecer uma dúvida comum, o Archimate não é uma ferramenta. Ele é “apenas” uma linguagem de modelagem de arquiteturas corporativas. Se você quer usar uma boa ferramenta que suporta a linguagem Archimate, recomendo o ArchiTool.

Para acompanhar o projeto do Archimate 3.0 ou mesmo baixar a nova especificação, siga este link.

O Enxoval da Noiva do Node.JS

Com o passar dos anos, a tecnologia Node.js já rivaliza com tecnologias tradicionais com como o ASP.NET, JSF, Ruby, PHP e Python em ambientes dinâmicos como startups e empresas de produtos WebMesmo empresas tradicionais no Brasil já tem começado a experimentar essa tecnologia bastante promissora.

Já apresentei aqui como fazer uma aplicação mínima em Node.JS, para aqueles que estão tendo o primeiro contato com essa tecnologia.

Ao mesmo tempo, algumas pessoas ainda perguntam: “É possível fazer em Node.JS uma aplicação com acesso a banco de dados com controle transacional, suporte a APIs REST, micro-serviços, com segurança forte,  tolerância a falhas e operação em cluster, entre outras preocupações técnicas corporativas?”.

A resposta, retumbante, é sim.

Para isso basta você acrescentar novos módulos ao node com o comando npm install -g <NomeModulo>. Isso é porque o Node.js vem pelado de fábrica e você deve incluir módulos conforme necessário. Essa abordagem minimalista, que permite criar ambientes Web muito leves, é um dos fatores de sucesso do Node.JS

Compilo aqui alguns módulos  que podem ajudá-lo na jornada do Node.JS e fazer aplicações cada vez melhores no mundo JavaScript.

  • ExpressJS[1] – Biblioteca para gerir requisições HTTP de forma facilitada a aplicativos móveis e Web.
  • LoopBack[2] [3] – Framework para a montagem rápida de aplicações Node. Esse framework conta com suporte da IBM e StrongLoop e tem ferramentas visuais para a geração de modelos, APIs Rest, scaffoldings e conectores com banco de dados.
  • Restify[4] – Módulo para facilitar a criação de web services REST.
  • PassportJS[5] – Biblioteca para autenticação de usuários em aplicações Node. Conta já com mais de 300 estratégias de autenticação como por exemplo OpenID, OAuth1, OAuth2 ou SAML.
  • Node-mysql[6] – Biblitoeca para acesso a aplicações MySQL com Node.
  • Node-OracleDB[7] – Driver mantido pela própria Oracle[8] para acesso aos banco de dados Oracle em aplicações Node.
  • Mssql[9] – Driver para acesso a banco de dados SQL Server em aplicações Node.
  • Mongoose[10] – Framework para manipulação do banco de dados Non-SQL MongoDB.
  • Azure[11] – Facilitador para implantação de aplicações Node em ambiente Microsoft Azure, mantido pela própria Microsoft.
  • Mocha[12] – Biblitoeca para testes de unidade para aplicações Node.
  • Pm2[13] – Gerenciamento de processo de produção para aplicações Node, com suporte a clusters, balanceamento de carga e tolerância a falhas.
  • NodeMon[14] – Biblioteca utilitária para facilitar a monitoração de mudanças no seu código fonte e recarregar automaticamente a sua aplicação Web.
  • Commander[15] – Módulo facilitador de execução de programas de linhas de comando em aplicações Node.
  • Nodemailer[16] – Biblioteca para a manipulação de emails em aplicações Node.
  • Request[17] – Biblioteca ainda mais simples que o Express para a manipulação de requisições HTTP.
  • Hapi[18] – Um outro framework HTTP para desenvolvimento de aplicações Web em Node.
  • Bluebird[19] – Biblioteca para facilitar a escrita de programas concorrentes, com suporte à primitiva de programação promise[20].
  • Async[21] – Módulo utilitário para fornecer funções de manipulação de código assíncrono em JavaScript.
  • stomp-client[22] – Módulo utilitário para clientes do protocol de fila de mensagens Stomp[23], suportado em implementações como o Apache ActiveMQ[24] e outros sistemas de filas de mensagem.
  • Numerals.JS[25] – Biblioteca utilitária para manipular e formatar números.
  • MomentJS[26] – Biblioteca utilitária para manipular datas.
  • ShouldJS[27] – Biblioteca utilitária para auxiliar a escrita de testes BDD em JavaScript.
  • Nock[28] – Biblioteca para criar mocks e simulações em testes de unidade JavaScript.

O portal do npmjs mantém uma lista  de pacotes populares JavaScript e pode ser usado como fonte de referência para acompanhar novidades da comunidade.  Para mais informações, veja aqui: https://www.npmjs.com/browse/star.

E você que já trabalha em Node.JS, que módulos Node.JS utiliza ou pretende utilizar para desenvolver aplicações Web JavaScript?  Complemente essa lista. 🙂

[1] http://expressjs.com/pt-br/

[2] http://loopback.io

[3] http://loopback.io/resources/#compare

[4] http://restify.com

[5] http://passportjs.org

[6] https://www.npmjs.com/package/node-mysql

[7] https://www.npmjs.com/package/oracledb

[8] http://www.oracle.com/technetwork/database/database-technologies/scripting-languages/node_js/index.html

[9] https://www.npmjs.com/package/mssql

[10] http://mongoosejs.com

[11] https://azure.microsoft.com/pt-br/develop/nodejs/

[12] http://mochajs.org

[13] http://pm2.keymetrics.io

[14] http://nodemon.io

[15] https://www.npmjs.com/package/commander

[16] https://www.npmjs.com/package/nodemailer

[17] https://www.npmjs.com/package/request

[18] http://hapijs.com

[19] http://bluebirdjs.com/docs/why-promises.html

[20] https://en.wikipedia.org/wiki/Futures_and_promises

[21] https://github.com/caolan/async/blob/v1.5.2/README.md

[22] https://www.npmjs.com/package/stomp-client

[23] http://stomp.github.io

[24] http://activemq.apache.org/stomp.html

[25] http://numeraljs.com/

[26] http://momentjs.com

[27] https://github.com/shouldjs/should.js

[28] https://github.com/node-nock/nock