Construção da Camada de Interface Gráfica e de um Wizard para o Framework GRENJ - PDF
Construção da Camada de Interface Gráfica e de um Wizard para o Framework GRENJ
Download "Construção da Camada de Interface Gráfica e de um Wizard para o Framework GRENJ"
Tânia de Figueiredo Borba
1 UNIVERSIDADE FEDERAL DE SÃO CARLOS CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Construção da Camada de Interface Gráfica e de um Wizard para o Framework GRENJ Matheus Carvalho Viana São Carlos/SP Maio/2009
2 Ficha catalográfica elaborada pelo DePT da Biblioteca Comunitária da UFSCar V614cc Viana, Matheus Carvalho. Construção da camada de interface gráfica e de um wizard para o framework GRENJ / Matheus Carvalho Viana. -- São Carlos : UFSCar, f. Dissertação (Mestrado) -- Universidade Federal de São Carlos, Análise e projeto de sistemas. 2. Framework (Programa de computador). 3. Interface gráfica de computador. I. Título. CDD: (20 a )
3 Universidade Federal de São Carlos Centro de Ciências Exatas e de Tecnologia Programa de Pós-Graduação em Ciência da Computação "Construção da Camada de Interface Gráfica e de um Wizard para o Framework GRENJ" MATHEUS CARVALHO VIANA Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de São Carlos, como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação. Membros da Banca: W&&& Profa. Dra. Rosângela Ap. Dellosso Penteado (Orientadora - DCNFSCar) (DCNFSCar) (2JL&sm.$-.& Profa. ta. Selma Shin Shimizu ~elnih\f (POLINSP) São Carlos Maio12009
4 Este trabalho é dedicado aos meus pais e aos meus irmãos.
5 Agradecimentos Primeiramente, agradeço a Deus pela oportunidade de fazer um curso de mestrado e por muitos outros acontecimentos em minha vida. À minha mãe, ao meu pai, ao meu irmão e à minha irmã por sempre acreditarem no meu potencial e por oferecerem o seu apoio quando precisei. À Professora Dra. Rosângela por ter me escolhido como seu orientando. Obrigado pela amizade, pela confiança e por me ajudar a evoluir como aprendiz e pesquisador. À Professora Dra. Rosana Braga pelas explicações e pelas sugestões que contribuíram para a realização do trabalho. A todos os meus amigos e companheiros de mestrado por sofrerem e se divertirem junto comigo. Espero ter sido um bom amigo tanto quanto vocês foram para mim. Sou muito feliz por ter estado aqui na mesma época que vocês. Aos meus amigos do Kung Fu Taisan. Além de ganhar novos amigos, pude relaxar a minha mente e aprender que uma pessoa é capaz de estender os seus limites com concentração e dedicação. Ao CNPq pelo apoio financeiro ao meu trabalho.
7 Resumo As empresas utilizam sistemas de informação para executarem seus processos de maneira eficiente. O mercado exige que esses sistemas sejam desenvolvidos em curto prazo, com baixo custo e que possuam alta qualidade e flexibilidade. Reúso é um conceito da Engenharia de Software que objetiva atender a essa demanda com a reutilização de artefatos, previamente construídos e testados, para o desenvolvimento de novos sistemas. Sistemas de informação podem ser desenvolvidos com o apoio de técnicas baseadas em reúso, como frameworks orientados a objetos e geradores de aplicações. Este projeto de pesquisa apresenta o processo de construção da camada de interface gráfica e de um wizard gerador de aplicações para o framework GRENJ (Gestão de Recursos de Negócios com implementação em Java). Nesse processo, o framework Guiwe (do inglês, Graphical user interface for web) foi criado para apoiar a construção e a instanciação da camada de interface do GRENJ que, além da linguagem Java, utiliza tecnologias voltadas para a web. Por sua vez, o wizard do framework GRENJ foi desenvolvido com o apoio de um gerador de aplicações configurável e com a construção de gabaritos e da ferramenta GRENJ-Gens. Essa ferramenta permite a instanciação de sistemas no framework GRENJ com a utilização de diferentes geradores de aplicações que tenham por base os gabaritos desse framework. Tanto a camada de interface gráfica quanto a do wizard do framework GRENJ foram construídos de forma iterativa e intercalados entre si com apoio nos padrões da GRN (Gestão de Recursos de Negócios), que é a linguagem de padrões da qual foi desenvolvido o framework GRENJ. Além disso, a prática de desenvolvimento guiado por testes também foi utilizada. As vantagens do uso do GRENJ com o wizard e a interface gráfica foram verificadas com a realização de alguns estudos de caso.
8 Abstract Enterprises need information systems for executing their processes on an efficient way. Market demands that these systems are developed at short term, at low cost and they need to get high quality and flexibility. Reuse is a concept of Software Engineering that aims to take this demand into consideration with the reutilization of artefacts, previously built and tested, for developing new systems. Information systems can be developed with reuse-based techniques, such as object-oriented frameworks and application generators. This project presents the process of construction of the graphical user interface layer and an application generator wizard of GRENJ (Business Resource Management implemented in Java, in Portuguese, Gestão de REcursos de Negócios com implementação em Java) framework. In this process, Guiwe (Graphical user interface for web) framework was created to support the building and the instantiation of the graphical user interface layer of GRENJ, which makes use of Java language plus web technologies. The wizard of GRENJ framework was developed with the use of a configurable application generator and the creation of templates and the GRENJ-Gens tool. This tool provides the instantiation of systems on GRENJ framework with the support of different application generators that can utilize the templates of that framework. The graphical user interface and the wizard layers were built on an iterative and intercalated way following the sequence of the patterns of GRN (Business Resource Management, in Portuguese, Gestão de Recursos de Negócios), witch is the pattern language that originated GRENJ framework. Beyond this, the practice of test-driven development was also applied. The advantages of using GRENJ framework with its graphical user interface and its wizard layers were verified with the realization of some case studies.
9 Sumário 1. Introdução Considerações Iniciais Motivação do Trabalho Objetivo do Trabalho Trabalhos Relacionados Organização da Dissertação Desenvolvimento de Software com Reúso Considerações Iniciais Desenvolvimento de Software Orientado a Objetos Desenvolvimento de Software Voltado para a Web Hyper Text Markup Language Java Server Pages e Servlets JavaScript Asynchronous Javascript And XML Cascading Style Sheets EXtensible Markup Language EXtensible Stylesheets Language Desenvolvimento de Software em Linhas de Produtos Desenvolvimento de Software com o Apoio de Padrões e de Linguagens de Padrões Desenvolvimento de Software com o Apoio de Frameworks... 18
10 2.7. Desenvolvimento de Software com o Apoio de Frameworks Construídos com Base em Linguagens de Padrões de Análise Desenvolvimento de Software com o Apoio de Geradores de Aplicações Desenvolvimento Guiado por Testes Considerações Finais Frameworks e Geradores de Aplicações Considerações Iniciais A Linguagem de Padrões GRN O Framework GRENJ Instanciação de um Sistema com o apoio do Framework GRENJ O Gerador de Aplicações Configurável Captor Exemplo de utilização do Captor Considerações Finais Um Framework para Construção da Camada de Interface Gráfica de Sistemas Web Considerações Iniciais Construção do Framework Guiwe Características do Framework Guiwe Projeto e Implementação do Framework Guiwe Construção da Apresentação e do Script da Interface Gráfica Finalização do Framework Guiwe Construção da Camada de Interface Gráfica do Framework GRENJ Análise da Camada de Interface Gráfica do Framework GRENJ Projeto e Implementação da Camada de Interface Gráfica do Framework GRENJ Finalização da Camada de Interface Gráfica do Framework GRENJ... 65
11 4.4. Considerações Finais Criação de um Wizard para o Framework GRENJ Considerações Iniciais Criação de uma LMA do Framework GRENJ Construção dos Gabaritos XSL Construção da Ferramenta GRENJ-Gens Arquitetura da Ferramenta GRENJ-Gens Projeto e Implementação do GRENJ-Gens Finalização do GRENJ-Gens Considerações Finais Estudos de Caso com a Geração de Sistemas Baseados no Framework GRENJ Considerações Iniciais Estudo de Caso 1: Geração de um Sistema para uma Locadora de DVDs Estudo de Caso 2: Geração de um Sistema para Registro de Matrícula de Alunos Estudo de Caso 3: Geração de um Sistema para uma Oficina Mecânica Considerações Finais Conclusões Considerações Finais Contribuições Limitações Sugestões de Trabalhos Futuros Referências Bibliográficas...112
12 Lista de Figuras Figura 2.1. Fluxo dos processos de engenharia do domínio e da aplicação de uma LPS...15 Figura 2.2. Gráfico de esforço do desenvolvimento de software tradicional e de uma LPS Figura 2.3. Relações existentes entre um framework e uma linguagem de padrões Figura 2.4. Fluxos de desenvolvimento (a) evolucionário tradicional e (b) TDD Figura 2.5. Fluxo do Ciclo TDD Figura 3.1. Grafo fluxo de aplicação dos padrões da GRN Figura 3.2. Diagramas de classe do quarto padrão da GRN, Locar o Recurso (Braga, 2002) Figura 3.3. Arquitetura do framework GRENJ Figura 3.4. Classes do GRENJ para o primeiro padrão da GRN Figura 3.5. Parte do código da classe Filme que estende a classe Resource do GRENJ Figura 3.6. Classes do GRENJ para o segundo padrão da GRN Figura 3.7. Classes do framework GRENJ e do sistema para uma locadora de DVDs relativas ao segundo grupo de padrões da GRN Figura 3.8. Código da classe Locacao que estende a classe ResourceRental do GRENJ Figura 3.9. Classes do padrão Itemizar Transação do Recurso Figura Fluxo de aplicação dos padrões da GRN utilizados no sistema da locadora de DVDs
13 Figura Processo de geração de uma aplicação por meio do Captor Figura Processo de geração de uma aplicação por meio do Captor Figura Construção do formulário para geração de uma classe Java Figura Trecho de código do gabarito main Figura Trecho de código do arquivo rules que determina a criação dos arquivos Java Figura Instrução para compilação dos arquivos Java incluída no arquivo posbuild Figura Preenchimento dos formulários de classe Java Figura 4.1. Organização da interface gráfica do framework Guiwe Figura 4.2. Componentes de um formulário do framework Guiwe Figura 4.3. Passos de uma operação de gravação dos dados de um formulário Figura 4.4. Modelo de classes da camada de interface gráfica do framework Guiwe Figura 4.5. Modelo de classes da camada de controle do framework Guiwe Figura 4.6. Lista de Casos de Teste da classe HTMLDocument Figura 4.7. Implementação do teste (a) e do código (b) do método getcontainer Figura 4.8. Trecho de código que obtém o nome e o valor dos atributos de um objeto Figura 4.9. Modelo de classes do primeiro padrão da GRN e seu equivalente no GRENJ Figura Modelo de classes da camada de interface gráfica do framework GRENJ Figura Modelo de classes da camada de controle do framework GRENJ Figura Exemplo de manipulação de um objeto da classe Cliente Figura Código da classe FilmeFormServlet, que monta um formulário para a classe Filme Figura Código da classe DVDTableServlet
14 Figura Código do método getreportquery da classe LocacaoReportServlet Figura Apresentação do sistema para uma locadora de DVDs com o formulário de locação Figura 5.1. Formulário inicial para geração de sistemas baseados no framework GRENJ Figura 5.2. Formulário relativo à identificação do recurso Figura 5.3. Formulário relativo a uma transação de aluguel Figura 5.4. Formulário relativo ao pagamento de uma transação Figura 5.5. Formulário relativo ao padrão Identificar as Tarefas da Manutenção Figura 5.6. Declaração de uma variável em que armazena o nome de uma classe. 77 Figura 5.7. Exemplo de geração das classes relacionadas com o recurso do negócio Figura 5.8. Código do gabarito que origina uma subclasse de Resource Figura 5.9. Trecho do código de um gabarito que gera os métodos getexecutorclass e hasexecutor Figura Código da função createtable do gabarito que gera o script da base de dados Figura Geração de um sistema desenvolvido com o uso do wizard do framework GRENJ Figura Arquitetura da ferramenta GRENJ-Gens Figura Painel de configurações do GRENJ-Gens Figura Painel de cadastro de geradores de aplicações do GRENJ-Gens Figura A arquitetura do framework GRENJ e a das aplicações instanciadas desse framework Figura 6.1. Modelo de classes do sistema para uma locadora de DVDs utilizando GRN e GRENJ Figura 6.2. Criação da página inicial do Sistema para uma Locadora de DVDs... 89
15 Figura 6.3. Criação do formulário de Cadastro de Filmes Figura 6.4. a) Carregamento dos formulários Resource Type do wizard; b) Preenchimento dos dados da classe Categoria; c) Preenchimento dos dados da classe Genero; e d) o formulário de Cadastro de Categorias da interface gráfica do sistema para uma locadora de DVDs Figura 6.5. Criação do formulário de Cadastro de DVDs Figura 6.6. Formulário de transações de aluguel com os dados da classe Locacao.92 Figura 6.7. Criação do formulário de Cadastro de Clientes Figura 6.8. a) Hierarquia dos formulários utilizados para a geração do sistema para uma locadora de DVDs e b) o formulário Transaction Itemization preenchido com os dados da classe ItemLocacao Figura 6.9. Formulário de Cadastro de Locações Figura Modelo de classes do sistema para registro de matricula dos alunos. 96 Figura Formulário Trade Transaction com os dados da classe Matricula Figura Formulário que define os dados da classe FormaPagamento Figura Formulário de Matrícula do sistema para registro de matrículas de alunos Figura Modelo de classes do sistema para uma oficina mecânica usando GRN e GRENJ Figura Formulário com os dados da classe OrdemServico Figura Criação do formulário de Cadastro de Mecânicos Figura Formulário com os dados da classe que identifica as tarefas das ordens de serviço Figura Formulário que define as classes que identificam as peças das ordens de serviço Figura Formulário de Ordens de Serviço do sistema para uma oficina mecânica Figura Criação do formulário de Cadastro de Peças
16 Lista de Tabelas Tabela 2.1. Exemplos de frameworks originados a partir de linguagens de padrões Tabela 2.2. Comparação entre as principais técnicas que enfatizam o de reúso Tabela 3.1. Relação dos requisitos do sistema para uma locadora de DVDs Tabela 3.2. Relação das subclasses do estudo de caso e suas respectivas classes no GRENJ Tabela 3.3. Relação de características do domínio de classes Java Tabela 4.1. Responsabilidades das camadas de interface gráfica e de controle do framework Guiwe Tabela 4.2. Relação das classes da camada de interface gráfica do framework Guiwe Tabela 4.3. Relação das classes da camada de controle do framework Guiwe Tabela 4.4. Lista das classes construídas para cada padrão da GRN Tabela 4.5. Classes específicas do sistema para uma locadora de DVDs Tabela 6.1. Relação dos requisitos do sistema para uma locadora de DVDs Tabela 6.2. Relação dos requisitos do sistema para registro de matrícula de alunos Tabela 6.3. Padrões da GRN aplicados na geração do sistema para registro de matrícula de alunos Tabela 6.4. Relação dos requisitos do sistema para uma oficina mecânica Tabela 6.5. Padrões da GRN aplicados na geração do sistema para uma oficina mecânica
17 Lista de Abreviaturas AJAX: Asynchronous Javascript And XML. XML e JavaScript Assíncrono. CSS: Cascading Style Sheets. Folhas de estilo em cascata. DOM: Document Object Model. Modelo de objetos do documento. DSOO: Desenvolvimento de Software Orientado a Objetos. EAF: Enterprise Application Frameworks. Frameworks para aplicações empresariais. GA: Gerador de Aplicações. GAC: Gerador de Aplicações Configurável. GRN: linguagem de padrões Gestão de Recursos de Negócios. GREN: framework Gestão de Recursos de Negócios. GRENJ: framework Gestão de Recursos de Negócios com implementação em Java. Guiwe: framework Graphical user interface for web. HTML: HyperText Markup Language. Linguagem de marcação de hipertexto. IDE: Integrated Development Environment. Ambiente de desenvolvimento integrado. JDK: Java Development Kit. Pacote de desenvolvimento da linguagem Java. JSP: Java Server Pages. Versão da linguagem HTML que contém instruções Java. LMA: Linguagem de Modelagem da Aplicação. LP: Linguagem de Padrões. LPS: Linha de Produtos de Software. MIF: Middleware Integration Frameworks. Frameworks intermediários de integração. MVC: padrão arquitetural Model-View-Controller. SIF: System Infrastructure Frameworks. Frameworks de sistemas para infra-estrutura. TDD: Test-Driven Development. Desenvolvimento guiado por testes.
18 UML: Unified Modeling Language Linguagem de modelagem unificada. XHTML: extended HyperText Markup Language. Linguagem estendida de marcação de hipertexto. XML: extensible Markup Language. Linguagem de marcação extensível. XP: método de desenvolvimento ágil extreme Programming. XSL: extensible Stylesheet Language. Linguagem de estilo extensível. XSL-FO: extensible Stylesheets Language Formating Objects. Linguagem de estilo extensível para formatação de objetos. XSLT: extensible Stylesheets Language Transformations. Linguagem de estilo extensível para transaformação. W3C: World Wide Web Consortium. Órgão para padronização de tecnologias web.
19 1 1.Introdução 1.1. Considerações Iniciais O intuito da Engenharia de Software é desenvolver software de boa qualidade no menor tempo possível (Pressman, 2006). Uma das formas mais comuns de se atingir esse objetivo é com a prática do reúso. Nesse sentido, as linguagens de programação evoluíram para adotar conceitos relacionados com o reúso cada vez mais eficazes como, por exemplo, modularização, classes, objetos, composição, herança e polimorfismo. Um dos resultados da evolução das linguagens foi o desenvolvimento de software orientado a objetos. Contudo, esses conceitos fornecem somente reúso em nível de código. Com isso, técnicas foram criadas para aumentar a eficiência no desenvolvimento de um sistema de informação sem que haja perda em sua qualidade, tais como padrões de software, linguagens de padrões, frameworks orientados a objetos e geradores de aplicações. Padrões de software, ou, simplesmente, padrões, fornecem soluções de sucesso para determinado problema em um contexto (Gamma et al., 1995). Essa definição indica que padrões proporcionam o reúso de experiência no desenvolvimento de software (Fowler, 1997), pois descrevem como o desenvolvedor deve proceder em determinadas situações. Em um nível mais alto em relação aos padrões, as linguagens de padrões são aplicadas no desenvolvimento de software completo pertencente a um domínio específico, enquanto que um simples padrão resolve apenas um problema isolado dentro de um dado software (Coplien, 1996). Os padrões constituintes de uma linguagem de padrões são organizados de maneira que seus elementos trabalhem em uma seqüência ordenada de passos para resolução de problemas referentes ao desenvolvimento de software (Schmidt et al., 1996). Frameworks são soluções reutilizáveis, de todo ou parte do sistema, em que entidades abstratas são customizadas com o propósito de definir o comportamento específico (Johnson, 1997a). Além de reúso de código, frameworks fornecem também 1
20 reúso de projeto, propiciando maior eficiência no desenvolvimento de um sistema de informação. Outra maneira de desenvolver software mais rapidamente é por meio de geradores de aplicações, que são capazes de traduzir de maneira automatizada requisitos em uma aplicação (Wu et al., 2003). Um gerador de aplicações também pode ser utilizado no desenvolvimento de sistemas pertencentes a um domínio especifico (Thibault e Consel, 1997) (Braga e Masiero, 2002). Por reduzir o esforço de desenvolvimento de um sistema de informação, a utilização de frameworks e de geradores de aplicações tem crescido gradualmente (Johnson, 1997a) (Wu et al., 2003). Esse é o contexto na qual se aplica este trabalho, cuja proposta é construir uma camada de interface gráfica para o framework GRENJ (Gestão de REcursos de Negócios com implementação em Java) e um wizard que faz uso de geradores de aplicações para instanciar sistemas baseados nesse framework Motivação do Trabalho O framework GRENJ pode apoiar o desenvolvimento de sistemas implementados em linguagem Java pertencentes ao domínio de gestão de recursos de negócios (Durelli, 2008). Sua construção é o resultado de um processo de reengenharia iterativo das camadas de persistência e de negócios do framework GREN (Gestão de REcursos de Negócios), que é implementado em linguagem Smalltalk. Apesar de prover reúso de código e projeto e, consequentemente, reduzir o esforço de desenvolvimento de um sistema, a utilização do framework GRENJ apresenta dificuldades, como: Sua utilização exige que o desenvolvedor tenha conhecimento de suas classes, de seus relacionamentos e dos métodos que devem ser sobrescritos. Em outras palavras, o desenvolvedor precisa conhecer os pontos variáveis (hot spots) do framework para instanciá-lo. O desenvolvedor precisa construir a camada de interface gráfica do sistema sem o apoio do framework GRENJ, assim como a interligação dessa camada com as de persistência e de negócios. Em muitos sistemas, a construção da camada de interface gráfica representa a maior parte do esforço gasto em seu desenvolvimento, principalmente, no caso de sistemas voltados para a web. 2
21 A existência de uma camada de interface gráfica para ao framework GRENJ reduz o esforço necessário no desenvolvimento de sistemas instanciados a partir desse framework, bem como os erros que podem ocorrer na construção dessa camada e na sua interligação com as demais. Além disso, o uso de tecnologias voltadas para a web na implementação da camada de interface gráfica do framework GRENJ possibilita a utilização distribuída dos sistemas instanciados a partir desse framework. Por fim, a existência de um wizard que utilize geradores de aplicações para a instanciação automatizada de sistemas baseados no framework GRENJ dispensa a necessidade de conhecimento da arquitetura desse framework e, até mesmo, da linguagem Java e de outras tecnologias utilizadas em sua implementação. Dessa forma, o desenvolvedor informa para o wizard as características específicas do sistema que deseja instanciar para, então, gerá-lo de forma automatizada. Além da facilidade de uso, obtém-se eficiência na construção de um sistema de informação e na sua manutenção, pois, quando ocorre uma mudança nos requisitos, pode-se novamente usar esse gerador para produzir uma outra versão do sistema que atenda a nova realidade (Braga, 2002) Objetivo do Trabalho Os principais objetivos deste trabalho são: a construção da camada de interface gráfica do framework GRENJ e a criação de um wizard que faz uso de geradores de aplicações para instanciar sistemas baseados nesse framework. Com isso, espera-se obter os seguintes benefícios: 1. Aumento do percentual de reúso proporcionado pelo framework, que passa a abranger todas as camadas de um sistema de software. 2. Aumento significativo da eficiência no desenvolvimento de sistemas de informação instanciados a partir do framework GRENJ, pois o desenvolvedor passa a contar com seu apoio na construção da camada de interface gráfica e de sua interligação com as demais. 3. Padronização das interfaces gráficas com o usuário dos sistemas instanciados a partir do framework GRENJ, garantindo-lhes maior usabilidade. 4. Melhoria da qualidade dos sistemas instanciados a partir do framework GRENJ, pois a camada de interface gráfica com o usuário será composta de classes previamente testadas, assim como as demais. 3
22 5. Os sistemas instanciados a partir do framework GRENJ poderão ser acessados remotamente por meio de uma rede de computadores. 6. Maior facilidade na instanciação de sistemas a partir do framework GRENJ por meio do seu wizard. 7. Desenvolvimento automatizado de sistemas de informação no domínio de gestão de recurso de negócios a partir de informações passadas pelo desenvolvedor ao wizard do framework GRENJ e do apoio da linguagem de padrões GRN. 8. Redução do tempo de desenvolvimento de um sistema de informação com a utilização do wizard do framework GRENJ. 9. Redução do custo de desenvolvimento de sistemas de informação pertencentes ao domínio de gestão de recursos de negócios Trabalhos Relacionados Não foram encontrados outros trabalhos que tratam da construção da camada de interface gráfica e de um wizard para um framework existente. Normalmente, wizards geradores de aplicações são construídos para a geração de artefatos de sistemas não instanciados de frameworks como, por exemplo, o wizard GAwCRe (Pazin, 2004). O wizard proposto neste trabalho tem como objetivo gerar sistemas instanciados do framework GRENJ. A construção da camada de interface gráfica do framework GRENJ deu origem a um novo framework, denominado Guiwe (do inglês, Graphic user interface for web), que pode ser utilizado para a construção de uma camada de interface gráfica web para sistemas de informação e para frameworks de domínio específico. Em um outro trabalho, Chaves et al. (2008) apresentam um estudo experimental sobre o framework Fast Interface Build (FIB), que foi desenvolvido com o intuito de apoiar a construção da camada de interface gráfica de sistemas implementados em linguagem Java. A interface criada por esse framework fornece meios para efetuação de operações de persistência de dados, assim como o framework Guiwe. Entretanto, o framework FIB é baseado na biblioteca Swing da linguagem Java (Sun Microsystems, 2009a) e, portanto, é capaz de criar interfaces somente para sistemas de informação stand-alone. O framework Guiwe faz uso de tecnologias web e pode ser utilizado tanto em sistemas de informação quanto em outros frameworks. 4
23 1.5. Organização da Dissertação Além deste Capítulo introdutório, nos demais são apresentados os conceitos aplicados, atividades realizadas, os produtos desenvolvidos e os resultados obtidos neste trabalho. No Capítulo 2 são apresentadas abordagens de desenvolvimento de software com o uso de tecnologias, métodos e práticas, como linguagens orientadas a objetos, tecnologias voltadas para a web, linhas de produto de software, padrões, linguagens de padrões, frameworks, geradores de aplicações e desenvolvimento guiado por testes. No Capítulo 3 são apresentados a linguagem de padrões GRN, o framework GRENJ e o gerador de aplicações configurável Captor, que servem de base para o desenvolvimento deste trabalho. No Capítulo 4 é tratada a construção da camada de interface gráfica do framework GRENJ. Essa atividade deu origem a outro framework, denominado Guiwe, que também é apresentado nesse Capítulo. No Capítulo 5 é abordada a construção de um wizard para o framework GRENJ e da ferramenta GRENJ-Gens, que foram desenvolvidos para tornar o processo de instanciação de sistemas baseados no framework GRENJ mais simples e eficiente. No Capítulo 6 são descritos estudos de caso que descrevem o desenvolvimento de sistemas baseados no framework GRENJ com o apoio do seu wizard. Nesse Capítulo, também são feitas comparações com o desenvolvimento de sistemas similares com o uso da linguagem de padrões GRN, o framework GRENJ e seu wizard. No Capítulo 7 são apresentadas as considerações finais a respeito deste trabalho, com enfoque em suas contribuições e restrições. Sugestões de trabalhos futuros também são apresentadas com o objetivo de incitar a evolução das ferramentas desenvolvidas. 5
24 2 2.Desenvolvimento de Software com Reúso 2.1. Considerações Iniciais As empresas dependem de sistemas de informação para executarem seus processos de maneira eficiente. O dinamismo do mercado exige que os sistemas de informação sejam desenvolvidos em curto prazo, com baixo custo e possuam alta qualidade e flexibilidade. Contudo, no modelo tradicional de desenvolvimento de software essas características tendem a ser conflitantes. A qualidade é sacrificada e o custo se eleva quando há pressa na finalização do projeto, assim como a construção de um sistema flexível pode exigir um projeto com prazos e custos maiores. Um dos meios criados pela Engenharia de Software para atender à demanda imposta pelo mercado se baseia no conceito de reúso, que fornece redução no esforço de desenvolvimento e melhoria na qualidade do software construído (Shiva e Shala, 2007). Além disso, o reúso pode ocorrer em diferentes níveis de abstração, etapas do desenvolvimento de software e artefatos. O Desenvolvimento de Software Orientado a Objetos surgiu como um paradigma em que os sistemas são construídos com base em entidades interrelacionadas, conhecidas como classes (Pressman, 2006). Uma classe pode ser reutilizada para originar outras classes, o que proporciona o reúso de código e, consequentemente, garante vantagens ao desenvolvimento orientado a objetos. Com o avanço das redes de computadores, as empresas perceberam que poderiam acelerar seus processos ao tornar suas informações acessíveis em localidades remotas: filiais, empresas parceiras, terminais para clientes, Internet, entre outros. Por conta dessa demanda, surgiram as tecnologias de desenvolvimento de software voltado para a web. Essas tecnologias permitem o reúso de código, de forma semelhante ao que ocorre no desenvolvimento orientado a objetos. A evolução do desenvolvimento de software resultou no surgimento de conceitos e técnicas que proporcionam reúso em outros níveis de abstração, além do de código. Padrões de projeto (Gamma et al., 1995), frameworks orientados a objetos 6