SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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

Contenu connexe

Tendances

Aula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAndré Constantino da Silva
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Luís Fernando Richter
 
Metodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresMetodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresAragon Vieira
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
O que é Interação Humano-Computador?
O que é Interação Humano-Computador?O que é Interação Humano-Computador?
O que é Interação Humano-Computador?Sidney Roberto
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de RequisitosPaulo Furtado
 
Lista de exercícios tipos de arquitetura infraestrutura de software
Lista de exercícios tipos de arquitetura   infraestrutura de softwareLista de exercícios tipos de arquitetura   infraestrutura de software
Lista de exercícios tipos de arquitetura infraestrutura de softwareIsabel Araujo
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de SistemasNécio de Lima Veras
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 

Tendances (20)

Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Aula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de Usuário
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e prática
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
Metodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresMetodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de Softwares
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
O que é Interação Humano-Computador?
O que é Interação Humano-Computador?O que é Interação Humano-Computador?
O que é Interação Humano-Computador?
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de Requisitos
 
Lista de exercícios tipos de arquitetura infraestrutura de software
Lista de exercícios tipos de arquitetura   infraestrutura de softwareLista de exercícios tipos de arquitetura   infraestrutura de software
Lista de exercícios tipos de arquitetura infraestrutura de software
 
Scrum
ScrumScrum
Scrum
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 

En vedette

Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na PraticaAlessandro Kieras
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersSergio Crespo
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCEduardo Nicola F. Zagari
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasEduardo Nicola F. Zagari
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
Arquitetura de Software - Concorrência
Arquitetura de Software - ConcorrênciaArquitetura de Software - Concorrência
Arquitetura de Software - ConcorrênciaAndré Faria Gomes
 
Princípios Básicos do Design de Sistemas Interativos
Princípios Básicos do Design de Sistemas InterativosPrincípios Básicos do Design de Sistemas Interativos
Princípios Básicos do Design de Sistemas InterativosWellington Oliveira
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na PráticaDouglas Aguiar
 
Vssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosVssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosYan Justino
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIgor Takenami
 
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telas
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telasDo Quadro Negro à Lousa Digital - possibilidades interativas sobre as telas
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telasGeorge Gomes
 
Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet CoreYan Justino
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...André Constantino da Silva
 
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOYan Justino
 

En vedette (20)

Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and Filters
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Arquitetura de Software - Concorrência
Arquitetura de Software - ConcorrênciaArquitetura de Software - Concorrência
Arquitetura de Software - Concorrência
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Princípios Básicos do Design de Sistemas Interativos
Princípios Básicos do Design de Sistemas InterativosPrincípios Básicos do Design de Sistemas Interativos
Princípios Básicos do Design de Sistemas Interativos
 
Angular
AngularAngular
Angular
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na Prática
 
TDD e BDD
TDD e BDDTDD e BDD
TDD e BDD
 
Vssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosVssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativos
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a Serviços
 
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telas
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telasDo Quadro Negro à Lousa Digital - possibilidades interativas sobre as telas
Do Quadro Negro à Lousa Digital - possibilidades interativas sobre as telas
 
Iniciando com DDD
Iniciando com DDDIniciando com DDD
Iniciando com DDD
 
Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet Core
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
 
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
 

Similaire à Arquitetura de Software

Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de SoftwareMarcelo Yamaguti
 
Gerenciamento de Configuração
Gerenciamento de ConfiguraçãoGerenciamento de Configuração
Gerenciamento de ConfiguraçãoMarcelo Yamaguti
 
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdf
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdfO_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdf
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdfBrunaBraga68
 
Projeto Liowsn - Um sistema operacional para trabalhos com RSSF
Projeto Liowsn - Um sistema operacional para trabalhos com RSSFProjeto Liowsn - Um sistema operacional para trabalhos com RSSF
Projeto Liowsn - Um sistema operacional para trabalhos com RSSFMarllus Lustosa
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...Marcelo Palladino
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Monografia eng soft1_halan
Monografia eng soft1_halanMonografia eng soft1_halan
Monografia eng soft1_halanHalan Ridolphi
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...Guilherme Veras
 
Linguagens DInâmicas vsAtividade aberta
Linguagens DInâmicas vsAtividade abertaLinguagens DInâmicas vsAtividade aberta
Linguagens DInâmicas vsAtividade abertaStanley Araújo
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdfNickMartinsgaspar
 
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateAnálise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateRicardo Rinco
 
Implementing Product Line Variabilities - Presentation
Implementing Product Line Variabilities - PresentationImplementing Product Line Variabilities - Presentation
Implementing Product Line Variabilities - PresentationMichel Alves
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software IIIDalton Martins
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...tdc-globalcode
 

Similaire à Arquitetura de Software (20)

Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
Gerenciamento de Configuração
Gerenciamento de ConfiguraçãoGerenciamento de Configuração
Gerenciamento de Configuração
 
Projeto de software
Projeto de softwareProjeto de software
Projeto de software
 
Requisitos de software
Requisitos de softwareRequisitos de software
Requisitos de software
 
Implementação
ImplementaçãoImplementação
Implementação
 
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdf
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdfO_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdf
O_Emprego_de_Tecnicas_de_IA_no_suporte_a.pdf
 
Projeto Liowsn - Um sistema operacional para trabalhos com RSSF
Projeto Liowsn - Um sistema operacional para trabalhos com RSSFProjeto Liowsn - Um sistema operacional para trabalhos com RSSF
Projeto Liowsn - Um sistema operacional para trabalhos com RSSF
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Monografia eng soft1_halan
Monografia eng soft1_halanMonografia eng soft1_halan
Monografia eng soft1_halan
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
 
Linguagens DInâmicas vsAtividade aberta
Linguagens DInâmicas vsAtividade abertaLinguagens DInâmicas vsAtividade aberta
Linguagens DInâmicas vsAtividade aberta
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf
 
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateAnálise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
 
Indice
Indice Indice
Indice
 
Implementing Product Line Variabilities - Presentation
Implementing Product Line Variabilities - PresentationImplementing Product Line Variabilities - Presentation
Implementing Product Line Variabilities - Presentation
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software III
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
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