41
A importância da Arquitetura de So2ware CEFETMG, Março de 2013 Adriano de Pinho Tavares [email protected] h3p://adrianotavares.com hEp://pangeanet.org

A importância da arquitetura de software

Embed Size (px)

Citation preview

Page 1: A importância da arquitetura de software

A  importância  da    Arquitetura  de  So2ware  

CEFET-­‐MG,  Março  de  2013    

Adriano  de  Pinho  Tavares  [email protected]  h3p://adrianotavares.com  

 

hEp://pangeanet.org  

Page 2: A importância da arquitetura de software

Agenda  

A  importância  da  arquitetura  de  so2ware  

O  Papel  do  arquiteto  de  so2ware  

Padrões  para  arquiteturas  de  so2ware  

Exemplo  didáOco  

Conclusões  

Page 3: A importância da arquitetura de software

A  IMPORTÂNCIA  DA  ARQUITETURA  Arquitetura  como  o  elemento  central  no  desenvolvimento  de  so2ware  

Page 4: A importância da arquitetura de software

Toda  solução  tem  uma  arquitetura  

Page 5: A importância da arquitetura de software

Toda  solução  tem  um  arquiteto  

Page 6: A importância da arquitetura de software

A  arquitetura  não  é  apenas  uma  fase  do  desenvolvimento  de  uma  solução  

Quanto  maior  e  mais  complexo,    maior  a  necessidade  de  arquitetar!  

Page 7: A importância da arquitetura de software

Considerações  fundamentais  

1.  Todo  so2ware  tem  uma  arquitetura  

2.  Todo  so2ware  tem  pelo  menos  um  arquiteto  

3.  Arquitetura  não  é  uma  fase  do  processo  de    desenvolvimento  

do  so2ware  

Page 8: A importância da arquitetura de software

Definição  de  Arquitetura  de  So2ware  

“A  arquitetura  de  so2ware  de  um  sistema  é  o  conjunto  das  principais  decisões  

técnicas  de  design  tomadas  a  respeito  do  so2ware.”  

Page 9: A importância da arquitetura de software

Exemplos  de  decisões  técnicas  Tecnologia  • “O  So2ware  deve  ser  desenvolvido  em  Java  EE  com  banco  de  dados  Oracle.”  

Equipe  • “Para  este  projeto  precisaremos  de  um  Ome  com  as  competências  técnicas  ABC.”  

Estrutura  • “Os  elementos  devem  estar  organizados  em  camadas.”  

• “Deve  ser  uOlizado  um  barramento  de  integração."  

Comportamento  • “O  processamento,  armazenamento  e  consulta  devem  ser  feitos  sequencialmente.”  

Interação  • “A  comunicação  com  o    back-­‐end  deve  ser  assíncrona,  usando  noOficações  de  eventos.”  

Qualidade  interna  • “Deve  haver  uma  replicação  de  dados  entre  estes  dois  módulos  para  garanOr  a  independência  entre  eles.”  

Implementação  • “Os  componentes  da  interface  com  o  usuário  devem  ser  implementados  usando  GWT.”  

Page 10: A importância da arquitetura de software

A  experiência  do  arquiteto    influencia  as  decisões  

Necessidades dos envolvidos Questões de gerenciamento do negócio Contratos e legislação Pressão comercial / Competitiva Ambiente técnico Questões políticas Questões de ciclo de vida

Experiência do Arquiteto

Atributos  de  Qualidade  

Requisitos  De  Negócio  

Requisitos  Funcionais  

Arquitetura  

Sistema  

Sistema  

Sistema  

Page 11: A importância da arquitetura de software

Arquitetura  é  o  elemento  central    no  desenvolvimento  de  so2ware  

Metas  de    Negócio  

Condutores  Arquiteturais  

Fornecem    

Envolvidos  

DesOladas  em  

Arquitetura  

Conduzem  a  estrutura  da  Refina  

Refina  

Provas  de  conceito  

(experimentos)  

Desenho  detalhado  

Releases  do  

Produto  

Acompanhamento  e  Supervisão  

Alocação  da  

Equipe  

Plano  de  

Testes  

Plano  de  

Projeto  

Base  para…  

DAS  Descrita  pelo  

Plano  de  Deploy  

Page 12: A importância da arquitetura de software

DAS    (Documento  de  Arquitetura  de  So=ware)  

Metas  Blocos  de  construção  

Preocupações  

Restrições  

Atributos  de  Qualidade  

Condutores  

Requisitos  

Riscos  Provas  de  Conceito  

Visões  

Envolvidos  

Métodos  

Modelagem  e  Documentação  

Padrões  

Mecanismos  

Page 13: A importância da arquitetura de software

O  PAPEL  DO  ARQUITETO  DE  SOFTWARE  

Deveres,  habilidades  e  conhecimento.  

Page 14: A importância da arquitetura de software

Porque  todo  mundo  quer  ser  arquiteto?  

Page 15: A importância da arquitetura de software

Arquiteto  de  So2ware  

Habilidades  

Conhecimento  

Deveres  

O  Papel  do  Arquiteto  de  So2ware  

Page 16: A importância da arquitetura de software

Deveres  

Arquitetar    

Outras  disciplinas    da  Eng.  So2ware  

Interação  com  os  envolvidos  

Gerenciamento    

Habilidades  

Comunicação  

Relacionamento  interpessoal    

Liderança  

Organização    Pessoal  

Conhecimento  

Ciência  da  computação    

Tecnologias  e  plataformas  

Conhecimento  sobre  o  contexto  da  

organização  onde  trabalha    

Page 17: A importância da arquitetura de software

So2-­‐Skills  essenciais  para    Arquitetos  de  So2ware  

•  Negócios  1.  PragmaOsmo  2.  Visão  3.  Conhecimento  de  negócios  4.  Inovação  

•  Pessoais  5.  Mudança  de  contexto  6.  Transparência  7.  Paixão  

•  Relacionamento  8.  Liderança  9.  PolíOcas  10.  Comunicação  11.  Comportamento  12.  Negociação  

•  Técnicos  

Page 18: A importância da arquitetura de software

Arquitetos  precisam  de  métodos  para  fazer  o  seu  trabalho  

“Um  método  centrado  em  arquitetura  é  uma  abordagem  repexvel  para  fazer  a  

ligação  entre  a  arquitetura  e  o  desenvolvimento  iteraOvo."  

Page 19: A importância da arquitetura de software

ACDM  

•  Architec@ng  So=ware  Intensive  Systems:  A  Prac@@oner’s  Guide  

•  Livro  sobre  o  ACDM  -­‐  Architecture  Centric  Development  Method  

Page 20: A importância da arquitetura de software

Método  de  desenvolvimento  centrado  em  arquitetura  

1:  Descobrir  os  condutores  arquiteturais  Requisitos,  restrições  e    atributos  de  qualidade  

5:  Produzir  decisão  

(Go/NoGo)  

2:  Estabelecer  o  escopo  do  projeto  Condutores  arquiteturais  e    planejamento  preliminar  

3:  Descrever  a  arquitetura  Visualizações  Arquiteturais    

4:  Revisar  a  arquitetura  Riscos  e  trade-­‐offs  

Relatório  de  POCs,  Arquitetura  Refinada  e  Planos  atualizados  

7:  Executar  POCs  e  Refinar  Arquitetura  

Plano  de  POCs  

6:  Planejar  POCs  No-­‐Go  

6:  Planejar  Desenvolvimento  

Plano  de  Projeto  e    Plano  de  Teste  

Go  7:  Desenvolver  

Desenho  detalhado  do  produto  

Retorna  ao  estágio  apropriado  e  itera  o  quanto  for    necessário  

hEp://reports-­‐archive.adm.cs.cmu.edu/anon/isri2005/CMU-­‐ISRI-­‐05-­‐103.pdf  

Page 21: A importância da arquitetura de software

O  Trabalho  de  um  arquiteto  não  é  fácil  

Page 22: A importância da arquitetura de software

PADRÕES  PARA  ARQUITETURAS  DE  SOFTWARE  

Page 23: A importância da arquitetura de software

Padrões  para  Arquitetura  de  So2ware  

“Arquitetos  experientes  procuram  aderir  a  princípios  e  promover  boas  práOcas  de  design  usando  padrões  para   documentar   e   reuOlizar   soluções   em   novos  projetos  de  so2ware.”  

Page 24: A importância da arquitetura de software

Padrões  de  desenho  SOA        Catálogo  de  Padrões  para  SOA  http://www.soapatterns.org/      Livros  dobre  SOA  http://www.soabooks.com/    

Page 25: A importância da arquitetura de software

SOA  Reference  Architecture  

   Arquitetura  de  referência  SOA  do    The  Open  Group    http://www.opengroup.org  

 

Page 26: A importância da arquitetura de software

Camadas  SOA  

Page 27: A importância da arquitetura de software

Padrões  para  Arquitetura  de    Aplicações  CorporaOvas  

Catálogo  de  padrões  para  aplicações  corporaOvas    hEp://marOnfowler.com/eaaCatalog/  

Page 28: A importância da arquitetura de software

Camadas  de  Arquitetura  de  Aplicações  CorporaOvas    

Camada  de  Apresentação    

Camada  de  Negócios    

Camada  de  Domínio    

Camada  de  Acesso  a  Dados    

Serviços  de  Sistema    

Page 29: A importância da arquitetura de software

Padrões  para  Arquitetura  de  Aplicações  CorporaOvas  

Padrões  de  Lógica  de  domínio  • Modelo  de  Domínio  (Domain  Model),  o  Camada  de  Serviço  (Service  Layer);  

Padrões  de  Mapeamento  em  Metadados  • Mapeamento  em  metadados  (Metadata  Mapping),  o  Objeto  de  Pesquisa  (Query  Object);  

Padrões  Estruturais  Objeto-­‐Relacionas  • Campo  IdenOdade  (IdenOty  Field),  Mapeamento  de  Chave  Estrangeira  (Foreign  Key  Mapping),  Mapeamento  de  Tabela  AssociaOva  (AssociaOon  Table  Mapping);  

Padrões  Comportamentais  Objeto-­‐Relacionas  • Carga  Tardia  (Lazy  Load);  

Padrões  de  Apresentação  Web  • Modelo  Visão  Controlador  (Model  View  Controller);  

Padrões  de  Distribuição  • Fachada  Remota  (Remote  Facade),  Objeto  de  Transferência  de  dados  (Data  Transfer  Object).    

Page 30: A importância da arquitetura de software

Padrões  para  Integração  de  Aplicações  

•  Catálogo  de  65  padrões  de  integração  baseados  em  mensagens  

•  hEp://eaipaEerns.com/toc.html  

Page 31: A importância da arquitetura de software

Message  Bus  

Qual  arquitetura  permite  separar  aplicações  para  trabar  juntas  mas  de  forma  desacoplada  para  que  aplicações  sejam  facilmente  adicionadas  ou  removidas  sem  afetar  as  outras?  

hEp://www.eaipaEerns.com/MessageBus.html  

Page 32: A importância da arquitetura de software

EXEMPLO  DIDÁTICO  

Page 33: A importância da arquitetura de software

Meta  de  negócio  

A  empresa  ACME  quer  expandir  suas  vendas  e  para  isso  decidiu  abrir  um  novo  canal  de  

vendas  pela  Web.  

Page 34: A importância da arquitetura de software

Desafios  da  arquitetura  

ü Capturar  os  condutores  arquiteturais;  ü Selecionar  as  tecnologias  e  ferramentas;  ü Desenhar  a  arquitetura  da  aplicação;  ü GaranOr  a  qualidade  da  solução;  ü Criar  a  arquitetura  executável  (Codificar).  

Page 35: A importância da arquitetura de software

Condutores  arquiteturais  

ü Usar  uma  loja  virtual  de  mercado;  ü Integrar  o  ERP  da  empresa  à  loja  virtual;  ü UOlizar  tecnologias  Java  open-­‐source;  ü Atributos  de  qualidade  

–  Interoperabilidade;  – Tolerância  a  Falhas;  – Desempenho;  – Escalabilidade.  

Page 36: A importância da arquitetura de software

Proposta  de  plano  arquitetural  preliminar  

ü Selecionar  fornecedor  de  loja  virtual  (POC);  ü Desenhar  a  projeto  arquitetônico  para  solução  de  integração  entre  a  loja  virtual  e  o  ERP;    

ü Definir  as  tecnologias  e  ferramentas;  ü Dimensionar  o  Ome  e  as  competências  técnicas  necessárias  para  o  projeto;  

ü Desenvolver  um  protóOpo  para  validar  a  solução  (POC).  

Page 37: A importância da arquitetura de software

Desenho:  Principal  EsOlo  Arquitetural  

ü Message  Bus  –  O  objeOvo  de  introduzir  um  barramento  de  mensagens  é  estruturar  um  middleware  de  ligação  entre  a  loja  virtual  e  o  ERP  para  permiOr  que  eles  operem  em  conjunto  de  maneira  flexível  uOlizando  mensagens.  

Page 38: A importância da arquitetura de software

Plataforma  Tecnológica    

ü Loja  virtual    – UOlizar  Plataforma  Magento;  

ü Integração  com  ERP    – UOlizar  plataforma  open-­‐source  baseada  em  Java;  – Ferramentas    

•  IDE  -­‐  Eclipse;    •  Message  Bus  -­‐  Apache  Camel  sobre  Apache  AcOveMQ;  •  Banco  de  dados  -­‐  MySQL.  

Page 39: A importância da arquitetura de software

CONCLUSÃO  

Page 40: A importância da arquitetura de software

Conclusões  

•  A  arquitetura  é  a  base  para  a  tomada  de  decisões  técnicas  em  um  projeto  de  software;  

•  A  arquitetura  é  um  aspecto  fundamental  durante  todo  o  ciclo  de  vida  de  um  software;  

•  Um  arquiteto  de  software  deve  se  desenvolver  em  aspectos  técnicos  e  pessoais.  

Page 41: A importância da arquitetura de software

ParOcipe  da  rede  Pangea  hEp://pangeanet.org  

A  primeira  rede  social  sobre  arquitetura  de  so=ware  do  Brasil.