SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
1	
  
Arquitetura	
  de	
  So-ware	
  
Prof.	
  Adailton	
  Magalhães	
  Lima	
  
2014.4	
  
2	
  
Agenda	
  
Ø  Introdução	
  
Ø  Arquitetura	
  &	
  Projeto	
  de	
  SoAware	
  
Ø  Padrões	
  de	
  Projeto	
  
3	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Em	
  Arquitetura	
  
4	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Em	
  Arquitetura	
  
5	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Em	
  Arquitetura	
  
6	
  
Em	
  So-ware	
  
Ø  Dê	
  um	
  exemplo	
  de	
  soAware	
  “pequeno”;	
  
Ø  Dê	
  um	
  exemplo	
  de	
  soAware	
  “grande”;	
  
Ø  Qual	
  o	
  limite	
  de	
  um	
  soAware?	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
7	
  
Arquitetura	
  de	
  So-ware	
  
Introdução	
  e	
  Visão	
  Geral	
  
8	
  
Introdução	
  
Ø  Expressões	
   que	
   indicam	
   a	
   adoção	
   de	
   um	
  
modelo	
  arquitetural:	
  
§  Sistemas	
  de	
  3	
  Camadas...	
  
§  Uso	
  do	
  Padrão	
  de	
  Projeto	
  X...	
  
§  ...Padrão	
  Fachada...	
  
§  Uso	
   da	
   Arquitetura	
   MVC	
   (Modelo-­‐Visão-­‐
Controlador)	
  
§  Projeto	
  na	
  Nuvem...	
  
§  ....	
  
9	
  
Arquitetura:	
  o	
  que	
  aprender	
  da	
  
construção	
  civil?	
  
10	
  
Arquitetura:	
  o	
  que	
  aprender	
  da	
  
construção	
  civil?	
  
11	
  
Arquitetura:	
  o	
  que	
  aprender	
  da	
  
construção	
  civil?	
  
12	
  
Arquitetura	
  de	
  So-ware	
  
Amostra	
  
Enactment
GenericDataSource ContractManagement
DiscoverDataLocation SystemInformationManagement
DataChannel MessagesChannel DiscoveryChannel DataExchangeFormat
NotificationInterface
Jxta Channels IMPL (Socket, RMI, WebServices, ....)
ARQUITETURA EM CAMADAS DA EXECUCAO DISTRIBUIDA NO SISTEMA P2Process
O nivel de abstracao cresce de baixo para cima.
No nivel inferior encontram-se os componentes que utilizam diretamente a API JXTA.
No nivel superior esta a interface de execucao de modelos de processos do sistema.
OBS: Dentro de cada pacote há uma descrição breve da funcionalidade de cada camada e componente.
A
B
C
D
E
13	
  
Arquitetura	
  de	
  So-ware	
  
Amostra	
  
14	
  
Arquitetura	
  de	
  So-ware	
  
Amostra	
  
under
definition
defined
valid
finished
manager started contract defini...
manager finished contract definition / generate contract validation...
contract defined and isValid()==...
not valid
contract defined and isValid()==f...
supplier defines that all activitities are concl...
isValid()==false, becaus e condition has changed to f...
isValid()==true, because condition has changed to ...
supplier defines that all activitities are concl...
15	
  
O	
  que	
  é	
  Arquitetura	
  de	
  So-ware?	
  
Ø  A	
  arquitetura	
  de	
  soAware	
  de	
  um	
  programa	
  ou	
  
sistema	
  computacional	
  é:	
  
§  a	
  estrutura	
  ou	
  estruturas	
  do	
  sistema	
  que	
  
§  abrange	
  os	
  componentes	
  de	
  soAware,	
  
§  as	
   propriedades	
   externamente	
   visíveis	
   destes	
  
componentes	
  	
  
§  e	
  as	
  relações	
  entre	
  eles	
  
Bass et al apud Pressman
16	
  
O	
  que	
  é	
  Arquitetura	
  de	
  So-ware?	
  
Ø  Define-­‐se	
   Arquitetura	
   de	
   SoAware	
   como	
   a	
   organização	
   fundamental	
  
de	
  um	
  sistema	
  na	
  forma	
  de	
  componentes,	
  seus	
  relacionamentos	
  com	
  
o	
  ambiente,	
  e	
  os	
  princípios	
  que	
  conduzem	
  seu	
  design	
  e	
  evolução.	
  Um	
  
projeto	
   arquitetural	
   envolve	
   a	
   descrição	
   formal	
   dos	
   elementos	
   dos	
  
quais	
  um	
  sistema	
  é	
  construído,	
  das	
  interações	
  entre	
  estes	
  elementos,	
  
dos	
  padrões	
  que	
  guiam	
  sua	
  composição,	
  e	
  das	
  restrições	
  sobre	
  esses	
  
padrões. 	
  	
  	
  
Ø  A	
   descrição	
   arquitetural	
   envolve	
   um	
   conjunto	
   de	
   produtos	
   que	
  
documentam	
  a	
  arquitetura.	
  Para	
  o	
  melhor	
  entendimento	
  do	
  sistema	
  
inteiro,	
   ou	
   parte	
   dele,	
   é	
   necessário	
   que	
   esta	
   descrição	
   seja	
  
representada	
   segundo	
   diferentes	
   perspechvas.	
   Cada	
   perspechva	
  
possui	
   o	
   objehvo	
   de	
   representar	
   um	
   conjunto	
   de	
   interesses	
  
parhculares	
   a	
   uma	
   das	
   partes	
   do	
   sistema.	
   Assim,	
   a	
   parhr	
   da	
  
combinação	
   de	
   várias	
   perspechvas	
   o	
   sistema	
   inteiro	
   pode	
   ser	
  
representado	
  em	
  maiores	
  detalhes.	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
17	
  
O	
  que	
  é	
  Arquitetura	
  de	
  So-ware?	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
18	
  
Por	
  que	
  Arquitetura	
  de	
  So-ware?	
  
Ø  A	
   arquitetura	
   não	
   é	
   um	
   so-ware	
   operacional	
  
(executável).	
   Porém,	
   permite	
   a	
   um	
   Engenheiro	
   de	
  
SoAware:	
  
§  Analisar	
  a	
  adequação	
  de	
  um	
  projeto	
  no	
  atendimento	
  dos	
  
requisitos	
  estabelecidos;	
  
§  Considerar	
   alternaKvas	
   arquiteturais	
   em	
   um	
   estágio	
   em	
  
que	
  as	
  mudanças	
  do	
  projeto	
  ainda	
  são	
  fáceis	
  e	
  baratas;	
  
§  Reduzir	
   os	
   riscos	
   associados	
   com	
   a	
   construção	
   de	
  
soAware;	
  
19	
  
Por	
  que	
  Arquitetura	
  de	
  So-ware?	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
20	
  
Por	
  que	
  Arquitetura	
  de	
  So-ware?	
  
Ø  Facilitador	
  da	
  comunicação	
  entre	
  os	
  envolvidos	
  com	
  
um	
  sistema;	
  
Ø  Destaca	
  decisões	
  iniciais	
  de	
  projeto	
  que	
  vão	
  ter	
  um	
  
impacto	
  profundo	
  em	
  todo	
  o	
  trabalho	
  de	
  se	
  segue;	
  
Ø  Modelo	
   relahvamente	
   pequeno,	
   intelectualmente	
  
inteligível	
  de	
  como	
  o	
  sistema	
  é	
  estruturado	
  e	
  como	
  
seus	
  componentes	
  trabalham	
  em	
  conjunto;	
  
Engenharia	
  de	
  SoAwre	
  II	
  
21	
  
Como	
  começar?	
  
Especi"
ficação!
Protótipo!
Projeto!
modelagem!
Engenharia	
  de	
  SoAware	
  II	
  
22	
  
Princípios	
  de	
  Projeto	
  (1)	
  
1.  O	
  projeto	
  não	
  pode	
  ser	
  “bitolado”	
  
§  Um	
  bom	
  projehsta	
  deve	
  considerar	
  abordagens	
  alternaKvas,	
  julgando	
  cada	
  uma	
  com	
  base	
  
nos	
  requisitos	
  do	
  projeto	
  	
  	
  	
  
2.  O	
  projeto	
  deve	
  ser	
  relacionável	
  ao	
  modelo	
  de	
  análise	
  
§  Como	
   um	
   único	
   elemento	
   do	
   projeto	
   pode	
   estar	
   relacionado	
   com	
   vários	
   requisitos,	
   é	
  
necessários	
  ter	
  recursos	
  para	
  estabelecer	
  como	
  os	
  requisitos	
  são	
  saKsfeitos	
  pelo	
  projeto	
  
3.  O	
  projeto	
  não	
  deve	
  reinventar	
  a	
  roda	
  
§  Sistemas	
  são	
  construídos	
  usando	
  um	
  conjunto	
  de	
  padrões	
  de	
  projeto,	
  muitos	
  dos	
  quais	
  estão	
  
descritos	
  amplamente	
  na	
  literatura.	
  Os	
  padrões	
  de	
  componentes	
  COTS	
  devem	
  ser	
  escolhidos	
  
como	
  alternahva	
  à	
  reinvenção	
  (reuso	
  de	
  conhecimento)	
  
4.  O	
   projeto	
   deve	
   “minimizar	
   a	
   distância	
   intelectual”	
   entre	
   o	
   so-ware	
   e	
   o	
  
problema,	
  tal	
  como	
  existe	
  no	
  mundo	
  real	
  
§  O	
  soAware,	
  sempre	
  que	
  possível,	
  deve	
  imitar	
  a	
  estrutura	
  do	
  domínio	
  do	
  problema	
  
5.  O	
  projeto	
  deve	
  exibir	
  uniformidade	
  e	
  integração	
  
§  Um	
  projeto	
  é	
  uniforme	
  se	
  parece	
  que	
  uma	
  única	
  pessoa	
  desenvolveu	
  a	
  coisa	
  toda.	
  Regras	
  de	
  
esKlo	
  e	
  formato	
  devem	
  ser	
  definidas	
  para	
  uma	
  equipe	
  de	
  projeto	
  antes	
  que	
  o	
  trabalho	
  inicie.	
  
§  Um	
   projeto	
   é	
   integrado	
   se	
   houver	
   cuidado	
   na	
   definição	
   de	
   interfaces	
   entre	
   os	
   seus	
  
componentes	
  
23	
  
Princípios	
  de	
  Projeto	
  (2)	
  
6.	
   	
  O	
  projeto	
  deve	
  ser	
  estruturado	
  para	
  acomodar	
  modificação	
  
7.	
   	
   O	
   projeto	
   deve	
   ser	
   estruturado	
   para	
   degradar	
   suavemente,	
   mesmo	
  
quando	
   dados,	
   eventos	
   ou	
   condições	
   de	
   operações	
   aberrantes	
   são	
  
encontradas	
  
8.	
   	
  Projeto	
  não	
  é	
  codificação.	
  Codificação	
  não	
  é	
  projeto	
  
§  Mesmo	
   quando	
   os	
   mais	
   detalhados	
   projetos	
   procedimentais	
   são	
   criados	
  
para	
  os	
  componentes	
  de	
  programa,	
  o	
  nível	
  de	
  abstração	
  de	
  projeto	
  é	
  maior	
  
que	
  o	
  do	
  código-­‐fonte;	
  
9.	
  O	
  projeto	
  deve	
  ser	
  avaliado	
  quanto	
  à	
  qualidade,	
  à	
  medida	
  que	
  é	
  criado,	
  
não	
  depois	
  do	
  fato	
  
§  Uma	
   variedade	
   de	
   conceitos	
   e	
   medidas	
   de	
   projeto	
   está	
   disponível	
   para	
  
auxiliar	
  o	
  projehsta	
  na	
  avaliação	
  de	
  qualidade;	
  
10.	
  O	
  projeto	
  deve	
  ser	
  revisto	
  para	
  minimizar	
  erros	
  conceituais	
  (semânKcos)	
  
§  A	
  equipe	
  de	
  projeto	
  deve	
  garanhr	
  que	
  os	
  principais	
  elementos	
  conceituais	
  
(omissões,	
  ambigüidade	
  e	
  inconsistência)	
  tenham	
  sido	
  cuidados	
  antes	
  de	
  
se	
  preocupar	
  com	
  a	
  sintaxe	
  do	
  modelo;	
  
24	
  
Princípios	
  de	
  Projeto	
  (3)	
  
Ø  11.	
   Deve	
   considerar	
   de	
   maneira	
   detalhada	
   o	
  
atendimento	
  aos	
  requisitos	
  não-­‐funcionais	
  
§  Segurança	
  
§  Escala	
  
§  Tempo	
  de	
  resposta	
  
§  Plataforma	
  operacional	
  
§  Disponibilidade:	
  24	
  x	
  7	
  
§  ...	
  
25	
  
Níveis	
  de	
  abstração	
  de	
  um	
  problema	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
26	
  
Exemplo:	
  Evolução	
  da	
  Arquitetura	
  de	
  
uma	
  Nave	
  Espacial	
  
Caso	
  Millenium	
  Falcon	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
27	
  
Idade	
  do	
  Arquiteto:	
  3	
  
Nível	
  de	
  Experiência:	
  nenhuma	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
28	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Idade	
  do	
  Arquiteto:	
  13	
  
Nível	
  de	
  Experiência:	
  estudante	
  entediado	
  
29	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Idade	
  do	
  Arquiteto:	
  19	
  
Nível	
  de	
  Experiência:	
  calouro	
  em	
  design	
  
30	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Idade	
  do	
  Arquiteto:	
  23	
  
Nível	
  de	
  Experiência:	
  trainee	
  de	
  design	
  na	
  Lucas	
  Arts	
  
31	
  Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  
Idade	
  do	
  Arquiteto:	
  29	
  
Nível	
  de	
  Experiência:	
  Designer	
  Gráfico	
  na	
  Lucas	
  Arts	
  
32	
  
Perguntas	
  
Ø  Qual	
  o	
  próximo	
  nível	
  de	
  abstração?	
  
Ø  Que	
   itens	
   não	
   foram	
   considerados	
   na	
  
abstração	
  adotada?	
  
Ø  A	
  nave	
  é	
  um	
  “so-ware	
  operacional”	
  ?	
  
Arquitetura	
  de	
  SoAware	
  (baseado	
  nos	
  slides	
  do	
  profr	
  Rodrigo	
  Quites)	
  

Más contenido relacionado

La actualidad más candente

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
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
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
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software PressmanSimoneinfo
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de softwareAlex Camargo
 
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
 
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
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasDiego Marek
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de SistemasGuilherme
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
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
 

La actualidad más candente (20)

Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de 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
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
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
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software Pressman
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
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
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
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
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemas
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia 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
 

Destacado

Arquitetura e design de software
Arquitetura e design de softwareArquitetura e design de software
Arquitetura e design de softwareVitor Castro
 
Introdução à Arquitetura de Software
Introdução à Arquitetura de SoftwareIntrodução à Arquitetura de Software
Introdução à Arquitetura de SoftwareRodrigo Veiga
 
Startup weekend belém - 2014 preliminar
Startup weekend   belém - 2014 preliminarStartup weekend   belém - 2014 preliminar
Startup weekend belém - 2014 preliminarUFPA
 
Introducao a projetos de desenvolvimento distribuído de software
Introducao a projetos de desenvolvimento distribuído de softwareIntroducao a projetos de desenvolvimento distribuído de software
Introducao a projetos de desenvolvimento distribuído de softwareUFPA
 
Zimya | Design Thinking 2ª Edição | aula 2
Zimya | Design Thinking 2ª Edição | aula 2Zimya | Design Thinking 2ª Edição | aula 2
Zimya | Design Thinking 2ª Edição | aula 2Carolina Poll
 
WebAPSEE-PRO
WebAPSEE-PROWebAPSEE-PRO
WebAPSEE-PROUFPA
 
Oficina de Criacao e Validacao de Ideias
Oficina de Criacao e Validacao de IdeiasOficina de Criacao e Validacao de Ideias
Oficina de Criacao e Validacao de IdeiasUFPA
 
Zimya | Design thinking | aula 2
Zimya | Design thinking | aula 2Zimya | Design thinking | aula 2
Zimya | Design thinking | aula 2Carolina Poll
 
Telma Teixeira-OEI-escolas-bilingues
Telma Teixeira-OEI-escolas-bilinguesTelma Teixeira-OEI-escolas-bilingues
Telma Teixeira-OEI-escolas-bilinguesEventos COPESBRA
 
Inovação com Design Thinking
Inovação com Design ThinkingInovação com Design Thinking
Inovação com Design ThinkingUFPA
 
Design Thinking - Prototipação
Design Thinking  - PrototipaçãoDesign Thinking  - Prototipação
Design Thinking - PrototipaçãoUFPA
 
Fase de Imersão com Design Thinking
Fase de Imersão com Design ThinkingFase de Imersão com Design Thinking
Fase de Imersão com Design ThinkingUFPA
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software 	Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software UFPA
 
Design Thinking -Análise e Síntese
Design Thinking -Análise e SínteseDesign Thinking -Análise e Síntese
Design Thinking -Análise e SínteseUFPA
 
Inovação com Software usando a metodologia Lean Startups
Inovação com Software usando a metodologia Lean StartupsInovação com Software usando a metodologia Lean Startups
Inovação com Software usando a metodologia Lean StartupsUFPA
 
Zimya | Design Simples e Diferente
Zimya | Design Simples e DiferenteZimya | Design Simples e Diferente
Zimya | Design Simples e DiferenteCarolina Poll
 

Destacado (20)

Arquitetura e design de software
Arquitetura e design de softwareArquitetura e design de software
Arquitetura e design de software
 
Introdução à Arquitetura de Software
Introdução à Arquitetura de SoftwareIntrodução à Arquitetura de Software
Introdução à Arquitetura de Software
 
Conselho de arquitetura e urbanismo
Conselho de arquitetura e urbanismoConselho de arquitetura e urbanismo
Conselho de arquitetura e urbanismo
 
Startup weekend belém - 2014 preliminar
Startup weekend   belém - 2014 preliminarStartup weekend   belém - 2014 preliminar
Startup weekend belém - 2014 preliminar
 
Introducao a projetos de desenvolvimento distribuído de software
Introducao a projetos de desenvolvimento distribuído de softwareIntroducao a projetos de desenvolvimento distribuído de software
Introducao a projetos de desenvolvimento distribuído de software
 
Design thinking
Design thinkingDesign thinking
Design thinking
 
Zimya | Design Thinking 2ª Edição | aula 2
Zimya | Design Thinking 2ª Edição | aula 2Zimya | Design Thinking 2ª Edição | aula 2
Zimya | Design Thinking 2ª Edição | aula 2
 
WebAPSEE-PRO
WebAPSEE-PROWebAPSEE-PRO
WebAPSEE-PRO
 
Oficina de Criacao e Validacao de Ideias
Oficina de Criacao e Validacao de IdeiasOficina de Criacao e Validacao de Ideias
Oficina de Criacao e Validacao de Ideias
 
Zimya | Design thinking | aula 2
Zimya | Design thinking | aula 2Zimya | Design thinking | aula 2
Zimya | Design thinking | aula 2
 
Telma Teixeira-OEI-escolas-bilingues
Telma Teixeira-OEI-escolas-bilinguesTelma Teixeira-OEI-escolas-bilingues
Telma Teixeira-OEI-escolas-bilingues
 
Inovação com Design Thinking
Inovação com Design ThinkingInovação com Design Thinking
Inovação com Design Thinking
 
Design Thinking - Prototipação
Design Thinking  - PrototipaçãoDesign Thinking  - Prototipação
Design Thinking - Prototipação
 
Fase de Imersão com Design Thinking
Fase de Imersão com Design ThinkingFase de Imersão com Design Thinking
Fase de Imersão com Design Thinking
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software 	Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software
 
Design Thinking -Análise e Síntese
Design Thinking -Análise e SínteseDesign Thinking -Análise e Síntese
Design Thinking -Análise e Síntese
 
Inovação com Software usando a metodologia Lean Startups
Inovação com Software usando a metodologia Lean StartupsInovação com Software usando a metodologia Lean Startups
Inovação com Software usando a metodologia Lean Startups
 
Zimya | Design Simples e Diferente
Zimya | Design Simples e DiferenteZimya | Design Simples e Diferente
Zimya | Design Simples e Diferente
 
Conceito Design Thinking
Conceito Design ThinkingConceito Design Thinking
Conceito Design Thinking
 

Similar a Introducao a Arquitetura de Software

Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHHugo Ferreira
 
Trabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasTrabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasWANDERSON JONER
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelAlan Braz
 
Resumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaResumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaLucasBastos305659
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareJairo Junior
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET ReflectorNuno Gomes
 
A agência Nuve e o processo de projetos
A agência Nuve e o processo de projetosA agência Nuve e o processo de projetos
A agência Nuve e o processo de projetosAgência Nuve
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Introducao a Clean Architecture
Introducao a Clean ArchitectureIntroducao a Clean Architecture
Introducao a Clean ArchitectureRafael Capuano
 
Apresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasApresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasVictor Aldir
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docxJulioCesar371362
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseGlobalcode
 
Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Alessandro Almeida
 

Similar a Introducao a Arquitetura de Software (20)

Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BH
 
Trabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasTrabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de Sistemas
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiável
 
Resumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaResumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software Moderna
 
Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Macro Arquitetura de Software
Macro Arquitetura de SoftwareMacro Arquitetura de Software
Macro Arquitetura de Software
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 
A agência Nuve e o processo de projetos
A agência Nuve e o processo de projetosA agência Nuve e o processo de projetos
A agência Nuve e o processo de projetos
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Introducao a Clean Architecture
Introducao a Clean ArchitectureIntroducao a Clean Architecture
Introducao a Clean Architecture
 
Apresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasApresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadas
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
 
Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6
 

Introducao a Arquitetura de Software

  • 1. 1   Arquitetura  de  So-ware   Prof.  Adailton  Magalhães  Lima   2014.4  
  • 2. 2   Agenda   Ø  Introdução   Ø  Arquitetura  &  Projeto  de  SoAware   Ø  Padrões  de  Projeto  
  • 3. 3  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Em  Arquitetura  
  • 4. 4  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Em  Arquitetura  
  • 5. 5  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Em  Arquitetura  
  • 6. 6   Em  So-ware   Ø  Dê  um  exemplo  de  soAware  “pequeno”;   Ø  Dê  um  exemplo  de  soAware  “grande”;   Ø  Qual  o  limite  de  um  soAware?   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 7. 7   Arquitetura  de  So-ware   Introdução  e  Visão  Geral  
  • 8. 8   Introdução   Ø  Expressões   que   indicam   a   adoção   de   um   modelo  arquitetural:   §  Sistemas  de  3  Camadas...   §  Uso  do  Padrão  de  Projeto  X...   §  ...Padrão  Fachada...   §  Uso   da   Arquitetura   MVC   (Modelo-­‐Visão-­‐ Controlador)   §  Projeto  na  Nuvem...   §  ....  
  • 9. 9   Arquitetura:  o  que  aprender  da   construção  civil?  
  • 10. 10   Arquitetura:  o  que  aprender  da   construção  civil?  
  • 11. 11   Arquitetura:  o  que  aprender  da   construção  civil?  
  • 12. 12   Arquitetura  de  So-ware   Amostra   Enactment GenericDataSource ContractManagement DiscoverDataLocation SystemInformationManagement DataChannel MessagesChannel DiscoveryChannel DataExchangeFormat NotificationInterface Jxta Channels IMPL (Socket, RMI, WebServices, ....) ARQUITETURA EM CAMADAS DA EXECUCAO DISTRIBUIDA NO SISTEMA P2Process O nivel de abstracao cresce de baixo para cima. No nivel inferior encontram-se os componentes que utilizam diretamente a API JXTA. No nivel superior esta a interface de execucao de modelos de processos do sistema. OBS: Dentro de cada pacote há uma descrição breve da funcionalidade de cada camada e componente. A B C D E
  • 13. 13   Arquitetura  de  So-ware   Amostra  
  • 14. 14   Arquitetura  de  So-ware   Amostra   under definition defined valid finished manager started contract defini... manager finished contract definition / generate contract validation... contract defined and isValid()==... not valid contract defined and isValid()==f... supplier defines that all activitities are concl... isValid()==false, becaus e condition has changed to f... isValid()==true, because condition has changed to ... supplier defines that all activitities are concl...
  • 15. 15   O  que  é  Arquitetura  de  So-ware?   Ø  A  arquitetura  de  soAware  de  um  programa  ou   sistema  computacional  é:   §  a  estrutura  ou  estruturas  do  sistema  que   §  abrange  os  componentes  de  soAware,   §  as   propriedades   externamente   visíveis   destes   componentes     §  e  as  relações  entre  eles   Bass et al apud Pressman
  • 16. 16   O  que  é  Arquitetura  de  So-ware?   Ø  Define-­‐se   Arquitetura   de   SoAware   como   a   organização   fundamental   de  um  sistema  na  forma  de  componentes,  seus  relacionamentos  com   o  ambiente,  e  os  princípios  que  conduzem  seu  design  e  evolução.  Um   projeto   arquitetural   envolve   a   descrição   formal   dos   elementos   dos   quais  um  sistema  é  construído,  das  interações  entre  estes  elementos,   dos  padrões  que  guiam  sua  composição,  e  das  restrições  sobre  esses   padrões.       Ø  A   descrição   arquitetural   envolve   um   conjunto   de   produtos   que   documentam  a  arquitetura.  Para  o  melhor  entendimento  do  sistema   inteiro,   ou   parte   dele,   é   necessário   que   esta   descrição   seja   representada   segundo   diferentes   perspechvas.   Cada   perspechva   possui   o   objehvo   de   representar   um   conjunto   de   interesses   parhculares   a   uma   das   partes   do   sistema.   Assim,   a   parhr   da   combinação   de   várias   perspechvas   o   sistema   inteiro   pode   ser   representado  em  maiores  detalhes.   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 17. 17   O  que  é  Arquitetura  de  So-ware?   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 18. 18   Por  que  Arquitetura  de  So-ware?   Ø  A   arquitetura   não   é   um   so-ware   operacional   (executável).   Porém,   permite   a   um   Engenheiro   de   SoAware:   §  Analisar  a  adequação  de  um  projeto  no  atendimento  dos   requisitos  estabelecidos;   §  Considerar   alternaKvas   arquiteturais   em   um   estágio   em   que  as  mudanças  do  projeto  ainda  são  fáceis  e  baratas;   §  Reduzir   os   riscos   associados   com   a   construção   de   soAware;  
  • 19. 19   Por  que  Arquitetura  de  So-ware?   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 20. 20   Por  que  Arquitetura  de  So-ware?   Ø  Facilitador  da  comunicação  entre  os  envolvidos  com   um  sistema;   Ø  Destaca  decisões  iniciais  de  projeto  que  vão  ter  um   impacto  profundo  em  todo  o  trabalho  de  se  segue;   Ø  Modelo   relahvamente   pequeno,   intelectualmente   inteligível  de  como  o  sistema  é  estruturado  e  como   seus  componentes  trabalham  em  conjunto;   Engenharia  de  SoAwre  II  
  • 21. 21   Como  começar?   Especi" ficação! Protótipo! Projeto! modelagem! Engenharia  de  SoAware  II  
  • 22. 22   Princípios  de  Projeto  (1)   1.  O  projeto  não  pode  ser  “bitolado”   §  Um  bom  projehsta  deve  considerar  abordagens  alternaKvas,  julgando  cada  uma  com  base   nos  requisitos  do  projeto         2.  O  projeto  deve  ser  relacionável  ao  modelo  de  análise   §  Como   um   único   elemento   do   projeto   pode   estar   relacionado   com   vários   requisitos,   é   necessários  ter  recursos  para  estabelecer  como  os  requisitos  são  saKsfeitos  pelo  projeto   3.  O  projeto  não  deve  reinventar  a  roda   §  Sistemas  são  construídos  usando  um  conjunto  de  padrões  de  projeto,  muitos  dos  quais  estão   descritos  amplamente  na  literatura.  Os  padrões  de  componentes  COTS  devem  ser  escolhidos   como  alternahva  à  reinvenção  (reuso  de  conhecimento)   4.  O   projeto   deve   “minimizar   a   distância   intelectual”   entre   o   so-ware   e   o   problema,  tal  como  existe  no  mundo  real   §  O  soAware,  sempre  que  possível,  deve  imitar  a  estrutura  do  domínio  do  problema   5.  O  projeto  deve  exibir  uniformidade  e  integração   §  Um  projeto  é  uniforme  se  parece  que  uma  única  pessoa  desenvolveu  a  coisa  toda.  Regras  de   esKlo  e  formato  devem  ser  definidas  para  uma  equipe  de  projeto  antes  que  o  trabalho  inicie.   §  Um   projeto   é   integrado   se   houver   cuidado   na   definição   de   interfaces   entre   os   seus   componentes  
  • 23. 23   Princípios  de  Projeto  (2)   6.    O  projeto  deve  ser  estruturado  para  acomodar  modificação   7.     O   projeto   deve   ser   estruturado   para   degradar   suavemente,   mesmo   quando   dados,   eventos   ou   condições   de   operações   aberrantes   são   encontradas   8.    Projeto  não  é  codificação.  Codificação  não  é  projeto   §  Mesmo   quando   os   mais   detalhados   projetos   procedimentais   são   criados   para  os  componentes  de  programa,  o  nível  de  abstração  de  projeto  é  maior   que  o  do  código-­‐fonte;   9.  O  projeto  deve  ser  avaliado  quanto  à  qualidade,  à  medida  que  é  criado,   não  depois  do  fato   §  Uma   variedade   de   conceitos   e   medidas   de   projeto   está   disponível   para   auxiliar  o  projehsta  na  avaliação  de  qualidade;   10.  O  projeto  deve  ser  revisto  para  minimizar  erros  conceituais  (semânKcos)   §  A  equipe  de  projeto  deve  garanhr  que  os  principais  elementos  conceituais   (omissões,  ambigüidade  e  inconsistência)  tenham  sido  cuidados  antes  de   se  preocupar  com  a  sintaxe  do  modelo;  
  • 24. 24   Princípios  de  Projeto  (3)   Ø  11.   Deve   considerar   de   maneira   detalhada   o   atendimento  aos  requisitos  não-­‐funcionais   §  Segurança   §  Escala   §  Tempo  de  resposta   §  Plataforma  operacional   §  Disponibilidade:  24  x  7   §  ...  
  • 25. 25   Níveis  de  abstração  de  um  problema   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 26. 26   Exemplo:  Evolução  da  Arquitetura  de   uma  Nave  Espacial   Caso  Millenium  Falcon   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 27. 27   Idade  do  Arquiteto:  3   Nível  de  Experiência:  nenhuma   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)  
  • 28. 28  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Idade  do  Arquiteto:  13   Nível  de  Experiência:  estudante  entediado  
  • 29. 29  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Idade  do  Arquiteto:  19   Nível  de  Experiência:  calouro  em  design  
  • 30. 30  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Idade  do  Arquiteto:  23   Nível  de  Experiência:  trainee  de  design  na  Lucas  Arts  
  • 31. 31  Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)   Idade  do  Arquiteto:  29   Nível  de  Experiência:  Designer  Gráfico  na  Lucas  Arts  
  • 32. 32   Perguntas   Ø  Qual  o  próximo  nível  de  abstração?   Ø  Que   itens   não   foram   considerados   na   abstração  adotada?   Ø  A  nave  é  um  “so-ware  operacional”  ?   Arquitetura  de  SoAware  (baseado  nos  slides  do  profr  Rodrigo  Quites)