A importância da arquitetura de software

Preview:

Citation preview

A  importância  da    Arquitetura  de  So2ware  

CEFET-­‐MG,  Março  de  2013    

Adriano  de  Pinho  Tavares  adriano.tavares@gmail.com  h3p://adrianotavares.com  

 

hEp://pangeanet.org  

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  

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

Toda  solução  tem  uma  arquitetura  

Toda  solução  tem  um  arquiteto  

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

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

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  

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.”  

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.”  

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  

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  

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  

O  PAPEL  DO  ARQUITETO  DE  SOFTWARE  

Deveres,  habilidades  e  conhecimento.  

Porque  todo  mundo  quer  ser  arquiteto?  

Arquiteto  de  So2ware  

Habilidades  

Conhecimento  

Deveres  

O  Papel  do  Arquiteto  de  So2ware  

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    

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  

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."  

ACDM  

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

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

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  

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

PADRÕES  PARA  ARQUITETURAS  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.”  

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

SOA  Reference  Architecture  

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

 

Camadas  SOA  

Padrões  para  Arquitetura  de    Aplicações  CorporaOvas  

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

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    

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).    

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  

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  

EXEMPLO  DIDÁTICO  

Meta  de  negócio  

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

vendas  pela  Web.  

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).  

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.  

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).  

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.  

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.  

CONCLUSÃO  

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.  

ParOcipe  da  rede  Pangea  hEp://pangeanet.org  

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

Recommended