3 Indústria de Software: Caracterização e Gestão
3.6 Técnicas para Desenvolvimento de Software
Conforme visto no início deste capítulo, as técnicas são entendidas como o modo de se pôr em prática as orientações definidas pelos métodos, sendo um apoio para a escolha de ferramentas para a execução dos projetos aplicando os conceitos de engenharia de software.
Será apresentada sucintamente, a seguir, uma série de técnicas comumente encontradas na literatura e amplamente adotadas e defendidas pelas empresas de software em todo o mundo. Rezende (1999) observa que as técnicas possuem similaridade entre si e que as particularidades são poucas: um processo de Análise Estruturada assemelha-se a um objeto da Análise Orientada para Objetos, ou a uma essência da Análise Essencial, ou um requisito
funcional da Análise Orientada à Qualidade.
3.6.1 Análise Estruturada
Segundo Gane e Sarson (1986) apud Rezende (1999), a Análise Estruturada é um conjunto de ferramentas orientado para a construção de uma especificação estruturada para projetos, seja ela relacionada à estrutura lógica ou física.
A Análise Estruturada tem como princípio a divisão dos sistemas em módulos e submódulos, aumentando a produtividade, legibilidade e flexibilidade dos sistemas ao explorar as vantagens da modularidade e apresentação gráfica. Sua importância está também na construção de um modelo lógico do sistema em desenvolvimento antes de sua implementação física, reduzindo custos de alterações e correções futuras (REZENDE, 1999).
A Análise estruturada é a técnica básica que rege o funcionamento de diversas técnicas e ferramentas que foram surgindo e evoluindo sob seu princípio. Ela compreende a modelagem de dados, que estrutura e organiza o fluxo de informações de um sistema real, representado graficamente pela Diagramação de Software, como por exemplo o Diagrama de Fluxo de Dados. A Análise Estruturada evoluiu, ainda, segundo Garcia (2003), para a ênfase nos Diagramas de Relacionamento, para a Análise Essencial e para a Orientação a Objetos, cuja
técnica mais difundida foi a UML (Unified Modeling Language ou Linguagem de Modelagem Unificada).
A técnica da Análise Essencial consiste em levantar os requisitos verdadeiros de um projeto, orientando para que não sejam confundidos com requerimentos irrelevantes para o negócio, ou muito ligados a uma tecnologia de aplicação específica, o que seriam os chamados requisitos falsos (REZENDE, 1999).
Já a abordagem Orientada a Objetos preocupa-se primeiramente em identificar os objetos a partir do domínio da aplicação, para depois encaixar as funções nestes objetos (MARTINS e JÚNIOR, 1999). As vantagens em termos da qualidade da Orientação a Objetos consistem principalmente na maior confiabilidade do sistema, que por ser baseado em Classes de Objetos são menos suscetíveis a erros, a robustez diante de circunstâncias imprevistas, a manutenibilidade devido a códigos de fácil compreensão e mudanças, e a reusabilidade, como por exemplo, reutilizando classes ou funções existentes em diferentes sistemas.
A Linguagem de Modelagem Unificada (UML), ou Unified Modeling Language, é um método que procura sistematizar o uso das linguagens orientadas a objeto, de forma padronizada, através de linguagem de modelagem visual. Segundo Rumbaugh, Jacobson e Booch (1999), a UML é uma linguagem de propósito geral para a especificação, visualização, construção e documentação de artefatos de sistemas de software, que capta suas informações a respeito da estrutura estática e seu comportamento dinâmico.
Rumbaugh, Jacobson e Booch (1999) enfatizam que a UML não é uma linguagem de programação de software, mas que seu benefício está em poder ser usado em conjunto com algumas ferramentas que fornecem geradores de código a partir da UML, gerando códigos numa variedade de linguagens existentes.
Apesar de todos esses benefícios do legado da modelagem da Análise Estruturada, verificou- se que sua notação, originalmente desenvolvida para ser uma técnica descritiva manual, não se adaptaria à modelagem de projetos muito grandes, o que tornaria os modelos de sistemas com portes atualmente vistos impossíveis de serem entendidos e de terem um volume de documentação facilmente mantido. Surgem, dessa forma, as ferramentas CASE (Computer-
Aided Software Engineering), ou Engenharia de Software Auxiliada por Computador, cujos
recursos de desenho são a base para modelar o sistema, automatizando uma série de atividades durante a modelagem, como a construção dos elementos e de seus relacionamentos
e geração de documentação, com uma coleção de ferramentas em um layout organizado que auxiliam na consistência e exatidão dos modelos (PRESSMAN, 1995).
3.6.2 Engenharia de Software Auxiliada por Computador
A Engenharia de Software Auxiliada por Computador (CASE – Computer-Aided Software
Engineering) nada mais é do que software no auxílio à fabricação de software. A ISO/IEC
14102 (ISO, 1995, p. 4) define a ferramenta CASE como “um produto de software que pode dar assistência aos engenheiros de software por meio de suporte automatizado às atividades do ciclo de vida do software”.
Segundo Pressman (1995), as ferramentas CASE englobam um banco de dados que integra as seguintes categorias de ferramentas de desenvolvimento de software: Planejamento de sistemas de informações, Gerenciamento de projeto, Apoio/suporte, Análise e projeto, Programação, Integração e testes, Prototipação, Manutenção e Estrutura (framework).
Segundo o autor, as ferramentas CASE ainda estão num patamar evolutivo inicial, assim como eram as ferramentas CAD/CAE/CIM na década de 70 para a indústria de transformação tradicional. O principal ponto a se desenvolver fica por conta da automatização da geração de código de software, a partir da análise e projetos iniciais, o que tornaria o CASE muito mais poderoso.
As técnicas revisadas na seção 3.6 foram incorporadas a dois indicadores no método desenvolvido para o benchmarking das empresas de software: Análise e Modelagem de
Arquitetura de Software, cujo cenário de referência traz as melhores técnicas como a análise
estruturada, essencial e orientada a objetos, através de linguagem de modelagem unificada; e o indicador Ferramentas de Apoio à Engenharia de Software, pelo qual empresas que adotam apenas ferramentas básicas de codificação, documentação e comunicação, não integradas, enquadram-se no cenário de pior pontuação, enquanto aquelas que exploram todo o potencial de gerenciamento, automação, organização e integração dos elementos do processo de desenvolvimento, via CASE, recebem pontuação de referência.