De que se trata o artigo:

Este artigo apresenta os fundamentos da arquitetura de software. São descritos a importância e o papel da arquitetura de software no processo de desenvolvimento. Também são identificadas as principais atividades realizadas durante o processo de especificação arquitetural.

Para que serve:

Quando tentamos solucionar um problema, é possível identificar diversas soluções que poderiam ser utilizadas visando resolvê-lo. Contudo, outros fatores como custo e eficiência influenciam na escolha da solução a ser adotada. No contexto do desenvolvimento de software, o mesmo pode ser observado ao se analisar os requisitos visando a construção de um software: várias soluções computacionais podem ser definidas para atender a esses requisitos, mas uma análise deve ser feita para definir a mais adequada ao contexto de desenvolvimento da aplicação. Para se representar essas soluções, a arquitetura de software é uma das abordagens que podem ser usadas.

Em que situação o tema é útil:

No entendimento dos fundamentos da arquitetura de software. Conhecimento este fundamental na elaboração da arquitetura de aplicações em projetos reais.

 Quando tentamos solucionar um problema, é possível identificar diversas soluções que poderiam ser utilizadas visando resolvê-lo. Contudo, outros fatores como custo e eficiência influenciam na escolha da solução a ser adotada. No contexto do desenvolvimento de software, o mesmo pode ser observado ao se analisar os requisitos visando a construção de um software: várias soluções computacionais podem ser definidas para atender a esses requisitos, mas uma análise deve ser feita para definir a mais adequada ao contexto de desenvolvimento da aplicação.

Para se representar essas soluções, a arquitetura de software é uma das abordagens que podem ser usadas. Com isso, para se obter a arquitetura (solução) mais adequada para atender aos requisitos do software (problema), uma avaliação dessa estrutura deve ser realizada.

A arquitetura consiste em um modelo de alto nível que possibilita um entendimento e uma análise mais fácil do software a ser desenvolvido.  O uso de arquitetura para representar soluções de software foi incentivada principalmente por duas tendências (GARLAN e PERRY, 1995; KAZMAN, 2001): (1) o reconhecimento por parte dos projetistas que o uso de abstrações facilita a visualização e o entendimento de certas propriedades do software, e (2) a exploração cada vez maior de frameworks visando diminuir o esforço de construção de produtos através da integração de partes previamente desenvolvidas.

Outra propriedade da arquitetura é a possibilidade de usá-la como ferramenta para comunicar a solução projetada aos diversos stakeholders que participam do processo de desenvolvimento do software (GARLAN, 2000). Contudo, para que essa comunicação seja possível, a arquitetura deve ser representada através de um documento, conhecido como documento arquitetural.

Para se construir a arquitetura de um software, e por conseqüência o documento arquitetural que a representa, os requisitos são as principais informações usadas. Durante o processo de especificação arquitetural (Figura 1), além dos requisitos, outras fontes de conhecimento podem ser utilizadas para definir os elementos arquiteturais e a forma como eles devem estar organizados. Entre essas fontes de conhecimento se destacam principalmente a experiência do arquiteto, o raciocínio sobre os requisitos, e os estilos e as táticas arquiteturais.

 


Figura 1. Elementos usados na construção de uma arquitetura.

 

Contudo, existe uma falta de consenso na comunidade em relação tanto aos conceitos e definições básicas quanto à forma de representar uma arquitetura de software (BUSCHMANN et al., 1996; CLEMENTS et al., 2004). Portanto, na próxima seção são descritos os termos aqui adotados e seus respectivos conceitos associados. Além disso, são descritos a importância e o papel da arquitetura de software no processo de desenvolvimento, e, por fim, são identificadas as principais atividades realizadas durante o processo de especificação arquitetural.

Definição dos conceitos relacionados à arquitetura de software

Nessa seção, são definidos os termos utilizados neste trabalho, evitando ambigüidades, visto que terminologias inconsistentes sobre estes termos podem ser encontradas na literatura.

Arquitetura de software representa a estrutura, ou conjunto de estruturas, que compreende os elementos de software, suas propriedades externamente visíveis e seus relacionamentos (BASS et al., 2003).

Para criar essa estrutura, grande parte dos autores concorda que três tipos de elementos básicos podem ser usados (DIAS e VIEIRA, 2000):

     Elementos de software, podendo também ser chamados de módulos ou componentes, são as abstrações responsáveis por representar as entidades que implementam funcionalidades especificadas;

     Conectores, podendo ser chamados de relacionamentos ou interfaces, são as abstrações responsáveis por representar as entidades que facilitam a comunicação entre os elementos de software;

     Organização ou configuração que consiste na forma como os elementos de software e conectores estão organizados.

 

Além disso, essa estrutura e as entidades que a compõem devem ser representadas de uma forma que permita utilizar a arquitetura projetada para seus devidos fins, a essa representação é dado o nome de documento arquitetural. Esse documento é composto por um conjunto de modelos e informações que descrevem principalmente a estrutura do software especificado para atender aos requisitos. Para compor um documento arquitetural, podemos nos basear, por exemplo, nas recomendações descritas no padrão IEEE-1471 (IEEE, 2000).

Contudo, mesmo existindo padrões que indicam o tipo de informação que deve ser descrito em um documento arquitetural, não é definido exatamente o nível de abstração que deve ser usado na descrição dessas informações.

A arquitetura de um software começa a ser construída nos estágios iniciais de um processo de desenvolvimento de software com o objetivo de definir e visualizar a solução computacional que será implementada. Neste momento, esse artefato é conhecido como arquitetura inicial, pertence ao escopo do problema, tem como principal característica descrever a solução em um elevado nível de abstração e é utilizado por vários stakeholders como base para tomada de decisões. ...

Quer ler esse conteúdo completo? Tenha acesso completo