Duarte (2011) destaca que os modelos podem variar quanto aos objetivos, apresen- tações, conteúdos, detalhamento e linguagens. Quanto ao objetivo, é descritivo se descreve o que existe e é prescritivo se descreve estados desejados. Quanto à apresentação, pode ser textual, gráfico ou fórmula. Quanto ao conteúdo, pode ser estático ou dinâmico. Quanto ao nível de detalhe, pode ser conceitual ou técnico e quanto à linguagem, pode ser não formal, semiformal ou formal. Segundo Souza, Aken e Groesbeck (2002), existem variadas
alternativas para a construção de modelos, desde a rica e informal linguagem natural humana, até a formal e precisa matemática.
Lankhorst(2012) destaca que o ato de modelar inclui atividades que visam repre- sentar o modelo por meio de alguma linguagem e meio. Uma linguagem de modelagem normalmente inclui elementos de modelagem, uma notação visual para apresentação dos elementos e sugestões de como usar a linguagem. Não é necessário, entretanto, que todas as informações de um modelo sejam representadas em diagramas. Algumas dessas informações podem estar em textos, tabelas, gráficos etc. As sintaxe e semântica das linguagens de modelagem tipicamente possibilitam a construção de modelos de forma mais precisa do que uma linguagem natural. Para facilitar o entendimento dos modelos e a comunicação dos componentes do sistema, as notações geralmente são simples, com abstrações visuais.
O termo “linguagem para a descrição de arquitetura” (architecture description
language) é empregado em comunidades variadas (ISO,2011). Na arquitetura de software, as linguagens para descrição de arquiteturas suportam criação, refino e validação de arqui- teturas; representação de estilos de arquitetura; diferentes visões de arquitetura; análise de arquiteturas; e comunicação da arquitetura entre stakeholders (BASS; CLEMENTS; KAZMAN, 2012; CLEMENTS,1995; GARLAN; KOMPANEK, 2002).Rozanski e Woods (2011) destacam a existência de várias linguagens para descrição de arquiteturas, mas
observam que a maioria encontra-se no campo das pesquisas.
Embora os arquitetos precisem expressar arquiteturas para o seu entendimento e para a comunicação com stakeholders, Lankhorst (2012) afirma que ainda não existe uma linguagem padrão para descrição precisa de arquiteturas em diferentes domínios. Os arquitetos em diferentes domínios tendem a empregar suas próprias técnicas e convenções na descrição de arquiteturas.Khoury(2007) destaca que, embora existam muitas linguagens para a modelagem de sistemas, poucas têm o poder semântico necessário ao uso em domínios diversos. Além disso, a complexidade de algumas dessas linguagens torna impraticável seu emprego em aplicações comerciais. Em decorrência disso, são frequentemente empregadas várias linguagens na descrição de uma arquitetura, inclusive linguagens informais de modelagem. Para Khoury(2007), na modelagem de empresas, o uso de várias linguagens aumenta a probabilidade dos modelos serem incompletos, inconsistentes e difíceis de entender. Nos próximos tópicos desta dissertação, serão apresentadas as linguagens Unified
Modeling Language e ArchiMate, linguagens que podem ser empregadas na descrição de
arquiteturas.
4.4.1 Unified Modeling Language
Os potenciais benefícios de uma linguagem de modelagem padronizada motivaram o desenvolvimento da Unified Modeling Language (UML) a partir de 1994. Esse desenvol- vimento foi iniciado por Grady Booch e Jim Rumbaugh visando unificar os métodos Booch
e Object Modeling Technique (OMT). Em 1995, Ivar Jacobson integrou-se ao grupo e o método Object-Oriented Software Engineering (OOSE) foi unificado. Em 1996, o trabalho, inicialmente desenvolvido na Rational Software Corporation, resultou nas versões 0.9 e 0.91 da UML. Em 1996, o Object Management Group (OMG) solicitou propostas para uma notação padrão para a modelagem orientada a objetos. A UML versão 1.0 foi proposta em 1997. Foi então criado um consórcio de interessados na UML, os trabalhos desse consórcio resultaram no documento UML version 1.1. Ainda em 1997, o OMG incluiu a UML entre as tecnologias suportadas e tornou-se responsável pela mesma (BOOCH; RUMBAUGH; JACOBSON, 2005).
A Unified Modeling Language (UML) é uma linguagem de modelagem para análise, desenho (design) e implementação de sistemas de software, bem como para modelagem de negócios e processos similares (OMG, 2011). Os modelos construídos com a UML usam classes, objetos, interfaces, componentes, pacotes, relacionamentos e estereótipos. As visões que descrevem um sistema podem ser documentadas com diagramas construídos com a UML.
Os diagramas construídos com a UML podem ser inter-relacionados e usados para se modelar diferentes aspectos de um sistema. Os diagramas podem prover diferentes perspectivas de um sistema e podem ser usados com outros documentos em um modelo. Por meio de diagramas podem ser representados aspectos estáticos e dinâmicos de um sistema. Por exemplo, diagramas de classe ou diagramas de objeto podem ser construídos com o intuito de representar aspectos estáticos de um sistema, enquanto diagramas de colaboração podem ser construídos com o intuito de representar aspectos dinâmicos desse mesmo sistema.
Para adequar a UML às necessidades de um domínio, podem se acrescentadas extensões, por meio da especificação de restrições a serem impostas a elementos do modelo. Rozanski e Woods (2011) destacam que adaptar e especializar linguagens de uso geral, como a UML, é uma alternativa ao uso de linguagens especificamente desenvolvidas para descrição de arquiteturas. Usar a linguagem UML sem modificá-la, aplicar restrições ao metamodelo da UML usando mecanismos para extensão da linguagem UML e expandir o metamodelo da UML para suportar os conceitos necessários na descrição de arquiteturas são estratégias para uso da UML na descrição de arquiteturas (MEDVIDOVIC et al., 2002).
4.4.2 Linguagem ArchiMate
A linguagem ArchiMate complementa o framework TOGAF (The Open Group, 2012). ArchiMate é uma linguagem de modelagem visual que pode ser empregada na especificação de arquiteturas inter-relacionadas e na especificação de diferentes pontos de vista. O núcleo da linguagem encontra-se relacionado às seguintes fases em TOGAF
ADM: “Arquitetura de Negócio”, “Arquitetura de Sistemas de Informação” e “Arquitetura Tecnológica”.
Lankhorst (2012) destaca a importância do conceito serviço em ArchiMate. Um serviço é uma unidade de funcionalidade que um sistema expõe ao ambiente, ao mesmo tempo em que esconde operações internas (The Open Group,2012). ParaLankhorst(2012), a orientação a serviço leva a uma organização dos modelos em camadas, onde serviços em uma camada podem ser prestados a outras camadas, e onde podem existir serviços internos às camadas. Segundo Lankhorst (2012), uma premissa da linguagem ArchiMate é que a estrutura genérica dos modelos em diferentes camadas é similar, são usados os mesmos conceitos e relacionamentos, o que facilita o alinhamento entre modelos em diferentes camadas.
EmThe Open Group(2012) são definidas as seguintes camadas onde são organizadas as descrições elaboradas com a linguagem ArchiMate: Negócio, Aplicação e Tecnologia. A camada Negócio provê produtos e serviços a clientes externos, esses serviços são realizados por processos de negócio desempenhados por atores. A camada Aplicação provê, à camada Negócio, serviços realizados por aplicações de software. Por sua vez, a camada Tecnologia provê serviços de infraestrutura necessários às aplicações de software na camada Aplicação.
5 Sistemas para organização da informação
Neste capítulo, são apresentados conceitos acerca de organização da informação e são descritos sistemas para organização da informação. Sistemas para organização da informação podem ser componentes integrantes de frameworks de arquitetura da informação.