View
219
Download
0
Category
Preview:
Citation preview
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
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
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
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
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
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
Recommended