agilidade no desenvolvimento de software com reuso

Propaganda
AGILIDADE NO DESENVOLVIMENTO DE SOFTWARE COM REUSO SISTEMÁTICO
Marcos Aurélio Pedroso Leandro, Marcos Antonio Quináia (Orientador - Dep. de
Ciência da Computação/UNICENTRO), e-mail: [email protected]
Palavras-Chave: reuso, reuso sistemático, agilidade.
Resumo: Este trabalho mostra como a agilidade no desenvolvimento de software
pode estar diretamente ligada ao reuso. Para isto são comparados dois protótipos
construídos para uma mesma aplicação, sendo um deles sem reuso e outro com
reuso. Esta comparação procura esclarecer as principais características do ciclo
de vida de um software quando este é feito com reuso sistemático.
Introdução
O reuso propõe o desenvolvimento de sistemas a partir de produtos de software
preexistentes, de modo que semelhanças entre requisitos e arquiteturas de diversos
sistemas possam ser melhor exploradas. A identificação dessas semelhanças pode
resultar, entre outras coisas, significativas reduções de custo e tempo em longo prazo,
isto é, aumento de produtividade para as empresas desenvolvedoras. Além disso, a
cada uso do produto, sua eficiência e validade são verificadas, garantindo, assim, maior
qualidade e redução de erros nos produtos finais [2].
Estas características deixam claro que o desenvolvimento de software não só
deve atender a demanda de hoje como também estar preparado para as mudanças
futuras. O reuso, então, pode ser encarado como um forte aliado de quem busca ser
ágil.
Para demonstrar este ganho na prática foram feitos dois protótipos, ambos para
a mesma aplicação, onde um deles foi construído sem reuso e o outro com reuso. A
partir destes dois protótipos, traçou-se um comparativo destacando as principais
diferenças encontradas durante e após o desenvolvimento.
Materiais e Métodos
Esta seção descreve as origens do reuso e suas principais técnicas, bem como a
agilidade e como este conceito é entendido dentro do escopo deste trabalho.
Desde 1967 o termo reuso vem se desenvolvendo como um novo paradigma da
área de Engenharia de Software. A partir daí esse conceito começou a ter grande
importância e é altamente reconhecido pelas empresas desenvolvedoras de software.
Existem alguns custos e problemas associados com o reuso, que podem inibir a
introdução desse método e significar que as reduções no custo total de
desenvolvimento serão menores que as previstas. Essas dificuldades significam que o
reuso sistemático não acontece por acaso, mas tem de ser planejado e introduzido por
meio de um programa de reuso empregado por toda a organização. Isso não significa
dizer que o reuso não sistematizado não caracterize reuso, porém, a aplicação
desordenada do reuso torna os procedimentos sem resultados efetivos e requer que a
empresa seja bem gerenciada e madura [2].
Quanto ao desenvolvimento ágil, é importante ressaltar que existe um grande
empenho em pesquisas que resultam em metodologias de desenvolvimento, e estas
são cada vez mais difundidas e usadas nos mais diferentes ambientes organizacionais.
Porém, a essência desta habilidade pode ser resumida no seu conceito: “a agilidade é a
característica de quem se adapta rapidamente às mudanças, devido à flexibilidade e
equilíbrio” [3].
É através desta definição de agilidade que pode-se traçar um paralelo entre ser
ágil e fazer reuso. Nota-se uma intersecção entre estes conceitos, ambos buscam a
flexibilidade no desenvolvimento de novos sistemas.
Para este trabalho, foram usadas algumas técnicas de reuso, as quais são
mostradas no decorrer desta seção. São apresentadas TOOs (Técnicas Orientadas a
Objeto), Padrões de Projeto e Frameworks.
Dentre as TOO utilizadas, destacam-se: Herança, Polimorfismo e Reescrita de
Métodos. Estas técnicas são constantemente utilizadas, mesmo que não caracterize a
sistematização do reuso. Elas foram utilizadas no desenvolvimento dos dois protótipos,
o que leva a crer que neste ponto os protótipos se equivalem.
Os padrões de software tiveram maior atenção no desenvolvimento do protótipo
com reuso. Dentre eles destacam-se o MVC (Modelo-Visão-Controlador) e o DAO (Data
Access Object).
MVC é um padrão arquitetural e por isso foi escolhido para ser a fundação do
desenvolvimento da aplicação. O uso deste padrão trouxe uma nova perspectiva para o
desenvolvimento, já que possibilitou a divisão da aplicação em camadas. As vantagens
de se ter uma arquitetura baseada em camadas é porque facilita tanto na hora do
desenvolvimento como, principalmente, na manutenção de um sistema.
O padrão DAO torna possível isolar totalmente a aplicação da responsabilidade
de persistir os dados. Colocar código SQL dentro das classes de lógica além de
dificultar a manutenção do código, é algo nem um pouco elegante. A idéia é remover o
código de acesso ao banco de dados das classes de lógica e colocá-lo em uma classe
responsável pelo acesso ao mesmo. Assim o código de acesso ao banco de dados fica
em um lugar só, ficando mais fácil dar manutenção ao mesmo.
Com relação aos frameworks, foram utilizados dois: Hibernate e Spring.
O Hibernate abstrai o código SQL da aplicação e permite escolher o tipo de
banco de dados enquanto o programa está executando, permitindo mudar sua base
sem alterar nada no seu código Java [1].
Spring é um framework open-source criado para direcionar a complexidade no
desenvolvimento de aplicações. Qualquer aplicação Java pode se beneficiar do Spring
em termos de simplicidade, testabilidade e flexibilidade. Este framework chamou
atenção porque possui uma implementação para o MVC, integra o Hibernate que por
sua vez dá apoio ao desenvolvimento com o DAO.
Resultados e Discussão
As diferenças entre o protótipo sem reuso e com reuso, são apresentadas a
seguir.
Ao desenvolver o primeiro protótipo, sem reuso, a modelagem feita levou ao uso
do padrão MVC, uma vez que separou as responsabilidades da aplicação conforme
este padrão propõe. Portanto não houve diferença entre as aplicações neste aspecto.
Para o acesso ao banco de dados, no protótipo com reuso, foi adotado o padrão
DAO. Dessa forma a aplicação não mais fica “amarrada” às atividades desenvolvidas
pelo banco de dados. Ao contrário disso, o protótipo sem reuso possui um forte
acoplamento entre a lógica de negócios e o banco de dados. O problema do forte
acoplamento pode ser visto quando a base de dados precisar ser trocada, ou até
mesmo se uma nova base for adicionada para trabalhar juntamente com a base
existente. Neste caso a aplicação precisará ser alterada também.
Além das camadas que o MVC separa, uma nova camada foi definida para o
acesso aos dados. É entre esta camada e a camada de negócios (Modelo no MVC) que
o padrão DAO deve agir, servindo de interface entre aplicação e banco de dados. Mais
uma vez, a aplicação feita sem reuso, perde em questão de performance por manter o
forte acoplamento.
Com relação às técnicas de reuso, os frameworks foram também adotados, com
a finalidade de deixar a aplicação ainda mais robusta.
Foi utilizado o Hibernate como Sistema Gerenciador de Banco de Dados. Para a
aplicação como um todo, o padrão Spring mostrou-se um grande aliado e foi, portanto,
também adotado no desenvolvimento. Todo o esforço envolvido no desenvolvimento de
tabelas de banco de dados e seus relacionamentos, no protótipo sem reuso, foi
poupado no desenvolvimento com reuso devido ao uso do Hibernate. O Spring, no
entanto, colaborou diminuindo o acoplamento entre as classes. Toda a parte de
instanciação de objetos fica sob responsabilidade do Spring, além de implementar o
MVC e integrar o Hibernate.
Conclusões
Cada técnica utilizada contribui de alguma forma, até mesmo complementando
outras utilizadas anteriormente.
Neste trabalho, a agilidade pode ser notada quando uma grande mudança
aconteceu e o sistema adaptou-se rapidamente, sem precisar realizar grandes
alterações no código.
O reuso pode ser feito de várias formas, por isso é fundamental ter conhecimento
sobre cada uma dessas formas para que o reuso seja mais efetivo.
Desenvolvedores que pensam em seus projetos com reuso estão preocupados
em produzir software de qualidade que possa ser reutilizado mais tarde por eles
mesmos ou por outros desenvolvedores.
Referências Bibliográficas
[1] CAELUM, Empresa de treinamentos Java, disponível na web em:
http://www.caelum.com.br, acessado em: 10/09/2007.
[2] EDUARDO, A.; JORGE, M.; FERNANDO, P.o; BRITTO, R.; GOMES, Z.
Reusabilidade.
Disponível
na
web
em:
http://www.dei.unicap.br/~almir/seminarios/2002.2/ns06/Reusabilidade/metricas.html.
Acessado em: 22/04/2007.
[3]
RETAMAL, Adail Muniz, Metodologias de Desenvolvimento: Histórico e
Comparação, disponível na web em: http://www.heptagon.com.br/?q=node/5,
acessado em 16/06/2007.
Download