• Nenhum resultado encontrado

CAPÍTULO 4 - AVALIAÇÃO DO PROCESSO ADESE

4.1 ESTUDO DE CASO

4.1.1 Aplicação Web de Locação de Vídeos

4.1.1.2 Etapa 2 - Desenvolvimento de Serviços

O desenvolvimento de serviços é uma etapa do processo ADESE que deve ser executada cada vez que um novo serviço seja necessário para o desenvolvimento da aplicação. Nas seções a seguir será apresentado o desenvolvimento do serviço opcional de calendário seguindo as regras desta etapa do processo.

Definir o Modelo de Características do Serviço

Para definir o modelo de características do serviço de calendário é necessário especificar as características comuns e diferentes deste domínio. O serviço deve oferecer as seguintes funcionalidades:

• informar a data do dia, de forma inteira (ex: dd/mm/aaaa), ou em partes

separadas como somente o dia, somente o mês, somente o ano e somente o dia

da semana;

• informar o horário do momento, de forma inteira (ex: hh:mm:ss), ou em partes separadas como somente a hora ou somente o minuto;

• informar a diferença de dias entre a data do dia e uma data qualquer informada;

• calcular uma data a partir de um número de dias informado.

A Figura 15 apresenta o modelo de características do serviço de calendário desenvolvido a partir destas definições. Este modelo contém a característica Calendário como característica raiz, e possui o restante das características divididas em dois grupos maiores chamados Data e Horário . As características Hoje , Dia , Mês e Ano , contida no grupo Data , e Agora , Hora e Minuto , contida no grupo Horário , são características obrigatórias no modelo, pois são características essenciais para o seu funcionamento.

Figura 15 - Modelo de características do serviço de calendário.

Instanciar o Modelo de Características

Para instanciar o modelo de características é preciso definir uma configuração deste contendo as características obrigatórias e opcionais a serem utilizadas na aplicação. As características obrigatórias estarão presentes em qualquer configuração do modelo, enquanto as características opcionais necessárias na configuração deverão ser marcadas.

A Figura 16 apresenta o modelo de características do serviço de calendário já

instanciado com todas as suas características opcionais marcadas. Isso significa que o modelo

deverá ser transformado em um novo serviço com todas as suas funções disponíveis. O modelo de características pode ser instanciado com outras configurações para uso em outras aplicações. Neste caso, o desenvolvimento do serviço necessitará ser refeito.

Figura 16 – Modelo de características já instanciado do serviço de calendário.

Mapear o Modelo de Característica para o Diagrama de Classes

Para mapear o modelo de características instanciado para o diagrama de classes UML foram seguidas regras de conversão definidas nesta etapa do processo que consiste em identificar classes, relacionamentos, atributos e operações para o diagrama, conforme definido no capítulo 3. Os passos de identificação foram:

• identificação de classes: foram adicionadas ao diagrama as classes Calendario , Data e Horario por não serem características “folhas” no modelo de características;

• identificação de relacionamentos: foram adicionados ao diagrama de classe,

relacionamentos de agregação entre as classes Calendario e Data ; e,

Calendario e Horario , pois eles têm relacionamentos no modelo de

características, sendo que a classe agregadora é a classe Calendario por ser a

característica de mais alto nível;

• identificação de operações e atributos: foram adicionadas às classes que já constam no diagrama, operações e atributos que representam suas respectivas características “folhas” no modelo de características. Assim, foram adicionadas à classe Data , as operações hoje , dia , mes , ano , diaSemana , diferencaEntreDatas e calcularData e, à classe Horario , as operações agora , hora e minuto ;

• identificação das operações na classe principal: como a classe principal deste diagrama é a classe Calendario , as operações que serão convertidas em operações do serviço devem ser incluídas nesta classe. Esse é o caso das operações hoje , dia , mes , ano , diaSemana , diferencaEntreDatas , calcularData , agora , hora e minuto . Na etapa de implementação do serviço, estas operações contidas na classe principal deverão fazer a invocação da operação original nas outras classes, onde consta realmente a programação da operação.

A Figura 17 apresenta o diagrama de classes produzido para o serviço de calendário

seguindo as regras de conversão detalhadas acima.

Figura 17 - Diagrama de classes do serviço de calendário.

Implementar o Serviço a partir do Diagrama de Classes

Para implementar o serviço é preciso inicialmente programar e compilar todas as classes que compõem o diagrama de classes. Esta programação é feita manualmente pelo desenvolvedor, mas com auxílio de alguma ferramenta de desenvolvimento, como é o caso da ferramenta NetBeans IDE 5.5 que foi utilizada neste trabalho.

A Listagem 13 apresenta um exemplo da programação da operação diaSemana na

classe Calendario , que é a classe principal do serviço e onde constam as operações que

serão operações do serviço. Nesta operação é feita apenas a invocação da operação

diaSemana que consta na classe Data . Por sua vez, na Listagem 14 é apresentado um

exemplo da programação da operação diaSemana na classe Data , que é a classe original da

operação, e onde consta realmente a programação de sua função.

agora : retorna o horário atual;

hora : retorna a hora atual;

minuto : retorna o minuto atual.

Estas são as mesmas operações que estão na classe Calendario e que foram convertidas em operações do serviço. A pasta calendario contém os arquivos que foram gerados a partir do diagrama de classes.

Figura 18 - Estrutura do serviço de calendário na ferramenta Netbeans 5.5.

Após o desenvolvimento do serviço de calendário, é necessário desenvolver a sua

especificação em uma interface padronizada que defina suas funcionalidades e permita o uso

por outras aplicações. Conforme já descrito, essa especificação é feita em WSDL. Algumas

Listagem 15 - Trecho do WSDL que contém as operações do serviço de calendário.

...

<portType name="wsCalendarioSEI">

<operation name="agora">

<input message="tns:wsCalendarioSEI_agora"/>

<output message="tns:wsCalendarioSEI_agoraResponse"/>

</operation>

<operation name="ano">

<input message="tns:wsCalendarioSEI_ano"/>

<output message="tns:wsCalendarioSEI_anoResponse"/>

</operation>

<operation name="calcularData">

<input message="tns:wsCalendarioSEI_calcularData"/>

<output message="tns:wsCalendarioSEI_calcularDataResponse"/>

</operation>

<operation name="dia">

<input message="tns:wsCalendarioSEI_dia"/>

<output message="tns:wsCalendarioSEI_diaResponse"/>

</operation>

<operation name="diaSemana">

<input message="tns:wsCalendarioSEI_diaSemana"/>

<output message="tns:wsCalendarioSEI_diaSemanaResponse"/>

</operation>

<operation name="diferencaEntreDatas">

<input message="tns:wsCalendarioSEI_diferencaEntreDatas"/>

<output message="tns:wsCalendarioSEI_diferencaEntreDatasResponse"/>

</operation>

<operation name="hoje">

<input message="tns:wsCalendarioSEI_hoje"/>

<output message="tns:wsCalendarioSEI_hojeResponse"/>

</operation>

<operation name="hora">

<input message="tns:wsCalendarioSEI_hora"/>

<output message="tns:wsCalendarioSEI_horaResponse"/>

</operation>

<operation name="mes">

<input message="tns:wsCalendarioSEI_mes"/>

<output message="tns:wsCalendarioSEI_mesResponse"/>

</operation>

<operation name="minuto">

<input message="tns:wsCalendarioSEI_minuto"/>

<output message="tns:wsCalendarioSEI_minutoResponse"/>

</operation>

</portType>

...

Documentos relacionados