Upload
adriano-tavares
View
6.034
Download
0
Embed Size (px)
Citation preview
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
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.