Estudo de caso do desenvolvimento de uma framework Java
pela empresa 3w.TI
Diovane Rinaldin
[email protected]
Abstract. In the present article was
exposed the process of modification of
the work way of the 3w.TI enterprise at
Campo Largo – PR when observed the
necessity of produce a new framework to
supply the demand of work and begin a
task of standardization of activities.
Focused in explain the advantages,
indicated by the managers, for adoption
of the Java language and the researches
done until come to this conclusion.
Starting by the premises “effective
service” and “reduction of the time to
treatment” using concepts of the
Software Engineering and even language
production for obtain products that
attend the initial expectations of the
direction.
Resumo. No presente artigo está exposto
o processo de modificação da forma de
trabalho da empresa 3w.TI de Campo
Largo - PR quando se observou a
necessidade de se produzir uma nova
framework para suprir a demanda do
trabalho e iniciar uma tarefa de
padronização de atividades. Concentrase em explicar as vantagens, apontadas
pelos gestores, da adoção da linguagem
Java e as pesquisas feitas até chegar a
essa conclusão. Partindo das premissas
"atendimento eficaz" e "redução de
tempo de atendimento" utilizando
conceitos de Engenharia de Software e
até mesmo de produção de linguagens
para se obter produto que atendesse as
expectativas iniciais da diretoria.
I. Introdução
Toda empresa deve utilizar métodos de trabalho
padronizados (CAMPOS), porém, algumas vezes e
por diversos fatores, o processo de desenvolvimento
de software acaba sofrendo com falta de definição e
“o programador sofre por falta de ferramentas e a
necessidade de desenvolver muitas funcionalidades
inerentes ao negócio” (comentário de um
programador que preferiu não se identificar).
Com isso surgem diversos problemas no
desenvolvimento de um projeto mal planejado,
entrando no que é definido por Alexandre Bartié no
livro “Garantia Da Qualidade De Software” de
custos de não conformidade que são todos os custos
de atividades ligadas ao esforço de reparar falhas
de produtos originados no decorrer do processo de
desenvolvimento.
Todas
as
conseqüências
financeiras causadas por estes defeitos, devem ser
computados nos custos da não-conformidade. Tudo
que é realizado ou gerado em função de defeitos
produzidos durante os projetos de software devem
ser encarados como não conformidades, ou seja, os
custos provenientes da falta de qualidade.
Olhando sob essa luz a empresa
desenvolvedora de software sob encomenda
localizada em Campo Largo – PR denominada
3w.TI, da qual faço parte, resolveu modificar sua
ferramenta de trabalho e assim começar a promover
a padronização dos processos da empresa pelo de
desenvolvimento de software no tocante a
arquitetura das aplicações.
Utilizando Java, uma das linguagens mais
robustas do mercado (LACOVARA), foi criada uma
framework, batizada de Universe, a ser incorporada
nos novos projetos por ela desenvolvidos,
observando os conceitos de produção de linguagens
minimalistas seguindo a partir de um domínio
mínimo de abrangência (CHOMSKY), observando,
por exemplo, o nível de abstração que deve se
chegar para se desenhar o objeto que representará
um campo de uma determinada tabela sendo usada em diversos momentos tornava o
(BOSKOVIC & LASNIK).
trabalho improdutivo, principalmente no tocante a
Concebida nos moldes e para satisfazer o modelo manutenção, também era de difícil entendimento
MVC ela provê um dataset e gerencia para quem começava a trabalhar com ela. Outra
automaticamente o acesso a base de dados situação que levou a criação da Universe foi a
construindo sozinha comandos ANSI SQL que necessidade de se produzir aplicações desktop
consigam ser executados no maior número de (client-side), após diversos estudos e avaliações se
SGDB’s possível (MANZANO) de pesquisa e optou por usar Java como a tecnologia a ser usada na
atualização dos dados. Ainda constrói interfaces framework, pois com ela é possível o
padronizadas segundo os campos que o usuário desenvolvimento Web e desktop. Foi cogitado o uso
desejar que sejam apresentados usando os de Delphi 7 e a manutenção do PHP, ou ainda o uso
respectivos controles visuais – caixas de da tecnologia .NET, mas os fatores abaixo
combinação, caixas de texto, botões de seleção, etc. enumerados impossibilitaram o uso:
– selecionados.
Delphi 7
II. Método de pesquisa
Para se chegar até a ferramenta, diversas etapas
necessitaram ser concluídas, enumeradas em:
enumeração de empresas de software da região,
dessas empresas quais adotaram implementações de
frameworks próprias, entrevistas com os envolvidos
na definição da arquitetura e no desenvolvimento da
ferramenta e estudo em livros de Engenharia de
Software que definem a construção de um novo
software e que padrões são encontrados no caso
estudado. Desse processo de coleta de informações
também surgiu o artigo que está em suas mãos.
•
A tecnologia web (Intraweb) proposta pela
ferramenta não atende as expectativas dos
desenvolvedores nos quesitos produtividade,
manutenção e clareza de código;
•
A Borland já não produz o Delphi 7 e a
versão mais atual, produzida pela
Embarcadero é chamada de Delphi 2010 e o
preço do licenciamento (segundo contato
com Micro Focus por e-mail no mês de
fevereiro de 2010) é:
As duas primeiras etapas “enumeração de
empresas de software da região” e “dessas empresas
quais adotaram implementações de frameworks
próprias” foram satisfeitas segundo a capacidade de
ver o mundo em volta pelo próprio conhecimento do
negócio (KURETZKI, RINALDIN, BORTOLETO, PHP
ANGÉLICO 2007) assim chegando até a 3w.TI.
•
A entrevista com os envolvidos na empresa teve,
•
por exemplos, questionamentos como:
“Quais os grandes motivadores para a adoção de
uma framework?”
“De que forma foi feita a seleção de ferramentas
e/ou linguagens para o desenvolvimento da
ferramenta?”
III. Motivação
Apesar da framework usada ainda ser nova e
conseguir atingir grande parte dos objetivos
propostos, a framework em PHP que até então estava
•
o Unidade de Delphi - 2010
Professional New User R$ 2.338,00;
o Unidade de Delphi - 2010 Enterprise
New User - R$ 5.198,00;
o Unidade de Delphi - 2010 Architect
New User - R$ 9.098,00.
A experiência no passado não foi agradável;
Não é possível desenvolver aplicações
desktop nativamente - existem projetos como
o PHPGTK, mas que não são interessantes
para empresa no momento;
Muito trabalhosa para execução de algumas
tarefas simples, como o controle de objetos
em sessão - na versão 4 precisamos
implementar serializações em arquivo no
disco rígido do servidor - e também a
confiabilidade e segurança (é necessário
reimplementar classes para tratamento de
strings usando funções como addslashes()
para tratar caracteres especiais, como não há
tipificação de dados explícita é necessário
sempre executar cast das variáveis entre
outros problemas).
.NET
•
•
Chegou muito perto de atender as
expectativas, mas seria necessário um
treinamento da equipe antes da implantação e
isso demandaria um investimento de R$
4.000,00 por funcionário (custo do
treinamento em janeiro na Elaborata em
Curitiba diariamente (contato por e-mail com
consultor da empresa de treinamentos) mais
o custo do funcionário) além de demandar
maior tempo para o inicio da execução do
projeto;
O custo da IDE de desenvolvimento, o
Visual
Studio
Team
System
2008
Development Edition with MSDN Premium é
de US$5.469,00 (com conta Premiun da
MSDN sai em torno de R$10.172,34 –
valores de fevereiro/2010 cotado junto a
Microsoft).
Com a Universe se desejava que fosse possível
desenvolver a aplicação em menor tempo, que a
tarefa de manutenção fosse simplificada e mais ágil,
facilidade
de
aprendizado
por
novos
desenvolvedores e aumento da produtividade
focando os analistas no negócio e produzindo o
máximo de código automaticamente, podendo assim
melhorar a qualidade dos softwares produzidos e
aumentando a satisfação dos clientes.
IV. A escolha da tecnologia Java
Assumindo que a comunidade de tecnologia da
informação já tem conhecimento da linguagem de
programação Java e que pode se informar de
novidades no site do fabricante - www.java.com serão enfocados apenas os pontos mandatórios da
história e usabilidade que tornaram essa linguagem a
escolhida para incorporar a framework e
conseqüentemente as demais aplicações da empresa
3w.TI.
se procurado alternativas para resolver o problema,
foi optado pela criação de uma nova framework,
dessa vez baseada em Java. A experiência de alguns
membros com o Java foi bastante importante para a
adoção da linguagem, mas houve outros fatores que
se mostraram bem favoráveis.
Em cada linguagem testada e analisada, foi
verificada sua IDE e o quanto essa era amigável e se
possuía ferramentas/plug-ins que pudessem facilitar
o uso. No caso do Java, foi analisado o NetBeans e o
Eclipse, onde por fim foi optado pelo uso da IDE
Eclipse Galileo for J2EE.
Tabela 1 - Comparativo entre NetBeans e Eclipse
Características
Fabricante
NetBeans
Eclipse
Comunidade
Suporta novos plugins
Sim
Comunida
de
Sim
Suporte a PHP
Sim
Sim
Componentes
visuais
Swing
SWT
Foco
Visual
Não
Codificaç
ão
Sim
em
de
Não
Sim
Suporte de VM’s
distintas por projeto
Sim
Sim
Facilidade
com
aplicação client-side
Melhor
Pior
Versões Paralelas
Flexibilidade
separar fonte
binários
Uma característica que pode parecer destoante é o
fato de que o desenvolvimento de aplicações desktop
são mais complicadas no Eclipse que no NetBeans,
mas o fato de que a empresa desenvolve apenas 8%
do total de seus softwares em versões client-side
essa característica se tornou irrelevante nesse
contexto.
Uma característica que foi extremamente
importante para a escolha foi a flexibilidade da
linguagem Java se adequar aos ambientes desktop e
Após se identificar a dificuldade do uso de
web de forma fácil. Sendo assim, muitas classes
uma framework pouco evoluída e escrita em PHP e
puderam ser reaproveitadas nos dois ambientes de devem ser empregadas o mais rápido possível, então
desenvolvimento.
se optou pela padronização e replicação a ferramenta
dos componentes mais necessários e se aproveitou
para se desenvolver componentes que outrora foram
planejados, mas que ainda não haviam sido
codificados.
Seguindo essa visão surgiu o componente chave
para aplicações que utilizam banco de dados, trata-se
do TableUniverse que para ser instanciada solicita o
nome da que o objeto que herdou a classe irá
gerenciar, se deseja que as tabelas que existem
relacionamentos seja carregas, o valor da chave
primária e um possível parâmetro de filtragem.
Ilustração 1 - Estrutura da framework
É importante ressaltar que o trabalho foi
desenvolvido até a camada denominada “Objetos de
manipulação de dados” que são reaproveitados em
objetos desenvolvidos tanto para web quanto para
desktop, abaixo - os “objetos de conexão a bases de
dados” – existem bibliotecas JDBC de terceiros para
fazer a conexão com bases específicas.
Outro fator de peso foi o a portabilidade além de
ambientes também de sistemas operacionais. Como
os bytecodes da aplicação são executados por uma
virtual machine, qualquer sistema operacional que
possua uma VM com a especificação da Sun e que
esteja sobre um hardware mínimo – que depende da
aplicação desenvolvida usando a framework – é
capaz de utilizar o sistema desenvolvido. Com .NET
seria necessário do suporte das ferramentas do Mono
Project, para se trabalhar em Linux por exemplo,
porém, não pareceu agradável ariscar com ele uma
vez que o Java se encontra bem estabelecido nesse
quesito.
public TableUniverse(String tableName,
Boolean loadReferences,
Integer primaryKey,
String filter) throws Exception
{
if (loadReferences.equals(null))
loadReferences = false;
this.name = tableName;
this.loadReferences =
loadReferences;
10
buildBaseRegister();
11
loadValues(primaryKey, filter);
12 }
Ilustração 2. Método de criação da TableUniverse
01
02
03
04
05
06
07
08
09
Nem todos os parâmetros são utilizados
sempre, mas a linguagem Java não suporta
parâmetros com valores default – é possível com
sobrecarga de métodos, mas o esforço, para esse
caso, não seria gratificante – sendo assim,
parâmetros são testados verificando se não são null,
se forem, assumem um valor padrão.
Por enquanto, a aplicação suporta apenas dois
bancos de dados MySQL e PostgreSQL. Essa
característica se deve ao fato de serem o foco das
aplicações da empresa, mas existe projeto para
abranger mais SGDB’s e não usar apenas ANSI
SQL.
A conexão com o banco de dados nos remete a
Em consideração a esses importantes indicadores
e a diversos outros não citados, foi decidido pelo uso um trabalho que está sendo melhorado atualmente,
ela implementa um singleton a fim de retornar uma
da linguagem Java – em sua versão 1.6 Mustang.
conexão por usuário.
V. O desenvolvimento da ferramenta
No entanto isso não está atraente do ponto de
A primeira parte do projeto precisou que ter sua
vista de gerenciamento de conexões, pois ao se criar
abrangência limitada, uma vez que novas
uma nova sessão da aplicação no servidor Tomcat,
necessidades surgem diariamente e suas soluções
no qual a Universe foi desenvolvida, é aberta para a
aplicação. Embora ela seja reaproveitada durante
toda a vida da sessão, pode se transformar num
problema, caso o limite máximo de conexões
definidas no SGDB seja alcançada novas conexões
não serão aceitas e a aplicação não poderá ser
executada.
Sendo
assim,
procura-se
pela
implementação de um pool de conexões JNDI, onde
a conexão é compartilhada, ou seja, quando se tenta
iniciar uma nova conexão o gerenciador verifica se
já não existe uma que possa ser usada ao invés de
criar uma nova.
Sendo assim já está em andamento a
implementação desse pool com a biblioteca C3P0
que é gratuito, já utilizado em projetos conhecidos e
confiáveis – como é o caso do Hibernate – gratuito,
contém um logger, provê um pool de conexão
transparente e totalmente configurável através de um
arquivo XML.
Outro ponto interessante foi a forma que surgiram
os pacotes swing da Universe Framework. Conforme
o desenvolvimento transcorria, diversas outras
aplicações Java eram desenvolvidas em paralelo e
muitas dessas estavam em ambiente desktop, um
fato novo na empresa que até então atendia com
softwares Delphi ou, para web, PHP.
DefaultTableModel model = new
DefaultTableModel(data, columns);
JTable table = new JTable(model);
table.setFillsViewportHeight(true);
table.setAutoCreateRowSorter(true);
table.addMouseListener(mouseListener);
table.getModel().addTableModelListener(
tableModelListener);
JScrollPane
scrollPane
JScrollPane(table);
=
new
Com a framework
String[] columnNames = new String[6];
this.tableFields
=
new
JTableUniverse(columnNames, null, this,
this);
Ilustração 5. Tabela criada usando a Universe
Framework
Para comprovar a vantagem de ganho de
produtividade com a Universe abaixo são expostas
Essa nova demanda motivou que se construíssem
as duas tabelas baseadas no método Use Case Point
padrões de desenvolvimento e os replicassem em
(KAR93), uma utilizada com a antiga framework
componentes que pudessem ser utilizados em
PHP e outra com a nova ferramenta.
projetos futuros, assim nasceram os componentes
Tabela 2. Complexidade técnica - Framework PHP
para
desktop.
São
contempladas
Fator
Descrição
Peso
customizações/melhorias – melhorias do ponto de F1
Inclui requisito de segurança
1.5
vista do negócio da 3w – para os componentes: F2
Facilidade de mudança
1.0
JButton, JCheckBox, JComboBox, JLabel, JMenu, F3
Reuso de código
1.0
JPanel (implementando layout managers) e F4
Envolve acesso de terceiros
1.0
JSpinner. Além desses foi escrita uma nova estrutura F5
Portabilidade
2.0
para JList, aqui chamada de JListUniverse e para a
Tabela 3. Complexidade técnica - Framework
Universe
JTable, nomeada de JTableUniverse.
Um ponto importante, simplificação de
código, a ser destacado na parte desktop da
framework pode ser apontado na JTableUniverse, no
código abaixo a mesma estrutura é criada, entretanto
a velocidade de criação é muito maior usando a
Universe Framework.
Sem a framework
String[] columns;
Object[][] data;
Fator
F1
F2
F3
F4
F5
Descrição
Inclui requisito de segurança
Facilidade de mudança
Reuso de código
Envolve acesso de terceiros
Portabilidade
Peso
0.5
0.5
0.5
1.0
0.5
O desenvolvimento dessa primeira etapa foi
concluído após dois meses de trabalho se utilizando
apenas duas horas de dias úteis, um custo de
funcionário de cerca de R$1.500,00. Com essa
primeira fase já foi possível reescrever o ERP usado CHOMSKY Noam The Minimalist Program. MIT
em uma loja de vinhos e iniciado um projeto de Press, 1995
clínicas odontológicas.
MANZANO, José Augusto Estudo Dirigido - SQL
(Structured Query Language). Editora Érica,
VI. Conclusão
2002.
Ao fim do processo de pesquisa e
Carlos;
RINALDIN
Diovane;
desenvolvimento, uma vez que a empresa é pequena KURETZKI,
BORTOLETO
Silvio;
ANGÉLICO
Thiago
T.
e não dispõe de uma área apenas para essa tarefa, as
questões foram resolvidas, novas foram levantadas e Ontologia na representação de metamodelos para
outras situações acabaram vindo a tona, mesmo sem datamining: estudo de caso Hospital da Cruz
Vermelha. SEGeT 2007.
serem esperadas.
Houve um maior contato e aprofundamento com
a linguagem Java, trouxe soluções que não estavam
sendo buscadas, como por exemplo o controle de
sessão por usuário na aplicação, mas que eram
problemas a tempo enfrentados.
KARNER G. Resource Estimation for Objectory
Projects.
Objectory
Systems
SF
AB,
http://www.bfpug.com.br, 1993 BFPUG – Brazilian
Function Point Users Group.
http://delphi.about.com/cs/azindex/a/dhistory.htm –
Acessado
em 29 de janeiro de 2010.
As questões que ilustraram a entrevista entre os
responsáveis pela mudança na empresa também http://www.php-gtk.com.br/home – Acessado em 29
foram validadas pois o trabalho se adequou a essas de janeiro de 2010.
necessidades:
Site de compra da Embarcadero:
1 - Quais os grandes motivadores para a adoção de
http://shop.codegear.com/dr/v2/ec_Main.Entry17C?
uma framework?
SID=39696&SP=10034&CID=0&P
Padronização de layouts, simplificação do
desenvolvimento através de componentes mais ID=989232&PN=1&V1=1648193 – Acessado em
poderosos e com melhor documentação, geração de 29 de janeiro de 2010.
código automático a fim de evitar que mais pessoas Site
de
compra
da
Microsoft:
utilizem critérios próprios de codificação.
https://om2.one.microsoft.com/opa/Product.aspx?St
2 - De que forma foi feita a seleção de ferramentas oreID=0a64ab52-0aa0-414a-904be/ou linguagens para o desenvolvimento da 69eb320c3602&LocaleCode=en-us
ferramenta?
Palestra do Prof. Fernando Lozano – 2004
Através de uma pesquisa indicativa onde fatores http://pt.wikipedia.org/wiki/Mono_(projeto)
–
como custo de aquisição, manutenção e treinamento Acessado em 29 de janeiro de 2010.
são cruciais e tempo de aprendizado segue em
http://www.mono-project.com/Main_Page
–
seguida no nível de importância para a escolha.
Acessado em 29 de janeiro de 2010.
VII. Referências
http://jobcenter.dallasnews.com/sharedcontent/caree
BARTIÉ, Alexandre Garantia Da Qualidade De rs/workingnews/081003ccCareersTechmain.11b0f10
Software. Campus, Rio de Janeiro, 2002.
1b.html
BOSKOVIC Zelejko; LASNIK Howard Minimalist http://community.jboss.org/wiki/HowToconfigureth
Sintax: The Essential Readings. Blackwell eC3P0connectionpool
Publishing Ltd., 2007.
http://pt.wikipedia.org/wiki/CRUD
CAMPOS, Vicente Falconi. Qualidade total:
padronização de empresas. INDG Tecnologia e http://java.sun.com/j2ee/tutorial/1_3fcs/doc/JSPTags.html
serviços, Niterói, 2004.
Download

Estudo de caso do desenvolvimento de uma framework