Escalabilidade: EIP Competing Consumers com Apache Camel e ActiveMQ

Em arquiteturas de integração de aplicações a escalabilidade é um atributo de qualidade decisivo para o sucesso da aplicação. Para identificar gargalos antes de ir para o ambiente de produção, não deixe de incluir no seu planejamento atividades para testes arquiteturais de escalabilidade.
EIP Competing Consumers O EIP Competing Consumers é um dos principais padrões de integração relacionados diretamente com a escalabilidade. Ele responde a seguinte pergunta:

Como um consumidor de mensagens  pode processar múltiplas mensagens de maneira concorrente?

Ou melhor: O processamento não está escalando de acordo com o esperado. Como eu faço para escalar, quando eu encontro um gargalo?

Crie múltiplos consumidores competindo por mensagens em um canal.

OK. Mas como eu defino isso na prática usando Apache Camel com ActiveMQ? Você pode configurar esta option direto no componente ActiveMQ. Desta forma você vai alterar o número de consumidores padrão para todas as filas. Abaixo um exemplo de configuração do componente ActiveMQ do Apache Camel:







Caso você precise alterar uma fila específica é só passar a opção diretamente no endpoint como no exemplo abaixo:

from("activemq:QUEUE_NAME?concurrentConsumers=10");

Desta maneira é possível definir configurações diferentes de acordo com a necessidade de cada fila gerenciando a vazão adequada para cada rota.

Publicado via: AdrianoTavares(ponto)com

Scrum de Scrums de Arquitetura

 

 
Múltiplos times especializados
 
Tenho pesquisado a prática Scrum de Scrums e achei interessante para a nossa realidade. O contexto é um projeto de software digamos “do mundo real” organizado em múltiplos times especializados:

  • Um time de Análise de Negócio e Requisitos;
  • Um time de Gerenciamento de Projetos;
  • Um time de Arquitetura;
  • Um time de Desenvolvimento de Cadastros;
  • Um time de Desenvolvimento de Integrações;
  • Um time de Testes e Qualidade;
  • Um time de Infra-Estrutura;
  • Um time de DBAs;
  • Usuários e outros envolvidos.

Estes times devem trabalhar de maneira interdependente para entregar software atendendo a uma metodologia de desenvolvimento de sistemas corporativa, que inclui:

  • diretrizes de metodologias ágeis, principalmente Scrum;
  • diretrizes para análise de negócio e requisitos;
  • diretrizes de gerenciamento de projetos;
  • diretrizes para engenharia de software para .Net e Java;
  • padrões de modelagem de banco de dados;
  • diretrizes de infra-estrutura e ambientes;
  • diretrizes para arquitetura de software.

Outra característica é o tamanho da equipe que já chegou a 20 pessoas em determinados momentos do projeto. Geralmente, os profissionais não tem disponibilidade full-time para e estão geograficamente distribuídos.
 
Scrum de Scrums de Arquitetura
 
Em projetos neste contexto a prática do Scrum sugere a divisão das cerimônias de Scrum diário para times menores e Scrum de Scrums adicionais com objetivos específicos, como por exemplo:

  • O Scrum de Scrums de Progresso do Projeto;
  • O Scrum de Scrums de Análise de Negócio;
  • O Scrum de Scrums de Arquitetura.

O Scrum de Scrums de Arquitetura tem a ver com:

  • Sincronizar os times com relação às decisões técnicas;
  • Garantir uma comunicação efetiva da arquitetura;
  • Engajar os times em torno da evolução da arquitetura;
  • Mitigar riscos técnicos ao longo do projeto.

Esta cerimônia deve ter a participação dos principais membros dos times, geralmente os líderes, e a equipe de arquitetura. Isso não impede a participação dos demais membros sempre que necessário. As responsabilidades do Scrum de Scrums de Arquitetura incluem:

  • Dar suporte a decisões entre os times, que afetam a direção global da arquitetura;
  • Engajar os times em definir estratégias e padrões arquiteturais, os quais, todos os times devem seguir;
  • Identificação de áreas em que os times possam evitar esforços duplicados e melhorar o reuso de ativos;
  • Ser um forum para a comunicação geral da arquitetura entre os times.

Uma recomendação geral para Scrum de Scrums de Arquitetura:

  • Para um projeto com iterações de  2 a 4 semanas, reunir semanalmente durante uma hora;
  • Agendar a reunião e publicar a pauta a todos os participantes com 2 dias de antecedência;
  • Ao final, delegar as ações com foco nos impedimentos e atividades de arquitetura.

 
Se você aplica esta prática ou algo parecido compartilhe a sua experiência.
 
Publicado via: AdrianoTavares(ponto)com
 

12 Características do Apache Camel

O Apache Camel é um framework open-source, baseado em padrões de integração, que visa facilitar o trabalho de implementação de integrações. Vejamos as 12 características principais do Apache Camel.

 

 

1. Engine de roteamento e mediação

A característica principal do Camel é seu engine de roteamento e mediação. Esse mecanismo encaminha mensagens seletivamente, com base na configuração de rotas. As rotas no Camel são configuradas com uma combinação de implementações de padrões de integração (EIPs) e uma linguagem específica de domínio (DSL).

 

2. Padrões de integração corporativos (EIPs)

O projeto Apache Camel é baseado nos padrões de integração de Gregor Hophe e Bob Wolf. Mais informações em:   http://enterpriseintegrationpatterns.com/

 

3. DSL para integração de aplicações

DSL é a sigla de “Domain Especific Language”. Uma DSL é uma linguagem criada especificamente para resolver problemas de um domínio específico, em contraste com linguagens de propósito geral, que são criados para lidar com vários domínios. O Apache Camel possui uma DSL para integração de aplicações corporativas. A implementação principal e mais robusta é baseada em Java. A segunda é a notação XML do Spring. Outra linguagem suportada mais recentemente é Scala.

 

4. Biblioteca extensível de componentes

 

5. Roteador independente de tipo de mensagem

O Apache Camel pode rotear qualquer tipo de conteúdo de mensagem. Ele não está restrito a conteúdo XML. Esta liberdade significa que você não tem que transformar o conteúdo da mensagem em um formato canônico para facilitar o roteamento.

 

6. Arquitetura modular e plugável

O Apache Camel tem uma arquitetura modular e plugável que permite que qualquer componente possa ser carregado independente de: 1) ser distribuído junto com o Camel, 2) ser um componente desenvolvido por terceiros ou 3) uma criação sua personalizada.

 

7. Modelo baseado em POJO

POJOs (Plain Old Java Objects) são os elementos principais para extensão do framework. O Apache Camel permitir que você use POJOs  em qualquer lugar e a qualquer momento em seus projetos de integração. Isso significa que, em muitos lugares você pode estender a funcionalidade interna do framework com seu próprio código personalizado.

 

8. Configuração simplificada

O paradigma de convenção sobre configuração é seguido sempre que possível, os requisitos de configuração são minimizados. Para configurar os endpoints diretamente nas rotas o Camel usa uma configuração fácil e intuitiva de URI.

Por exemplo, você pode configurar um consumidor de arquivos para escanear recursivamente em sub-pastas e incluir somente arquivos .txt:

from("file:data/inbox?recursive=true&include=*.txt”);

 

9. Lightweight core

O Núcleo do Apache Camel é leve. A biblioteca total chega a cerca de 1.6 MB e só tem dependências para o Apache Commons Logging e Fuse – Source Commons Management. Isso torna o Camel fácil de incorporar em qualquer lugar, por exemplo:
  • Um aplicativo Java autônomo,
  • Aplicação Java web,
  • Aplicação Java EE,
  • Aplicação do Primavera,
  • Contêiner JBI,
  • OSGi bundle,
  • Java Web Start, ou
  • Google App engine.
O Apache Camel não é um ESB. Ele foi feito para ser incorporado à plataforma que você escolher.

 

10. Conversores automáticos de tipos

O Apache Camel tem um mecanismo interno de conversão de tipos que vem com mais de 150 conversores. Você não precisará configurar regras de conversão de tipos para ir de matrizes de bytes para sequências de caracteres, por exemplo.

 

11. Suite para testes

O Apache Camel fornece um Kit de teste que torna mais fácil testar os aplicativos Camel. É usado extensivamente para testar o prórpio Camel. Ele inclui mais de 6.000 testes de unidade.

 

12. Projeto Open Source com uma comunidade ativa

O projeto Apache Camel tem uma comunidade. Para participar acesse: http://camel.apache.org/community.html

 

Para saber mais sobre padrões de integração e como implementa-los com Apache Camel, participe das palestras sobre Arquitetura para Integração de Aplicações em Pangea.

 

 

7 padrões básicos para modelar integrações

Procurar um método ou catálogo de padrões para dar suporte à modelagem é sempre bom para organizar as idéias. Nesse sentido, os padrões de integração de Gregor Hohpe e Bobby Wolf são absolutamente fantásticos para todo profissional que trabalha ou quer trabalhar com integrações. Este post tem como objetivo apresentar os 7 padrões básicos para modelar  integrações e como eles podem ajudar a reduzir o acoplamento tornando as integrações mais fáceis de compreender e manter.

 

É comum que os códigos de integração sejam feitos as pressas. Eles são desenvolvidos na maioria das vezes sem nenhuma modelagem, sem ao menos uma visão de alto-nível. O sintoma é a diversidade de integrações ponto-a-ponto formando uma teia com diferentes estilos de integração e protocolos no ambiente de produção:

  • Estilos: intercâmbio de arquivos, troca de informações via bancos de dados, chamadas a APIs e troca de mensagens;
  • Protocolos: FTP, SQL, SOAP, REST, HTTP, Socket, JMS, etc…

 

Isso reflete a baixa maturidade em integração de aplicações das empresas com este cenário. É comum que cada profissional pegue uma integração pra fazer. Desta forma, estes códigos são aparentemente rápidos e baratos, mas são fontes de problemas devido à falta de padronização, alto acoplamento, dificuldade de manutenção e baixa robustez.

 

Esse custo é absorvido pelas equipes de manutenção ao longo dos anos. Tais equipes ficam “enxugando gelo”, fazendo infinitos remendos para acertar o que não foi pensado ou o que não deu tempo de ser feito. Geralmente os diversos tipos de lógicas inerentes à integrações estão totalmente acopladas e qualquer mudança em termos de tecnologia, localização, conexão e formato de dados, acarretam em manutenções pesadas. Abaixo as principais dependências inseridas neste contexto:

  1. Dependência da tecnologia: A representação dos dados está totalmente acoplada à tecnologia utilizada;
  2. Dependência de localização: Os endereços das aplicações são referenciados diretamente;
  3. Dependência de conexão: Os componentes das duas pontas tem de estar disponíveis ao mesmo tempo;
  4. Dependência de formato dos dados: Os parâmetros a serem trafegados e seus tipos  devem ser compatíveis.

 

Como melhorar esse cenário?

 

Vejamos então como os 7 padrões básicos podem nos ajudar a modelar integrações de maneira mais organizada, visando eliminar as dependências e reduzir o acoplamento.

 

Figura 1: Os 7 padrões básicos para modelar integrações.

Figura 1: Os 7 padrões básicos para modelar integrações.

Padrão 1: Aplicações, Pipes e Filtros (Pipes and Filters)

A primeiríssima coisa a fazer é definir quais são as Aplicações envolvidas em uma integração. Uma Aplicação pode assumir o papel de produtora ou consumidora de mensagens. É importante saber quais delas produzem informações e quais consomem. A segunda coisa mais importante a fazer é dividir grandes blocos de código de processamento em pequenas partes sequenciais independentes chamadas de Filtros. Cada um destes Filtros deve ficar encarregado de um tipo de lógica conforme os padrões a seguir.

Padrão 2: Extremidade (Endpoint)

As Extremidades representam as lógicas de conexão. Uma Extremidade possui um protocolo específico e separa as lógicas de conexão das outras lógicas. Se uma aplicação possui características específicas  de conexão (e muitas vezes características proprietárias), então esta complexidade deve ficar concentrada aqui neste elemento.

Padrão 3: Mensagem (Message)

Após a definição das Extremidades, a solução passa por utilizar um formato bem definido e auto-descritivo para troca de informações. Esta abstração cheia de semântica e sentido é muito bem representada pelo conceito Mensagem. Uma Mensagem é transmitida de uma aplicação para outra através de um Canal.

 

 Padrão 4: Canal (Channel)

O Canal é o elemento central de uma solução de integração baseada em mensagens. Uma Mensagem é levada do produtor para o consumidor passando por um Canal de comunicação. O Canal é o elemento onde um produtor escreve e o consumidor lê uma Mensagem. Desta forma, o produtor  trabalha totalmente independente do consumidor. Um Canal deve ser independente de tecnologia, localização, conexão e formato de dados. Ele é o elemento que  reduz o acoplamento entre as Aplicações. Em um próximo post vou falar do Apache Camel e como ele endereça estes requisitos.

Padrão 5: Roteador (Router)

Um Roteador é um tipo de Filtro que se encarrega das lógicas de redistribuição. Ele consome uma mensagem de um determinado Canal e redistribui em um ou mais Canais diferentes de acordo com um conjunto de condições.

Padrão 6: Tradutor (Translation)
Um Tradutor é um tipo de Filtro que se encarrega das lógicas de transformação de um formato de Mensagem para outro.

Padrão 7: Gerenciador de sistema (Control Bus)

O Gerenciador de Sistema é um tipo de Filtro que se encarrega de administrar o sistema de mensagens. Ele usa o mesmo mecanismo de mensagens para redirecionar dados relevantes para Canais de gerenciamento onde todos os componentes envolvidos possam ser monitorados e controlados.

 

Quando for modelar integrações, inicie criando um diagrama com os padrões básicos para ter uma visão em amplitude. Procure separar os diferentes tipos de lógicas de integração de acordo com os padrões. Isso vai ajudar a clarear as coisas e entender melhor o problema. Após obter uma visão em amplitude detalhe cada elemento em profundidade. O catálogo de padrões de integração tem 65 padrões que especializam os padrões básicos. São soluções para problemas específicos, mas isso é motivo para os próximos posts. :)

 

Para finalizar, ao  desenvolver suas próximas integrações tenha em mente estes padrões e faça pelo menos um esforço de modelagem em amplitude antes de mergulhar na codificação.

 

“That’s not what we think design is. It’s not just what it looks like and feels like. Design is how it works” – Steve Jobs

Publicado via: AdrianoTavares(ponto)com

Livro 12 soft skills para arquitetos de software

12 Essential Skills for Software ArchitectsUm livro para ensinar os soft skills essenciais para se tornar um arquiteto de software “master”.

O autor assume que o leitor já tem as habilidades técnicas necessárias para se tornar um arquiteto. Ele se concentra em 12 soft skills essenciais críticos para as atividades diárias de um arquiteto. Estas são as habilidades normalmente mais desafiadoras para as pessoas com background em tecnologia. Nos ambientes ágeis de hoje esses soft skills têm sido ainda mais importantes para o sucesso como arquiteto.

No livro, o autor começa por identificar as habilidades específicas de relacionamento, pessoais e de negócios que os arquitetos de sucesso possuem. Em seguida, ele apresenta métodos comprovados para o desenvolvimento sistemático de cada uma dessas habilidades, da negociação e liderança ao pragmatismo e visão.

Boa leitura!

“Passion is the internal fire that can propel your career.”  -  Dave Hendricksen

Quais são os deveres, habilidades e conhecimentos de um arquiteto de software?


A profissão de arquiteto de software vem sendo discutida por diversas instituições sérias. Cito aqui três que acompanho: SEI, IASA e Open Group. Cada uma delas tem suas particularidades, mas a meu ver, todas tem como objetivo tornar mais claro o papel de atuação do profissional de arquitetura no contexto da TI. Pois bem, extraí a tabela abaixo de um artigo do SEI chamado Models for Evaluating and Improving Architecture Competence. A proposta aqui é sintetizar  os deveres, habilidades e conhecimentos esperados de um arquiteto de software para servir de ponto de partida para profissionais que queiram se aprimorar na arquitetura de software.

Deveres
Atividades de Arquitetura Criação da arquiteturas de software
Avaliar e analisar arquiteturas de software
Modelagem e documentação de arquiteturas de software
Sistemas legados e transformação
Outros deveres relativos à disciplina de arquitetura não especificados (exemplo: conhecer e aplicar padrões)
Outras disciplinas do ciclo de vida de desenvolvimento de software além da arquitetura Requisitos
Implementação
Testes
Gerenciamento de configuração
Seleção de tecnologias e ferramentas
Interação com os envolvidos Interação com envolvidos em geral ou envolvidos diferentes de desenvolvedores e clientes
Clientes
Desenvolvedores
Gerenciamento Gerenciamento de projetos
Gerenciamento de pessoas
Apoiar o gerenciamento
Organização e negócios relacionados Organização
Negócios
Liderança e montagem de times Liderança técnica
Montagem de times
Habilidades
Comunicação Externa
Habilidades de comunicação em geral
Interna
Relacionamento interpessoal Com o time
Com outras pessoas
Trabalho Liderança
Gerenciar efetivamente a carga de trabalho
Habilidades para trabalhar em ambiente corporativo
Habilidades para tratamento da informação
Pessoais Qualidades pessoais
Habilidades para gerenciar o desconhecido
Habilidades para gerenciar o inesperado
Aprendizagem
Conhecimento
Ciências da computação Arquitetura de software
Engenharia de software
Análise e Desenho
Programação
Tecnologias e plataformas Conhecimento sobre tecnologias e plataformas específicas que trabalha
Conhecimento geral sobre outras tecnologias e plataformas
Conhecimento sobre o contexto e gerenciamento da organização onde trabalha Domínio
Indústria
Empresa
Experiência em técnicas de liderança e gerenciamento

Publicado via: AdrianoTavares(ponto)com

Qual seria o ponto ótimo da modelagem?

Este post surgiu de um comentário do Juliano Viana em outro post Sobre Modelagem no DAS na rede Pangea. Ele questionou qual seria o ponto ótimo da modelagem.

O ponto ótimo da modelagem de acordo com o gráfico abaixo definido por Scott Ambler, seria o investimento de esforço ideal e realista para se obter o valor máximo apartir do qual mais esforço degrada o valor já investido. Este ponto me parece o momento de parar e sinceramente é muito subjetivo para ser determinado com exatidão. O que se pode fazer então é procurar não pecar por falta de esforço e principalmente por excesso dele.  Certo?  :)

O arquiteto deve buscar este ponto ótimo através da modelagem boa o suficiente de acordo com os objetivos da modelagem. Mas como determinar se está bom o suficiente? Como se a percepção de valor é subjetiva? O arquiteto deve estabelecer os critérios e limites de esforço realistas. Algumas perguntas que podem ajudar:

  • O propósito da modelagem foi alcançado?
  • A modelagem está suficientemente compreensível?
  • A modelagem está suficientemente correta?
  • A modelagem está suficientemente consistente?
  • A modelagem está suficientemente detalhada?
  • A modelagem está suficientemente simples?

É importante que o arquiteto saiba que este ponto ótimo depende da situação e não deve implicar em perda de qualidade.

Para finalizar, seguem pontos de valor máximos em função do tipo de modelagem:

  • Modelagem inicial corporativa: Uma a duas semanas;
  • Visualização inicial: alguns dias, no máximo duas semanas;
  • Modelagem de uma iteração: algumas poucas horas;
  • Sessões de modelagem “Just in time”: de 5 a 15 minutos, máximo de meia hora.
Esta pequena lista pode auxiliar o arquiteto na determinação do ponto ideal da modelagem.

 

Sobre Modelagem no DAS

Aside

O arquiteto pode usar diversos formatos para comunicar decisões técnicas em um DAS (Documento de Arquitetura de Software) incluindo textos, desenhos, códigos, foto, imagem, sql, diagramas da UML, tabelas descritivas, etc… Se, teoricamente tudo que representa o que se pretende reproduzir pode ser considerado um modelo, o arquiteto é por natureza um modelador. A UML então pode ser uma linguagem que padroniza e auxiliar a visualização e comunicação de modelos de software. De outro ponto de vista o arquiteto deve tomar cuidado para não se tornar refém da UML. Muitas vezes os envolvidos não técnicos podem ter um melhor entendimento através de representações informais. 

  Diagrama de contexto
 
Diagrama de forma livre para representar uma visão de alto-nível da arquitetura técnica.
 
Diagrama de robustez usado para representar uma visão de componentes de alto-nível.
 
Via: AdrianoTavares(ponto)com
 

O Vocabulário do Arquiteto Corporativo – Parte 2

Continuando o post anterior, seguem abaixo os termos restantes.

22. Empresa

O mais alto nível de descrição de uma organização e tipicamente cobre todas as missões e funções. Uma empresa pode freqüentemente abranger multiplas organizações.

23. Fundação da Arquitetura

Uma arquitetura de serviços genéricos e funções que fornecem uma fundação sobre a qual mais arquiteturas e componentes específicos de arquitetura podem ser construídos. O TOGAF Foundation Architecture inclui um Modelo de Referência Técnica (TRM).

24. Gap (lacuna)

Uma declaração de diferença entre dois estados. Utilizado no contexto da análise de lacunas, onde a diferença entre a linha de base e arquitetura alvo é identificada.

25. Governança

A disciplina de monitoramento, gestão e direcionamento do negócio para entregar o resultado necessário.

26. Informação

Qualquer comunicação ou representação de fatos, dados ou opiniões, em qualquer meio ou forma, incluindo as formas textual, numérica, gráfica, narrativa, cartográfica, ou áudio-visual.

27. Tecnologia da Informação

  1. A gestão do ciclo de vida das informações e tecnologias relacionadas utilizado por uma organização.
  2. Um termo “guarda-chuva” que inclui todas ou algumas das áreas temáticas relacionadas com a indústria de computadores, tais como Continuidade de Negócios, Business IT Internet Interface, Modelagem de Processos de Negócio e Gerenciamento, Compliance, Comunicação e Legislação, Informática, Gestão de Conteúdo, Hardware, Gestão da Informação, Offshoring, Redes, Programação e Software, Questões Professional, Gestão de Projetos, Segurança, Padrões, Comunicações por voz, Armazenamento e Dados. Vários países e indústrias empregam outros termos guarda-chuva para descrever esta mesma coleção.
  3. Um termo comumente atribuído a um departamento dentro de uma organização encarregada de provisionamento alguns ou todos os domínios descrito (2) acima.
  4. Nomes alternativos comumente adotadas incluem Serviços de Informação, Gestão da Informação, entre outros.

28. Logical

Uma implementação independente da definição da arquitetura, muitas vezes relacionada com o agrupamento de entidades físicas de acordo com sua finalidade e estrutura. Por exemplo, os produtos de vários fornecedores de software de infra-estrutura podem ser agrupados logicamente como plataformas de servidor de aplicação Java.

29. Meta-dados

Dados sobre dados, de qualquer tipo em qualquer mídia, que descreve as características de uma entidade.

30. Meta-modelo

Um modelo que descreve como e com que a arquitetura será descrita de uma forma estruturada.

31. Método

Uma abordagem definida repetível para tratar um tipo particular de problema.

32. Metodologia

Uma série de passos, definidos, repetível para resolver um tipo particular de problema, que normalmente gira em torno de um processo definido, mas pode incluir também a definição de conteúdo.

33. Modelo

Uma representação de um assunto de interesse. Um modelo fornece uma representação simplificada em menor escala e abstrata de um assunto. Um modelo é construído como um “meio para um fim”. No contexto da arquitetura corporativa, o assunto é um todo ou parte da empresa e o fim é a capacidade de construir “visões” que abordam as preocupações das partes interessadas em particular, isto é, seus “pontos de vista” em relação ao assunto.

34. Modelagem

Uma técnica através da construção de modelos que permite que um assunto seja representado de uma forma que permita o raciocínio, discernimento e clareza sobre a essência do assunto.

35. Objetivo

Um marco de tempo limitado para uma organização utilizado para demonstrar o progresso rumo a um objetivo, por exemplo, ”Utilização da Capacidade Aumentarem 30% até o final de 2009 para apoiar o aumento previsto na quota de mercado”.

36. Physical

Uma descrição de uma entidade do mundo real. Elementos físicos em uma arquitetura corporativa ainda podem ser consideravelmente abstraídos da arquitetura da solução, design ou visões de implementação.

37. Modelo de Referência

Um modelo de referência é um framework abstrato para a compreensão das relações significativas entre as entidades de um ambiente para o desenvolvimento de padrões consistentes ou especificações suportando aquele ambiente. Um modelo de referência é baseado em um pequeno número deconceitos unificadores e pode ser usado como base para a educação e padrões de explicar a um não-especialista. Um modelo de referência não está diretamenteligada a todos os padrões, tecnologias, ou outros detalhes de implementação concreta, mas tem por objetivo fornecer semântica comum que pode ser usada de forma inequívoca através e entre diferentes implementações.

38. Repositório

Um sistema que gerencia todos os dados de uma empresa, incluindo dados e modelos de processos e outras informações da empresa. Assim, os dados em um repositório são muito mais extensos do que em um dicionário de dados, que geralmente define somente os dados que compõem um banco de dados.

39. Requisito

A composição quantitativa de necessidade de negócio que devem ser cumpridas por uma arquitetura particular ou pacote de trabalho.

40. Arquitetura de Soluções

A descrição discreta e focada em operação de negócios ou atividade e como SI/TI suportam essa operação. A arquitetura da solução normalmente se aplica a um único projeto ou a liberação do projeto, auxiliando na tradução de requisitos em uma visão de solução, alto nível das empresas e / ou especificações de sistemas de TI e um portfólio de tarefas de implementação.

41. Blocos de Construção da Solução (SBB)

Representa um componente (potencialmente reutilizáveis) de negócio, ou capacidade de arquitectura que pode ser combinado com outros blocos de construção para fornecer arquiteturas e soluções.

Blocos podem ser definidas em vários níveis de detalhe, dependendo do estágio de desenvolvimento de arquitetura foi atingido. Por exemplo, numa fase inicial, um bloco de construção pode simplesmente consistir em um nome ou uma descrição do esquema. Mais tarde, um bloco de construção pode ser decomposto em vários blocos de edifício de apoio e pode ser acompanhada por uma especificação completa. Os building blocks podem incidir sobre “arquitecturas” ou “soluções”.

42. Envolvido (Stakeholder)

Um indivíduo, equipe ou organização (ou classes dela) com interesses em, ou preocupações em relação ao resultado da arquitetura. Diferentes atores com diferentes papéis terão preocupações diferentes.

43. Arquitetura Estratégica

A descrição sumária formal da empresa, proporcionando um framework organizado para atividades operacionais e de mudança e um nível-executivo, visão de longo prazo para definir uma direção.

44. Arquitetura Alvo

A descrição de um estado futuro da arquitetura a ser desenvolvido para uma organização. Pode haver vários estados futuros desenvolvido como um roteiro (roadmap) para mostrar a evolução da arquitetura rumo a um estado de alvo.

45. Arquitetura Tecnológica

Capacidades lógicas de software e hardware necessárias para suportar a implantação de negócios, dados e serviços de aplicativos. Isto inclui a infra-estrutura, middleware, redes, comunicações, processamento e padrões.

46. Arquitetura de Transição

A descrição formal da arquitetura corporativa mostrando períodos de transição e desenvolvimento para partes específicas do empreendimento. Arquiteturas de transição são usadas ​​para fornecer uma visão geral da capacidade atual e a alvo e permitir que pacotes de trabalho individuais e projetos sejam agrupados em portifólios e programas.

47. Visão

A representação de um conjunto de preocupações relacionadas. Uma visão é o que é observado de um ponto de vista. Uma visão da arquitetura pode ser representada por um modelo para demonstrar aos envolvidos suas áreas de interesse dentro da arquitetura. Uma visão não tem de ser visual ou gráfica por natureza.

48. Ponto de Vista

A definição da perspectiva pela qual uma visão é tomada. É uma especificação das convenções para a construção e utilização de uma visão (muitas vezes por meio de um esquema apropriado ou modelo). A visão é o que você vê; um ponto de vista é de onde você está olhando – o ponto de observação ou perspectiva que determina o que você vê.

O Vocabulário do Arquiteto Corporativo – Parte 1

O TOGAF estabelece um glossário de termos que o arquiteto corporativo deve dominar. Estes termos são a base do vocabulário comum para os trabalhos de arquitetura corporativa. O exame de certificação TOGAF Foundation 9 exige apenas 48 mas o TOGAF tem ao todo 80 definições no glossário básico e 93 no glossário suplementar.

1. Atividade

Uma tarefa ou conjunto de tarefas que suportam as funções de uma organização. Por exemplo, um usuário inserir dados em um sistema informático ou a viajar para visitar clientes.

2. Aplicação

Um sistema de informação publicado e implantado que suporta as funções de negócios e serviços, por exemplo, uma folha de pagamento. Utilização de dados e aplicativos são apoiadas por vários componentes de tecnologia, mas são distintas dos componentes de tecnologia que suportam o aplicativo.

3. Arquitetura de aplicações

Uma descrição dos principais agrupamento lógico de recursos que gerenciam os objectos de dados necessários para processar os dados e suporte ao negócio.

4. Arquitetura

  1. Uma descrição formal de um sistema, ou um plano detalhado do sistema a nível de componentes, para orientar a sua execução (Fonte: ISO / IEC 42010:2007).
  2. A estrutura dos componentes, suas inter-relações, e os princípios e diretrizes que regem a sua concepção e evolução ao longo do tempo.

5. Blocos de Construção de Arquiteturas

A componente do modelo de arquitetura que descreve um único aspecto do modelo global.

6. Método de Desenvolvimento de Arquiteturas

O núcleo do TOGAF. Um passo-a-passo para desenvolver e utilizar uma arquitetura corporativa.

7. Domínio da Arquitetura

A área de arquitectura a ser considerada. Há quatro domínios de arquitectura no prazo de TOGAF: negócios, dados, aplicações e tecnologia.

8. Framework de Arquitetura

A estrutura fundiária, ou conjunto de estruturas, que podem ser usados para desenvolver uma ampla gama de arquiteturas diferentes. Ele deve conter um método para projetar um sistema de informação em termos de um conjunto de blocos de construção, e para mostrar como os blocos se encaixam. Ele deve conter um conjunto de ferramentas e fornecer um vocabulário comum. Deve incluir também uma lista de normas recomendadas e produtos compatíveis que podem ser utilizados para implementar os blocos de construção.

9. Princípios Arquiteturais

Uma declaração de intenções qualitativas que devem ser atendidas pela arquitetura. Tem pelo menos uma lógica de apoio e uma medida de importância.

10. Visão da Arquitetura

  1. Um diagrama “big picture” de alto nível, esboço da arquitetura alvo.
  2. A fase da ADM que proporciona a compreensão e definição da visão da arquitetura.
  3. Um entregável (deliverable) específico descrevendo a visão da arquitetura.

11. Visão Arquitetural

A representação de um conjunto de preocupações relacionadas. Uma visão é o que é observado de um ponto de vista. Uma visão da arquitetura pode ser representada por um modelo para demonstrar aos envolvidos suas áreas de interesse dentro da arquitetura. Uma visão não tem de ser visual ou gráfica por natureza.

12. Baseline

A especificação de que tenha sido formalmente revistos e acordados, que depois serve como base para o desenvolvimento ou mudança e que só podem ser alteradas através de procedimentos formais de controle ou alterar um tipo de procedimento, tais como gerenciamento de configuração.

13. Baseline da Arquitetura

A arquitetura do sistema existente definida antes de entrar em um ciclo de revisão de arquitetura e redesenho.

14. Blocos de Construção

Representa um componente (potencialmente reutilizáveis) de negócio, ou capacidade de arquitectura que pode ser combinado com outros blocos de construção para fornecer arquiteturas e soluções.

Blocos podem ser definidas em vários níveis de detalhe, dependendo do estágio de desenvolvimento de arquitetura foi atingido. Por exemplo, numa fase inicial, um bloco de construção pode simplesmente consistir em um nome ou uma descrição do esquema. Mais tarde, um bloco de construção pode ser decomposto em vários blocos de edifício de apoio e pode ser acompanhada por uma especificação completa. Os building blocks podem incidir sobre “arquitecturas” ou “soluções”.

15. Arquitetura de Negócio

A estratégia de negócios, governança, organização e principais processos de negócios da informação, bem como a interação entre esses conceitos.

16. Governança de Negócio

Preocupada com a garantia de que os processos de negócios e políticas (e seu funcionamento) entregar os resultados de negócio e cumprir a regulamentação de negócios relevantes.

17. Capacidade (Capability)

Uma habilidade que uma organização, pessoa ou sistema possui. Capacidades são geralmente expressas em alto-nível e tipicamente requerem a combinação de organização, pessoas, processos e tecnologia para serem atingidas. Por exemplo, marketing, relacionamento com clientes ou do lado de fora telemarketing.

18. Preocupação (Concerns)

Um interesse chave de importância crucial para que os envolvidos em um sistema determinarem o grau de aceitação do sistema. Preocupações podem ser pertinentes a qualquer aspecto funcional, desenvolvimento ou operação do sistema, incluindo considerações como desempenho, disponibilidade, segurança, distribuição e evolução.

19. Restrição (Constraint)

Um fator externo que impede a organização de buscar uma abordagem particular para atender suas metas. Por exemplo, dados de clientes não estão em harmonia com os da organização, regionalmente ou nacionalmente, restringindo a capacidade da organização oferecer um serviço eficaz ao cliente.

20. Arquitetura de Dados

A estrutura lógica e física dos ativos de dados da organização e o gerenciamento dos recursos de dados.

21. Entregável (Deliverable)

Um produto de trabalho arquitetural que é especificado em contrato e formalmente revisado, aceito e assinado pelos envolvidos. Entregáveis representam a saída do projeto e os resultados na forma de documentação. Eles serão arquivados na conclusão de um projeto ou transferidos para um repositório arquitetural como um modelo de referência, padrão ou snapshot da arquitetura em um ponto no tempo.

Estes foram os primeiros 22 termos. Continuo no próximo post.