arquiteto de software em projetos jee
TRANSCRIPT
O Arquiteto de Software emProjetos Java EE
Eros Viggiano
MGJUG Tech Meeting – Junho/2009
Contribuições de Marco Mendes
OBJETIVOS
Esta apresentação tem por objetivos descrever:
A utilidade da arquitetura de software
As competências do arquiteto de software
O refinamento de mecanismos arquiteturais
OBJETIVO MAIS QUE SINCERO
Desmitificar arquitetura de sofware.
Não é uma arte oculta!!!
Histórias reais (de fracasso)
Caso 1
• Uma equipe de TI no governo federal descobriu na semana da entrega que o envio de email não funcionava devido a topologia física desconhecida e restrições de segurança.
Caso 2
• Uma grande empresa de Minas descobriu em produção que o tempo médio de resposta dos casos de uso era de 40 segundos – inaceitável!
Caso 3
• Num projeto onde o cliente exigia o estado da arte tecnológico, a falta de alinhamento entre a arquitetura e as restrições do projeto ocasionou seu cancelamento e multas contratuais.
Causas raízes dos fracassos
Caso 1
• Falhou devido à inexperiência na modelagem da arquitetura de software.
Caso 2
• Falhou devido à falta de desenvolvimento dos requisitos da arquitetura de software.
Caso 3
• Falhou devido ao alinhamento inadequado da estratégia da arquitetura de software.
A moda é ser arquiteto
Wally:• “Gostaria de mudar meu cargo para algo com ‘arquiteto’
nele.”• “Meu sonho é trabalhar menos enquanto sou mais
valorizado.”
Contra-exemplo de arquiteto
• Ok, criou Matrix…
• Mas fez tudo sozinho?!
• O arquiteto de software não é um tipo de deus.
• Referência:
Who Needs an Architect?
Por Martin Fowler
“Architectus Reloadus”
E na lista do MGJUG…
• Equívocos comuns:– “Estou com um problema de transação usando a seguinte arquitetura: JSF(RichFaces)+JbossSeam 2 integrado com String 2.5 + JPA/Hibernate.”
– “Minha arquitetura é formada porJSF + Facelets + JBoss RichFaces + JBoss Seam.”
– “Eu uso uma arquitetura bem simples: Bussiness Object , ServiceLocator, Bussiness Delegatee Commands usando Hibernate para Persistencia e Spring para os serviços de RMI.”
• Nada disto é arquitetura!
Também na lista do MGJUG…
• Uma visão lúcida:1. “Primeiro pense no sistema que você quer
desenvolver,
2. descubra os requisitos e deixe eles te guiarem para a escolha da solução,
3. Bom, vamos lá: Pense e rascunhe a sua arquitetura (siga a visão 4 + 1).
4. Modele a arquitetura usando os requisitos do seu sistema;
5. a escolha dos produtos deve ser derivada de uma arquitetura bem projetada.
6. Uma outra dica é: diminua o seu esforço, ou seja use o que você já conheçe, porque não usar JSP??? Se você já conhece JSP e não conhece JSF, em qual das duas você será mais produtivo???”
Quem é o arquiteto de software?
• Não tão simples assim…
• O arquiteto é responsáveltambém por várias atividadesalém do design arquitetural.
Huumm... arquiteto de software é aquele que
desenha a arquitetura do software, certo?
Antes, o que significa ser “arquiteto”?
O que é arquiteto?
– Grécia, 500 a.C.:
• Arkhitekton – construtor mestre
• Arkhi – mestre ou chefe
• Tekton – trabalhador ou construtor
E o que é arquitetura?
O que é arquitetura?
– Le Petit Larousse 2005:
1. Habilidade de conceber e de edificar construçõesdentro de restrições funcionais, estéticas, técnicas e regulamentares.
2. Estrutura, organização.
Para quê arquiteto?
• Toda construção tem uma arquitetura.
• Mesmo que simples e intuitiva!
• Uma oca – residência de uma família indígena
• Construída por alguns índios, em alguns dias e com ferramentas rústicas.
Para quê arquiteto?
• Toda construção tem uma arquitetura.
• Arquiteturas sofisticadas exigem projetos complexos!
• “Oca” do Ibirapuera 10000 m2
• Construída por centenas de pessoas, por vários meses, com técnicas e ferramentas modernas.
O que faz o arquiteto
• Responsável por:
– concepção da arquitetura
– apoio à contrução
O que faz o arquiteto de software
• Responsável por:
– concepção da arquitetura de software
– apoio à contrução de software
O que tipicamente faz o arquiteto de software
25%
25%50%
Fonte: Philippe Kruchten
Arquitetando:-modelagem-prototipação-avaliação-documentação-etc
Obtém informação:-requisitos-estratégias-tecnologias
Fornece informação:-comunica a arquitetura-assiste outros envolvidos
Generalista ou especialista?
Esp
ecia
lista
emap
licaç
ões
mó
veis
Co
nh
ecim
en
toe
mp
rofu
nd
idad
e
Conhecimento em extensão
Esp
ecia
lista
UM
L
Pro
jeti
sta
JEE
Pro
jeti
sta
.NET
Des
envo
lved
or
web
(JSP
& J
SF)
Des
envo
lver
do
rd
eC
om
po
nen
tes
(EJB
)
Ou
tro
ses
pec
ialis
tas
Esp
ecia
lista
emte
stes
não
-fu
nci
on
ais
An
alis
tad
e re
qu
isit
os
Arquiteto
Conhecimentos esperados doarquiteto de software
Processo
• Ciclo de vida da gestão em arquitetura de software.
• Processos de desenvolvimento de software.
Requisitos
• Técnicas para identificar, analisar, especificar e validar requisitos.
• Análise de impacto de mudanças.
• Manutenção dos requisitos (linhas de base e rastreabilidade).
Modelagem
• Representação da arquitetura em modelo abstrato.
• Notações (em especial, UML).
• Consistência entre modelos.
Avaliação
• Métodos de avaliação da arquitetura.
Estratégia
• Formulação de estratégia técnica.
• Tradução da estratégia em ações.
Habilidades esperadas doarquiteto de software
• O arquiteto deve combinar as habilidades:
– Liderança
– Comunicação
– Orientação a objetivos
– Pró-atividade
– Visão
– Negociação
Time de arquitetura
São raros os arquitetos que acumulam todas as competênciasnecessárias.
• Em um time de arquitetura, as competências podem e devem ser complementares.
Projetos grandes requerem mais de um arquiteto.
• O time de arquitetura é capaz de realizar mais trabalho que um único arquiteto.
Algumas empresas não possuem o papel da arquiteto
• Especialistas juntos podem formar um time de arquitetura (solução de contorno).
Influências sobre a arquitetura de software
Arquiteturade
SoftwareNecessidades
Restrições de projeto
Experiência do arquiteto
Experiência do time
Ativos de software
ContextoOrganizacional
O que arquitetura de software não é
• Desenho (design) detalhadodo software.
• Uma lista de tecnologias.
• Modelos e papel.
• Trabalho de um únicoarquiteto.
• Uma ciência.
• Uma arte.
Gestão em Arquitetura de Software
Definição da arquiteturade software
Edificaçãoda
arquiteturade software
Iniciação da arquiteturade software
Análise da arquiteturade software
Gestão da arquiteturade software
Gestão
Ciclo da gestão da arquitetura de software
Projeção dos ciclos de vida
• As atividades do ciclo da gestão da arquitetura de software são um subconjunto de todas as atividades de um projeto de desenvolvimento de software.
INICIAL INTERMEDIÁRIA FINALCiclo de vida
do projetoINICIAL INTERMEDIÁRIA FINAL
Ciclo de vida da gestão da
arquitetura de software
Ciclo da arquitetura no Hello World!
Gestão dos requisitos
arquiteturais
Modelagem arquitetural
Edificaçãoda
arquitetura
Avaliação da arquitetura
Planejamento da definição arquitetural
Estratégia arquitetural
Aprendizado
Hello World! – Arquitetura de Software
• Nosso exemplo:
– Sistema para a rede de hotéis Hello World
Ciclo da arquitetura no Hello World!
Gestão dos requisitos
arquiteturais
Modelagem arquitetural
Edificaçãoda
arquitetura
Avaliação da arquitetura
Planejamento da definição arquitetural
Estratégia arquitetural
Aprendizado
Hello World! – Estratégia Arquitetural
Sistema Hotel ACME
Sistema integrado segurança
Operadoras de cartão de
crédito
ERPBase de dados corporativa
Visualização de negócio:
Clientes, hóspedese funcionários.
Iniciação da arquiteturade software
Hello World! – Estratégia Arquitetural
Visão arquitetural
– Suportar o crescimento da rede de hotéis e a automação dos principais processos de negócio.
Iniciação da arquiteturade software
Hello World! – Estratégia Arquitetural
Diretrizes arquiteturais:
1. Pagamento facilitado com diversas bandeiras de cartão de crédito.
2. Alta escalabilidade.
3. Interface rica e intuitiva.
Iniciação da arquiteturade software
Hello World! – Estratégia Arquitetural
Análise dos riscos arquiteturais:
1. Protocolos complexos do sistemas externos.
2. Equipe com baixa experiência em webservices.
Iniciação da arquiteturade software
Estilo arquitetural
• Estilo arquitetural é um padrão arquitetural.
• A escolha do estilo arquitetural é a maiordecisão na definição da arquitetura.
Hello World! – Estratégia Arquitetural
Definição do estilo arquitetural:
– Layers
Iniciação da arquiteturade software
Modelos arquiteturais exigemdiferentes perspectivas
• Diferentes visualizações do modelo “corpo humano”
Fonte: VisibleBody.com
Representação da Arquitetura Software
Escolhemos:
– Modelo de Visualização 4+1 de Philippe Kruchten
Filtro dos requisitos arquiteturais
Requisitos arquiteturais
Requisitosnão-
funcionais
Requisitosfuncionais
Restrições
Interessam para a arquitetura
Lembra das diretrizes?
Diretrizesarquiteturais
Requisitosarquiteturais
• Foram refinadas emrequisitos.
Hello World! – Visualização de casos de uso
Seleção dos casos de uso arquiteturalmentesignificativos:
Definiçãoda
arquiteturade software
Hello World! – Desenvolvimento dos requisitos
Refinamento dos requisitos arquiteturalmentesignificativos:– Requisitos de não-funcionais:
• Pico de 1000 acessos simultâneos em alta temporada.• Tempo médio de resposta para reserva pelo hóspede até 8 seg.• Tempo médio de resposta para reserva por funcionário até 5 seg.• Disponibilidade do sistema de 99,9%.• O hóspede pode fazer sua reserva remotamente (WWW) sob
protocolo HTTPS com criptografia de 1024 bits.• Acessibilidade WCAG 2.0 nível 2 em IE 7, IE 8 e FireFox 3.• Todos os dados devem ser registrados permanentemente.• Estimativa de crescimento de dados de 20% ao ano.• A interface de suportar cliente rico.
Definiçãoda
arquiteturade software
Definiçãoda
arquiteturade software
Hello World! – Desenvolvimento dos requisitos
Restrições técnicas:
– O servidor de aplicações: GlassFish.
– O SGBD: Oracle 10G.
– O sistema operacional: Linux.
– O servidor de autenticação: protocolo baseado no LDAPv3 sobre SSL.
Hello World! – Visualização lógicaFoi usado um padrão conhecido comoMVC
•Alguns outros padrões arquiteturais:•Layers•Broker•Pipes and Filters•Microkernel
Definiçãoda
arquiteturade software
Hello World! – Visualização de implantação
Definiçãoda
arquiteturade software
Relembrando…
Diretrizesarquiteturais
Requisitosarquiteturais
Requisitos e mecanismos
Hello World! Finalmente Java!
Requisito
• Todos os dados devem ser registradospermanentemente.
Mecanismode análise
• Persistência de dados em SGBD.
Mecanismode desenho
• Mapeamento objeto/relacional.
Mecanismo de implementação
• EclipseLink JPA.
De um caso da vida real
Mecanismo de Desenho
Mecanismo de Implementação
Mapeamento O/R JPA/Hibernate
Workflow jBPM
Gerência de contexto JBoss Seam
Gerência de transação EJB 3
AJAX jMaki
Conclusões
• A área de arquitetura envolvemuita dedicação e estudo.
• O trabalho do arquiteto difere do projetista e do programador.
• Mas não é uma arte oculta!
Sobre o que não falamos
• Avaliação de arquiteturas
• Reconstrução e restauração de arquiteturas
• Edificação de arquiteturas
• Gestão de ativos arquiteturais
• E muitas outras coisas…
Para saber mais
• Blog de arquitetura de software: http://arkhi.com.br• Who Needs an Architect? - Martin Fowler• Common Misconceptions about Software Architecture - Philippe
Kruchten• What is a software architecture? - Peter Eeles• Characteristics of a software architect - Peter Eeles• The process of software architecting - Peter Eeles• The benefits of software architecting - Peter Eeles• What are the Duties, Skills, etc. of a Chief Software Architect? - SEI• The Past, Present, and Future of Software Architecture - Philippe
Kruchten e outros• What do software architects do? - Philippe Kruchten• System Architecting - Gerrit Muller
O arquiteto na antiguidade
“O arquiteto ideal deve ser uma pessoa de letras,
um matemático,
familiar com estudos históricos,
um diligente estudante de filosofia,
interessado em música,
não ignorante em medicina e proficiente em questões jurídicas,
familiar com a astronomia e os cálculos astronômicos.”
– Vitruvius, 25 d.C.
em “De Architectura”
Tao do Arquiteto de Software
O arquiteto observa o mundo.
Mas confia em sua visão interior.
Ele permite que as coisas venham e vão.
Seu coração é aberto como o céu.
Quando o arquiteto lidera, o time
dificilmente percebe que ele existe.
O segundo melhor é o arquiteto que é
amado.
Depois, o que é temido.
O pior deles é aquele desprezado.
O arquiteto não fala, age.
Quando o trabalho está pronto,
o time diz:
“Incrível: nós fizemos tudo sozinhos!"
The Tao of the Software ArchitectLao-Tsu, revisitado porPhilippe Kruchten
Perguntas?