• No results found

4.1 The Mass Communication Programme

4.1.4 Areas of Specialisation

Sistemas legados contêm grande quantidade de dados críticos e de lógica de negócio de uma empresa, não podendo ser facilmente substituídos. Chen et al. (2005) consideram um desafio transformar completamente ou parcialmente a funcionalidade de um sistema legado em

50

serviços. A reengenharia de sistemas desempenha, portanto, um papel importante na migração para ambientes orientados a serviços e é aplicável a sistemas legados que têm algumas das seguintes características (ZHANG e YANG, 2004):

• O sistema legado precisa ser migrado para um ambiente distribuído e ser publicado como um serviço Web;

• Possui funcionalidade reusável e confiável com uma valiosa lógica de negócio embutida, disponível no próprio sistema legado;

• A funcionalidade deve ser útil para ser publicada como um serviço independente e que atenda a determinada exigência;

• Os componentes do sistema alvo podem ser usados em diferentes plataformas; • Alguns componentes legados devem ser substituídos aos poucos de forma que

não afete o cliente do serviço;

• O sistema alvo deve operar sob a Internet onde não pode ser garantida confiança e velocidade.

Diante da dificuldade de transformar sistemas legados em sistemas orientados a serviços, Chen et al. (2005) propõem uma técnica de reengenharia de aplicações que utiliza análise de características para fazer essa transformação. Analisar características é um processo que inclui a identificação de características do sistema, a construção do modelo de características para organizar as características identificadas de forma consistente, o rastreio dos relacionamentos entre as características e a implementação de sistema legado por meio de técnicas de localização de características (CHEN et al., 2005). Os autores escolheram a análise de características para identificação de serviços, pois serviços e características possuem aspectos em comum.

De acordo com Lee e Muthig (2006) uma característica é uma qualidade importante e especial, uma particularidade do sistema. A definição de característica usada por Chen et al. (2005) em sua técnica diz que essa é um conjunto de funcionalidades do sistema, coerentes e identificáveis que são visíveis ao usuário através de uma interface. Os autores definem ainda

51

característica como uma funcionalidade essencial do sistema, mas salientam que nem toda funcionalidade é uma característica.

Para determinar se uma funcionalidade é uma característica, Chen et al. (2005) sugerem os seguintes critérios:

• Se a funcionalidade pode ser usada para especificar uma das capacidades de um sistema;

• Se uma funcionalidade pode ser visível ou identificável na perspectiva do usuário final;

• Se uma funcionalidade é uma instância de uma característica do domínio;

• A funcionalidade deverá estar em um alto nível de abstração sem preocupação com detalhes computacionais;

• Se a funcionalidade, baseada na perspectiva do usuário, é identificada como uma característica e é indivisível, então ela é chamada de característica atômica;

• Duas ou mais características atômicas podem consistir em uma característica composta baseado nas regras de negócio.

Se uma funcionalidade atende a esses critérios, então pode ser considerada como uma característica que pode coexistir com outras características em um modelo por meio de seus relacionamentos. Um modelo de características é resultado de um processo combinado de identificação e classificação das características, organização dessas como um conjunto de modelos coerentes e validação desses modelos (CHEN et al., 2005).

Para construir uma SOA, Chen et al. (2005) usam o paradigma de Projeto Orientado a Serviço (Service-Oriented Design – SOD) que tenta explorar um processo híbrido. Esse processo analisa o sistema de forma top-down envolvendo análise do domínio, processos de negócio e outros métodos avançados e de forma bottom-up a fim de investigar os componentes e estratégias de refatoração.

52

O primeiro passo na abordagem de Chen et al. (2005) é escolher características intermediárias durante o processo de reengenharia orientada a serviços. Para essa escolha são observados os seguintes itens:

• Granularidade alta: a funcionalidade da característica identificada pelo usuário possui granularidade alta e tem uma afiliação natural com o serviço. Ambos, característica e serviço, são orientados a negócio. Detalhes computacionais podem ser negligenciados; • Rastreabilidade: como uma regra no ciclo de vida do software, características podem

ser mapeadas para outros artefatos através de diferentes níveis de abstração. A identificação de serviço pode ser benéfica nesse ponto;

• Semântica: as dificuldades nas atividades de modelagem semântica necessitam ser superadas, a fim de combinar requisições do serviço cliente e respostas do provedor do serviço;

• Interação de características: tal interação é proposta para solucionar a coordenação de características. Serviços Web devem ser integrados em alguns modelos e interações entre si para que a sua composição alcance o resultado esperado no nível de aplicação. Por meio da análise de característica, operações de serviços (funcionalidades) de sistemas legados podem ser identificadas e refatoradas como implementações orientadas a serviço.

Depois de identificados os serviços, esses são empacotados e publicados. Para Chen et

al. (2005), empacotar significa enquadrar os serviços extraídos e encapsulados de um código-

fonte legado. É um passo necessário para transformar serviços legados candidatos em serviços funcionais de software. Supõe-se aqui que um serviço alvo será provido como um serviço Web.

As operações de serviço identificadas são implementadas pela definição de um método público em um diagrama de classe como uma interface de serviço exposto para o cliente do serviço. Em seguida, os desenvolvedores de serviços Web devem definir as propriedades e métodos que especificam as operações dos serviços. As propriedades são nome do serviço, descrição e namespace. As propriedades dos métodos são MessageName, CacheDuration,

53

funcionalidade do serviço pode ser provida automaticamente pelo WSDL. Depois o serviço pode ser registrado no UDDI e então ser dinamicamente encontrado e usado através da Internet e acessado com o protocolo SOAP.

Uma grande parte da abordagem de Chen et al. (2005) é apoiada por ferramentas. Os autores utilizaram a ferramenta Captain Feature29 para construir o modelo de características e a ferramenta FEAT30 para localizar características. O resultado da análise de características é armazenado como um perfil onde outra ferramenta usará para gerar os serviços. O protótipo da ferramenta WSW31 (Web Services Wrapper) que apoia a implementação de serviços Web é usada para gerar os serviços.