programação orientada a aspectos - facom.ufu.brbacala/esof/02 - estrutura e arquitetura de... ·...

83

Upload: dinhtuong

Post on 04-Dec-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Relembrando... Arquitetura de software

descrição de subsistemas e componentes de um sistema de software e dos relacionamentos entre eles.

Projeto arquitetural

processo de construção de uma arquitetura de software explícita

ligação entre os processos de especificação e de projeto detalhado de software

2012 2

Projeto arquitetural Principais atividades

Decomposição do sistema de software em subsistemas e componentes

Identificação das interações entre eles

Modelagem arquitetural

2012 3

Projeto arquitetural Problemas

O projeto de arquiteturas de software específicas (ainda) é baseado em intuição e experiência

Métodos pouco ajudam!

Documentação (arquitetura e decisões)

Modelagem arquitetural

2012 4

SWEBOK

Projeto de software Tópicos da Área de Conhecimento (KA)

2012 Bacalá - Pós-ESOF - Design 5

Estrutura e arquitetura de software

Conceitos e noções relacionados às diferentes formas de organizar e estruturar internamente o software

Estruturas e viewpoints arquiteturais

Estilos arquiteturais

Padrões de projeto

Frameworks e famílias de aplicações

SWEBOK

2012 6

Conceitos Iniciais Arquitetura de software

Descrição de subsistemas e componentes de um sistema de software e os relacionamentos entre eles”.

Padrão (pattern) “a common solution to a common problem in a given context”. (a ser

refinada)

Estilos arquiteturais (macroarchitectural patterns) Descrevem a organização geral de um software

Padrões de projeto (microarchitectural patterns) Descrevem a organização de um software de modo mais detalhado

2012 7

SWEBOK

2012 8

O que é arquitetura de software? “Uma arquitetura de software deve conter: a definição

dos elementos de projeto que compõe o software; a descrição das interações entre estes elementos; os padrões de composição dos elementos; e um conjunto de restrições sobre estes padrões.”

[Shaw 96]

2012 9

O que é arquitetura de software? “A descrição da arquitetura de software é um passo

intermediário entre a análise de requisitos e o projeto. Esta descrição consiste de elementos arquiteturais, as interações entre estes elementos, e as restrições sobre estes elementos e sobre as suas interações.”

[Perry 92]

2012 10

Vantagens de uma arquitetura explícita Comunicação entre stakeholders

A arquitetura pode ser utilizada como o foco de discussão entre os interessados

Reutilização em larga escala

A arquitetura pode ser reutilizada em uma variedade de sistemas

Análise do sistema

A arquitetura pode ser utilizada para análise preliminar sobre a possibilidade do sistema atender seus requisitos não-funcionais

11

Atributos de arquitetura Performance

Localizar operações de modo a minimizar a comunicação entre subsistemas

Segurança

Utilizar uma arquitetura em camadas com recursos críticos localizados em camadas internas

Disponibilidade

Incluir componentes redundantes na arquitetura

Manutenção

Utilizar componentes especializados e auto-contidos

12

Projeto arquitetural processo de construção de uma arquitetura de software

explícita

ligação entre os processos de especificação e de projeto detalhado de software

13

Projeto arquitetural Principais atividades

Decomposição do sistema de software em subsistemas e componentes

Identificação das interações e comunicação entre eles

Modelagem arquitetural

14

Projeto arquitetural Problemas

O projeto de arquiteturas de software específicas (ainda) é baseado em intuição e experiência

Métodos pouco ajudam!

Documentação (arquitetura e decisões)

Modelagem arquitetural

15

Conceitos elementos de projeto

interações

padrões de composição

conjunto de restrições

[Shaw 96]

elementos arquiteturais

interações

restrições

[Perry 92]

componentes

conectores

2012 16

Arquitetura de Software Elementos [Shaw 96]

componentes

conectores

configurações

estilos

2012 17

Componente Um componente é uma unidade de computação ou de

armazenamento de dados

clientes, servidores

databases

filtros

camadas

ADTs

Um componente pode ser simples ou composto

2012 18

Conector

Um conector é um elemento que modela

interações entre componentes

regras que governam tais interações

2012 19

Conector interações simples

chamadas de procedimentos

acesso a variáveis compartilhadas

interações complexas

protocolos cliente-servidor

protocolos de acesso a base de dados

broadcast de eventos

piped data streams

2012 20

Configuração Uma configuração arquitetural ou topologia é um

grafo de componentes e conectores que descrevem a estrutura arquitetural

aderência a regras de estilo

Componentes compostos são configurações

21

Componentes e conectores

2012 22

Arquitetura de uma ferramenta CASE

Tradutor de

projeto

Editor de

projeto

Gerador de

código

Analisador

de projeto

Gerador de

relatório

Editor de

programa

Repositório

de projeto

23

Sistema de controle robotizado de embalagem

Sistema

de Visão

Sistema de

identificação de

objetos

Controlador de

braço

Controlador

de garra

Sistema de

seleção de

embalagem

Sistema de

embalagem Controlador de

transportadora

24

Cliente-servidor

Rede de banda larga

Cliente 2 Cliente 4

Servidor de

catálogo

catálogo

Servidor de

vídeo

Arquivos de

clipes de filmes

Servidor de

fotografias

Fotografias

digitalizadas

Servidor de

hipertexto

Web de

hipertexto

Cliente 3 Cliente 2 Cliente 3 Cliente 4 Cliente 1

25

Arquitetura baseada em eventos

Subsistema

1

Subsistema

2

Subsistema

3

Subsistema

4

Manipulador de eventos e mensagens

26

Questões Como escolher subsistemas e componentes?

Quais as suas propriedades? E responsabilidades?

Como componentes interagem?

Como incorporar e explicitar propriedades não-funcionais?

Como descrever uma arquitetura?

27

Estilo Arquitetural Padrões ou idiomas de projeto que guiam a

organização de módulos e sub-sistemas em sistemas completos. (Shaw & Garlan)

Abstração de características de composição e interação recorrentes de um conjunto de arquiteturas. (Taylor)

Idiomas de projeto “chave” que permitem a exploração de padrões estruturais e evolutivos adequados e que facilitam a reutilização de componentes, conectores e processo. (Medvidovic)

2012 29

Estilo arquitetural Um estilo arquitetural define uma família de sistemas

em termos de um padrão de organização estrutural.

Um estilo arquitetural define Um vocabulário de tipos de componentes e conectores

Um conjunto de restrições sobre como podem ser combinados

Um ou mais modelos semânticos que especificam como as propriedades sistêmicas podem ser determinadas a partir das propriedades de suas partes

2012 30

Estilos arquiteturais O modelo de arquitetura de um sistema pode estar

em conformidade com um modelo ou estilo genérico

Um conhecimento destes modelos pode simplificar o problema de definição de arquiteturas de sistemas

Sistemas de grande porte, no entanto, são heterogêneos e não seguem um único estilo

2012 31

Estilos Arquiteturais Shaw and Garlan, Software Architecture, 1996 Independent

Components

Communicating Processes

Event-Driven

Data Flow

Batch

Pipes & Filters

Data –Centric

Repository

Blackboard

Call & Return

Layered

Object Oriented

Main Program & Subroutine

Virtual Machine

Interpretter

Rule-Based

2012 32

Estilos

33

Layered systems [Shaw&Garlan94]

34

Padrões Projetistas e arquitetos experientes…

procuram aderir a princípios e promover boas práticas de design.

usam padrões para documentar e reutilizar experiência comprovadamente boa em novos projetos (de software)

Abordagem orientada a problemas

36

O que é um padrão? Um padrão é uma regra envolvendo 3 partes, que

expressa uma relação entre um certo contexto, um problema e uma solução.

Contexto

uma situação que dá margem a um problema

Problema

o problema recorrente que surge em tal contexto

Solução

uma solução comprovada para o problema. 37

Contexto Exemplos

"your environment is a distributed and possibly heterogeneous system with independent cooperating components".

"interactive applications with a flexible human-computer interface".

"building systems that support their own modification a priori".

38

Problema Exemplos “... From a developer"s viewpoint, there should

essentially be no difference between developing software for centralized systems and developing for distributed ones”...

“User interfaces are especially prone to change requests. When you extend the functionality of an application, you must modify menus to access these new functions”...

“Software systems evolve over time. They must be open to modifications in response to changing technology and requirements”...

39

Solução Exemplos “Introduce a broker component to achieve better

decoupling of clients and servers”...

“Use the Model-View-Controller (MVC). MVC was first introduced in the Smalltalk-80 programming environment. MVC divides an interactive application into the three areas: processing, output, and input”...

“Make the software self-aware, and make selected

aspects of its structure and behavior accessible for adaptation and change. This leads to an architecture that is split into two major parts: a meta level and a base level”...

40

Forças “As an element in the world, each pattern is a

relationship between a certain context, a certain system of forces which occurs repeatedly in that context, and a certain spatial configuration which allows these forces to resolve themselves”.

Forças?

O termo força denota qualquer aspecto do problema que deve ser considerado ao propor a solução.

41

Forças Exemplos

Requisitos que a solução deve atender

“peer-to-peer inter-process communication must be efficient”

Restrições a serem consideradas

“inter-process communication must follow protocol XPTO”

Propriedades desejáveis

“changing software should be easy”

42

Forças MVC

O padrão Model-View-Controller especifica duas forças:

Deve ser fácil modificar a interface do usuário, mas...

O núcleo funcional do software não deve ser afetada por essa modificação.

43

Forças Forças discutem o problema a partir de diversos

pontos-de-vista e ajudam a compreensão de detalhes

Forças podem complementar ou contradizer umas às outras.

Extensibilidade de um sistema versus minimização de seu código

44

Padrões arquiteturais Buschman, 1996 Padrões arquiteturais expressam esquemas

fundamentais para a organização estrutural de sistemas de software

Padrões arquiteturais oferecem um conjunto pré-definido de subsistemas, especificam suas responsabilidades e incluem regras e orientações (guidelines) para organizar os relacionamentos entre eles.

45

Padrões arquiteturais Buschman, 1996

From Mud to Structure Layers

Pipes & Filters

Blackborad

Distributed Systems Broker

Interactive Systems MVC

PAC

Adaptable Systems Microkernel

Reflection

Categorias

46

Categorias de Padrões do livro POSA Justificativa

Organizar padrões em função da principal propriedade sistêmica global que incorporam

Categorias From Mud to Structure

padrões que ajudam a evitar um ‘mar' de componentes.

Distributed systems suporte à estruturação de sistemas com componentes distribuídos

Interactive systems facilidade de adaptação de interface do usuário

Adaptable systems suporte à extensão de aplicações e sua adaptação à tecnologia em

evolução e à mudança em requisitos não funcionais 47

Client-server

2012 48

Client-server Multi-tier

2012 49

Broker

2012 50

Publish-Subscribe

2012 51

Peer-to-peer

2012 52

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

Referências Resources for Software Architects

http://www.bredemeyer.com/index.html

2012 83