Arquitetura de Sistemas / Aplicações


Contextualização


A perspectiva dos sistemas de informação (SI), inicialmente utilizando o computador como ferramenta para fornecimento de dados objetivando a rapidez das tarefas rotineiras, evoluiu para uma perspectiva de negócios, que ampliou as exigências em relação aos SI, em parte, possibilitadas pelas tecnologias disponibilizadas e pelos avanços específicos em hardware e software. Como forma de contribuir para o processo de desenvolvimento e implantação de SI, neste cenário, surge a abordagem da Arquitetura de Sistemas de Informação.

O que é arquitetura de sistemas ?


De forma bem simples, a arquitetura de um sistema ou aplicação, consiste da especificação de sua estrutura, em meios lógicos e físicos, a fim de prover uma solução para uma demanda qualquer de um projeto de TI. Basicamente arquitetar, é basear-se em padrões, informações, premissas, restrições e montar uma comunicação entre os elementos existentes ou que serão criados para que a sinergia de todos esses itens concorra para uma implemenação bem-sucedida do software ou aplicação idealizada.

A arquitetura de sistemas leva em consideração os componentes de software, seus relacionamentos, suas propriedades externas, caracteristicas internas além de considerar requisitos não funcionais e funcionais do sistema concebido. Um um forte exercício de arquitetura pode ajudar a todos os envolvidos a enxergar o poder de crescimento e as potencialidades da solução seguindo essas restrições e caraterísticas lógicas e físicas.

É o processo de tradução da visão do negócio e sua estratégia em mudanças necessárias da TIC
através da criação, melhorias e comunicação dos princípios e modelos que descrevem o estado futuro da organização,
favorecendo a sua evolução gerenciada.
[Gartner, 2006]

O que ela abrange?


A arquitetura de Sistemas, abrange todas as partes do aplicativo, tanto itens de macro visão dentro do projeto, até a uma tecnologia específica a uma determinada parte de um sistema. Basicamente tudo que envolve o aplicativo, sua infra estrutura para funcionamento, capacidade de processamento, relacionamento com outros ambientes do computador, interface com dispositivos, velocidade de transfêrencia de dados, funcionamento lógico ou camadas lógicas da aplicação.
Encampa uma visão abrangente incluindo a perspectiva de negócios, a visão organizacional, os próprios SI, a tecnologia disponível e os usuários envolvidos.


Evolução Conceitual


Período
Significado
Até os anos 80
  • arquitetura tradicional associada com projeto de hardware
1987
  • arquitetura passa a ser associada à área de software
Anos 90
  • arquitetura expressa SI
  • arquitetura associada às estratégias de negócios
Final dos anos 90
  • arquitetura de SI como arquitetura de informação da empresa

Associada à evolução do termo arquitetura, que pode ser observada no quadro acima, uma série de interpretações começa a surgir e, a arquitetura passa a ser considerada em quatro visões básicas: arquitetura abrangente, desenvolvimento de sistemas, arquitetura e TI e, arquitetura de negócios.

Seguem algumas idéias básicas sobre os tipos de abordagem de arquitetura de sistemas em relação às visões supracitadas.
  • Na linha de arquitetura abrangente estão as pesquisas que trabalham com a integração dos SI e a organização extrapolando a visão de dados ou tecnologia.
  • Quanto ao enfoque de desenvolvimento de sistemas, considera-se a arquitetura de sistemas como uma disciplina que serve de suporte a toda atividade de desenvolvimento de sistemas, devendo ser produzida antes de iniciar qualquer atividade. Nesta arquitetura, o projeto pode incluir uma arquitetura de dados, uma arquitetura de aplicação e uma arquitetura técnica.
  • Na visão de arquiterura de TI, foca-se na estrutura tecnológica, compreendendo, em geral, quatro elementos: a computação (hardware e software), as comunicações (redes de telecomunicações), os dados (relacionamentos entre eles) e aplicações. Estritamente ligada ao aspecto tecnológico, pelo arranjo de hardware, software, dados e redes de computadores.
  • Na visão de arquitetura de negócios trabalha-se com um conjunto conceitual de SI e as ligações entre estes SI, em que a abordagem para a construção de uma arquitetura de informação focaliza em dados ou processos.

Contudo, o conceito que mais tem se destacado é o de arquitetura abrangente, que coloca a arquitetura de sistemas como o estabelecimento de um conjunto de elementos cuja finalidade é proporcionar um mapeamento da organização no tocante aos elementos envolvidos com o processo de desenvolvimento/implantação de SI.
Nesta linha de conceito abrangente, uma arquitetura não deve ser vista como uma solução formal para todo problema tecnológico, visto que a meta da·arquitetura é interrelacionar dados, deixar disponível hardware, software e recursos de comunicação e ter a equipe para efetivamente processar transações,produzir informação e suportar uma variedade de domínios de atividade humana.

Linguagem de descrição de arquitetura (LDA)


Quanto aos esforços para representar a arquitetura de sistemas, no passado, tínhamos iniciativas ad hoc, com descrições informais através de diagramas de caixas linhas, até que os profissionais começaram a reconhecer o papel crítico da arquitetura para o sucesso do projetos e projetistas de linguagens começaram a considerar uma notação específica e formal para representar a arquitetura.

Atualmente existem um conjunto de representações formais conhecidas como Linguagens de Descrição de Arquitetura (LDAs), que são usadas para descrever a arquitetura de software, aplicação ou sistema.

Algumas Considerações
  • Linguagens de descrição de hardware (HDL’s) não costumam ser utilizadas para a descrição de arquiteturas pois não possuem abstração suficiente para descrevê-las no seu nível de sistema. Podemos entender a estrutura da arquitetura através das HDL’s, contudo fica muito difícil entender o seu conjunto de instruções. Algumas HDL’s adaptadas podem ser utilizadas como LDAs. Um dos motivos para não utilizarmos linguagens de programação na descrição de arquiteturas é o fato dessas linguagens não nos darem a capacidade de capturarmos as características do hardware como paralelismo e sincronismo.

  • A diferença das LDAs em relação às linguagens de modelagem de software, como por exemplo UML, é que estas últimas estão mais preocupadas com o comportamento do “todo” e não com o comportamento das partes desse “todo” ao contrário das LDAs. Mas na prática, em muitos casos, podemos utilizar as linguagens de modelagem de software que permitem a representação de componentes e conseguimos então representar as arquiteturas. Contudo, isso torna mais difícil descrever as instruções de uma arquitetura.

  • Podemos classificar as LDAs considerando dois aspectos: conteúdo e objetivo. A classificação orientada ao conteúdo é baseada na natureza da informação que a LDA pode descrever enquanto a classificação orientada ao objetivo é baseada no propósito da LDA. Quando falamos de LDAs contemporâneas, podemos ainda fazer uma outra classificação: orientada à simulação, orientada à síntese, orientada a teste, orientada à compilação, orientada à validação e orientada ao Sistema Operacional.

  • Baseando-nos na natureza da informação, podemos ainda subclassificar as LDAs como estruturais, comportamentais, parciais e mistas. As LDAs estruturais descrevem a estrutura em termos de arquitetura de componentes e sua conectividade. Já as LDAs comportamentais descrevem o comportamento do conjunto de instruções da arquitetura do processador. Quando falamos das LDAs mistas, estamos falando de linguagens que se preocupam com os dois aspectos apresentados anteriormente. Contudo, as parciais são linguagens que descrevem informações específicas sobre a arquitetura para uma determinada tarefa,como por exemplo uma LDA que pretende a síntese de interfaces não requer a descrição do comportamento do processador.

Vários diferentes LDAs foram desenvolvidas por diferentes organizações, incluindo Wright (desenvolvido por Carnegie Mellon), Acme (desenvolvido por Carnegie Mellon), xADL (desenvolvido por UCI), Darwin (desenvolvido por Imperial College London), DAOP-ADL (desenvolvido pela University of Málaga). Elementos comuns de uma LDA são componente, conexão e configuração.


Estilos Arquiteturais


Atualmente conseguimos identificar, de maneira empírica, ou não, paradigmas arquiteturais, como por exemplo: tubos e filtros, camadas, cliente-servidor, repositórios, entre outros. Porém, a utilização de tais arquiteturas, em geral, não ocorre por uma escolha feita pelo desenvolvedor, a partir de um método. Em geral, a arquitetura formada é percebida após a construção de boa parte do software. Como conseqüência desta “escolha” sem critério, o desenvolvedor não consegue explorar todas as formas da arquitetura escolhida, bem como outras possíveis soluções. Outras vezes o desenvolvedor percebe que a arquitetura formada durante o desenvolvimento do software não é adequada à solução que deve ser dada. De qualquer forma estes tipos de situações apenas endossam como boa prática, a concepção prévia da arquitetura da aplicação previamente e de acordo com as necessidades e recursos tecnológicos disponíveis.

Dentre as formas comuns de se projetar módulos de software de computador e suas comunicações, podemos destacar:

  • Cliente-Servidor;
  • Computação distribuída;
  • P2P;
  • Quadro Negro;
  • Criação implícita;
  • Pipes e filtros;
  • Plugin;
  • Aplicação monolítica;
  • Modelo em três camadas;
  • Analise de sistema estruturada (baseada em módulos, mas usualmente monolíticas em dentro dos módulos);
  • Arquitetura orientada a serviço;
  • Arquitetura orientada a busca.

Cada um destes estilos de arquitetura tem características e aplicações bem definidas e sua adoção depende de um bom domínio da área de negócio onde a solução de software, a ser desenvolvida, vai se enquadrar.


Benefícios


Podemos citar como benefícios advindos do correto emprego de uma arquitetura de software/aplicação:
  • Dinamização dos processos de negócios;
  • Redução da complexidade dos sistemas;
  • Integração na empresa através do compartilhamento de dados;
  • Suporte a evolução mais rápida para novas tecnologias.



Referências