arquitetura de software visão geral. introdução um ponto crítico no projeto e na construção...

Post on 22-Apr-2015

105 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arquitetura de Software

Visão Geral

Introdução

Um ponto crítico no projeto e na construção de todo o sistema de software é sua arquitetura: isto é, sua organização bruta como uma coleção de componentes de interação.

Uma boa arquitetura pode permitir que um sistema satisfaça às exigências chaves em áreas como: o desempenho, a confiabilidade, a portabilidade, a escalabilidade, e a sua interoperabilidade.

Uma arquitetura má pode ser desastrosa.

Introdução

No Passado, a arquitetura recebeu uma crescente atenção como uma sub-área importante da Engenharia de Software. Os especialistas pregam que uma boa arquitetura é um fator crítico de sucesso para o projeto e o desenvolvimento do sistema. Começaram a reconhecer o valor de fazer escolhas arquiteturais explícitas.

Introdução

Apesar da existência de livros, artigos e ferramentas, a Arquitetura de Software todavia ainda está em uma fase pouco madura.

Papéis

Apesar de existirem numerosas definições sobre arquitetura do software, no núcleo de tudo está a noção de que a arquitetura de um sistema descreve sua estrutura bruta.

Esta estrutura ilumina as decisões de projeto de alto nível, incluindo coisas como: o sistema é composto das peças de interação,

onde estão os principais caminhos de interação Adicionalmente, uma descrição arquitetural

inclui informação suficiente para permitir a análise de alto nível e crítica do sistema.

Papéis A arquitetura do software desempenha

tipicamente um papel chave como uma ponte entre requisitos e código.

Papéis

Fornecendo uma descrição abstrata do sistema, a arquitetura expõe determinadas propriedades, ao mesmo tempo que esconde outras.

Idealmente, esta representação fornece um guia de entendimento intelectual do sistema como um todo, permitindo aos projetistas raciocinar sobre a possibilidade do sistema satisfazer a determinadas exigências, e sugere um blueprint para a construção do sistema e a sua composição.

Papéis

Por exemplo: uma arquitetura para um aplicação de processamento de sinal, pôde ser construída como uma rede do fluxo de dados em que os nós lêem vetores de entrada dos dados, transformam esses dados, e os escrevem aos vetores da saída.

E aqui, os projetistas devem pensar em estruturas para este tipo de processamento.

Papéis

Na elaboração da Arquitetura de um software, 6 papéis são desempenhados: Compreensão, Reuso, Construção, Evolução, Análise e Gerência.

Papéis: Compreensão

A arquitetura do software simplifica nossa habilidade de entender grandes sistemas apresentando-os em um alto nível do abstração de forma a ser facilmente compreendido.

Além disso, expõe as principais restrições do projeto do sistema, tanto quanto o aspecto racional para fazer escolhas arquiteturais específicas.

Papéis: Reuso

Descrições de arquiteturas suportam reuso em múltiplos níveis. Trabalhos correntes focam geralmente em bibliotecas de componentes.

Projetos de Arquiteturas, promovem reuso em grandes componentes e em Frameworks, onde seus componentes possam ser integrados.

Papéis: Construção

A Construção de uma arquiterua oferece um norte para os desenvolvedores, indicando ou apresentando os maiors componentes e suas dependências.

Por exemplo: as camadas de uma arquitetura tipicamente documentam as fronteiras da implementação, expondo os maiores componentes e suas interfaces, bem como as suas principais restrições.

Papéis: Evolução

A arquitetura do software pode expor as dimensões na linha do tempo da possível evolução de um sistema.

Deixa explícito "as paredes internas" de um sistema, os desenvolvedores do sistema podem melhor compreender as ramificações das mudanças, e estimar desse modo mais preciso o custo das modificações.

Além disso, as descrições arquiteturais separam interesses sobre as funcionalidade de um componente da forma com que esse componente é conectado (interage) a outros componentes.

Esta separação permite mais facilmente aos mecanismos da conexão obter um maior reuso e interoperabilidade.

Papéis: Análise

As descrições arquiteturais fornecem novas facilidades para a tarefa de análise tais como: a consistência do sistema, o conformidade dos atributos da

qualidade, a análise da dependência e A análises específicas de domínio para

identificar arquiteturas semelhantes.

Papéis: Gerência

A avaliação crítica de uma arquitetura conduz tipicamente a uma grande compreensão das exigências, das estratégias da execução, e de riscos potenciais a serem enfrentados na implementação de um sistema de software.

No Passado

ad hoc affair. As descrições confiaram nos diagramas informais

tipo da caixa, que raramente sofreram atualizações após o sistema ter sido construídos.

As escolhas arquiteturais eram feitas de forma idiosincrática - tipicamente adaptando algum projeto já existente, sendo este apropriado ou não.

Os autores começaram a observar: determinados princípios de unificação nos projetos

de arquitetura de software, a chamar a arquitetura como um campo especial

necessidade da atenção e a estabelecer um vocabulário de trabalho para os

arquitetos do software.

No Passado

Os vendedores da ferramenta começaram a pensar firmemente na produção de software para o suporte a esta área.

Os projetistas de linguagens começaram a considerar notações para a representação arquitetural.

No Passado

Dentro da indústria, duas tendências destacaram a importância da arquitetura.

A primeira era o reconhecimento da necessidade de um repositório compartilhado dos métodos, das técnicas, dos padrões de testes e das linguagens para estruturar sistemas de software complexos.

A segunda tendência foi o interesse em explorar similaridades em domínios específicos para fornecer estruturas reusáveis para famílias de produto (Frameworks)

Um Passado menos distante

Linguagens de Descrição de Arquiteturas (ADL) e ferramentas

Linhas de Produtos e Padrões Codificação e Disseminação

Um Passado menos distante

Linguagens de Descrição de Arquiteturas (ADL) e ferramentas.

O informalidade da maioria das descrições tipo caixa-e-linha de projetos arquiteturais conduz a um grande número de problemas!

Linguagens de Descrição de Arquiteturas (ADL)

Adage, Aesop, C2, Darwin, Rapide, SADL, UniCon, Meta-H, Wright [3] e etc....Cada uma dessas ADLs fornecem um esepcífico

conjunto de funcionalidades.

Linguagens de Descrição de Arquiteturas (ADL)

Adage oferece suporte a arquiteturas de frameworks para navegação aérea.

Aesop suporta o uso de estilos arquiteturais. C2 oferece suporte a descrição de interfaces

baseadas em eventos. Darwin dá suporte para análise na troca de

mensagens em sistemas distribuídos. Meta-H oferece heurísticas para projetistas de

controles de software de tempo rela para aviação. Rapide permite simular a analisar projetos de

arquiteturas. etc

Pontes

Linhas de Produtos e Padrões

O que são linhas de produtos? São produtos que apresentam

similaridades nas suas especificações.

Entretanto, em uma abordagem de linha de produto, deve-se também considerar requisitos para a uma família de sistemas, e o relacionamento entre eles.

Codificação e Disseminação

Um problema inicial para o avanço de projetos arquiteturais como uma disciplina da engenharia de software era a falta do compartilhamento de conhecimento sobre arquiteturas e técnicas para desenvolver estas arquiteturas.

Uma boa saída foi uso e padrões tipo (pipes and filters, blackboard, MVC e outros).

Tendências atuais

Uso mais constante de XML para prover integração de arquiteturas.

Processamento distribuído. Computação Pervasiva

É uma área recente de pesquisa, considerada o novo paradigma do século XXI, que visa fornecer uma computação onde se deseja, quando se deseja, o que se deseja e como se deseja, através da virtualização de informações, serviços e aplicações. Este ambiente computacional consiste de uma grande variedade de dispositivos de diversos tipos, móveis ou fixos, aplicações e serviços interconectados.

Uma das tecnologias para suportar este novo ambiente computacional pode ser a computação distribuída em larga escala, objeto foco da computação em grade

top related