# Ferramentas Integradas

A busca pelo aumento de produtividade no processo de desenvolvimento de software e pela melhoria continua de qualidade levou ao largo uso de ferramentas de apoio. Com isso surgiram inúmeras ferramentas de aplicações variadas que atendem a processos isolados sem integração.
A necessidade de integrar essas ferramentas tem sido um grande desafio desde 1980 e seu avanço foi retardado por questões como a inexistência de um ambiente padrão de desenvolvimento, a falta de padronização de interface gráfica e a falta de investidores e consumidores interessados pela integração.
A integração de Ferramentas CASE pode ser definida como um conjunto de ferramentas capazes de agir de forma combinada e integrada que realizam o intercâmbio de informações, dados, artefatos e serviços entre si, suportando desde a análise de requisitos até a entrega do produto final.
O uso de Ferramentas CASE integradas fornece inúmeros benefícios ao processo de desenvolvimento de software. Os benefícios mais evidentes são: a facilidade na troca de informações entre as ferramentas, garantia de qualidade, atualização encadeada de documentos gerados, aumento do controle do projeto, redução de esforço em algumas atividades e melhoria na cooperação entre membros de um projeto.
Alguns fabricantes têm procurado integrar ferramentas e serviços aplicados aos processos de desenvolvimento de software mais utilizados. Assim pretendem proporcionar aos seus clientes maior produtividade, redução de custos e melhoria constante na qualidade dos produtos, oferecendo soluções integráveis com as principais plataformas existentes no mercado e permitindo que sejam adquiridos de forma modular, conforme suas necessidades e estratégias de investimento.

## Requisitos de Integração

Para a correta integração entre as ferramentas, é necessário a integração entre métodos ao longo de todo o processo de desenvolvimento. Resultados de diferentes métodos apicados em diferentes pontos de vista do problema devem ser compatíveis, para que combinados ajudem a resolver o problema, e que para que os resultados produzidos em uma fase possam ser usados como entrada para o método da fase seguinte.
Um ambiente CASE integrado deve ter as seguintes características:
* Prover mecanismos de compartilhamento da informação entre todas as ferramentas contidas no ambiente.
* Propagar a mudança ocorrida em uma informação para outros itens de informação relacionadas.
* Prover controle de versão e gerenciamento de configuração para todas as informações da engenharia de software.
* Permitir acesso direto e não seqüencial a qualquer ferramenta contida no ambiente.
* Suporte a comunicação entre engenheiros de software.
* Coletar métricas das técnicas e do gerenciamento que possam ser usadas para melhorar o processo e o produto.

## Níveis de Integração

Os níveis de integração se aplicam a ferramentas contidas em workbenches ou em um ambiente de integração.

### Integração de plataforma

Implementar as ferramentas e workbenches sobre uma mesma plataforma. Podem ser encontradas dificuldades caso o ambiente possua redes heterogêneas, com diferentes computadores, rodando sistemas operacionais diferentes. Como solução podem ser adotados sistemas operacionais conhecidos universalmente e largamente utilizados.

### Integração de dados

Possibilidade de diferentes ferramentas CASE trocarem dados entre si. Resultados de uma ferramenta podem ser passados como entrada para outra. Podem ainda ser divididas em sub-níveis de integração:
* Arquivos Compartilhados: Cada ferramenta reconhece um determinado formato de arquivo. Qualquer uma das ferramentas pode escrever/ler arquivos nesse formato. Essa abordagem pode eliminar a necessidade da criação de um arquivo intermediário, forçando os programas a conhecerem a estrutura lógica do arquivo de troca de informações e faz com que as ferramentas concordem no formato dos dados trocados ou possuam filtros que convertam os dados compartilhados numa outra representação. A implementação desses filtros podem representar um aumento de custo já que pode ser necessário a implementação de um filtro para cada formato de entrada.
* Estruturas de Dados Compartilhadas: Ferramentas utilizam estruturas de dados compartilhados que incluem informação de linguagem de design ou programação. Os detalhes sintáticos e semânticos das estruturas são conhecidos por todas as ferramentas. Estas estruturas podem ser representadas por notações como diagramas ou até estruturas de alguma linguagem de programação
* Repositório Compartilhado: A integração das ferramentas se dá através de um sistema de gerenciamento quem inclui um modelo de dados compartilhado e público que descreve as entidades e relacionamentos que podem ser manipulados pelas ferramentas. O modelos é acessível por todas as ferramentas e conhecido como Sistema de Gerenciamento de Objeto. Este modelo pode apresentar desvantagens por dois detalhes: primeiro, as ferramentas devem acessar constantemente o repositório e segundo o usuário deve adquirir também o Sistema de Gerenciamento de Objeto tendo um custo adicional.

### Integração de apresentação

As ferramentas devem usar um estilo comum e um conjunto de padrões para interação com o usuário. Facilitando o aprendizado de utilização da ferramenta. Para essa abordagem existem três níveis de integração.
* Integração de Sistema de Janela: Ferramentas devem apresentar mesmo sistema de janelas e comandos de manipulação.
* Integração de Comando: As ferramentas devem usar a mesma forma de comando para funções utilizadas, seja em linhas de comando como em ambientes gráficos. Menus posicionados em um mesmo lugar em cada aplicação. Existem padrões de design definidos para que os desenvolvedores sigam uma mesma linha de desenvolvimento baseados na definição de componentes e comportamentos.
* Integração de Interação: Aplicada em sistemas com manipulação direta da interface onde o usuário interage diretamente. Nesse caso uma atividade que é realizada de uma forma em uma entidade gráfica deve ser realizada da mesma forma em qualquer outra entidade gráfica. Essa integração se torna difícil, já que as integrações são muitas e a quantidade de representações de objetos gráficos e textuais é muito grande.

### Integração de Controle

Em um ambiente uma ferramenta pode ter controle sobre outras ferramentas. Ativar, parar ou utilizar serviços de outras ferramentas são exemplos desse tipo de integração. São bastante usadas em interfaces públicas de acesso.

## Dificuldades de Integração

Dentre as dificuldades para se realizar a integração de Ferramentas CASE, destacam-se aquelas relacionadas a lidar com as heterogeneidades semânticas e estruturais destas ferramentas. Outras dificuldades encontradas são:
* Ferramentas Externas: pode haver mais de uma ferramenta com o mesmo propósito sendo utilizada em uma mesma atividade. Ou ferramentas contemplando atividades diferentes e complementares durante o desenvolvimento;
* Abstração de Dados: abstrair dados é poder manipulá­-los independente da aplicação que os
criou. Neste caso, o significado da palavra independente deve ser amenizado a depender do objetivo do mecanismo de integração em questão;
* Evolução Semântica: o domínio de um artefato pode evoluir em decorrência de novos conceitos.
Esta questão influência diretamente na tecnologia adotada para a construção de um mecanismo de integração. É interessante notar também que uma mudança na semântica pode implicar na necessidade de redefinição de como os artefatos serão integrados;
* Integridade Semântica: a semântica de um domínio e esquemas definem restrições para que o
artefato seja interpretado corretamente. Desta forma, é necessário assegurar que a semântica e o esquema sejam mantidos durante a integração;
* Contexto da Informação: sempre que uma informação puder ser interpretada por mais de uma
maneira, o que nos informará seu verdadeiro significado é o domínio do assunto sendo discutido. Por exemplo, a palavra manga por si só não traz consigo seu significado, ela pode significar uma fruta como também parte de uma roupa;
* Distribuição: está relacionado com o acesso das ferramentas ao mecanismo de integração.
Neste contexto, a utilização de XML tem sido vista como uma solução para essas dificuldades. Entretanto, XML possui alguns problemas como múltiplos padrões e semântica de marcações. Reconhecendo suas limitações, várias comunidades, incluindo a W3C, tem trabalhado em tecnologias correlatas.

## Formas de Integração

Podemos considerar basicamente duas formas de integração: Modelo Canônico e Integração aos Pares.
* Modelo Canônico: na perspectiva da utilização de um modelo canônico, todas as ferramentas devem estar
projetadas para lidar com uma mesma tecnologia de armazenamento e ainda possuir interfaces para permitir a integração em níveis de apresentação, controle, processo, dado e conhecimento. Caso exista necessidade de integrar alguma ferramenta que não tenha sido projetada para lidar com o modelo canônico, deve ser feita uma adaptação, o que é um processo complicado pois podemos nos deparar muito facilmente com ferramentas proprietárias onde seus responsáveis não disponibilizam o código fonte.
* Integração aos Pares: a abordagem que considera a integração entre pares de aplicações é menos acoplada e foi projetada para facilitar o intercâmbio de informação entre aplicações independentes. Entretanto, corre­-se o risco da manutenção de mapeamento entre as ferramentas exigir muito esforço, já que há a necessidade de criação de dois conversores para transformação dos artefatos para cada par de aplicações integradas.

## Algumas Ferramentas Disponíveis

Entre as ferramentas de integração disponíveis no mercado merecem destaque:

### IBM Rational

* IBM Rational TUP – Rational Team Unifying Plataform, suite que integra produtos individuais agrupados apropriadamente para atender grupos de trabalhos, através da integração das seguintes ferramentas: o IBM Rational Suite Analyst Studio - análise de problemas e gerenciamento de requisitos. o IBM Rational Suite Development Studio - desenvolvimento por modelos e testes do desenvolvedor. o Rational Suite Development Studio Real Time - sistemas embarcados, desenvolvimento por modelos e testes do desenvolvedor. o IBM Rational Suite TestStudio - testes de funcionalidade, confiabilidade e desempenho. o IBM Rational Suite Enterprise - para profissionais que atuam em diversas áreas funcionais.
* IBM Rational XDE, que fornece um ambiente integrado para modelagem, desenvolvimento e testes para plataformas Java e .NET.

### Borland

* Borland ALM – Borland Application Lifecycle Management, suíte que integra ferramentas que atendem a todo processo de desenvolvimento de software. Integra ferramentas como: o Caliber RM - que gerencia repositório centralizado para requisitos. o Together - ferramenta de modelagem UML. o StarTeam - gerência de configuração.

### Microsoft

* Microsoft Visual Studio Team Suite – combina uma família de produtos que oferece ambiente de desenvolvimento integrados (IDEs) e gerência de configuração de software. Combina as seguintes ferramentas : o Visual Studio Edition for Software Architects - Modelagem, diagramas de aplicação e sistema, geração de código. o Visual Studio Team Edition for Software Developers - Codificação, design visual de formulários Windows e Web, unit tests. o Visual Studio Team Edition for Software Tester - Testes automatizados, testes de carga, análise de cobertura de código, unit tests.

### Eclipse

* Eclipse – ferramenta de distribuição gratuita, livre e de código aberto que agrega plugins para tecnologia Java, incluindo ferramentas de apoio a criação de diagramas UML e acesso a recursos em servidores de bancos de dados. Devido a flexibilidade da sua arquitetura de software, o Eclipse permite que plugins sejam criados e facilmente integrados. Existe uma grande variedade de plugins disponível no mercado (gratuitos e comerciais), permitindo ampliar as características e recursos a ferramenta.

## Conclusão

Percebe-se que existe uma grande mobilização no sentido de integrar o maior número possível de ferramentas que atendem amplamente os processos mais utilizados no desenvolvimento de software. Isso favorece integração das equipes, proporciona atualização encadeada de documentos, possibilita maior controle de projetos e a conseqüente garantia de qualidade. O número de opções no mercado já permite escolhas de acordo com fabricante, plataforma ou ferramentas de preferência. A maioria oferece opções modularizadas, possibilitando que a adoção da ferramenta escolhida seja de acordo com a estratégia definida pela equipe. Mas para que a integração seja realizada de forma simplificada e eficiente, as empresas devem seguir padrões na geração de seus formatos para que possa haver integração não somente de ferramentas de uma mesma empresa. Infelizmente as empresas não seguem isso e muito menos disponibilizam o código fonte de suas aplicações para que sejam adequadas, assim, o cliente fica "preso" a utilizar apenas as ferramentas de determinada empresa.

## Ligações Externas

http://www.eclipse.org
http://www-306.ibm.com/software/info/ecatalog/pt_BR/products/
http://www.borland.com/br/products/alm/index.html
http://msdn.microsoft.com/vstudio/teamsystem/default.aspx