Engenharia de Componentes - Parte 3

11
Desenvolvimento - Java Engenharia de Componentes - Parte 3 Este estudo descreve assuntos relacionados à componentização, que devem ser analisados antes de um estudo mais aprofundado neste universo da componentização de software. Os conceitos tratados serão a Engenharia de software, engenharia web e engenharia de componentes. por Jean Wagner Kleemann 2.7 Arquitetura Utilizada no Sistema Web. Inicialmente a web era composta apenas por páginas estáticas, ou seja, não variava a cada solicitação conforme alguma mudança de parâmetros. Com o tempo, houve a necessidade de tornar o conteúdo das páginas dinâmico, que possibilitasse construir uma página conforme uma nova requisição, o que não era possível utilizando somente HTML (Hyper Text Markup Language). Para tanto o servidor web deveria processar os dados destas solicitações e retornar uma resposta Publicidade 1 0 0 0 DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN Anuncie | Fale Conosco | Publique Copyright 2015 - todos os direitos reservados para Web03 Seja o primeiro de seus amigos a curtir isso. Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone... 1 de 11 07/12/2015 16:43

description

engenharia de software parte 3

Transcript of Engenharia de Componentes - Parte 3

Page 1: Engenharia de Componentes - Parte 3

Desenvolvimento - Java

Engenharia de Componentes -Parte 3Este estudo descreve assuntos relacionados à componentização,

que devem ser analisados antes de um estudo mais aprofundado

neste universo da componentização de software. Os conceitos

tratados serão a Engenharia de software, engenharia web e

engenharia de componentes.

por Jean Wagner Kleemann

2.7 Arquitetura Utilizada no Sistema Web.

Inicialmente a web era composta apenas por páginas estáticas,

ou seja, não variava a cada solicitação conforme alguma

mudança de parâmetros. Com o tempo, houve a necessidade

de tornar o conteúdo das páginas dinâmico, que possibilitasse

construir uma página conforme uma nova requisição, o que não

era possível utilizando somente HTML (Hyper Text Markup

Language). Para tanto o servidor web deveria processar os

dados destas solicitações e retornar uma resposta

Publicidade

1 0 0 0

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Anuncie | Fale Conosco | Publique

Copyright 2015 - todos os direitosreservados para Web03

Seja o primeiro de seus amigos a curtir isso.

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

1 de 11 07/12/2015 16:43

Page 2: Engenharia de Componentes - Parte 3

Em Java, no ambiente JEE (Java Enterprise Edition), que é

voltado para as aplicações web, encontra-se alternativas como

Applets, Servlets, JSP (Java Server Pages), JSTL (Java

Server Pages Standard Tag Library), EJB (Enterprise Java

Beans), entre outros. Para facilitar o desenvolvimento das

aplicações Java geralmente se faz o uso de design patterns

também conhecido como padrões de projeto e algum

framework, tais como o STRUS, JSF, Hibernate, entre outros.

2.7.1 Arquitetura Java EE e Design Patterns.

Um padrão de projeto é definido como uma solução

desenvolvida utilizando boas práticas para um problema comum

que ocorre várias vezes. Um padrão de projeto documenta e

explana um problema importante que pode ocorrer no projeto ou

implementação de uma aplicação e então discute a melhor

solução prática para o problema (Marinescu, 2002).

Segundo a SUN, a plataforma J2EE (Java 2 Enterprise Edition)

define um padrão para o desenvolvimento de aplicações

multicamadas. Nesta arquitetura, a camada que contém as

regras de negócio, normalmente implementada utilizando

Enterprise JavaBeans, pode ficar concentrada no servidor de

aplicações, sendo compartilhada com diversas aplicações

clientes. As aplicações clientes não contêm a lógica do negócio,

atendo-se somente à camada de apresentação. Na camada de

apresentação normalmente são utilizadas as tecnologias de

Servlets e JavaServer Pages.

Os Design Patterns buscam facilitar a reutilização de projetos e

arquiteturas bem sucedidos. Eles auxiliam a escolher

alternativas de projeto que tornam um sistema reutilizável e

evitar alternativas que comprometam a reutilização.

Segundo Alur (2002) se destacam algumas vantagens de se

usar cada um destes padrões, considerando que:

· Foram testados: refletem a experiência e conhecimento dos

desenvolvedores que utilizaram estes padrões com sucesso em

seu trabalho;

· São reutilizáveis: fornecem uma solução pronta que pode ser

adaptada para diferentes problemas quando necessário;

· São expressivos: formam um vocabulário comum para

expressar grandes soluções sucintamente;

· Facilitam o aprendizado: reduzem o tempo de aprendizado de

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

2 de 11 07/12/2015 16:43

Page 3: Engenharia de Componentes - Parte 3

· Diminuem retrabalho: quanto mais cedo são usados, menor

será o retrabalho em etapas mais avançadas do projeto.

A SUN disponibiliza um catálogo de 15 padrões J2EE, que

fornece soluções para problemas tipicamente encontrados por

arquitetos e designers de aplicações de software para a

plataforma J2EE, conforme ilustra a Figura 3.

Figura 3: Core J2EE Patterns. Fonte: SUN.

Em poucas palavras é possível descrever cada um destes

padrões em suas respectivas camadas (Alur, 2002):

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

3 de 11 07/12/2015 16:43

Page 4: Engenharia de Componentes - Parte 3

(Fornece um controlador centralizado para manter a lógica de

processamento que ocorre na camada de apresentação e que,

erroneamente é colocado nas visões); view helper (Encapsula

a lógica que não esteja relacionada à formatação da

apresentação em componentes auxiliares);composite view

(Cria uma visão através da composição de outras visões);

service to worker (Combina um componente distribuidor com

os padrões Front Controller e View Helper. Neste padrão a

responsabilidade de recuperar o conteúdo para apresentar é do

controlador); dispatcher view (Semelhante ao padrão Service

to Worker, mas, neste padrão a recuperação do conteúdo é

responsabilidade das visões).

· Camada de negócios: business delegate (Reduz o

acoplamento entre o cliente e a camada de negócios); data

transfer object (Facilita o intercâmbio de dados entre as

camadas); data transfer object factory (Facilita e centraliza a

criação de data transfer objects); session facade (Fornece uma

interface unificada para um sistema distribuído); composite

entity (Representa uma prática mais recomendada para criar

entity beans de granulação grossa, agrupando os objetos

dependentes em um único entity bean); value list handler

(Gerencia o processamento e armazenamento em cache de

consultas que retornam uma grande quantidade de

informações); service locator (Encapsula a complexidade de

localização e criação de serviços de negócio e localiza os

objetos Home dos EJB).

· Camada de integração: data access object (Abstrai e

encapsula o acesso aos dados); service activator ( Facilita o

processamento assíncrono para Message-driven beans).

2.7.2 Componentização na camada de visualização com JSF

Segundo Gonçalvez (2007, p. 429) O JSF (Java Server Faces)

é uma tecnologia do mundo JEE e é desenhado para simplificar

o desenvolvimento de aplicações Web. JSF torna fácil o

desenvolvimento através de componentes de interface de

usuário (GUI) e conecta esses componentes a objetos de

negócios. Também automatiza o processo de uso de Java

Beans e navegação de páginas.

Java Server Faces disponibiliza o rápido desenvolvimento de

interfaces para aplicações que rodam no servidor web. Permite

aos desenvolvedores escrever aplicações com facilidade, sem

se preocupar com as complexidades de lidar com navegadores

e servidores Web. Também automatiza alguns procedimentos

como o controle e o transporte do código entre formulários, a

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

4 de 11 07/12/2015 16:43

Page 5: Engenharia de Componentes - Parte 3

Java Server Faces realiza muito do trabalho pesado que

geralmente precisam ser implementados em Servlets e JSP.

Possui um conjunto de componentes que são essenciais para o

desenvolvimento de aplicações em JSF.

Estes componentes funcionam em conjunto, ou seja, caso

necessite de um determinado componente que não existe no

projeto, ele pode ser inserido sem problemas. Hoje, existem

diversos conjuntos de componentes, como por exemplo: JBoss

RichFaces, MyFaces Tomahawk, Oracle ADF, ICEfaces, entre

outros. Há também alguns fabricantes que desenvolveram suas

próprias implementações de JSF, tais como: MyFaces (Apache),

JSF RI ou Mojarra (Sun Microsystem) (Rafael Ponte,on-line).

De certa forma o JSF pode ser comparado ao framework

Microsoft .net, pois possui um conjunto de componentes visuais,

que permite o conhecido “arrastar e soltar”. Também por ser

flexível na questão de criação de componentes próprios a partir

de classes de componentes, e permitir que o desenvolvedor crie

interfaces através de componentes fornecidos e manipule

eventos do lado cliente com grande facilidade.

Vale destacar que no ano de 2009 foi lançada a versão 2 do

framework JSF, que teve sua primeira versão lançada em 2003.

Esta segunda versão veio para corrigir e facilitar o uso de

diversos novos recursos tais como:

· Suporte nativo a Ajax, não disponível na primeira versão.

· Resolver problemas de incompatibilidade entre bibliotecas de

componentes.

· Permitir configurações através de anotações, o que antes era

feito somente via xml.

· Diminuir a complexidade da criação de componentes visuais.

· Comunicação entre os componentes através de outros

protocolos, pois na primeira versão era possível somente via

GET, sendo esta uma de suas falhas mais criticadas.

2.7.3 Componentização na camada de negócios com EJB

Segundo Gonçalvez (2007, p. 544) O EJB ou Enterprise

JavaBeans é um componente servidor que roda em um

container para EJB do servidor de aplicação. Considerado como

um dos principais componentes da plataforma JEE (Java

Enterprise Edition), o EJB tem como principais objetivos da

tecnologia fornecer rápido e simplificado desenvolvimento de

aplicações Java baseadas em componentes, distribuídas,

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

5 de 11 07/12/2015 16:43

Page 6: Engenharia de Componentes - Parte 3

Infelizmente essa não foi bem a realidade das versões

anteriores as 3.0 da tecnologia EJB, especialmente os Entity

Beans, que sempre foram acusados de baixa eficiência, alta

complexidade e dificuldade de uso.

DEBU PANDA (2008, p.4) define Enterprise JavaBeans (EJB)

como uma plataforma para construção de aplicações

corporativas portátil, reutilizável e escalável, que utiliza a

linguagem Java. Desde seu início, o EJB tem sido considerado

um modelo de componente ou framework que permite que você

construa aplicações corporativas Java sem ter que reinventar

serviços necessários para a construção de uma aplicação, como

as transações, seguranças, persistência automatizada e assim

por diante.

DEBU PANDA (2008, p.5) descreve EJBs como componentes

server-side que são utilizados para construir partes de uma

aplicação, como a regra de negócios ou a camada de

persistência. O desenvolvimento de componente geralmente é

visto como algo extremamente complexo como o CORBA ou

Microsoft COM+. O EJB3 mostra que um componente é o que

deve ser: Encapsular com eficiência o comportamento de uma

aplicação, dessa forma o usuário de um componente não

precisa conhecer suas operações internas, tudo o que precisa

saber é como ir e o que esperar de volta.

As principais vantagens do uso da tecnologia EJB, podem ser

entendidas através dos seguintes pontos:

· Fácil de usar: Focado na facilidade de uso, os recursos que

mais são realçados são a programação POJO, as anotações

XML, o uso intenso dos padrões sensíveis e o JPA.

· Acúmulo de soluções integradas: O EJB oferece um conjunto

de soluções para servidor, incluindo persistência, messaging,

programas leves, remoting, serviços de web, injeção de

dependência (DI) e interceptores. Isso significa que você não

terá que perder tempo procurando ferramentas terceirizadas

para integrar à sua aplicação.

· Padrão aberto Java EE: O EJB possui uma especificação API

pública aberta, que as empresas utilizam para criar um

container ou a implementação do fornecedor de persistência. O

padrão EJB é desenvolvido pelo Java Community Process

(JCP) proporcionando um suporte maior, sem precisar de uma

solução proprietária.

· Suporte maior ao fornecedor: O EJB é suportado por uma

grande variedade de empresas independentes. Incluindo as

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

6 de 11 07/12/2015 16:43

Page 7: Engenharia de Componentes - Parte 3

IBM, assim como os grupos JBoss e Geronimo. O suporte

amplo ao fornecedor se traduz em três vantagens importantes

para você. Primeira, você não está à mercê dos altos e baixos

de uma empresa particular ou grupo de pessoas. Segunda,

muitas pessoas possuem interesses a longo prazo para manter

a tecnologia o mais competitiva possível. Você pode ser capaz

de levar vantagem das melhores tecnologias dentro ou fora do

ambiente Java em um cronograma competitivo. Terceira, os

fornecedores concorrem entre si para fornecer recursos não

padronizados adicionados ao valor. Esses fatores ajudam a

manter o EJB continuamente na linha de evolução.

· Agrupamento, balanceamento de carga e failover: Os recursos

historicamente adicionados por muitos fornecedores de

servidores de aplicações são suportes robustos para o

agrupamento, balanço de carga e failover. Os servidores de

aplicação EJB possuem um registro de trilha provado para

suportar alguns dos ambientes de servidores ativados por

computação (HPC) de alto desempenho. Mais importante que

isso, você pode alavancar tal suporte sem alterar o código, sem

interação de ferramenta terceirizada e com configuração

relativamente simples (além do trabalho inerente em configurar

um agrupamento de hardware). Isto significa que você pode

confiar no agrupamento de hardware para medir sua aplicação

com o EJB 3, caso precise.

Os beans são os componentes EJB e são classificados

conforme sua utilidade, sendo eles: Session Beans, Message

Driven Beans, Entity Beans. Cada tipo de bean tem um

propósito e pode utilizar um subconjunto específico de serviços

EJB. O propósito real dos tipos de beans é proteger as

possíveis sobrecargas contra os serviços que surgem.

Os sesseion beans e os Message Driven Beand são usados

para construir lógica de negócios e residem em um container,

que gerencia esses beans e fornece serviço a eles. Já os Entity

Beans são usadas para modelar a persistência de uma

aplicação.

Segundo DEBU PANDA (2008, p.14), um dos recursos mais

atraentes do EJB 3 é o modo com que ele controla a

persistência. Persistência é a habilidade de ter os dados

contidos nos objetos Java automaticamente armazenados em

um banco de dados relacional como o Postgres SQL. A

persistência em EJB 3 é gerenciada pelo JPA. Ela persiste

automaticamente aos objetos Java usando uma técnica

chamada mapeamento objeto-relacional (ORM). O ORM é

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

7 de 11 07/12/2015 16:43

Page 8: Engenharia de Componentes - Parte 3

configuração. Ele desobriga o desenvolvedor da tarefa de

escrever o código JDBC de baixo nível para manter os objetos

em um banco de dados.

Os frameworks que fornecem capacidade ORM para realizar

persistência automatizada são conhecidos como frameworks

ORM. Como o nome já diz, um framework ORM executa

persistência transparente usando metadados do mapeamento

objeto-relacional que define como os objetos são mapeados nas

tabelas de banco de dados. ORM não é um novo conceito e já

está presente por algum tempo. Oracle TopLink é

provavelmente o framework ORM mais antigo no mercado; o

framework de fonte aberta JBoss Hibernate popularizou os

conceitos ORM entre a comunidade do desenvolvedor atual.

REFERÊNCIAS BIBLIOGRÁFICAS

ALECRIM, Emerson. JSE, JEE e JME: uma breve explicação.

Info Wester. São Paulo - SP. 02 out. 2007. Disponível em:

<http://www.infowester.com/versoesjava.php>. Acesso em 02

abr. 2009.

ALUR, Deepak; CRUPI, John; MALKS, Dan. Core j2ee patterns:

as melhores práticas e estratégias de design. Rio de Janeiro:

Campus, 2002.

BRAZ, Christian Cleber Masdeval. Introdução ao Java Server

Pages. Disponível em: <http://www.tudodownloads.com.br

/download/2552/Apostila_-

_Introducao_ao_JSP_Java_Server_Pages.html>. Acesso 23

mar. 2008

CONALLEN, Jim. Building Web Application With UML. 2. ed.

2002.

COULOURIS, George F.; DOLLIMORE, Jean; KINDBERG, Tim.

Distributed systems:concepts and design. 4th ed. 2005.

DESMOND D"Sousa. Objects, Components, and Frameworks

with UML: The Catalysis Approach.1998.

Friedrich Ludwig Bauer. NATO Science Committee, Garmisch,

Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs Division,

NATO (1969) 231p.

GONÇALVES, Edson. Desenvolvendo aplicações web com jsp,

servlets, javaserver faces, hibernate, ejb3 persistence e AJAX.

Editora Ciência Moderna: Rio de Janeiro, 2007.

IEEE, Institute. IEEE Std 830-1998. Recommended Practice for

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

8 de 11 07/12/2015 16:43

Page 9: Engenharia de Componentes - Parte 3

JANDL JUNIOR, Peter. Java Guia do Programador. Novatec

Editora. 2007. Disponível em: <http://www.novatec.com.br/livros

/javaguia/capitulo9788575221099.pdf> Acesso em 02 abr. 2008.

KOCH, Nora. A UML-based Methodology for Hypermedia

Design. England. Out 2000.

LAMPORT, Time. Clocks and the Ordering of Events. CACM. Jul

1978, p 558-565.

HORSTMANN, Cay S. Core Java 2 –

Vol.1:Fundamentos.Editora Makron Books: São Paulo SP,

2000.

MANGIONE, Carmine. Performance tests show Java as fast as

C++. Java World. 02 jan. 1998. Disponível em:

<http://www.javaworld.com/jw-02-1998/jw-02-jperf.html>. Acesso

em 01 jun. 2008.

MARINESCU, Floyd. EJB design patterns: advanced patterns,

processes, and idioms. New York: John Wiley & Sons, 2002.

MELO, Ana Cristina. Desenvolvendo aplicações com UML 2.0:

do conceitual à implementação – 2.ed. Brasport. Rio de Janeiro,

2004.

MURUGESAN, S. Leverage global software development and

distribution using the internet and web. Cutter IT Journal. Mar

1999

NEWMAN, Alexander. Usando Java. Editora Campus: Rio de

Janeiro, 1996.

OLIVEIRA, José Palazzo Moreira de. Conceitos sobre Sistemas

Distribuídos. UFRGS. Disponível em: <http://palazzo.pro.br

/sd/distr-dados.htm>. Acesso em 16 set 2010.

DEBU PANDA, REZA RAHMAN, DEREK LANE. EJB3 em ação.

Alta Books, 2008.

PRESSMAN, ROGER S. Engenharia de Software. 5ª Ed. Rio de

Janeiro: McGraw- Hill, 2002.

Rafael Ponte. Anatomia do JSF - JavaServer Faces. Rafael

Pontes. Ceará. 27 out. 2007. Disponível em:

<http://www.rponte.com.br/wp-content/uploads/2007/10

/anatomia-jsf-javaserver-faces-cct.pdf>. Acesso em 20

mar.2010.

RUBIRA, Cecília Mary Fischer. Desenvolvimento Baseado em

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

9 de 11 07/12/2015 16:43

Page 10: Engenharia de Componentes - Parte 3

/mc436/2009.2/Material de Apoio/Slides/11_dbcUMLComp.pdf>.

Acesso em 07 set. 2010.

SILBERSCHATZ, Abraham; Korth, Henry F e Sudarshan, S.

Sistema de Banco de Dados. Makron Books, 1999. p. 1.

SWEBOK. Disponível em: <http://www.computer.org/portal

/web/swebok>. Acesso em 01 jun. 2008.

SUN, Sun Microsystems. Designing enterprise applications with

the j2ee platform enterprise edition. Disponível em:

<http://java.sun.com/blueprints/guidelines

/designing_enterprise_applications_2e/index.html>. Acesso em:

28 out. 2010.

TANENBAUM, Andrew S. Distributed Operating Systems. New

Jersey: Prentice Hall, 1995.

WIKIPEDIA. Sistema de Gerenciamento de Banco de Dados.

Disponível em: <http://pt.wikipedia.org

/wiki/Sistema_de_gerenciamento_de_banco_de_dados>.

Acesso em: 10 dez. 2009.

WIKIPEDIA. PostgreSQL. Disponível em:

<http://pt.wikipedia.org/wiki/PostgreSQL>. Acesso em: 10 dez.

2009.

WIKIPEDIA. Engenharia de software. Disponível em:

<http://pt.wikipedia.org/wiki/Engenharia_de_software >. Acesso

em: 10 dez. 2009.

WIKIPEDIA. Engenharia de software baseada em

componentes. Disponível em:<http://pt.wikipedia.org

/wiki/Engenharia_de_software_baseada_em_componentes>.

Acesso em: 10 dez. 2009.

WIKIPEDIA. Processo Unificado. Disponível em:

<http://pt.wikipedia.org/wiki/Processo_Unificado>. Acesso em 10

dez. 2009.

WIKIPEDIA. IBM Rational Unified Process Disponível em:

<http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process>.

Acesso em: 10 dez. 2009

Jean Wagner Kleemann - Atuo no desenvolvi

mento Web desde 2008 com nas plataformas

java , .net e php. Participação no desenvolvi

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

10 de 11 07/12/2015 16:43

Page 11: Engenharia de Componentes - Parte 3

e outros.

Bacharel em Ciência da Computação, pela UNIDERP. Pó

s-Graduado em Engenharia de Componentes Utilizando J

ava, pela TNT Educacional.

Twitter: @jeankleemann

Leia também

Conhecendo a interface Map do JavaJava

Trabalhando com a Interface Set no JavaJava

Classes Wrappers em JavaJava

ComboBoxModel em JavaJava

Reduzindo a Mutabilidade em JavaJava

1 0 0 0

DESENVOLVIMENTO FRONT-END BANCO DE DADOS LOGIN

Engenharia de Componentes - Parte 3 http://www.linhadecodigo.com.br/artigo/3121/engenharia-de-compone...

11 de 11 07/12/2015 16:43