arquiteto de software em projetos jee

Post on 05-Jul-2015

2.012 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

O Arquiteto de Software emProjetos Java EE

Eros Viggiano

ev@arkhi.com.br

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

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?

top related