TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
Arquitetura de Software
1. Prof. Marcelo H. Yamaguti (1)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Projeto e Arquitetura de Software
2. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (2)
Referências
• Estude para aprofundamento no conteúdo:
– SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. São
Paulo: Pearson, 2011. – Capítulos 6
– PFLEEGER, Shari Lawrence. Engenharia de Software: teoria
e prática. 2ª ed. São Paulo: Prentice-Hall, 2004. - Capítulo 5
– IEEE. Guide to the Software Engineering Body of Knowledge.
SWEBOK. Version 3. IEEE Computer Society. 2014. –
Chapter 2
– BUSCHMANN, Frank. et all. A system of patterns.
Chichester: John Wiley & Sons, 1996.
– GAMMA, Erich; HELM, Richard; JOHNSON, Ralph;
VLISSIDES, John. Design patterns: elements for reusable
object-oriented software. Reading: Addison-Wesley, 1994.
Introdução à Engenharia de Software
3. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (3)
Projeto e Arquitetura
• Projeto:
– Preliminar: foco no projeto da arquitetura do software.
– Detalhado: foco no projeto dos componentes (módulos) de
software.
Projeto
preliminar
Introdução à Engenharia de Software
Análise
Especificação
de requisitos
Arquitetura
O QUE COMO
Projeto
detalhado
Componentes
COMO
4. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (4)
Projeto da arquitetura
• A arquitetura de software envolve o conjunto de
decisões que definem a organização do sistema
objetivando:
– definir os elementos estruturais e suas interfaces de modo a
estabelecer a composição do sistema;
– estabelecer o comportamento pela colaboração entre estes
elementos;
– compor estes elementos estruturais e comportamentais em
subsistemas (agregação).
Introdução à Engenharia de Software
5. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (5)
Requisitos e Arquitetura de
SW
• Apesar dos requisitos funcionais definirem as
principais características do funcionamento do
software, os requisitos não-funcionais têm forte
influência na definição da arquitetura do software:
– Usabilidade
– Confiabilidade
– Desempenho
– Facilidade de suporte
Introdução à Engenharia de Software
6. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (6)
Aspectos chave
• Além dos requisitos não-funcionais o projetista
(arquiteto) deve estar atento aos seguintes aspectos
chave no projeto do software:
– Concorrência
– Controle e tratamento de eventos
– Persistência de dados
– Distribuição de componentes
– Tratamento de exceções e tolerância a falhas
– Interação e apresentação (IHC)
– Segurança
Introdução à Engenharia de Software
7. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (7)
Interface com o usuário
• O projeto de interface com o usuário é uma parte
importante do processo de projeto do software.
• O projeto da IHC (Interface Humano-Computador)
ou UX (User eXperience) envolve:
– Princípios gerais de projeto de interface com o usuário
(Ex.: facilidade de aprendizado, consistência, ...)
– Modalidades de interação com o usuário (Ex.: menus,
manipulação direta, formulários, ...)
– Projeto da apresentação da informação (Ex.: uso de cores,
fontes de letras, ...)
Introdução à Engenharia de Software
8. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (8)
Visões de arquitetura
• Dificilmente um único modelo ou visão consegue
representar todos os aspectos de uma arquitetura.
• Philippe Krutchen propôs a visão 4+1:
Introdução à Engenharia de Software
Visão
Lógica
Visão
Física
Visão de
Desenvolvimento
Visão de
Processo
Cenários
(casos de
uso)
Classes, Dados, Funcionalidade Desenvolvimento de componentes
Comportamento Implantação
9. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (9)
Padrões de arquitetura
• Na modelagem de uma arquitetura de software,
pode-se utilizar Padrões de Arquitetura que
descrevem estilos arquitetônicos mais comuns.
Introdução à Engenharia de Software
10. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (10)
Padrões de arquitetura
• Camadas
– Descrição: auxilia a estruturar aplicações que podem ser
decompostas em grupos de subtarefas, nas quais cada grupo de
subtarefas é um nível particular de abstração.
– Contexto: um grande sistema que requer decomposição.
Aplicação
Apresentação
Sessão
Transporte
Rede
Conexão de dados
Físico
Introdução à Engenharia de Software
11. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (11)
Padrões de arquitetura
• Dutos e Filtros
– Descrição: provê uma estrutura para sistemas que processam
uma cadeia de dados. Cada passo do processamento é
encapsulado em um componente-filtro. Dados são passados
por pipes entre filtros adjacentes. A recombinação de filtros
permite a construção de sistemas correlatos.
– Contexto: processamento de cadeias de dados.
Analisador léxico
Analisador sintático
Analisador semântico
Código-fonte
Cadeia de tokens
Árvore de sintaxe abstrata
Introdução à Engenharia de Software
12. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (12)
Padrões de arquitetura
• MVC (Model-View-Controller):
– Descrição: divide um sistema
interativo em três componentes. O
Model contém a funcionalidade
básica e dados. Views mostram a
informação ao usuário. Controllers
manipulam as entradas do usuário.
Views e controllers compreendem a
interface com o usuário. Um
mecanismo de propagação de
mudanças assegura a consistência
entre o modelo e a interface com o
usuário.
– Contexto: aplicações interativas
com interface homem-máquina
flexível.
Introdução à Engenharia de Software
13. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (13)
Padrões de arquitetura
• Repositório
– Descrição: os componentes do sistema não se comunicam
diretamente, mas por meio de um repositório central de dados.
– Contexto: sistemas dirigidos a dados, com grandes volumes
de informação que devem ser armazenados por longo tempo.
Repositório de dados
central
Componente 1 Componente 2
Componente 3 Componente n
14. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (14)
Padrões de arquitetura
• Cliente-Servidor
– Descrição: pode ser usado para estruturar sistemas de software
distribuídos com componentes pouco acoplados que interagem
por invocações de serviços remotos. Um componente broker é
responsável por coordenar a comunicação, tais como repassar
requisições, bem como, transmitir resultados e condições de
erro.
– Contexto: o ambiente é um
sistema distribuído e
possivelmente heterogêneo com
componentes heterogêneos
cooperantes.
– Exemplo: sistemas Web com
sistemas legados.
15. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (15)
Fast Quiz
1) Na visão 4+1 proposta por Krutchen, todas são
visões, EXCETO:
a) Física
b) Lógica
c) Processo
d) Conceitual
e) Desenvolvimento
16. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (16)
Fast Quiz
2) Uma rede de supermercados deseja que seja
desenvolvido um sistema de troca de dados de vendas
locais entre a matriz e as filiais. As filiais estão
distribuídas fisicamente por todo o estado. Neste
cenário o padrão arquitetônico mais adequado seria:
a) Camadas
b) Dutos-Filtros
c) Cliente-Servidor
d) Repositório
e) Model-View-Controller
Introdução à Engenharia de Software
17. PUCRS - FACIN
Prof. Marcelo H. Yamaguti (17)
Fast Quiz
3) Deseja-se um sistema construído a partir de um
núcleo (core) que possua serviços e dados básicos para
todo o sistema; sobre este núcleo devem ser
implementados serviços mais genéricos; finalmente
sobre estes serviços mais genéricos devem ser
implementadas facilidades de interface com usuários
ou outros sistemas. Para este sistema o padrão
arquitetônico mais adequado é:
a) Camadas
b) Dutos-Filtros
c) Cliente-Servidor
d) Repositório
e) Model-View-Controller
Introdução à Engenharia de Software
18. Prof. Marcelo H. Yamaguti (18)
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática
Prof. Marcelo H. Yamaguti
Introdução à Engenharia de
Software
DESENVOLVIMENTO DE
SOFTWARE
Projeto e Arquitetura de Software