Tematec
Framework de desenvolvimento – visão geral
O AUTOR
|
ANANDA DE MEDEIROS MACIAS Project Manager Professional (PMP), é Especialista em Sistemas Distribuídos pela UnB e Bacharel em Ciências da Computação pela UFAL. Trabalha no Serpro/Sede desde 2005. Atuou na equipe de definição tecnológica do novo passaporte do Departamento de Polícia Federal e do Ministério das Relações Exteriores, entre outros. Atualmente, é líder do projeto de criação do barramento de integração corporativo Enterprise Service Bus (ESB) na coordenação de Tecnologia do Serpro. |
INTRODUÇÃO
A necessidade de construir software de forma cada vez mais ágil e a exigência da criação de produtos com mais qualidade fazem com que o processo de desenvolvimento de software seja apoiado pelo reúso de estruturas pré-existentes, por exemplo, frameworks. Vários frameworks podem ser usados na construção de um único aplicativo de software. Para facilitar a escolha e o uso de vários frameworks durante o desenvolvimento de software e garantir a integração, evolução e manutenção dos mesmos, foi criada uma estrutura chamada Framework Integrador, que visa aumentar a padronização e produtividade no desenvolvimento de software.
FRAMEWORK – VISÃO GERAL
Framework ou arcabouço de classes é uma estrutura muito importante na criação de arquiteturas de software de aplicações corporativas. Framework [3] é definido como sendo um projeto formado por um conjunto de classes que cooperam entre si e é reutilizável por um domínio de software determinado. Uma aplicação específica utiliza um framework por meio da especialização de suas classes abstratas.
Também pode ser visto como uma mini arquitetura reutilizável, que fornece uma estrutura genérica e comportamento para uma família de abstrações de software, além de um contexto que especifica suas colaborações e o seu uso dentro de um dado domínio.
O principal propósito de um framework é ajudar no processo de desenvolvimento de aplicações. Ele permite que as aplicações sejam desenvolvidas mais rapidamente e mais facilmente e deve resultar em uma aplicação de qualidade superior. A Figura 1 mostra uma hierarquia típica de uma aplicação Java Web baseada em framework.
Um framework define parâmetros de projeto; a forma como é realizada a divisão em classes e objetos e suas responsabilidades; a maneira como colaboram entre si, e o fluxo de controle, ditando, assim, a arquitetura de software das aplicações que os utilizam [3]. Além disso, fornece padrões de projetos – estruturas essenciais para o desenvolvimento de projetos de aplicações de software e também a espinha dorsal – e o container para os componentes criados nas aplicações, que irão funcionar dentro delas.
Como os frameworks absorvem as decisões de projeto que são comuns ao seu domínio de aplicação, eles priorizam a reutilização de projetos ao invés da reutilização de código, apesar de incluírem classes concretas que podem ser imediatamente utilizadas. [3]
O uso de frameworks e a reutilização em nível de projeto implicam em uma inversão de controle entre um código específico de aplicação e o software na qual ela se baseia. No caso de aplicações que não usam frameworks e sim bibliotecas ou DLLs (Dynamic-link library), o código principal é construído na aplicação que realiza chamadas ao trecho que se deseja utilizar. Já no caso de aplicações que utilizam frameworks, o trecho principal reutilizável está nele, que chama o código escrito pelo desenvolvedor, como mostrado na Figura 2.
Os frameworks podem ser classificados, quanto à forma onde são utilizados, ou seja, quanto ao seu escopo, em três categorias: dos frameworks de middleware de integração; dos frameworks de aplicação e dos frameworks especialistas utilizados na infra-estrutura dos sistemas de software [2], descritos a seguir:
1 Frameworks de middleware de integração são utilizados para realizar a integração entre aplicações e componentes distribuídos, com a finalidade de esconder o baixo nível de comunicação entre componentes distribuídos, e conseqüentemente possibilitar que os desenvolvedores trabalhem de forma semelhante à realizada em ambientes não distribuídos. Um exemplo de framework desta categoria é o Java RMI (Remote Method Invocation).
2 Frameworks de aplicação são aqueles construídos para um domínio de aplicação específico, como por exemplo, domínios de comércio, telecomunicações e financeiro. Frameworks desta categoria necessitam serem construídos por especialistas no domínio de aplicação. [2]
3 A terceira categoria de frameworks, os especialistas de infra-estrutura, são aqueles cuja principal função é apoiar o desenvolvimento de aplicações através da disponibilização de estruturas que facilitam o uso de dispositivos e recursos computacionais, como por exemplo, a realização de persistência – framework Hibernate; ou a manipulação de interface com o usuário – framework JSF (Java Server Faces). Frameworks desta categoria são amplamente utilizados para a criação de aplicações baseadas na plataforma Java Enterprise Edition (JEE).
FRAMEWORK INTEGRADOR
A adoção do estilo arquitetural com base em camadas para a construção de aplicações de software tem se tornado cada vez mais popular. A divisão em camadas possibilita a definição precisa de responsabilidades para cada camada em um software e impõe uma disciplina de comunicação entre elas, onde uma camada deve solicitar serviços de uma camada abaixo. A Figura 3 mostra um modelo de camadas com a divisão lógica dos aspectos de um sistema [1].
A responsabilidade de uma camada de software pode ser implementada, por meio do uso de padrões de projetos e de frameworks de infra-estrutura ou especialistas. Existe, no mercado, uma grande quantidade de frameworks open source disponíveis, que solucionam problemas de cada camada específica, tornando a escolha da implementação mais apropriada uma atividade onerosa e não padronizada. Além disso, a integração entre as camadas de uma aplicação se torna uma atividade dispendiosa e de difícil evolução para o desenvolvedor.
Para solucionar esses problemas surgiu o conceito de Framework Integrador, que realiza a integração entre vários frameworks especialistas e garante a evolução, manutenibilidade e a compatibilidade entre cada um deles. Assim, facilita a construção de aplicações e o aumento de produtividade das equipes de desenvolvimento.
O Framework Serpro para aplicações Java tem por objetivo implementar o conceito de Framework Integrador. Ele utiliza e integra as tecnologias e frameworks mostrados na Figura 4, além de oferecer vários wizards para auxiliar na criação dos projetos.Como exemplo de tecnologias e frameworks que são utilizados pelo framework Serpro, estão, entre outros, os plugins para a IDE Eclipse que auxiliam a criação de projetos com uma estrutura padrão e componentes básicos de uma aplicação. Na camada de interface com os usuários, é utilizado o framework JSF. Outro framework usado é o Hibernate, para realizar o mapeamento Objeto/Relacional, ou seja, a persistência, de forma “automatizada” e transparente, de objetos em uma aplicação Java para tabelas em um banco de dados relacional. Já o desenvolvimento de relatórios é suportado pela utilização da ferramenta JasperReporter. As tecnologias e frameworks que integram o Framework do Serpro são open source.
CONCLUSÃO
O uso de frameworks a partir de um Framework Integrador faz com que o desenvolvimento de software seja focado nas regras de negócio do cliente, não sendo necessária a preocupação com a implementação de requisitos de infra-estrutura, como a guarda de dados, a comunicação entre ambientes, segurança etc. O programador deve se preocupar, basicamente, com os objetos de negócio e da apresentação.
Outro benefício do uso de Framework Integrador é tornar a atividade de definição da arquitetura de software mais fácil de ser realizada, padronizando as estruturas e a maneira como os softwares são construídos. Além disso, diminuindo a curva de aprendizado da tecnologia a ser utilizada e aumentando a qualidade dos produtos resultantes.
REFERÊNCIAS
[1] Manual do Framework.
[2] FAYAD, M. E.; SCHIMIDT & D. C.; JOHNSON, R. E.. Building application frameworks: object-oriented foundations of framework design. New York: J. Wiley, 1999.
[3] GAMMA, Erich; HELM, Richard; JOHNSON, Ralph “et al.” Design patterns: elements of reusable object-oriented software.
[4] NASH, Michael. Java Frameworks and Components: Accelerate Your Web Application Development. Cambridge University Press, 2003.
Hierarquia típica de aplicação Java Web, baseada em framework
Inversão de controle no reuso
Modelo de camadas de uma aplicação
Tecnologias e frameworks relacionados
