Diagnóstico do Uso de Ferramentas CASE: Uma Investigação na cidade de Passo Fundo Lis Ângela De Bortoli1, Jane Costi Colossi1 , Jones A. Garbin1, Juliane Foresti1 1 Curso de Ciência da Computação – Universidade de Passo Fundo (UPF) Caixa Postal 611 – 99001-970 – Passo Fundo – RS – Brazil {lis,grazziotin}@upf.br, [email protected], [email protected], Abstract. This paper describes the main results provided by a search about the use of CASE (Computer Aided Software Engineering) tools in Passo Fundo city. The search was conducted through a virtual questionaire that was applied to the organizations that work with software development. Resumo. Este artigo descreve os principais resultados de pesquisa realizada sobre o uso de ferramentas CASE (Computer Aided Software Engineering Engenharia de Software Apoiada por Computador) na comunidade de desenvolvimento de software da cidade de Passo Fundo - RS. A pesquisa foi realizada através de um questionário virtual elaborado e respondido pelo público-alvo formado pelas empresas que desenvolvem software. 1. Introdução Segundo Fiorini (1998), desenvolver software de qualidade assegurada, com produtividade, dentro dos prazos estabelecidos e sem gastar mais recursos do que os alocados tem sido o grande desafio da Engenharia de Software. Existem vários aspectos a serem considerados para obter-se sucesso no desenvolvimento de um software, dentre eles pode-se citar: o uso de metodologias adequadas, o estabelecimento de processos de avaliação da qualidade do software, a interação com outras áreas do conhecimento, a análise dos sistemas existentes para verificar o que causou seu sucesso ou fracasso e a utilização de ferramentas de apoio que facilitem o trabalho. Segundo Fisher (1990), o uso de ferramentas CASE reduz substancialmente, ou elimina, inúmeros problemas de projeto e desenvolvimento inerentes aos projetos de médio e grande porte, por meio da geração automática de grande parte do software com base nos projetos especificados pelo seu engenheiro, o que acarreta em aumento na qualidade do produto e na produtividade de desenvolvimento. O objetivo principal da tecnologia CASE é separar o projeto do programa aplicativo da implementação do código. Várias organizações e desenvolvedores já reconhecem este planejamento básico de software há muito tempo. Nos últimos anos, têm-se desenvolvido e apresentado diversas metodologias aos desenvolvedores de software. Estas metodologias oferecem uma estrutura de projeto e um conjunto de formalismos e normas em que se basear para a condução do trabalho de desenvolvimento de software. Embora imperfeitas e altamente dependentes da eficiência do profissional, estas metodologias têm permitido aos desenvolvedores de software a construção de sistemas complexos. Geralmente estas metodologias funcionam por meio da decomposição de grandes sistemas de software em conjuntos de módulos menores, mais fáceis de lidar. As interfaces entre esses módulos costumam ser bem projetadas pelo engenheiro de software, permitindo aos programadores construir e testar independentemente os módulos que lhes são atribuídos. Assim, durante os estágios finais do processo de desenvolvimento do software, todos os módulos são reunidos e integrados para formarem o programa final. Em vários aspectos, as ferramentas CASE são um desenvolvimento direto das metodologias feitas no papel. Atualmente, várias daquelas mesmas metodologias e técnicas organizacionais estão sendo implementadas em forma de programas, em vez de se confiar em que programadores e engenheiros de software pratiquem religiosamente as metodologias. As ferramentas vieram para apoiar as metodologias, controlando o seu uso e eliminando atividades manuais feitas pelos desenvolvedores, deixando-os mais livres para tarefas que exigem mais criatividade. As ferramentas CASE aprimoram a criatividade, pois possibilitam a construção de projetos mais elaborados em menos tempo. Para muitas organizações de desenvolvimento de software, as vantagens qualitativas das ferramentas CASE têm um peso maior que as quantitativas. O tempo gasto no desenvolvimento será quase sempre menor com o auxílio das ferramentas CASE, mas talvez seu maior benefício tenha a forma de garantia, ou “consciência tranqüila”, de que a tarefa está sendo executada devidamente, como foi programada e segundo as especificações do usuário. Este artigo está dividido da seguinte forma: a seção dois apresenta os principais conceitos acerca da tecnologia CASE; na seção três a pesquisa realizada bem como os principais aspectos da sua condução são apresentados; a seção 4 aborda os principais resultados obtidos e, por fim, apresenta-se a conclusão e as referências bibliográficas nas quais se embasou este trabalho. 2. Ferramentas CASE Tecnologia CASE é o uso de apoio computacional para auxiliar no processo de desenvolvimento de software. As ferramentas podem fornecer apoio para a maioria das atividades executadas pelos engenheiros de software, como especificação de requisitos, análise do sistema, projeto, documentação, programação e depuração. As ferramentas CASE fornecem base para definir, projetar, construir, testar, documentar e apoiar sistemas de informação e produtos de software. Também fornecem mecanismos para avaliar as atividades realizadas no sistema de informação, definir mudanças propostas, produzir e validar novos processos de informação e enfocar as mudanças que podem aperfeiçoar o desempenho e a operação da organização. Através do uso de ferramentas CASE é possível traduzir situações do mundo real em modelos, processos e componentes. Uma ferramenta CASE pode ser simples quando fornece suporte a uma atividade da engenharia de software ou complexa quando apóia um ambiente completo que envolve ferramentas, bancos de dados, pessoas, hardware, redes, sistemas operacionais, padrões e uma infinidade de outros componentes. As ferramentas CASE não são revolucionárias; são evolucionárias. A medida que as metodologias evoluem para satisfazer as necessidades atuais, vão renascendo em forma de software. Nenhuma ferramenta CASE pode realizar sozinha todo o trabalho de especificação e projeto. Naturalmente, são necessárias diversas metodologias complementares para se lidar com todas as facetas do desenvolvimento de um software, desde o projeto estrutural até a especificação da interface com o usuário. Embora haja uma tendência a combinar as metodologias complementares em “ambientes integrados para as ferramentas” , a ferramenta universal ainda pertence ao futuro. Segundo Fisher (1990), as ferramentas CASE devem satisfazer alguns critérios básicos para fazerem parte da caixa de ferramentas dos desenvolvedores de software. Isto é fundamental para que possam ser aceitas pelos métodos de desenvolvimentopadrão das organizações. As ferramentas CASE devem apresentar as seguintes características: • Fracionamento da complexidade: uma das metas principais da tecnologia CASE é decompor os requisitos e os projetos em componentes manuseáveis. Sua função é simplificar, explicar e reduzir; • Adequação a um público diversificado: para as fases de requisitos e projeto do ciclo de vida do software, as ferramentas CASE servem a diversos fins. Por um lado, sua saída deve ser inteligível para os usuários finais e as organizações contratantes, que pagam pelo desenvolvimento do software. Por outro lado, devem oferecer uma ajuda valiosa aos próprios desenvolvedores; caso contrário é perda de tempo utilizá-las; • Mais baratas que a construção em si: a utilização de uma ferramenta CASE deve custar menos e ser mais eficaz a longo prazo do que a montagem de um sistema de software pelos métodos tradicionais. As ferramentas CASE devem reduzir substancialmente o empenho despendido em implementação e manutenção, oferecendo especificações e projetos de qualidade superior; • Quantitativas e verificáveis: as especificações e projetos gerados pelas ferramentas CASE devem articular meticulosa e concisamente as características e os componentes do software a ser construído. Cada exigência da implementação tem que ser verificável, e pode se encontrada nos documentos gerados. Os critérios de desempenho, as limitações e as condições de erro devem estar especificadas no projeto; • De fácil manutenção: as especificações e projetos produzidos ou montados por uma ferramenta CASE devem ser adaptáveis às modificações nas metas dos requisitos e dos projetos. Quando um documento do projeto perde a sincronização com o código subordinado, torna-se inútil, e pode até causar perda de tempo aos desenvolvedores em futuros aperfeiçoamentos do software; • Orientação gráfica: as boas ferramentas CASE apresentam informações visuais de especificações e projeto. Tanto para os usuários finais como para os desenvolvedores, é muito mais fácil compreender uma ilustração gráfica do que ler inúmeras páginas de texto descritivo. A seguir são apresentadas algumas vantagens das ferramentas CASE. Deve-se perceber, entretanto, que grande parte do valor da engenharia de software auxiliada por computador depende de como ela está integrada com a organização de desenvolvimento de software. • Especificações minuciosas de projeto: é muito difícil para um engenheiro de software realizar manutenção de um grande sistema de software com uma documentação incompleta, imprecisa, inexistente. Através do uso de ferramentas CASE é possível ter documentação completa do projeto que está sendo desenvolvido; • Especificações atuais do projeto: pior que as especificações de projeto incompletas são as especificações que não foram atualizadas quando das modificações feitas no código-fonte. As ferramentas CASE ajudam a manter uma sincronia com a implementação do código; • Redução do tempo e custo de desenvolvimento; • Facilidade e redução de custos de manutenção; • Melhoram a qualidade do produto de software; • Fornecem base para a reusabilidade; • Algumas ferramentas permitem a realização de reengenharia/engenharia reversa; • Controle de uso da metodologia; • Transferência harmoniosa de informações (modelos, programas, documentos, dados); • Aumento no controle do projeto, obtido por meio de um melhor planejamento, monitoração e comunicação; • Melhora na coordenação entre os membros de uma equipe que esteja trabalhando num grande projeto de software; • Fornecem ambientes gráficos de fácil utilização; • Geração automática de código; • Aumento da produtividade. No entanto, é importante ter clareza do que uma ferramenta CASE não faz: • pensar pelo engenheiro de software / analista de sistemas; • identificar os problemas dos sistemas; • detectar as necessidades do usuário; • gerenciar o processo de desenvolvimento; • interpretar diagramas. 3. A Pesquisa Realizada O principal objetivo da realização da pesquisa foi verificar o uso de ferramentas CASE pela comunidade de desenvolvimento de software da cidade de Passo Fundo. Para centralizar os dados e divulgar o trabalho de pesquisa foi construída uma página na Internet (inf.upf.tche.br/case). Nesta página encontram-se todos os dados referentes à pesquisa, sendo alguns deles de acesso restrito à equipe. Foi elaborada, através do banco de dados MySQL1 e da linguagem PHP2, uma base de dados para o cadastramento de ferramentas CASE, para ter-se uma melhor organização destes dados. Devido à diversidade de ferramentas identificadas, uma das dificuldades enfrentadas foi a classificação destas. Não conseguiu-se utilizar nenhuma classificação já existente na literatura, como por exemplo as propostas por Pressman (1995) e Sommerville (2003). Foi necessário propor uma classificação própria, mesclando-se as já existentes. No entanto, esta classificação não será exposta neste artigo. Após identificadas as ferramentas, partiu-se para a definição do público-alvo da pesquisa. Em virtude do número significativamente grande de contatos obtidos, diagnosticou-se que seria muito complicado o deslocamento da equipe para aplicar o instrumento pessoalmente em cada empresa. Sendo assim, iniciou-se a discussão sobre a elaboração de um questionário virtual para que as empresas pudessem responder a pesquisa via Internet. Como o público alvo era empresas da área de informática, acreditou-se que tivessem acesso a esta tecnologia. Esta premissa mostrou-se verdadeira. Desta forma, elaborou-se o questionário virtual. Além da elaboração das questões necessitou-se fazer toda a modelagem do banco de dados utilizando arquitetura relacional. Após, foi construído o MER (Modelo Entidade Relacionamento) correspondente, utilizando-se uma cópia de demonstração da ferramenta CASE Data Architect3. O banco de dados utilizado também foi o MySQL. Concluída esta etapa partiu-se para a programação, também através da linguagem PHP. Como o sistema ficaria disponível na Internet teve-se toda uma preocupação com a segurança de acesso a estas informações. Não poderia ser permitido que qualquer empresa respondesse ao questionário, somente aquelas contatadas. Desta forma, um módulo de segurança foi desenvolvido, para que cada empresa participante recebesse uma identificação e uma senha próprias. O questionário é composto de três partes: perfil da empresa, perfil técnico e uso de ferramentas. Através das questões da primeira parte foram obtidas respostas quanto aos dados cadastrais das empresas, tais como nome, endereço, ramo de atividade, tamanho, número de funcionários (total e que atuam na área), número de profissionais com formação superior na área, etc. Através das questões da segunda parte foram obtidas respostas quanto aos tipos de sistemas desenvolvidos; sistemas operacionais, linguagens de programação e banco de dados utilizados; configurações de hardware utilizadas, etc. Finalmente, com as respostas da terceira parte, além de verificar quais as ferramentas mais utilizadas, pudemos evidenciar o uso/não uso de ferramentas CASE, bem como os motivos que levaram a adoção/não adoção destas ferramentas. Parte da tela do perfil da empresa é apresentada na figura 1. 1 O MySQL é o banco de dados mais popular na categoria de software livre e é reconhecido pela sua velocidade e confiabilidade. 2 O PHP (acrônimo de Hypertext Preprocessor) é uma linguagem de script amplamente usada que foi projetada para desenvolvimento na WEB. 3 Ferramenta CASE para modelagem conceitual e física de banco de dados desenvolvida pela Sybase. Figura 1. Tela do perfil da empresa 4. Resultados Das 46 empresas contatadas 41 responderam ao questionário. Com base nas respostas obteve-se os resultados apresentados a seguir. Nos itens 4.2, 4.3 e 4.5 foram permitidas múltiplas respostas por empresa. 4.1. Quanto à categoria das empresas Em termos de categoria as empresas distribuíram-se conforme a figura 2. ! Figura 2. Categoria das empresas 4.2. Quanto aos tipos de sistemas desenvolvidos Constatou-se que a principal área para a qual são desenvolvidos sistemas de software é o comércio. A educação, a indústria e a saúde também obtiveram percentuais significativos. Toda a distribuição pode ser visualizada na tabela 1. 4.3. Quanto ao ambiente de software Quanto ao ambiente de software das empresas detectou-se que em termos de sistema operacional a maioria utiliza o Windows e o Linux (95,12% e 58,53% respectivamente). Outros sistemas operacionais mencionados foram o HP-UX (9,75%), o OS/2 (7,31%), o AIX (2,43%) e Outros (14,63%). Tabela 1. Tipos de sistemas desenvolvidos Tipo de Sistema Quantidade de Respostas Freqüência (%) Administração Comercial 26 63,21 Automação Comercial 17 41,46 Comércio Eletrônico 11 26,82 Administração Escolar 7 17,07 Educacionais 2 4,87 Administração Industrial 6 14,63 Automação Industrial 3 7,31 Administração Hospitalar 6 14,63 Aplicações Gráficas 2 4,87 Administração Pública 5 12,19 14 34,14 5 12,19 Software Livre 6 14,63 Sistemas Estatísticos 2 4,87 Simuladores 1 2,43 Sistemas para Web Sistemas para Agronegócios Sistemas de Apoio à Pesquisa Outro 3 7,31 15 36,65 Em termos de Banco de Dados os mais utilizados são o MySQL (36,65%) e o Interbase (34,14%). Além destes foram também mencionados Postgres e Paradox (24,39%); Oracle (14,63%); Ingres (12,19%); Zim e DB2(4,87%); Informix e Progress (2,43%); Nenhum (2,43%) e Outros (41,46%). Quanto à programação, utilizam principalmente Delphi e PHP, ambas com 48,78%. Outras mencionadas foram ACCESS e COBOL (24,39%); Java e Visual Basic (21,95%); Clipper (19,51%); ASP (14,63%); C e FOXPRO (9,75%), Pascal e C++ (2,43%). 4.4. Quanto ao uso de ferramentas A partir da investigação realizada detectou-se que a maioria das empresas que desenvolvem software não utilizam a tecnologia CASE. O resultado pode ser visualizado na figura 3. " # $% &' ( " # ! Figura 3. Uso de ferramentas 4.5. Quanto aos motivos da não utilização Como a maioria das empresas não utiliza a tecnologia CASE buscou-se verificar os motivos da não utilização. Destaca-se o custo como sendo o maior problema do uso das ferramentas. Demonstra-se a distribuição dos motivos através da tabela 2. Tabela 2. Motivos da não utilização Motivo da não utilização Custo Quantidade de Respostas Freqüência (%) 13 56,52 Não julga necessário 9 39,13 Falta de conhecimento sobre ferramentas existentes 8 34,78 Dificuldade de acesso (treinamento e suporte) 7 30,43 Baixa complexidade dos sistemas desenvolvidos 7 30,43 Não utilização de um método de desenvolvimento (MER, DFD, OO) 5 21,73 Falta de mão-de-obra qualificada para utilizar 4 17,39 Não conhece aplicabilidade para ferramentas 2 8,69 Equipamentos existentes não comportam 2 8,69 5. Conclusão É consenso na literatura que o uso de ferramentas de apoio ao desenvolvimento de software contribui de forma efetiva para a qualidade do produto final. Também enfatiza-se que a produtividade da equipe de desenvolvimento aumenta significativamente. No entanto, ao realizar pesquisa para verificar o uso de ferramentas de apoio ao desenvolvimento, em empresas que desenvolvem software na cidade de Passo Fundo, diagnosticou-se que mais da metade delas não utiliza a tecnologia. O aspecto custo é o que mais contribui para a não utilização, talvez em decorrência de que a maioria das empresas é de pequeno porte, conforme demonstrado na figura 2. A falta de conhecimento sobre ferramentas existentes e o julgamento de que não se faz necessário o uso da tecnologia também foram aspectos bastante mencionados, como motivos da não utilização. Percebe-se, desta forma, que ainda existe uma falsa idéia de que ferramentas CASE só podem ser utilizadas por empresas de grande porte e no desenvolvimento de grandes aplicações. Com isso, faz-se necessário a criação de uma cultura sobre o verdadeiro papel desta tecnologia. Ainda sobre o custo, no entanto, seria interessante que as empresas que desenvolvem/fornecem a tecnologia tomassem ciência desta experiência a fim de que possam viabilizar programas de incentivo à sua aquisição. Ferramentas de código aberto seriam uma ótima alternativa neste caso. Cabe também mencionar que entre as empresas que utilizam ferramentas CASE para apoiar suas tarefas, o aumento da qualidade e da produtividade foram os principais aspectos que as levaram a adotar a tecnologia, o que confirma o exposto na literatura. É importante salientar que a maioria das empresas que não utiliza ferramentas mostrou interesse na utilização e apontaram a produtividade, a padronização oferecida e a documentação como os principais fatores que as levaria a adquirir a tecnologia. Referências Fiorini, S. T; Von Staa, A.; Baptista, R. M. (1998) “Engenharia de Software com CMM”. Rio de Janeiro: Brasport. 346p. Fisher, A. S. (1990) “CASE”. Rio de Janeiro: Campus. Pressman,R.S.(1995) “Engenharia de Software”. São Paulo:Makron, McGrawHill, 1056p. Sommerville, I. (2003) “Engenharia de Software”. São Paulo: Addison Wesley, 592p.