1 INTRODUÇÃO
2.2 FERRAMENTAS DE SUPORTE A ENGENHARIA DE SOFTWARE
2.2.2 Ferramentas CASE
Segundo Silva (2001, p.397):
Definimos CASE como um conjunto de técnicas e ferramentas informáticas que auxiliam o engenheiro de software no desenvolvimento de aplicações, com o objetivo de diminuir o respectivo esforço e complexidade, de melhorar o controle do projeto, de aplicar sistematicamente um processo uniformizado e de automatizar algumas atividades, nomeadamente a verificação da consistência e qualidade do produto final e a geração de artefatos. Uma ferramenta CASE não é mais do que um produto informático destinado a suportar uma ou mais atividades de engenharia de software, relacionadas com uma (ou mais) metodologia(s) de desenvolvimento. Para Sommerville (2003), a tecnologia CASE proporciona apoio ao processo de software pela automação de algumas atividades de processo e pelo fornecimento de informações sobre o software que está sendo desenvolvido.
Um dos principais objetivos que há muito tempo se procura atingir com estas ferramentas é a implementação de um ambiente integrado que permita a aplicação de uma abordagem desde a concepção até a implementação para o desenvolvimento de sistemas de informação (SILVA, 2001).
De acordo com Silva (2001) as ferramentas CASE surgiram efetivamente no mercado no início da década de 80, onde passaram a ter uma crescente importância no processo de desenvolvimento, motivada por fatores decisivos que tornaram cada vez maior a necessidade deste tipo de ferramentas, fatores tais como:
Mudança da ênfase das atividades de programação para atividades de análise e desenho de software.
Utilização de computadores pessoais e de interfaces de trabalho gráficas. O aparecimento de diversas técnicas de modelagem de sistemas, que
implicavam o desenho de diagramas gráficos (tais como os fluxogramas ou diagramas de fluxos de dados), em que a representação destas notações em papel, ou em ambientes orientados ao caráter, se tornava impraticável à medida que a respectiva complexidade aumentava.
O aumento da complexidade e do tamanho do software, associado às maiores capacidades do hardware.
A década de 80 foi uma época muito importante para o avanço das ferramentas CASE, onde foram lançadas no mercado ferramentas de análise de modelagem, ferramentas de geração automática de código e ferramentas de apoio à gestão de projetos, com suporte a elaboração de estimativas e testes. Abaixo uma imagem que demonstra a evolução das ferramentas CASE.
Figura 5 – Evolução das ferramentas de apoio ao desenvolvimento de software.
Fonte: UML Metodologias e ferramentas CASE, SILVA, 2001.
Segundo Pressman (1995) as ferramentas CASE podem ser classificadas por função, por seus papéis como instrumentos para os gerentes e para o pessoal técnico, pelo uso que elas têm nas várias etapas do processo de engenharia de software, pela arquitetura de ambiente (hardware e software) que as suporta ou até mesmo pela origem ou custo delas. Pressman sugere uma classificação de algumas ferramentas CASE de acordo com sua função, as quais serão descritas abaixo com o intuito de exemplificar os tipos de ferramentas existentes:
Ferramentas de gerenciamento de projetos: Utilizando este tipo de
ferramenta o gerente de projetos pode gerar úteis estimativas de esforço, custo e duração de um projeto de software, definir uma estrutura de divisão de trabalho, planejar uma programação viável de projeto e acompanhar projetos em base contínua.
Ferramentas de planejamento de projeto: Ferramentas desta categoria concentram-se em duas áreas fundamentais: Estimativa de custos, que são responsáveis por computar o esforço estimado, a duração do projeto e o número recomendado de pessoas envolvidas, e programação de projetos que
permite o a definição e representação de interdependências de todas as tarefas do projeto.
Ferramentas de rastreamento de requisitos: Responsáveis por oferecer uma abordagem sistemática ao isolamento dos requisitos que se inicia com a especificação do cliente.
Ferramentas de apoio: Tem o objetivo de complementar o processo de engenharia de software, tais como ferramentas de documentação, de rede, de garantia de qualidade, de gerenciamento de banco de dados e de
gerenciamento de configuração.
Ferramentas de programação: Abrange compiladores, editores e depuradores que se encontram a disposição para apoiar a maioria das linguagens de programação convencionais.
Ferramentas de integração e teste: Ferramentas responsáveis por gerenciar os testes de um projeto, utilizando casos de teste por meio de ferramentas que proporcionam a aquisição de dados que serão utilizados para os testes e por análise de código fonte, sem executar os casos de teste.
Dentre outras inúmeras ferramentas que auxiliam o engenheiro de software nas várias etapas do ciclo de vida de um projeto de alta complexidade.
Para Silva (2001) a adoção de ferramentas CASE pode trazer inúmeros benefícios desde sua concepção, já que para sua implantação são necessária uma série de regras e princípios que por si só já são um considerável ganho para o processo empresarial, até outras melhorias que serão citadas abaixo:
Uniformização do processo de desenvolvimento, das atividades realizadas e dos artefatos produzidos.
Reutilização de vários artefatos ao longo do mesmo projeto e entre projetos, promovendo o consequente aumento da produtividade.
Automatização de atividades, com particular destaque ao nível de geração de código e de documentação.
Diminuição do tempo de desenvolvimento decorrente da reutilização de artefatos existentes e até mesmo de outros projetos.
Integração de artefatos produzidos em diferentes fases do ciclo de vida do desenvolvimento de software.
Qualidade do produto final, pois a abordagem utilizando ferramentas já existentes no mercado impõe uma série de regras e padronizações que automaticamente refletem em um projeto mais estruturado.
Apesar das inúmeras vantagens obtidas, Silva destaca que também existem aspectos negativos nesse tipo de abordagem, onde alguns fatores foram determinantes para o fracasso na adoção deste tipo de ferramenta, fatores como o elevado tempo de aprendizagem, por vezes necessárias para o maior aproveitamento das funcionalidades disponibilizadas por estas ferramentas, o que é incompatível com a realidade das empresas que exigem sempre a apresentação de resultados no menor tempo possível. Outros problemas como a impossibilidade de em uma abordagem mais estratégica, mapear os processos de negócio em requisitos de informação, e o mito das ferramentas geradoras automáticas de código que não atingiram ainda resultados satisfatórios, complementam os pontos a se considerar ao pensar na implantação de ferramentas CASE para o apoio do projeto.
O crescente aumento no desenvolvimento de artifícios computacionais que apoiem o engenheiro de software em suas tarefas de gerenciamento do projeto é um ponto muito importante para a potencialidade de cada etapa do ciclo de vida de um projeto, onde padronizações são adquiridas e regras estabelecem maior estabilidade no desenvolvimento como um todo, atendendo assim com maior exatidão os prazos e com alto nível de qualidade no produto final.