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

26
Arquitetura de Software Visão Geral

Upload: internet

Post on 22-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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 é,

Arquitetura de Software

Visão Geral

Page 2: 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 é,

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.

Page 3: 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 é,

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.

Page 4: 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 é,

Introdução

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

Page 5: 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 é,

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.

Page 6: 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 é,

Papéis A arquitetura do software desempenha

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

Page 7: 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 é,

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.

Page 8: 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 é,

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.

Page 9: 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 é,

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.

Page 10: 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 é,

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.

Page 11: 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 é,

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.

Page 12: 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 é,

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.

Page 13: 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 é,

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.

Page 14: 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 é,

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.

Page 15: 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 é,

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.

Page 16: 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 é,

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.

Page 17: 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 é,

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.

Page 18: 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 é,

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)

Page 19: 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 é,

Um Passado menos distante

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

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

Page 20: 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 é,

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!

Page 21: 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 é,

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.

Page 22: 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 é,

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

Page 23: 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 é,

Pontes

Page 24: 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 é,

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.

Page 25: 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 é,

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).

Page 26: 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 é,

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