arquiteto de software em projetos jee

54
O Arquiteto de Software em Projetos Java EE Eros Viggiano [email protected] MGJUG Tech Meeting Junho/2009 Contribuições de Marco Mendes

Upload: erosviggiano

Post on 05-Jul-2015

2.012 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Arquiteto de Software em Projetos JEE

O Arquiteto de Software emProjetos Java EE

Eros Viggiano

[email protected]

MGJUG Tech Meeting – Junho/2009

Contribuições de Marco Mendes

Page 2: Arquiteto de Software em Projetos JEE

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

Page 3: Arquiteto de Software em Projetos JEE

OBJETIVO MAIS QUE SINCERO

Desmitificar arquitetura de sofware.

Não é uma arte oculta!!!

Page 4: Arquiteto de Software em Projetos JEE

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.

Page 5: Arquiteto de Software em Projetos JEE

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.

Page 6: Arquiteto de Software em Projetos JEE

A moda é ser arquiteto

Wally:• “Gostaria de mudar meu cargo para algo com ‘arquiteto’

nele.”• “Meu sonho é trabalhar menos enquanto sou mais

valorizado.”

Page 7: Arquiteto de Software em Projetos JEE

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”

Page 8: Arquiteto de Software em Projetos JEE

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!

Page 9: Arquiteto de Software em Projetos JEE

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

Page 10: Arquiteto de Software em Projetos JEE

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?

Page 11: Arquiteto de Software em Projetos JEE

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

Page 12: Arquiteto de Software em Projetos JEE

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.

Page 13: Arquiteto de Software em Projetos JEE

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.

Page 14: Arquiteto de Software em Projetos JEE

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.

Page 15: Arquiteto de Software em Projetos JEE

O que faz o arquiteto

• Responsável por:

– concepção da arquitetura

– apoio à contrução

Page 16: Arquiteto de Software em Projetos JEE

O que faz o arquiteto de software

• Responsável por:

– concepção da arquitetura de software

– apoio à contrução de software

Page 17: Arquiteto de Software em Projetos JEE

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

Page 18: Arquiteto de Software em Projetos JEE

Generalista ou especialista?

Esp

ecia

lista

emap

licaç

ões

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

Page 19: Arquiteto de Software em Projetos JEE

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.

Page 20: Arquiteto de Software em Projetos JEE

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

Page 21: Arquiteto de Software em Projetos JEE

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

Page 22: Arquiteto de Software em Projetos JEE

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

Page 23: Arquiteto de Software em Projetos JEE

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.

Page 24: Arquiteto de Software em Projetos JEE

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

Page 25: Arquiteto de Software em Projetos JEE

Ciclo da gestão da arquitetura de software

Page 26: Arquiteto de Software em Projetos JEE

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

Page 27: Arquiteto de Software em Projetos JEE

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

Page 28: Arquiteto de Software em Projetos JEE

Hello World! – Arquitetura de Software

• Nosso exemplo:

– Sistema para a rede de hotéis Hello World

Page 29: Arquiteto de Software em Projetos JEE

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

Page 30: Arquiteto de Software em Projetos JEE

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

Page 31: Arquiteto de Software em Projetos JEE

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

Page 32: Arquiteto de Software em Projetos JEE

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

Page 33: Arquiteto de Software em Projetos JEE

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

Page 34: Arquiteto de Software em Projetos JEE

Estilo arquitetural

• Estilo arquitetural é um padrão arquitetural.

• A escolha do estilo arquitetural é a maiordecisão na definição da arquitetura.

Page 35: Arquiteto de Software em Projetos JEE

Hello World! – Estratégia Arquitetural

Definição do estilo arquitetural:

– Layers

Iniciação da arquiteturade software

Page 36: Arquiteto de Software em Projetos JEE

Modelos arquiteturais exigemdiferentes perspectivas

• Diferentes visualizações do modelo “corpo humano”

Fonte: VisibleBody.com

Page 37: Arquiteto de Software em Projetos JEE

Representação da Arquitetura Software

Escolhemos:

– Modelo de Visualização 4+1 de Philippe Kruchten

Page 38: Arquiteto de Software em Projetos JEE

Filtro dos requisitos arquiteturais

Requisitos arquiteturais

Requisitosnão-

funcionais

Requisitosfuncionais

Restrições

Interessam para a arquitetura

Page 39: Arquiteto de Software em Projetos JEE

Lembra das diretrizes?

Diretrizesarquiteturais

Requisitosarquiteturais

• Foram refinadas emrequisitos.

Page 40: Arquiteto de Software em Projetos JEE

Hello World! – Visualização de casos de uso

Seleção dos casos de uso arquiteturalmentesignificativos:

Definiçãoda

arquiteturade software

Page 41: Arquiteto de Software em Projetos JEE

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

Page 42: Arquiteto de Software em Projetos JEE

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.

Page 43: Arquiteto de Software em Projetos JEE

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

Page 44: Arquiteto de Software em Projetos JEE

Hello World! – Visualização de implantação

Definiçãoda

arquiteturade software

Page 45: Arquiteto de Software em Projetos JEE

Relembrando…

Diretrizesarquiteturais

Requisitosarquiteturais

Page 46: Arquiteto de Software em Projetos JEE

Requisitos e mecanismos

Page 47: Arquiteto de Software em Projetos JEE

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.

Page 48: Arquiteto de Software em Projetos JEE

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

Page 49: Arquiteto de Software em Projetos JEE

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!

Page 50: Arquiteto de Software em Projetos JEE

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…

Page 51: Arquiteto de Software em Projetos JEE

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

Page 52: Arquiteto de Software em Projetos JEE

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”

Page 53: Arquiteto de Software em Projetos JEE

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

Page 54: Arquiteto de Software em Projetos JEE

Perguntas?