SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
1
SENAI
Departamento Regional do Estado de Goiás
MACRO ARQUITETURA DE SOFTWARE
COM EXPERIMENTO PRÁTICO EM JAVA
Edjalma Queiroz da Silva
Julho de 2013
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
2
Objetivos Gerais
● Revisar conceitos de Orientação a Objetos
● Revisar conceitos de Padrões de Projeto.
● Apresentar um breve histórico da evolução da
arquitetura de software.
● Mostrar a importância que a escolha do padrão
arquitetural exerce na construção de software.
● Demonstrar de maneira prática e em forma de
experimento, um projeto de software Java que
tenha sido aplicado os padrões arquiteturais
adotados no mercado de trabalho, habilitando os
alunos a definirem e utilizarem os padrões
arquiteturais.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
3
Objetivo Específico
● Capacitar o aluno a utilizar os mais
variados tipos de padrões de projeto e
decidir qual arquitetura é a mais
apropriada sob os principais aspectos da
macro aquitetura de software.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
4
Conteúdo Programático
● A plataforma Java
● JVM: Java Virtual Machine
● Orientação a Objetos
● Padrões de Projeto
● Frameworks
● Separação de responsabilidade e Inversão de
Controle
● Arquitetura
● Decisões arquiteturais
● Integração de sistemas na Web
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
5
A Plataforma Java
● Java
● JCP
● Open source e o Java
● Java Virtual Machine
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
6
JVM: Java Virtual Machine
● Características
● JIT Compiler: compilação em tempo de
execução
● Garbage Collector
● Sytem.gc
● finalizer
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
7
Orientação a Objetos
● Orientação à objetos
● Encapsulamento
– JavaBeans e getters e setters
● Polimorfismo
● Herança
● Interface
● Acoplamento e Coesão
● Testes de unidade e TDD
(Desenvolvimento dirigido por Testes)
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
8
Padrões de Projeto
● O que é e para que servem?
● Padrões GoF
– Padrões de criação
– Padrões estruturais
– Padrões comportamentais
● Padrões GRASP
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
9
Padrões de Projeto
O que é e para que servem?
● O Conceito de padrão de projeto foi criado na década de
70 pelo arquiteto Chistopher Alexander.
● A partir dos conceitos criados por Alexander, os
programadores Kent Beck e Ward Cunningham
propuseram os primeiros padrões de projeto para a
área de ciência da computação.
● Descrevem soluções para problemas recorrentes no
Desenvolvimento de Softwares (Orientado a objetos)
● Cada padrão é composto por um Nome, Definição de
um problema, a solução, quando aplicar esta solução e
suas consequências.
● Visam facilitar a reutilização de soluções de desenho
(Engenharia de Software – fase de concepção)
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
10
Padrões de Projeto
Padrões GoF
● São organizados em famílias de padrões: de
criação, estruturais e comportamentais.
● Um padrão “GoF” também é classificado
segundo o seu escopo:
– de classe
● Relacionado com herança e em
tempo de compilação
– de objeto.
● Comportamental e em tempo de
execução
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
11
Padrões de Projeto
Padrões GoF
Exemplos
● Exemplos:
– Criação: Abstract Factory, Builder Factory
Method, Prototype, Singleton
– Estrutural: Adpter, Bridge, Composite, Decorator,
Facade, Flyweigth, Proxy
– Comportamentais: Chain of Responsibility,
Command, Interpreter, Iterator, Mediator,
Memento, Observer, State, Strategy, Template
Method, Visitor
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
12
Padrões de Projeto
Padrões GRASP
● Consistem de um conjunto de práticas para
atribuição de responsabilidades a classes e objetos
● Alguns padrões GoF implementam soluções
correspondentes com padrões GRASP
● Exemplos: Controlador (Controller), Criador
(Creator),Indireção (Indirection), Especialista na
informação (Information expert), Alta coesão (High
Cohesion), Baixo acoplamento (Loose coupling),
Polimorfismo (Polymorphism), Variações protegidas
(Protected variations), e Invenção pura (Pure
fabrication).
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
13
Frameworks
● Captura a funcionalidade comum a várias
aplicações
● As aplicações devem ter algo
razoavelmente grande em comum:
pertencem a um mesmo domínio de
problema
● Várias definições de frameworks
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
14
Separação de responsabilidade
e Inversão de Controle
● Gerencie suas dependências através de
injeção
● Considere usar um framework de Injeção
de Dependências
– Spring
● Fábricas e o mito do baixo acoplamento
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
15
Arquitetura
● O que é Arquitetura?
– Discussão bem abstrata
– Trata de princípios bem estabelecidos e práticas
mais definidas começam a ser disseminadas.
– Consequência de escolhas
– Define a estrutura do software, que compreende
os componentes com suas propriedades
visíveis externamente e os relacionamentos
entre eles.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
16
. . . Arquitetura
● O diagrama abaixo representa uma
arquitetura de software?
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
17
. . . Arquitetura
● Componetes: Cliente, Servidor,
Subsistema, etc.
● Conectores: Iteração entre os
componentes (WS, API, etc)
● Configuração: Grafo de componentes e
conectores ligados, descrevendo uma
estrutura arquitetural.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
18
. . . Arquitetura
● Enfatiza a separação de interesses:
– Funcionalidade
– Interação
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
19
. . . Arquitetura
● O diagrama abaixo não representa uma
arquitetura de software.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
20
. . . Arquitetura
● Exemplo de Arquitetura
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
21
Arquitetura
● Requisitos
– São as características que o software construído
deve conter.
– Funcionais: Dizem respeito às funcionalidades
do software.
– Não-Funcionais: São inerentes ao negócio –
Tratamento de Exceções, Portabilidade,
Manutenibilidade, Persistência.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
22
. . . Arquitetura
● Performance
– Do ponto de vista da qualidade de
software é a dimensão mais mal tratada
durante o desenvolvimento de um
software.
– “Vamos apenas desenvolver o sistema e
ver o que pode ser feito quanto a
performance”.
– “Colacaremos o software em um
computador com mais capacidade de
processamento”.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
23
. . . Arquitetura
● Escalabilidade e Disponibilidade
● Confiabilidade
● Extensibilidade e manutenabilidade
● Gerenciabilidade
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
24
. . . Arquitetura
● Facilita a combinação de abordagens de
reuso de software (Ex.: estilos, Pradrões
de Projeto)
● Possibilita análise da descrição da
arquitetura nas fases iniciais do
desenvolvimento (Ex.: propriedades não
funcionais ou conformidade com um
estilo)
● Facilita a evolução do software
● Permite uma melhor comunicação entre
os stakeholders
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
25
. . . Arquitetura
● Estilo Arquitetural
– Consite de um vocabulário de elementos
de projeto e um conjunto de regras de
configuração que governam a
combinação desses elementos.
● Elementos Arquiteturais (de projeto)
– Componentes
– Conectores
● Exemplo de regras de configuração
– Uma camada pode somente se comunicar
com a camada adjacente no estilo
Camadas.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
26
. . . Arquitetura
● Cliente-Servidor
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
27
. . . Arquitetura
● Arquitetura Pipe - Filter
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
28
. . . Arquitetura
● Dividindo em camadas
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
29
. . . Arquitetura
● MVC – Model View Controller
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
30
. . . Arquitetura
● Arquitetura contemporânea e o Cloud
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
31
Decisões arquiteturais
● Desenvolvimento Web MVC
● Domine sua ferramente de mapeamento objeto
relacional
– JPA
● RMI
– É uma interface de programação que permite
a execução de chamadas remotas no estilo
RPC em aplicações desenvolvidas em
Java.
– É uma das abordagens da plataforma Java
para prover as funcionalidades de uma
plataforma de objetos distribuídos
– Segue arquitetura Cliente-Servidor
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
32
. . . Decisões Arquiteturais
● EJB
– É um componente da plataforma JEE que
roda em um container de um servidor de
aplicação.
– Seu principal objetivo consiste em fornecer
um desenvolvimento rápido e simplificado
de aplicações Java, com base em em
componentes distribuídos, transacionais,
seguros e portáveis.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
33
Integração de sistemas na Web
SOA – Service Oriented Architecture
– É um estilo de arquitetura de software cujo princípio
fundamental prega que as funcionalidades
implementadas pelas aplicações devem ser
disponibilizadas na forma de serviços.
– Frequentemente estes serviços são conectados
através de um "barramento de serviços" (enterprise
service bus, em inglês) que disponibiliza interfaces,
ou contratos, acessíveis através de web services
ou outra forma de comunicação entre aplicações.
– A arquitetura SOA é baseada nos princípios da
computação distribuída e utiliza o paradigma
request/reply para estabelecer a comunicação
entre os sistemas clientes e os sistemas que
implementam os serviços.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
34
Integração de sistemas na Web
● WSDL
– WSDL: é uma linguagem baseada em XML utilizada
para descrever Web Services funcionando como
um contrato do serviço. Trata-se de um documento
escrito em XML que além de descrever o serviço,
especifica como acessá-lo e quais as operações ou
métodos disponíveis.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
35
Integração de sistemas na Web
● POX: Plain Old XML
– Plain Old XML (POX) é um XML básico,
algumas vezes mixada com outras
especificações como namespaces,
Dublin Core, dentre outros.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
36
Integração de sistemas na Web
● REST: arquitetura distribuída baseada em
hipermídia
– Descrever qualquer interface web simples
que utiliza XML e HTTP (ou YAML, JSON,
ou texto puro), sem as abstrações
adicionais dos protocolos baseados em
padrões de trocas de mensagem como o
protocolo de serviços web SOAP.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
37
Projeto prático JAVA EE
● Demonstração de maneira prática:
– partes da arquitetura definida nesta
apresentação
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
38
Conclusão
● Em uma arquitetura bem definida, os interesses
estão bem separados e modularizados.
● Reduz o acoplamento do software
● Facilita a manutenibilidade
● Não impede que códigos indevidos sejam
inseridos em pontos não adequados
● Aumenta a semântica no relacionamento entre
os requisitos e o código
● Fornece uma base para as outras fases de
desenvolvimento do software
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
39
Bibliografia
● Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns:
Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da América:
Addison-Wesley, 1995. ISBN 0-201-63361-2
● Larman, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto
orientados a objetos. Porto Algre: Bookman, 2000.
● [Brooks 1987] Brooks Jr, Frederic P. No Silver Bullet: Essence and Accidents of
Software Engineering. Computer. Volume 20, Issue 4. p 10-19. 1987.
● [Fowler 2003] Fowler, Martin. Who Needs an Architect? IEEE Software. Volume 20,
Issue 5. p. 11-13. 2003.
● [SBCARS] Simpósio Brasileiro de Componentes, Arquitetura e Reuso de Software.
Disponível em: <http://wiki.dcc.ufba.br/CBSOFT/SBCARS2010>. Acesso: 01 Nov
2010.
● [IEEE 610] IEEE Std 610.12-1990, IEEE standard glossary of software engineering
terminology. IEEE. 1990.
● [Gamma 1995] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design
Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da
América: Addison-Wesley, 1995. ISBN 0-201-63361-2.
● [Fowler 2006] Martin Fowler. Padrões de Arquitetura de Aplicações Corporativas.
Editora Bookman, 2006. ISBN 8536306386, 9788536306384. 493 páginas.
Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br
40
Bibliografia
● BASS, LEN; CLEMENTS, PAUL; & KAZMAN, RICK. Software Architecture in
Practice, Second Edition. Boston, MA: Addison-Wesley, 2003.
● Doug Lea. Christopher Alexander:An Introduction for Object-Oriented Designers (em
Inglês). Página visitada em 18 de Junho de 2008.
● Kent Beck, Ward Cunningham. Using Pattern Languages for Object-Oriented
Programs (em Inglês). Página visitada em 18 de Junho de 2008.
● Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns:
Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos: Addison-
Wesley, 1995. ISBN 0-201-63361-2
● [Wiki 2010-b] WIKIPEDIA. Arquitetura. Disponível em:
<http://pt.wikipedia.org/wiki/Arquitetura>. Acesso: 16 Out 2010.
● [Wiki 2010-c] WIKIPEDIA. MVC. Disponível em: <http://pt.wikipedia.org/wiki/MVC>.
Acesso: 02 Nov 2010.
● [Wiki 2010-d] WIKIPEDIA. Requisito Não-Funcional. Disponível em:
<http://pt.wikipedia.org/wiki/Requisito_n%C3%A3o-funcional>. Acesso: 06 Nov 2010.

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
Nécio de Lima Veras
 
Rational Unified Process(Rup)
Rational Unified Process(Rup)Rational Unified Process(Rup)
Rational Unified Process(Rup)
pawanonline83
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Simplilearn
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
rebekinha
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de Software
Robson Silva Espig
 

Was ist angesagt? (20)

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 Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Rational Unified Process(Rup)
Rational Unified Process(Rup)Rational Unified Process(Rup)
Rational Unified Process(Rup)
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependências
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de Software
 
Testes de contrato
Testes de contratoTestes de contrato
Testes de contrato
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Comparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método ÁgilComparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método Ágil
 
Version control system
Version control systemVersion control system
Version control system
 
Python for-unix-and-linux-system-administration
Python for-unix-and-linux-system-administrationPython for-unix-and-linux-system-administration
Python for-unix-and-linux-system-administration
 

Ähnlich wie Macro Arquitetura de Software

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
eros.viggiano
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slides
horaciosila
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
jamersonlima
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
wilsonguns
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
Frank Coelho
 

Ähnlich wie Macro Arquitetura de Software (20)

Aula1 dia 22 02 2022.pdf
Aula1  dia 22 02 2022.pdfAula1  dia 22 02 2022.pdf
Aula1 dia 22 02 2022.pdf
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptx
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao Sênior
 
ES - 02
ES - 02ES - 02
ES - 02
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Engenharia de Software
Engenharia de SoftwareEngenharia de Software
Engenharia de Software
 
DDD
DDDDDD
DDD
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slides
 
ALM focado em resultados
ALM focado em resultadosALM focado em resultados
ALM focado em resultados
 
Aula 3
Aula 3Aula 3
Aula 3
 
Aula1.pdf
Aula1.pdfAula1.pdf
Aula1.pdf
 
Lecture 1 :: Gestão de Projetos de SW - 4 Ps - Fases da Engenharia de SW
Lecture 1 :: Gestão de Projetos de SW - 4 Ps - Fases da Engenharia de SWLecture 1 :: Gestão de Projetos de SW - 4 Ps - Fases da Engenharia de SW
Lecture 1 :: Gestão de Projetos de SW - 4 Ps - Fases da Engenharia de SW
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Macro Arquitetura de Software

  • 1. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 1 SENAI Departamento Regional do Estado de Goiás MACRO ARQUITETURA DE SOFTWARE COM EXPERIMENTO PRÁTICO EM JAVA Edjalma Queiroz da Silva Julho de 2013
  • 2. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 2 Objetivos Gerais ● Revisar conceitos de Orientação a Objetos ● Revisar conceitos de Padrões de Projeto. ● Apresentar um breve histórico da evolução da arquitetura de software. ● Mostrar a importância que a escolha do padrão arquitetural exerce na construção de software. ● Demonstrar de maneira prática e em forma de experimento, um projeto de software Java que tenha sido aplicado os padrões arquiteturais adotados no mercado de trabalho, habilitando os alunos a definirem e utilizarem os padrões arquiteturais.
  • 3. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 3 Objetivo Específico ● Capacitar o aluno a utilizar os mais variados tipos de padrões de projeto e decidir qual arquitetura é a mais apropriada sob os principais aspectos da macro aquitetura de software.
  • 4. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 4 Conteúdo Programático ● A plataforma Java ● JVM: Java Virtual Machine ● Orientação a Objetos ● Padrões de Projeto ● Frameworks ● Separação de responsabilidade e Inversão de Controle ● Arquitetura ● Decisões arquiteturais ● Integração de sistemas na Web
  • 5. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 5 A Plataforma Java ● Java ● JCP ● Open source e o Java ● Java Virtual Machine
  • 6. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 6 JVM: Java Virtual Machine ● Características ● JIT Compiler: compilação em tempo de execução ● Garbage Collector ● Sytem.gc ● finalizer
  • 7. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 7 Orientação a Objetos ● Orientação à objetos ● Encapsulamento – JavaBeans e getters e setters ● Polimorfismo ● Herança ● Interface ● Acoplamento e Coesão ● Testes de unidade e TDD (Desenvolvimento dirigido por Testes)
  • 8. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 8 Padrões de Projeto ● O que é e para que servem? ● Padrões GoF – Padrões de criação – Padrões estruturais – Padrões comportamentais ● Padrões GRASP
  • 9. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 9 Padrões de Projeto O que é e para que servem? ● O Conceito de padrão de projeto foi criado na década de 70 pelo arquiteto Chistopher Alexander. ● A partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padrões de projeto para a área de ciência da computação. ● Descrevem soluções para problemas recorrentes no Desenvolvimento de Softwares (Orientado a objetos) ● Cada padrão é composto por um Nome, Definição de um problema, a solução, quando aplicar esta solução e suas consequências. ● Visam facilitar a reutilização de soluções de desenho (Engenharia de Software – fase de concepção)
  • 10. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 10 Padrões de Projeto Padrões GoF ● São organizados em famílias de padrões: de criação, estruturais e comportamentais. ● Um padrão “GoF” também é classificado segundo o seu escopo: – de classe ● Relacionado com herança e em tempo de compilação – de objeto. ● Comportamental e em tempo de execução
  • 11. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 11 Padrões de Projeto Padrões GoF Exemplos ● Exemplos: – Criação: Abstract Factory, Builder Factory Method, Prototype, Singleton – Estrutural: Adpter, Bridge, Composite, Decorator, Facade, Flyweigth, Proxy – Comportamentais: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
  • 12. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 12 Padrões de Projeto Padrões GRASP ● Consistem de um conjunto de práticas para atribuição de responsabilidades a classes e objetos ● Alguns padrões GoF implementam soluções correspondentes com padrões GRASP ● Exemplos: Controlador (Controller), Criador (Creator),Indireção (Indirection), Especialista na informação (Information expert), Alta coesão (High Cohesion), Baixo acoplamento (Loose coupling), Polimorfismo (Polymorphism), Variações protegidas (Protected variations), e Invenção pura (Pure fabrication).
  • 13. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 13 Frameworks ● Captura a funcionalidade comum a várias aplicações ● As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema ● Várias definições de frameworks
  • 14. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 14 Separação de responsabilidade e Inversão de Controle ● Gerencie suas dependências através de injeção ● Considere usar um framework de Injeção de Dependências – Spring ● Fábricas e o mito do baixo acoplamento
  • 15. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 15 Arquitetura ● O que é Arquitetura? – Discussão bem abstrata – Trata de princípios bem estabelecidos e práticas mais definidas começam a ser disseminadas. – Consequência de escolhas – Define a estrutura do software, que compreende os componentes com suas propriedades visíveis externamente e os relacionamentos entre eles.
  • 16. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 16 . . . Arquitetura ● O diagrama abaixo representa uma arquitetura de software?
  • 17. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 17 . . . Arquitetura ● Componetes: Cliente, Servidor, Subsistema, etc. ● Conectores: Iteração entre os componentes (WS, API, etc) ● Configuração: Grafo de componentes e conectores ligados, descrevendo uma estrutura arquitetural.
  • 18. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 18 . . . Arquitetura ● Enfatiza a separação de interesses: – Funcionalidade – Interação
  • 19. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 19 . . . Arquitetura ● O diagrama abaixo não representa uma arquitetura de software.
  • 20. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 20 . . . Arquitetura ● Exemplo de Arquitetura
  • 21. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 21 Arquitetura ● Requisitos – São as características que o software construído deve conter. – Funcionais: Dizem respeito às funcionalidades do software. – Não-Funcionais: São inerentes ao negócio – Tratamento de Exceções, Portabilidade, Manutenibilidade, Persistência.
  • 22. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 22 . . . Arquitetura ● Performance – Do ponto de vista da qualidade de software é a dimensão mais mal tratada durante o desenvolvimento de um software. – “Vamos apenas desenvolver o sistema e ver o que pode ser feito quanto a performance”. – “Colacaremos o software em um computador com mais capacidade de processamento”.
  • 23. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 23 . . . Arquitetura ● Escalabilidade e Disponibilidade ● Confiabilidade ● Extensibilidade e manutenabilidade ● Gerenciabilidade
  • 24. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 24 . . . Arquitetura ● Facilita a combinação de abordagens de reuso de software (Ex.: estilos, Pradrões de Projeto) ● Possibilita análise da descrição da arquitetura nas fases iniciais do desenvolvimento (Ex.: propriedades não funcionais ou conformidade com um estilo) ● Facilita a evolução do software ● Permite uma melhor comunicação entre os stakeholders
  • 25. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 25 . . . Arquitetura ● Estilo Arquitetural – Consite de um vocabulário de elementos de projeto e um conjunto de regras de configuração que governam a combinação desses elementos. ● Elementos Arquiteturais (de projeto) – Componentes – Conectores ● Exemplo de regras de configuração – Uma camada pode somente se comunicar com a camada adjacente no estilo Camadas.
  • 26. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 26 . . . Arquitetura ● Cliente-Servidor
  • 27. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 27 . . . Arquitetura ● Arquitetura Pipe - Filter
  • 28. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 28 . . . Arquitetura ● Dividindo em camadas
  • 29. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 29 . . . Arquitetura ● MVC – Model View Controller
  • 30. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 30 . . . Arquitetura ● Arquitetura contemporânea e o Cloud
  • 31. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 31 Decisões arquiteturais ● Desenvolvimento Web MVC ● Domine sua ferramente de mapeamento objeto relacional – JPA ● RMI – É uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java. – É uma das abordagens da plataforma Java para prover as funcionalidades de uma plataforma de objetos distribuídos – Segue arquitetura Cliente-Servidor
  • 32. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 32 . . . Decisões Arquiteturais ● EJB – É um componente da plataforma JEE que roda em um container de um servidor de aplicação. – Seu principal objetivo consiste em fornecer um desenvolvimento rápido e simplificado de aplicações Java, com base em em componentes distribuídos, transacionais, seguros e portáveis.
  • 33. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 33 Integração de sistemas na Web SOA – Service Oriented Architecture – É um estilo de arquitetura de software cujo princípio fundamental prega que as funcionalidades implementadas pelas aplicações devem ser disponibilizadas na forma de serviços. – Frequentemente estes serviços são conectados através de um "barramento de serviços" (enterprise service bus, em inglês) que disponibiliza interfaces, ou contratos, acessíveis através de web services ou outra forma de comunicação entre aplicações. – A arquitetura SOA é baseada nos princípios da computação distribuída e utiliza o paradigma request/reply para estabelecer a comunicação entre os sistemas clientes e os sistemas que implementam os serviços.
  • 34. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 34 Integração de sistemas na Web ● WSDL – WSDL: é uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
  • 35. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 35 Integração de sistemas na Web ● POX: Plain Old XML – Plain Old XML (POX) é um XML básico, algumas vezes mixada com outras especificações como namespaces, Dublin Core, dentre outros.
  • 36. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 36 Integração de sistemas na Web ● REST: arquitetura distribuída baseada em hipermídia – Descrever qualquer interface web simples que utiliza XML e HTTP (ou YAML, JSON, ou texto puro), sem as abstrações adicionais dos protocolos baseados em padrões de trocas de mensagem como o protocolo de serviços web SOAP.
  • 37. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 37 Projeto prático JAVA EE ● Demonstração de maneira prática: – partes da arquitetura definida nesta apresentação
  • 38. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 38 Conclusão ● Em uma arquitetura bem definida, os interesses estão bem separados e modularizados. ● Reduz o acoplamento do software ● Facilita a manutenibilidade ● Não impede que códigos indevidos sejam inseridos em pontos não adequados ● Aumenta a semântica no relacionamento entre os requisitos e o código ● Fornece uma base para as outras fases de desenvolvimento do software
  • 39. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 39 Bibliografia ● Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995. ISBN 0-201-63361-2 ● Larman, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos. Porto Algre: Bookman, 2000. ● [Brooks 1987] Brooks Jr, Frederic P. No Silver Bullet: Essence and Accidents of Software Engineering. Computer. Volume 20, Issue 4. p 10-19. 1987. ● [Fowler 2003] Fowler, Martin. Who Needs an Architect? IEEE Software. Volume 20, Issue 5. p. 11-13. 2003. ● [SBCARS] Simpósio Brasileiro de Componentes, Arquitetura e Reuso de Software. Disponível em: <http://wiki.dcc.ufba.br/CBSOFT/SBCARS2010>. Acesso: 01 Nov 2010. ● [IEEE 610] IEEE Std 610.12-1990, IEEE standard glossary of software engineering terminology. IEEE. 1990. ● [Gamma 1995] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995. ISBN 0-201-63361-2. ● [Fowler 2006] Martin Fowler. Padrões de Arquitetura de Aplicações Corporativas. Editora Bookman, 2006. ISBN 8536306386, 9788536306384. 493 páginas.
  • 40. Edjalma Queiroz da Silva edjalma@ambientinformatica.com.br 40 Bibliografia ● BASS, LEN; CLEMENTS, PAUL; & KAZMAN, RICK. Software Architecture in Practice, Second Edition. Boston, MA: Addison-Wesley, 2003. ● Doug Lea. Christopher Alexander:An Introduction for Object-Oriented Designers (em Inglês). Página visitada em 18 de Junho de 2008. ● Kent Beck, Ward Cunningham. Using Pattern Languages for Object-Oriented Programs (em Inglês). Página visitada em 18 de Junho de 2008. ● Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos: Addison- Wesley, 1995. ISBN 0-201-63361-2 ● [Wiki 2010-b] WIKIPEDIA. Arquitetura. Disponível em: <http://pt.wikipedia.org/wiki/Arquitetura>. Acesso: 16 Out 2010. ● [Wiki 2010-c] WIKIPEDIA. MVC. Disponível em: <http://pt.wikipedia.org/wiki/MVC>. Acesso: 02 Nov 2010. ● [Wiki 2010-d] WIKIPEDIA. Requisito Não-Funcional. Disponível em: <http://pt.wikipedia.org/wiki/Requisito_n%C3%A3o-funcional>. Acesso: 06 Nov 2010.