Frameworks e seus Benefícios no Desenvolvimento de Software Framework and its Beneftis in Software Development Marco y su Beneftis en Desarrollo de Software Antonio Henrique dos Santos1 Nelson Ribeiro Carvalho2 Resumo: Este trabalho apresenta as vantagens em relação à utilização de frameworks Open Source, com práticas de reutilização de códigos, possuindo base em programação Orientada a Objetos (OO) e ênfase nas melhores metodologia de desenvolvimento de softwares, em conjunto com os padrões de tecnologias Java Enterprise Edition. Haverá um foco maior no Framework Jaguar, onde uma aplicação será desenvolvida utilizando arquitetura de software. Afim de possuir melhores resultados como custo-benefício e diminuição de erros. Palavras-chave: Frameworks. Java Enterprise Edition. Open Source. Java Server Faces. Hibernate. Jaguar. Abstract: This paper presents the advantages over the use of Open Source frameworks with practical reuse of code, having basic programming in Object Oriented (OO) methodology and emphasis on better software development, together with the patterns of technology Java Enterprise Edition. There will be a greater focus on the Framework Jaguar, where an application will be developed using software architecture. In order to have better results as cost-benefit and minimize errors. Keywords: Frameworks. Java Enterprise Edition. Open Source. Java Server Faces. Hibernate. Jaguar. Resumen: Este artículo presenta las ventajas sobre el uso de marcos de código abierto con la reutilización de código práctico, que tiene la programación orientada a objetos de base en la metodología y el énfasis en un mejor desarrollo de software (OO), junto con los patrones de la tecnología Java Enterprise Edition. Habrá un mayor enfoque en el Jaguar Marco, donde se desarrollará una aplicación que utiliza la arquitectura de software. Con el fin de tener mejores resultados como costo-beneficio y minimizar los errores. Palabras clave: Marcos.Java Enterprise Edition. Open Source. Java Server Faces. Hibernate. Jaguar. 1 INTRODUÇÃO Este artigo tem como tema Framework e seus benefícios para desenvolvimentos de software nas empresas em um cenário das empresas que utilizam a Web. As empresas do mercado de tecnologia da informação investem cada vez mais em inovações tecnológicas porém, a qualificação dos profissionais não acompanha o mesmo ritmo. A falta de criatividade e sinergia entre tecnologia e negócios também impede as empresas de alavancarem seus lucros e objetivos. Uma vez que, o trabalho com sistemas “tradicionais” e a falta de planejamento estratégico e inovador, provoca a estagnação e impede as empresas visualizarem novas oportunidades e tendências de mercado (ALVIM, 2010). Nesse sentido Alvim (2010, p.12) afirma: 1 Graduando em Sistemas da Informação pela faculdade Inforium de Tecnologia. E-mail: [email protected] 2 Especialista em Desenvolvimento de Software e Professor do curso de Graduação em Sistemas da O framework é um conjunto de classes que colaboram entre si proporcionando melhores práticas de desenvolvimento e diminuição à repetição de tarefas. Além disso, evita variações de “soluções diferentes para um mesmo tipo de problema”. O que facilita a reutilização e customização dos códigos. Porém, os frameworks também podem atrasar o trabalho, pois os desenvolvedores, testers e outros envolvidos no processo de desenvolvimento tem que dominar não apenas a linguagem de programação. Mas também a utilização do framework. Para se trabalhar com um framework específico (ou qualquer tipo de tecnologia) é necessário obter conhecimento técnico, não somente para uso e acesso as informações. Mas também, aplicar as especialidades que o produto em fase de desenvolvimento necessita (PRESSMAN, 2006). Outro fator considerável é que o projeto pode não seguir os padrões do framework, levando a criar adaptações no projeto. Isto pode gerar mais trabalho, que implica em mais tempo e perde qualidade, pois não se enquadra a padrões definidos. Assim, o objetivo geral de artigo é abordar a eficácia dos frameworks Open Source no desenvolvimento de aplicações JEE estabelecendo comparações entre um projeto de software que utiliza framework e outro que não utiliza. Estas comparações serão para verificar o grande benefício que um projeto que utiliza frameworks pode trazer ganhos de qualidade e produtividade .A obtenção de boa estrutura para implementação, os recursos diversos que proporcionam a facilidade para construir um projeto de software e o cumprimento pleno da documentação, ajuda a diminuir custos estabelecidos e aumenta a produtividade dos desenvolvedores em relação à construção do projeto de software. Além disso, o reuso de componentes, aplicação, objetos e funções, possibilitam aos projetistas de software o reaproveitamento do conteúdo utilizado em outros projetos que já foram construídos e evita o trabalho de calcular a maior parte das estimativas relacionadas ao novo projeto. Com base no conhecimento da equipe de desenvolvimento, das tecnologias e quais os recursos que podem ser realmente utilizados. Diante do exposto, a pergunta orientadora do estudo é no sentido de verificar se o uso de framework no desenvolvimento de software contribui para agilizar os processos ágeis e a lucratividades das empresas. Justifica-se esta pesquisa tendo em vista em relação desenvolvimento de Software o framework é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. Os frameworks ajudam bastante as comunidades de desenvolvimento de software porque já trazem, prontas e encapsuladas muitas coisas que são muito trabalhosa de implementar do zero e que precisa ser refeita sempre. 2 ABORDAGEM TEÓRICA Este trabalho aborda a eficácia dos frameworks Open Source no desenvolvimento de 3 aplicações JEE3 e procura estabelecer comparações (bibliográficas e em estudo de caso) entre um projeto de software que utiliza framework e outro que não utiliza, e qual o auxilio no trabalho, na economia de tempo e recursos. Estas comparações procuram comprovar o grande benefício que um projeto que utiliza frameworks pode trazer ganhos de qualidade e produtividade (ALVIM, 2010). A obtenção de boa estrutura para implementação, os recursos diversos que proporcionam a facilidade para construir um projeto de software e o cumprimento pleno da documentação, ajuda a diminuir custos estabelecidos e aumenta a produtividade dos desenvolvedores em relação à construção do projeto de software (SOMMERVILLE, 2008). Além disso, o reuso de componentes, aplicação, objetos e funções, possibilitam aos projetistas de software o reaproveitamento do conteúdo utilizado em outros projetos que já foram construídos e evita o trabalho de calcular a maior parte das estimativas relacionadas ao novo projeto. Com base no conhecimento da equipe de desenvolvimento, das tecnologias e quais os recursos que podem ser realmente utilizados. Assim, busca-se apresentar nesta seção as principais características de um processo de desenvolvimento de software, o surgimento das ferramentas Open Source, o conceito de frameworks e quais foram utilizados para a construção do estudo de caso. a) Frameworks Segundo Willemann e Ibarra (2007, p. 41), o framework pode ser definido como: Um framework ou arcabouço é uma estrutura de suporte definida em que outro projeto de software pode ser organizado e desenvolvido, quando se analisa o conceito no âmbito do desenvolvimento de software. Um framework pode incluir programas de suporte, bibliotecas de código, linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes componentes de um projeto de software. Conforme Willemann e Ibarra (2007.p.84), para que um projeto de software seja considerado um framework, ele deve respeitar algumas características, como: a) Ser reutilizável, para que seja abrangente aos padrões metodologia de desenvolvimento de aplicações orientada a objetos. 3 da Sigla de Java Enterprise Edition – Antigo J2EE (Java 2 Plataform Enterprise Edition). Segundo Deitel b) Facilitar o desenvolvimento de sistemas, para que a sua utilização seja benéfica ao desenvolvimento de uma aplicação. c) Possuir boa documentação, pois quem utiliza o framework precisa de formas eficazes e esclarecedoras sobre como utilizá-lo de uma maneira eficiente e correta, para que possa ajudar o desenvolvimento de um determinado sistema. d) Atender com exatidão o que foi proposto em sua documentação e ser eficiente no auxilio a criação de aplicações com a linguagem de programação. b) Desenvolvimento de software O processo de desenvolvimento de um software implica na conversão da especificação em um sistema executável. Através de um projeto que passa por diversas iterações, o software vai adquirindo suas características com base na análise de requisitos em conjunto com o planejamento do sistema. “Um projeto de software é a descrição da estrutura de software a ser implementada, dos dados que são parte de um sistema, das interfaces entre os componentes do sistema e, às vezes, dos algoritmos usados”( Sommerville 2008, p. 50). Os frameworks de maneira geral precisam de uma boa estrutura, pois seu principal objetivo é simplificar trabalhos, tanto para usuários quanto desenvolvedores. E uma das principais características dos frameworks que utilizam o paradigma da orientação a objetos, é trabalhar com a reutilização de códigos. Além disso, o trabalho com subsistemas exige que o framework possua controle dos mesmos e também realize a identificação e comunicação dos componentes do sistema. Esta é a denominação para projeto de arquitetura. “O projeto de arquitetura é um processo criativo em que se tenta estabelecer uma organização de sistema que satisfaça os requisitos funcionais e não funcionais do sistema”. (Segundo Sommerville 2008, p.163). Por trabalhar com as melhores práticas e eliminar trabalhos desnecessários, os frameworks possuem papel importante para o desenvolvimento de software. Alvim (2010) explica que o bom framework interage com o sistema de forma agradável, proporcionando altos índices de produtividade e qualidade para o projeto. c) Hibernate Conforme Bauer e King (2005), o desenvolvimento de software utilizando o paradigma Orientado a Objetos e Banco de Dados Relacionais pode ser complexo e Os custos de desenvolvimento são significativamente altos, devido a uma incompatibilidade entre o paradigma relacional dos dados com sã representação em objetos para ambientes Java. O Hibernate é uma solução Object/Relational Mapping que se refere à técnica de mapeamento de dados entre uma representação do modelo de objeto em uma representação de dados do modelo relacional. Conforme Bauer e King (2005), o Hibernate mede a interação do aplicativo com o banco de dados relacional. Além disso, o Hibernate é um framework não intrusivo. Ou seja, permite que o desenvolvedor faça suas modificações em relação a modelos de negócio e classes persistentes, de acordo com suas necessidades. Pois, o Hibernate integra-se facilmente as adaptações no aplicativo e também pode trabalhar com aplicativos novos. Sem a necessidade de grandes alterações no aplicativo inicial. Conforme Bauer e King (2005), Hibernate pode não ser a melhor solução para aplicações centradas em dados que utilizam apenas os procedimentos armazenados para implementar a lógica de negócios no banco de dados, é mais útil com modelos orientados a objetos de domínio e lógica de negócios no Java baseada em middletier. Entretanto, o Hibernate pode certamente ajudá-lo a remover ou encapsular fornecedor específico código SQL e simplifica a tarefa comum de traduzir conjuntos de resultados de uma representação tabular de um gráfico de objetos. d) Open Source e sua história Na década de 1960, os computadores eram despendidos para serem utilizados individualmente. Somente programadores utilizavam e os mesmos resolviam a maioria dos problemas nos sistemas operacionais (KUMAR, 2006). Por volta de 1970, os fabricantes começaram a desagregação do código do software. Porém, as informações não eram publicadas. Normalmente, os programadores faziam acordos para preservar as informações. O ponto de partida do movimento Open Source foi iniciado através de uma impressora. Richard Stallman, que trabalhava no Instituto de Tecnologia de Massachusetts (MIT), sofria com um problema que ocorria na impressora. Devido tantos acessos p/ impressão de diferentes máquinas, a impressora congestionava. Stallman pretendia alterar o driver da impressora para enviar mensagens para o computador conectado informando o congestionamento da impressora. Porém, a Xerox recusou o fornecimento do código fonte. Porque a pessoa que criou o driver No inicio da década de 1980, Stallman criou o GNU (ou GPL – General Public License). Com o objetivo de ser um sistema livre que vem o código fonte em aberto. Oferecendo oportunidade para o usuário (usar, modificar e distribuir) de acordo com suas necessidades. Nesse projeto, Stallmann contou com a ajuda de diversos programadores voluntários. Porém, houve um desentendimento por parte desses usuários. Conforme Kumar (2006), as pessoas confundiram software livre com software sem custos. E isso causou graves consequências ao projeto de Stallmann. O grande diferencial é que um software que obtém licença GPL não é somente o software que ganhou “liberdade” para uso. Mas sim todos os programas que utilizam software GPL. Outros parceiros que também ajudaram na ideia da utilização foram Linus Torvalds (Criador do Sistema Operacional Linux) e Open Source Initiative (OSI). Nos dias atuais, existem milhares de colaboradores e defensores dessa prática colaborativa para melhorias em códigos fonte (KUMAR, 2006). e) Tecnologia Java Enterprise Edition Os desenvolvedores encontram desafios cada vez maiores. E o JEE é uma opção viável para atender as necessidades dos desenvolvedores. Pois, tem como objetivo oferecer um poderoso conjunto de API’s4. Dessa maneira, o tempo gasto com desenvolvimento é menor, também há diminuição em relação à complexidade da aplicação e o aplicativo possui melhor desempenho. Esta é a razão de utilizar frameworks Java Server Faces, Hibernate e Jaguar. Pelo fato de agregar a tecnologia JEE e facilitar o processo de desenvolvimento de software. Possui um modelo de aplicação que inicia através da linguagem de programação e máquina virtual Java. Além disso, apresenta recursos indispensáveis em relação à qualidade de desenvolvimento do produto. Como confiabilidade, segurança e produtividade. Pois o JEE suporta diversas aplicações. Isto torna a plataforma necessariamente complexa. Em compensação, os usuários que agem diretamente com o JEE ganham maior acessibilidade aos dados a partir da variação de fontes e aplicações. Bodoff (2005) explica que a Plataforma JEE define os padrões para o desenvolvimento de aplicações empresariais com multicamadas e os diversos componentes do aplicativo que compõem a plataforma, são instalados em máquinas diferentes. Simplificando o desenvolvimento, pois é baseando em componentes modulares padronizados, oferecendo um conjunto completo de serviços para esses componentes. A plataforma JEE aproveita muitos recursos do Java Standard Edition (JSE), como "Write Once, Run Anywhere", portabilidade JDBC/API para acesso de banco de dados, tecnologia CORBA para a interação com os recursos existentes na empresa, e um modelo de segurança que protege os dados, mesmo em aplicações de internet. Partindo desta base a plataforma JEE adiciona suporte completo para componentes Enterprise JavaBeans, Java Servlets5 API, JavaServer Pages (JSP) e tecnologia XML. Segundo Bodoff (2005, p. 13), um componente Enterprise JavaBeans (EJB), “É um corpo de código [bloco de construção] que possui campos e métodos para implementar módulos de lógica de negócios”. O padrão JEE inclui as especificações completas e testes de conformidade para garantir a portabilidade de aplicações em toda a vasta gama de sistemas empresariais existentes, capazes de suportar a plataforma J2EE. Além disso, a especificação JEE agora garante a interoperabilidade de serviços Web, através do apoio para o perfil de WSI-Basic. Embora a Sun Microsystems tenha criado a linguagem de programação Java e tenha sido a pioneira no uso para serviços corporativos, o padrão J2EE representa uma colaboração entre líderes de toda a área de software corporativo. As parcerias incluem sistema operacional e banco de dados de provedores de gerenciamento de sistemas, fornecedores de middleware e ferramentas, e aplicações de mercado vertical e desenvolvedores de componentes. Medeiros (2009) explica que middleware é um software desenvolvido para disponibilizar aplicações J2EE. Sua execução é feita em servidores para que os clientes (usuários) possam utilizar via conexão de rede. 3 Framework Jaguar O Jaguar é um framework composto por uma quantidade razoável de projetos JEE específicos, plug-ins Eclipse, métodos e padrões, soluções de integração e gerência de configuração extremamente trabalhosa, dentre vários outros “suplementos” de alto valor agregado, mantidos pela equipe de desenvolvimento dedicada da Powerlogic. O Jaguar é uma solução bastante eficaz para o aprimoramento dos resultados 5 Tecnologia Java que permite a utilização de uma classe servlet específica para HTTP (Protocolo de quando se trata de desenvolvimento de aplicações de software para Web em escala corporativa. Trata-se de uma suíte de produtos multidimensional conforme figura 1 que trabalha a problemática da produtividade e qualidade por diversos ângulos. Figura 1 – Dimensões de atuação de suíte do jCompany . Fonte: ALVIM, 2010, p.7 JCompany IDE6: É um ambiente onde as organizações desenvolvem seus sistemas. Conforme Deitel (2005) o IDE possibilita a construção de sistemas de informação duradouros e confiáveis. E também auxiliam os desenvolvedores ao construírem seus projetos de software, por possuir diversas ferramentas como suporte no processo de desenvolvimento. O Jaguar tem em sua suíte de soluções a IDE Eclipse, com a maioria de seus plug-ins. Esta é a ferramenta disponível para codificação, construção e distribuição de códigos executáveis. JCompany Patterns & Methods: Christopher Alexander afirma: “cada padrão descreve um problema em nosso ambiente e o cerne da sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira [...]”. Muito embora Alexander estivesse falando acerca de padrões em construções e cidades, o que ele diz é verdadeiro em relação aos padrões de projeto orientado a objeto. Nossas soluções são expressas em termos de objetos e interfaces em vez de paredes e portas, mas no cerne de ambos os tipos de padrões está à solução para um problema num determinado contexto (GAMMA, 2000). JCompany Patterns & Methods é um conjunto de boas práticas, padrões e passo e passo que auxiliam o desenvolvedor na codificação. No JCompany Test for Developer a garantia de qualidade de software é definida da seguinte maneira: “Conformidade a requisitos funcionais e desempenho explicitamente declarado a padrões de desenvolvimento claramente documentados e a características implícitas que são esperadas do software profissional”. (Pressman 2007, p. 724). O JCompany Test for Developer atua na área de testes de unidade, procurando garantir a qualidade do processo de desenvolvimento de software, visando que a codificação manual esteja em conformidade (ALVIM, 2010). JCompany Configuration Management: O módulo JCompany Configuration Management procura garantir a integridade dos itens de configuração (códigos, planilhas, CSU,...) e controlar a as iterações destes itens (Controle de versão). Por ser um ambiente de produção, o JCompany Configuration Management necessita de monitoramento contínuo. O trabalho com altas tecnologias propõe uma infraestrutura sólida que evitas quedas de rendimento no desenvolvimento de software. Além disso, a integridade e estabilidade são fatores primordiais ao longo do processo. A figura 2 exibe um diagrama em camadas que representa o esquema básico da Visão de Componentes da “Arquitetura de Software Corporativa”, conforme sugerida pelo Jaguar. A arquitetura em si é representada pelas camadas marcadas com os números (2), (3) e (4). Conforme Alvim (2010), a figura 2 representa a arquitetura em camadas de uma aplicação JEE, desenvolvida com o framework Jaguar. Figura 2 - Arquitetura em camadas de uma aplicação JEE com o JCompany Full Stack Framework Fonte: ALVIM, 2010, p.10 As camadas de uma aplicação JEE conforme Alvim (2010,p.10) são: Camada 1 - Representa a infraestrutura onde a aplicação será alocada. caso, pode ser qualquer sistema operacional), uma JVM para execução de um programa Java e o servidor de aplicação, onde estará à aplicação JEE. Camada 2 - Esta camada apresenta os frameworks e utilitários Open Source inclusos no Jaguar, estes frameworks são muito utilizados no mercado e divididos no Jaguar cada um em sua camada apropriada (Modelo MVC). Camada 3 - Esta é a camada de software provida pelo framework Jaguar, esta camada se integra com os insumos da camada 2 e as disponibiliza para os níveis mais altos. É chamada de commodity, pois prove boas praticas do mercado (Design Patterns, padrões de formulários, gerência de transações, etc.). Que são comuns em diversos projetos. Camada 4 – É nesta camada que a empresa pode generalizar e customizar o projeto onde se aplica o framework Jaguar. Podem ser citados como exemplo, as alterações em layout, segurança corporativa e outros ajustes que o padrão do framework não atenda. Esta é a ultima camada de arquitetura do framework. Camada 5 – É a camada de negócio, onde os profissionais que trabalham no ramo podem reutilizar módulos de negócio, ganhando padronização da arquitetura. 4 Discussão sobre o tema abordado Neste estudo de caso, realizaremos um comparativo utilizando desenvolvimento com frameworks e sem o mesmo. Com o objetivo de demonstrar os pontos positivos e negativos, em relação às duas formas de construir o projeto de software. Principalmente, nos quesitos tempo gasto para desenvolvimento, possíveis vulnerabilidades que um framework pode oferecer e suas vantagens e desvantagens. Basicamente, os frameworks Java (JSF, Hibernate e Jaguar) que serão utilizados, possuem projeto e programação orientada a objetos. Com o intuito de implementar os requisitos que o sistema exige e através de classes e objetos, propor soluções que possam resolver determinado tipo de problema (SOMMERVILLE, 2008). Classe em terminologia Java são unidades de programa onde abrigam um ou mais métodos. Métodos são utilizados para realizar tarefas da classe, e também podem retornar um resultado. Já os objetos tem como finalidade armazenar atributos (características) que estão relacionadas diretamente a classe (DEITEL, 2005). Reforçando a idéia de programação e projeto orientado a objetos, é importante lembrar que o reuso de componentes pode facilitar e otimizar sistemas. Uma vez que a complexidade está sempre em evidência na construção de softwares. Assim, é possível dizer que os objetos podem ser reaproveitados. Pois, um objeto pode utilizar as características e relacionamentos de uma classe e atribuí-los em outra classe e também, implementar características específicas na nova classe que foi criada. Isso condiz com a redução de gastos com projeto, programação e validação (DEITEL, 2005; SOMMERVILLE, 2008). Entretanto, se não houver ferramentas disponíveis, manutenção que dê o devido suporte para reuso de componentes e desenvolvedores com experiência e compreensão de quais os recursos podem ser reutilizados, será ineficiente o trabalho. Abaixo seguem tabelas comparativas mostrando as vantagens e desvantagens do reuso de componentes em um software. a) Telas do caso de uso desenvolvidas com e sem frameworks Figura 3 – Tela de Pesquisa no caso de uso desenvolvido sem Framework Fonte: Autoria própria Figura 4 – Tela de Pesquisa no caso de uso desenvolvido com Framework Jaguar Fonte: Autoria própria As figuras 3 e 4 mostram como o usuário realiza uma pesquisa e como são exibidos os resultados. Sem framework é notável que questões como usabilidade e design não atende os padrões estabelecidos. Já com o uso framework Jaguar, o aproveitamento da interface de usuário, a visualização de campos e comandos, tamanho e separação de labels, torna a visualização do sistema mais fácil e agradável. Figura 5 – Cadastro de novo produto efetuado desenvolvido sem Framework Figura 6 – Cadastro de novo produto efetuado desenvolvido com Framework Jaguar Fonte: Autoria próprio As imagens acima demonstram o resultado do desenvolvimento do caso de uso com a utilização do Framework Jaguar e do mesmo caso de uso sem framework. Em relação às figuras 5 e 6 mostram o mesmo fluxo, mas o framework Jaguar divide em abas caso de uso onde se tem uma agregação de classes. b)Tabela comparativa Tabela 3 – Aspectos Relacionados a desenvolvimento de software Itens relativos ao desenvolvimento de software Tempo de desenvolvimento 2 horas 8 horas Linhas de código digitadas 88 388 Modelo MVC Sim Não Tecnologias Utilizadas JSF, Hibernate, Jaguar, Jquery, CDI, RestEasy, Maven, AJAX Alta Servlet,HTML Baixa Alta Alta Baixa Interoperabilidade Sim Não Compatibilidade com todos navegadores Quantidade de Papéis Não Sim 1 (Desenvolvedor) Tempo gasto no processo de Arquitetura do software Segurança da aplicação 1 hora 3 (Designer, Desenvolvedor e Arquiteto de software) 2 horas Sim Não Internacionalização Sim Não Nível de complexidade para o desenvolvimento Nível de complexidade para evolução/manutenção Usabilidade Com Framework Fonte: Autoria própria c) Desvantagens da utilização de framework Sem Framework Baixa Geração de muitos códigos na aplicação Desempenho comprometido, pois a aplicação desenvolvida com framework Jaguar vai ter muitas camadas conforme figura 2. Curva muito alta de aprendizado, pois os profissionais que trabalharem com os frameworks citados nesta aprender a utilizar desenvolvimento Programação os mesmos OO (Orientado JAVA a monografia terão dominarem Objetos) o e a que antes de paradigma de linguagem de mais especificamente a tecnologia Java Enterprise Edition. Nem todo projeto o framework vai trazer bons resultados, exemplo é o Hibernate, pois onde se há um projeto que se utiliza grandes números de Stored Procedure não é recomendado à utilização do Hibernate. 5 CONCLUSÃO Para compreensão do tema deste estudo, framework e seus benefícios no desenvolvimento de softwares, buscou-se inicialmente rever a base conceitual e teórica sobre esta questão. Destacou-se evidenciamos, que utilização de frameworks em projetos de desenvolvimento de softwares se torna uma prática atrativa, pois se constituem uma das mais promissoras correntes tecnológicas para suportar reutilização de software em grande escala, modelando tanto a parte genérica como as partes variáveis de um sistema. Essa boa prática de utilização dos frameworks no desenvolvimento de software deve ser implementada fazendo uso dos padrões de projetos design patterns para melhor documentar a sua arquitetura e proporcionar um melhor vocabulário único entre os desenvolvedores. Desta forma, caracterizou-se os frameworks com um potencial que se impõe, e sua aplicação em projetos impacta em alto ganho de produtividade, possui módulos bastante completos para desenvolvedores de aplicações, e permite ao programador dedicar-se à implementação da regra de negócio deixando que o framework se encarregue do resto do trabalho. Assim, pode-se concluir que os framework reduzem significativamente o tempo de construção de softwares, bem como a manutenção do mesmo.As empresas que usam este recurso como ferramenta de trabalho podem se tornar mais competitivas no mercado, pois reduzem seu custo sem perder em qualidade. Diante do exposto, pode-se afirmar que a pergunta de pesquisa do estudo foi REFERÊNCIAS ALVIM, Paulo. Tirando o Máximo do Java EE 6 Open Source com jCompany© Developer Suite. 3. Ed. Belo Horizonte: Powerlogic Publishing, 2010. BAUER, Christian; KING, Gavin. Hibernate in Action. Greenwich: Manning Publications, 2005. BEZZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML. Rio de Janeiro: Elservier, 2007. BODOFF, Stephanie et al. Tutorial do J2EETM. Rio de Janeiro: Editora Ciência Moderna Ltda., 2005. DEITEL, H. M. Java: como programar. 6. Ed. São Paulo: Pearson, 2005. FAYAD, M.E.; SCHIMIDT, D.C.; JONHSON, R.E. Building Application Frameworks: Object-Oriented Foundations of Framework Design. New York: J. Miley, 1999. GAMMA, et al. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos. Porto Alegre: Bookman, 2005. KUMAR, Sahaaj et al. Fast Track to Open Source Software. Jasubhai Digital Media. Novembro, 2006. 209p. LARMAN, Craig. Utilizando UML e Padrões: Uma Introdução a Analise e ao Projeto Orientados a Objetos e ao Processo Unificado. 2 ed. Porto Alegre: Bookman, 2004. PRESSMAN, Roger. S., Engenharia de Software, 6ª edição McGraw-Hill, 2006 SOMMERVILLE, Ian. Engenharia de Software. 8. Ed. São Paulo: Pearson, 2008. Revista Pensar Tecnologia, v. 4, n. 1, jan. 2015