Este artigo apresenta a utilização e o desenvolvimento de frameworks, destacando sua grande capacidade de agilizar o desenvolvimento e a manutenção de softwares corporativos. Depois de mostrada a teoria, será mostrado passo a passo como construir um framework.
Em que situação o tema é útil:
Os desenvolvedores que desejam agilizar o desenvolvimento e a manutenção de softwares encontrarão neste artigo uma forma para atingirem esses objetivos. Além disso, aqueles que querem construir seu próprio framework verão por onde começar.
Construindo Frameworks:
Os frameworks são
programas incompletos que provêm funcionalidades gerais, porém configuráveis,
para diversos programas. Seu objetivo é promover a produtividade e facilitar a
manutenção dos programas que o fizerem uso. Desde o Java 5, temos uma nova
alternativa para se criar uma maneira fácil de configuração desses frameworks:
Annotations. Aqueles que fizerem uso dessas configurações poderão
interpretá-las em tempo de execução para tomar decisões e fornecer as
funcionalidades desejadas através de Reflection. Os frameworks
conhecidos em Java fazem uso de XML e Annotations para serem configurados e
Reflection para interpretar as configurações. Este artigo mostra toda a teoria
por cima dos frameworks e como criar um usando as tecnologias citadas.
Autores: Fernando Camargo e Gustavo Christino
Quando softwares corporativos desenvolvidos por uma empresa são observados, verificam-se muitas funcionalidades em comum. Essas, por mais que sejam iguais, frequentemente são desenvolvidas de maneiras diferentes ou possuem seu código fonte duplicado em cada sistema desenvolvido. Pode-se exemplificar essa situação com softwares de uso interno de uma empresa desenvolvedora que necessitam fazer acesso a uma base de dados, onde se encontram reunidas todas as informações sobre cada funcionário. A criação de código para realizar o acesso de forma controlada é importante, e caso não exista uma forma única para acessar essa base de dados, a cada novo sistema haverá a necessidade da criação de um novo código, processo que dificultará cada vez mais a manutenção de todos os sistemas que acessem a base.
Além do problema citado, o qual dificulta a manutenção dos sistemas, fica evidente que ocorre o desperdício de tempo da(s) equipe(s) que precisa(m) realizar o desenvolvimento de cada novo sistema. Estes terão funcionalidades que já foram implementadas sendo recriadas, sem nenhum tipo de reuso. Uma solução errônea comumente adotada é a prática de se copiar o código de outros sistemas, o que causa grandes problemas de manutenção no futuro.
O que se pode observar nesse cenário são dois problemas a serem resolvidos: a baixa reutilização de código, o que causa impacto na produtividade; e os problemas de manutenção de vários sistemas. Esses problemas provocam grandes prejuízos às empresas da área de tecnologia da informação e devem ser encarados com seriedade. O que muitas dessas empresas não sabem é que é possível ampliar a produtividade e, ao mesmo tempo, facilitar a manutenção dos sistemas. Isso é possível através do investimento em frameworks.
Segundo Fayad et al (1999), os frameworks têm capturado uma grande atenção nos últimos anos, uma vez que eles alavancam, em termos práticos, intensos investimentos de capital através da reutilização e do alto nível de interfaces de programação de aplicações, para que aplicações possam ser desenvolvidas dez vezes mais rápido.
Pree (1999) cita que é extensa a literatura sobre o uso de frameworks, o que mostra sua importância como ferramenta de reutilização. Eles podem ser vistos como aplicações incompletas que devem ser especializadas para o desenvolvimento de aplicações concretas. Outra característica importante dessa tecnologia é que o fluxo de controle da aplicação é invertido, isto é, não é responsabilidade do engenheiro de aplicações determinar esse fluxo, mas do próprio framework.
Definida sua importância no desenvolvimento de aplicações, pode-se dizer que este artigo focará na teoria de frameworks orientados a objetos, mas não se limitará a isso. Também será dada a direção com exemplos práticos de como construí-los usando a linguagem Java. Além disso, será discutido sobre os principais frameworks disponíveis no mercado, inclusive alguns deles que viraram padrão no desenvolvimento Java.
Este artigo tem por finalidade incentivar as empresas da área de desenvolvimento a investirem na construção de frameworks corporativos, o que contribuirá muito para a produtividade e manutenção de suas aplicações. Quanto mais difundido esse assunto, maior será a evolução da área de desenvolvimento de softwares.
Frameworks orientados a objetos
No paradigma da programação orientada a objetos, tem-se o objetivo de promover a alta coesão e o baixo acoplamento. Isso faz com que as classes sejam determinadas com objetivos específicos, ao invés de repetir o mesmo código em vários pontos distintos. Essa centralização do código em funções específicas facilita seu reaproveitamento e, consequentemente, a manutenção de uma determinada aplicação.
O conceito de frameworks estende essa reutilização ainda mais. Não apenas para o código de uma determinada aplicação, mas para várias delas. Cria-se um programa incompleto que servirá de base para vários outros, o que reduz o tempo de criação e facilita a manutenção do software. Qualquer erro encontrado no framework será corrigido apenas uma vez para todos os programas que foram criados a partir dele, ao invés de se fazer uma correção em cada um deles.
Seus benefícios são grandes, mas não é fácil fazer e manter um. O investimento em seu desenvolvimento deve ser feito com foco no retorno futuro. Como foi dito, o framework é um programa incompleto que servirá de base para diversos outros programas. Isso quer dizer que ele deve ser geral o suficiente para abranger diversos programas e também específico o suficiente para atender às necessidades de cada um. Devido à dificuldade de sua construção, ele deve ser entendido como um projeto e não como parte de um determinado programa. A necessidade em se gastar tempo em planejamento e em desenvolvimento é o motivo que desencoraja algumas empresas a desenvolvê-los. A maioria das empresas aloca seus empregados em vários projetos consecutivos e nunca encontra tempo para a construção de um framework, ferramenta que seria proveitosa nesse contexto.
O que se pode ver é a necessidade da criação dessa ferramenta sendo contrariada pela falta de investimento por parte das empresas. Isso faz com que a comunidade, em geral, crie seus próprios frameworks. Alguns são livres para a utilização, outros são vendidos para as empresas interessadas. Esses frameworks estão presentes em cada linguagem de programação, sendo que em cada uma, existem alguns que se destacam. No caso do Java, alguns se destacaram tanto a ponto de se tornarem padrão definido pela Sun e, nos tempos atuais, pela Oracle.
Os desenvolvedores mais experientes em Java já devem possuir pelo menos conhecimento básico em alguns desses frameworks, a saber: JSF (framework que se tornou padrão para o desenvolvimento web), JPA (padrão criado a partir dos frameworks de mapeamento objeto-relacional existentes, como o Hibernate), Spring (framework de código livre com diversas funções, como injeção de dependências e AOP), entre outros. Essas soluções disponibilizadas pela comunidade mostram a importância dos frameworks no desenvolvimento de software.
Mesmo usando os frameworks disponibilizados pela comunidade, a criação de frameworks internos nas empresas também é importante, pois cada uma tem sua necessidade e seus padrões de desenvolvimento. Como foi dito, uma empresa pode ter diversas funcionalidades comuns entre vários sistemas desenvolvidos por ela. Para cada grupo de funcionalidades em comum, pode-se avaliar a possibilidade de construção de um framework. Também, pode-se construir um pensando no futuro, com o fim de aumentar sua produtividade.
Frameworks e bibliotecas
Uma forma comum de reutilização de código no paradigma da programação orientada a objetos é a utilização de bibliotecas de classes. Essas bibliotecas geralmente possuem algumas soluções implementadas para resolver um determinado problema. Geralmente são classes independentes com métodos estáticos que retornam algum resultado. Nesse ponto que se pode perceber uma das diferenças entre bibliotecas e frameworks: enquanto a biblioteca é um conjunto de classes utilitárias isoladas, o framework é um conjunto de classes interligadas que colaboram para um determinado fim.
Em um programa criado sem ...