Diretrizes bioclimáticas para espaços arquitetônicos e urbanos
13 Arquitetura de Software - Estilos Arquitetônicos
-
Upload
hudson-alves -
Category
Documents
-
view
46 -
download
1
Transcript of 13 Arquitetura de Software - Estilos Arquitetônicos
![Page 1: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/1.jpg)
23/02/2013 1
Arquitetura de Software
Estilos Arquitetônicos
Prof. Rodrigo Fetter Marques
![Page 2: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/2.jpg)
23/02/2013 2
Estilos arquitetônicos
• Alguns estilos arquitetônicos:
– Arquitetura baseada em camadas – os componentes são organizados em camadas;
– Arquitetura baseada em dados – os processos se comunicam por meio de repositórios de dados comum;
– Arquitetura baseada em objetos ou componentes – cada objeto corresponde a um componente. Os componentes são conectados através de chamadas remotas;
– Arquitetura baseada em eventos – processos se comunicam por meio de propagação de eventos que transportam dados.
– Arquitetura baseada em serviço (SOA) - processos se comunicam por meio da prestação de serviços;
– Arquiteturas híbridas – dois ou mais estilos podem ser combinados para representar a arquitetura de um software.
![Page 3: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/3.jpg)
23/02/2013 3
Arquitetura de Software
Estilos arquitetônicos - Arquitetura baseada em
camadas
Prof. Rodrigo Fetter Marques
![Page 4: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/4.jpg)
Desenvolvimento em Camadas
• Divisões lógicas de um programa
– Lógica de Apresentação
• Interação usuário x aplicativo
• Apresentação das informações
– Lógica de Negócio
• Regras que governam o processo de negócio
– Lógica de Acesso a Dados
• Funcionalidades de acesso a dados e persistência
![Page 5: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/5.jpg)
Arquitetura em Camadas
• A arquitetura em camadas é lógica e não física.
• Se preocupa com as funções do aplicativo e não com sua
implementação.
• Essa mesma arquitetura pode ser usada para elaborar sistemas
distribuídos ou centralizados, tradicionais, Cliente/Servidor ou para a
Web.
• Entretanto, a utilização dessa arquitetura facilita a distribuição dos
componentes do aplicativo, quando for preciso por razões de
negócios, tecnológicas ou ambas.
![Page 6: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/6.jpg)
Modelo em camadas
• Esse modelo organiza um sistema em camadas, cada uma
fornecendo um conjunto de serviços.
• Cada camada pode ser imaginada como uma máquina abstrata cuja
linguagem de máquina é definida pelos serviços oferecidos pela
camada.
• Apoia o desenvolvimento incremental de sistemas. À medida que
uma camada é desenvolvida, alguns serviços fornecidos por essa
camada pode ser disponibilizados para os usuários.
![Page 7: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/7.jpg)
Benefícios da
Arquitetura em Camadas
• Estrutura para elaboração de aplicativos flexíveis que possam ser
alterados com facilidade para atender às necessidades de negócios
em constante mudança.
• Alto nível de reutilização de software.
• Desenvolvimento mais fácil de aplicativos grandes e complexos em
ambientes transacionais, Web e de suporte à decisão.
• Desenvolvimento mais fácil de aplicativos distribuídos que dão
suporte ao gerenciamento central, a equipes auto gerenciadas e ao
atendimento externo.
![Page 8: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/8.jpg)
Como Desenvolver
Sistemas Aplicativos Complexos?
• Abstração:
– É uma técnica analítica para dividir um sistema em vários níveis
de detalhes (níveis de abstração) ou camadas.
• Encapsulamento:
– É um processo de combinar informações (conjuntos de dados) e
comportamentos (funções ou métodos) em uma nova entidade,
chamada componente (ou objeto).
![Page 9: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/9.jpg)
Abstração
• Usando a abstração, pode-se ocultar uma série de detalhes dos
quais não se necessita num determinado nível do sistema aplicativo.
• A redução da quantidade de detalhes visíveis é uma parte
fundamental da descrição e do projeto de sistemas aplicativos
complexos.
• A principal técnica para ocultar detalhes é definir os níveis de abstração a serem utilizados.
![Page 10: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/10.jpg)
Arquitetura Baseada em
Níveis de Abstração
• Uma arquitetura em camadas, baseadas em níveis abstração,
possui três características principais:
1. Camadas claramente definidas;
2. Interfaces formais e explícitas entre as camadas;
3. Detalhes ocultos e protegidos dentro de cada camada.
![Page 11: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/11.jpg)
Benefícios da Abstração na Arquitetura em
Camadas
• Esconde deliberadamente de cada camada os detalhes contidos na
camada abaixo dela:
– Desenvolvimento simplificado do aplicativo: o desenvolvedor de
uma camada não precisa se preocupar com as outras.
– Maior segurança e proteção: o desenvolvedor de uma camada
não pode controlar fisicamente outra camada em qualquer nível
de detalhe.
![Page 12: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/12.jpg)
Interface entre as Camadas
• É a superfície entre os componentes adjacentes de um
aplicativo e o dispositivo por meio do qual eles interagem
através das seguintes funções:
1. Informa o que o outro componente deve fazer;
2. Pergunta o estado atual de outro componente;
3. Recebe os resultados das operações solicitadas.
![Page 13: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/13.jpg)
Exemplos de modelos em camadas
![Page 14: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/14.jpg)
Mais exemplos de camadas
![Page 15: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/15.jpg)
Detalhamento da Interface
entre as Camadas
![Page 16: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/16.jpg)
Projeto de cada Camada na Arquitetura em
Camadas
Camada Interface Foco do Projeto
Aplicativo de usuário
(desktop ou browser)
GUI ou WEB Objetos do
aplicativo,
independentes de
regras.
Processos de regras
de negócios
Fluxo dos processos Solicitação de
decisões
independentes da
interface de usuário
e dos dados.
Gerenciamento de
banco de dados
Transações e
consultas
Dados
independentes das
decisões.
Nenhuma camada deve realizar funções que sejam de responsabilidade de outra.
![Page 17: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/17.jpg)
Camada de Interface
• Apresentação:
– Apresentação de informações
– Metáforas visuais
– Navegação e transição consistente entre formulários/páginas
• Entrada:
– Coleta de informações (conjuntos de dados)
– Coleta de decisões (execução de ações)
– Interação (diálogo) com os usuários
![Page 18: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/18.jpg)
Camada de Interface
• Liberdade para os usuários:
– Moldam a interface do sistema aplicativo de acordo com suas
necessidades específicas, sem afetar as regras de negócios e o
banco de dados.
• Liberdade para a organização:
– O aplicativo de usuário envia solicitações de processo formais
para executar as regras de negócios e transações e consultas no
banco de dados.
– As regras de negócio e o banco de dados ficam mais isolados
das mudanças na interface do usuário.
– Podem ser facilmente implementadas várias visões para usuários
diferentes, sem afetar as regras e os dados.
![Page 19: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/19.jpg)
Camada de Regras de Negócios e Lógica
do Aplicativo
• Interoperabilidade:
– Capacidade de compartilhar trabalho (regras), compartilhar
software (lógica) e fazer “coisas” de forma consistente por toda a
organização.
• Reutilização:
– Um dos principais motivos para a impossibilidade de alta
reutilização de código é a falta da separação, num mesmo
sistema aplicativo, entre a interface de usuário, as regras/lógica
do negócio e o gerenciamento do banco de dados.
![Page 20: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/20.jpg)
Camada de Regras de Negócios e Lógica
do Aplicativo
• Um único componente de software trata de uma tarefa específica.
• Este componente deve ser independente do banco de dados e da
interface do usuário.
• Todos os aplicativos da organização sempre utilizam este mesmo
componente de software (classe de objeto) para realizar esta mesma
tarefa.
![Page 21: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/21.jpg)
Camada de Dados
• Transações:
– Atualizações de dados consistentes;
– Imposição de regras de negócios básicas;
– Evitar mudanças não-autorizadas ou inválidas.
• Consultas:
– Simplificar uniões complexas de tabelas;
– Assegurar consistência de resultados;
– Assegurar direitos de acesso.
• Dados proveniente de várias “fontes”.
![Page 22: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/22.jpg)
23/02/2013 22
1, 2, 3, N Camadas
![Page 23: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/23.jpg)
Lógica de
Apresentaçã
o
Lógica de
Negócios
Lógica de
Acesso a
Dados
Banco
de
dados
Código Monolítico
Desenvolvimento em Camadas
1 Camada
![Page 24: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/24.jpg)
Desenvolvimento em Camadas
1 Camada
![Page 25: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/25.jpg)
Desenvolvimento em Camadas
2 Camadas
Lógica de
Apresentaçã
o
Lógica de
Negócios
Banco
de
dados
Cenário de 2
camadas físicas
Lógica de
Acesso a
Dados
![Page 26: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/26.jpg)
Desenvolvimento em Camadas
2 Camadas
• Problemas do modelo
– Cliente com lógica de negócio
– Necessidade do cliente saber detalhes da localização das
fontes de dados
– Clientes gordos
– Atualizações individuais
– Suporte ao desenvolvimento WEB
![Page 27: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/27.jpg)
Desenvolvimento em Camadas
2 Camadas
![Page 28: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/28.jpg)
Desenvolvimento em Camadas
2 Camadas
![Page 29: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/29.jpg)
•Camada de Apresentação com Regras de Negócio Juntas.
•Camada de Persistência.
Problemas para o usuário, que não tem os programas funcionando
como deveriam; Problemas para a equipe de desenvolvimento que
não tem o seu trabalho reconhecido e, normalmente, tem que
trabalhar apenas "apagando incêndios"; e Problemas para a
Administração/Gerência da rede que não consegue gerar os
resultados esperados pela Administração da empresa, apesar dos
elevados valores já investidos.
Desenvolvimento em Camadas
2 Camadas
![Page 30: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/30.jpg)
30
Arquitetura em duas camadas
![Page 31: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/31.jpg)
Desenvolvimento em Camadas
3 Camadas
Banco
de
dados
Cenário de 3
camadas físicas
Lógica de
Acesso a
Dados
Lógica de
Negócio
Lógica de
Apresent
ação
![Page 32: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/32.jpg)
Desenvolvimento em Camadas
3 Camadas
• Vantagens
– Independência entre camadas
– Divisão de trabalho
– Facilidade na atualização
– Proteção do código
– Transparência no acesso a dados
– Maior portabilidade
![Page 33: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/33.jpg)
Desenvolvimento em Camadas
3 Camadas
![Page 34: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/34.jpg)
Desenvolvimento em Camadas
3 Camadas
![Page 35: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/35.jpg)
Modelo e códigos construídos para representar as camadas.
Os servidores não precisam estar necessariamente em máquinas diferentes, podem estar na mesma máquina. Porem questões de performance são relevantes.
• Camada de Apresentação
• Camada de Negócios
• Camada de Persistência
Desenvolvimento em Camadas
3 Camadas
![Page 36: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/36.jpg)
36
Arquitetura em três camadas
![Page 37: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/37.jpg)
37
Arquitetura em três camadas Web
![Page 38: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/38.jpg)
Desenvolvimento em Camadas
3 Camadas
![Page 39: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/39.jpg)
APRESENTAÇÃO NEGÓCIO OU LÓGICA PERSISTÊNCIA
(INTEGRAÇÃO)
NAVEGADOR WEB SGDB V
C
M
SERVIDOR CLIENTE - SERVIDOR CLIENTE
SERVIDOR WEB
Helper classes
Desenvolvimento em Camadas
3 Camadas
![Page 40: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/40.jpg)
Desenvolvimento em Camadas
Multiplas Camadas
![Page 41: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/41.jpg)
Desenvolvimento em Camadas
Multiplas Camadas
![Page 42: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/42.jpg)
42
Arquitetura em camadas
![Page 43: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/43.jpg)
CLIENTE
(APRESENTAÇÃO)
NAVEGADOR WEB
CLIENTE
PERSISTÊNCIA
SGDB
SERVIDOR
GERENCIA DE
APRESENTAÇÃO
NEGÓCIO
SERVIDOR WEB
CLIENTE - SERVIDOR CLIENTE - SERVIDOR
SERVIDOR
APLICAÇÃO
EJB in
MVC
V
C
M
Desenvolvimento em Camadas
Multiplas Camadas
![Page 44: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/44.jpg)
Desenvolvimento em Camadas
Multiplas Camadas - JEE
![Page 45: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/45.jpg)
![Page 46: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/46.jpg)
MVC Desenvolvimento em Camadas
Multiplas Camadas - JEE
![Page 47: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/47.jpg)
23/02/2013 47
Arquitetura de Software
Estilos arquitetônicos - Arquitetura baseada em
dados
Prof. Rodrigo Fetter Marques
![Page 48: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/48.jpg)
Modelo baseado em dados
• Os subsistemas que constituem um sistema devem trocar
informações de modo que possam trabalhar juntos eficientemente.
• Existem duas maneiras:
1. Todos os dados compartilhados são mantidos em um banco
de dados.
2. Cada subsistema mantém seu próprio banco de dados e
disponibiliza-os aos outros subsistemas.
• A maioria dos sistemas que usam grandes quantidade de dados
usam o primeiro modelo, ou seja, modelo repositório compartilhado.
![Page 49: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/49.jpg)
Modelo baseado em dados
1º - Dados compartilhados 2º - Subsistemas controladores
![Page 50: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/50.jpg)
Diagrama de Fluxo de Dados
![Page 51: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/51.jpg)
Modelo baseado em dados
• O foco da arquitetura é nos dados.
• Algumas organizações mantém o controle e a gestão da arquitetura
de dados centralizada (estratégica).
• Maneira eficiente de compartilhas dados.
• Maneira eficiente de manter a integridade dos dados.
• Maneira eficiente de controlar o acesso aos dados.
• Os subsistemas que produzem dados não precisam saber como
esses dados serão usados por outros subsistemas.
– Os subsistemas foca na integridade de domínio e integridade
referencial dos dados.
– Os subsistemas mantém as regras de persistências dos dados.
– Alguns subsistemas mantém e controlam as regras de negócio
aplicáveis aos dados.
![Page 52: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/52.jpg)
23/02/2013 52
Arquitetura de Software
Estilos arquitetônicos - Arquitetura baseada em
componentes
Prof. Rodrigo Fetter Marques
![Page 53: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/53.jpg)
23/02/2013 53
Estilos arquitetônicos
• É formulado em termos de componentes:
– Como estão conectados;
– Como os dados são trocados;
– Maneira como os componentes são configurados.
• Um componente é uma unidade modular com interfaces requeridas
e bem definidas, que é substituível dentro de seu ambiente.
• Um conector é descrito como um mecanismo que serve de
mediador da comunicação ou da cooperação entre componentes.
![Page 54: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/54.jpg)
Modelos Orientados a Objetos
Diagramas da UML
Correspondência clara entre os modelos dos domínios do problema,
do projeto e da implementação
Class Name
attribute:Type = initialValue
attribute:Type = initialValue
attribute:Type = initialValue
operation(arg list):return type
Class Name
attribute:Type = initialValue
attribute:Type = initialValue
attribute:Type = initialValue
operation(arg list):return type
0..1 1...*
Class Name
attribute:Type = initialValue
attribute:Type = initialValue
attribute:Type = initialValue
operation(arg list):return type
Class Name
attribute:Type = initialValue
operation(arg list):return type
![Page 55: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/55.jpg)
Desenvolvimento de Sistemas Orientados a Objetos
•Necessita ambientes de desenvolvimento extremamente
rigorosos e formais, com pessoal altamente treinados
•Nos grandes projetos abstrações corretas são difíceis de
realizar
•Modelos de objeto mal realizados criam mais problemas do
que soluções
•O nível de granularidade dos objetos é muito baixo, o que
torna complexo o controle da dependência entre eles
![Page 56: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/56.jpg)
Componentes
Definição: Um pequeno grupo de objetos trabalhando
agrupados a fim de prover uma função do sistema
Os objetos dentro do componente não são
conhecidos por outra parte do sistema, exceto pelo
próprio componente
![Page 57: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/57.jpg)
Características dos Componentes
•Tem todas as características de um objeto
•Tem limites impostos pela plataforma para a qual foi projetado
•Podem existir independentes dos outros componentes, exceto
daqueles que usa na mesma plataforma
•Tem uma interface fixa e comum a todos os demais
componentes do sistema
•São auto descritos ( os seus clientes sabem como usá-los )
![Page 58: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/58.jpg)
Componentes de Software
•Conjunto discreto, administrável de lógica
•Código que implementa um conjunto pré-definido de
interfaces
•Não são aplicações inteiras
•Não rodam sozinhos
•São usados como peças de quebra-cabeça para
resolver um problema maior
•Um componente que resolve um determinado problema
pode ser comprado e combinado com outros para
resolver um problema maior
![Page 59: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/59.jpg)
Componente de Software: Exemplo
Componente Cálculo de Preço Final
Manuseia informações sobre o preço de um conjunto de
produtos, fornecendo o preço total da compra
Baseado num conjunto de Regras de Definição de Preços
•Preços unitários dos produtos
•Quantidade de itens de produto comprados
•Desconto de quantidade/ cliente / região
•Sobretaxas ( impostos, transporte )
Pode ser Usado:
•Serviço de Correio para definir o preço de remessa de pacotes
•Fabricante de automóveis para descriminar o preço do automóvel vendido
![Page 60: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/60.jpg)
Separação da Interface e da sua Implementação
Interface do Componente
•Define o contrato do componente com o código do outro
componente que o chama
•Esconde de seus clientes os detalhes de sua construção
•Permite que seus clientes somente tratem com os resultados finais
de suas próprias operações
Implementação do Componente
•Lógica da programação interna, escondida de seus clientes
•Pode ser mudada sem alterar do código de seus clientes
![Page 61: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/61.jpg)
Desenvolvimento Baseado em Componentes
•Um sistema complexo pode ser considerado como um conjunto
composto de um número arbitrário de pequenos sistemas coesivos (
componentes )
•Cada componente é construído para implementar um conjunto
definido de responsabilidades
•Cada componente é auto contido e acoplado a outros
componentes
•Componentes são projetados para serem utilizados dentro de uma
plataforma que integra todos os componentes numa aplicação
Compone nt
Compone nt
Compone nt
![Page 62: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/62.jpg)
Plataforma baseada em Componentes
•Facilita a construção, administração e manutenção de
componentes
•Deve ser padronizada
Deve conter:
•Ferramentas para desenvolver componentes
•Um Container para gerenciar os componentes utilizados:
Ambiente runtime para executar os componentes
Inclui conjunto de serviços que os componentes
necessitam
•Ferramentas para implementação e manutenção
Customização de componentes para ambientes
específicos
![Page 63: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/63.jpg)
Plataforma baseada em Componentes
•Permite o desenvolvimento e a utilização de sistemas baseado
em componentes
•Cria instâncias runtime de componentes
•Permite a componentes descobrir e se comunicar com outros
componentes
•Provê serviços comuns adicionais, como:
Persistência
Transações
Independência de localização
Segurança
Monitoramento
![Page 64: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/64.jpg)
Uso de Componentes: Vantagens
Técnicas
•A complexidade é melhor administrada, permitindo melhor qualidade
nas soluções
•Funcionalidade técnicas ( não de negócios ) é concentrada na
plataforma
Negócios
•Produtos de melhor qualidade
•Tempo menor para desenvolvimento de sistemas
•Melhor utilização de recursos humanos
•Habilidade de resposta a mudanças
•Custo reduzido
•Alto reuso para projetos futuros
![Page 65: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/65.jpg)
Uso de Componentes: Desvantagens
•Os componentes são fortemente acoplados uns aos outros: uma
mudança no código de um deles pode levar a mudanças nos
demais
•A administração da complexidade da dependência entre os
componentes em grandes sistemas é difícil: um componente
ainda tem que saber muito sobre os demais ( aos quais se acopla
)
•As soluções proprietárias:
( DCOM – MS, CORBA )
![Page 66: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/66.jpg)
23/02/2013 66
Arquitetura de Software
Estilos arquitetônicos - Arquitetura baseada em
serviço
Prof. Rodrigo Fetter Marques
![Page 67: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/67.jpg)
SOA
• Arquitetura que tem tido destaque na integra-ção de negócios
atualmente.
• SOA segundo a Accenture:
“Uma arquitetura que define como funções de negócios dinstintas,
implementadas por siste-mas autônomos, devem operar
conjuntamen-te para executar um processo de negócio.”
![Page 68: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/68.jpg)
SOA
• Cada função de negócio (componente) é im-plementada como um
serviço.
• Esses serviços ficam disponíveis em uma re-de para que as
aplicações possam utilizá-los. Em geral, esta rede é a internet e os
serviços são chamados de web services.
![Page 69: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/69.jpg)
Características da arquitetura
• As partes (serviços) são bastante indepen-dentes entre si.
• Não há limitações em relação à plataforma ou à linguagem utilizada
para implementar um serviço, apenas em relação a como eles
comunicam-se.
• Um serviço encapsula uma lógica de negó-cio. Assim, temos um
alto índice de reapro-veitamento.
![Page 70: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/70.jpg)
Um exemplo
![Page 71: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/71.jpg)
Benefícios
• Tempo e custo de desenvolvimento serão re-duzidos ao
reutilizarmos um serviço em uma parte diferente do sistema.
• A aplicação final é mais facilmente extensí-vel.
• Uma aplicação diferente poderá se beneficiar dos serviços
implementados anteriormente.
![Page 72: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/72.jpg)
Padrões utilizados
• XML (Linguagem de Marcação Extensível)
• SOAP (Protocolo de Acesso a Objetos Simples)
• WSDL (Linguagem de Descrição de Serviços Web)
• UDDI (Descrição, Descoberta e Integração Universais)
![Page 73: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/73.jpg)
Lógica de Negócios
Dados Apresentação
Publicação Arquitetura
Orientada a
Serviços
- SOA -
![Page 74: 13 Arquitetura de Software - Estilos Arquitetônicos](https://reader034.fdocument.pub/reader034/viewer/2022052212/54ded7714a7959df518b4aa8/html5/thumbnails/74.jpg)
SOA - Características Arquiteturais
•Distribuída: os elementos funcionais da aplicação são utilizados
em múltiplos sistemas ( provedor, consumidor, publicador ),
localizados em pontos diferentes
•Acoplamento Fraco: as ligações entre os elementos funcionais
não são fixas ou rígidas, podendo ser assíncronas
•Escalável: novos elementos podem ser agregados, um serviço
pode ser composto de outros serviços, sistemas legados,
sistemas de pacotes
•Baseada em Padrões: independente de vendedores específicos