Escolar Documentos
Profissional Documentos
Cultura Documentos
Serviços Web
Resumo
Nesse trabalho apresentamos diretivas para o desenvolvimento de aplicações baseadas em serviços Web. O
objetivo dessas diretivas é reduzir a complexidade da incorporação de serviços no desenvolvimento de aplicações.
Em nossa abordagem, a utilização desses serviços é feita concentrando-se as invocações de suas operações em um
conjunto definido de elementos e tornando implı́citas essas invocações quando as mesmas são necessárias. Como
solução de implementação utilizamos Aspectos. A abordagem proposta está sendo utilizada no desenvolvimento de
uma aplicação para instituições de ensino superior. Utilizamos alguns elementos dessa aplicação como exemplo
ilustrativo.
Abstract
In this paper, we present directives for the development of Web service based applications. The goal of these
directives is to reduce the complexity of incorporating services in the development process. In our approach the
service invocations are done within specific modules. These invocations become implicit for other modules which
need them. We use Aspects as the implementation solution. This approach has been used in the development of an
application for academic institutions which can be used for the enrollment of students. We use some elements of
this application to illustrate our directives.
1. Introdução
O uso do Processo Unificado [8] implica na realização de uma série de interações incre-
mentais. Em cada uma dessas interações são realizadas atividades pertinentes ao ciclo de vida
do sistema. Cada interação consiste em um passo das atividades de especificação de requisitos,
análise, desenho, implementação e de teste.
O Processo Unificado é dirigido por casos de uso. Casos de uso são usados na especificação
de requisitos para capturar as necessidades do usuário e os passos seguintes são destinados
ao atendimento dessas necessidades através da realização dos casos de uso. Por exemplo, na
especificação de requisitos do sistema de matrı́culas multi-institucional, definimos Matrı́cula
Externa como um caso de uso. Esse caso de uso fornece a especificação das funcionalidades
necessárias para que alunos de uma instituição possam ser matriculados em todas as instituições
consorciadas. A Figura 1 apresenta uma possı́vel especificação para esse caso de uso1 . Após a
identificação e especificação de casos de uso, na atividade de análise define-se um conjunto de
classes e outros elementos, relacionamentos e colaborações, necessários para a sua realização.
Os casos de uso, aspectos tecnológicos, requisitos não funcionais, sistemas legados e
interações com outros sistemas influenciam na definição da arquitetura da aplicação [7]. No
Processo Unificado, a arquitetura da aplicação tem a função de apresentar uma visão do sistema
como um todo. As diretivas de desenvolvimento que propomos especificam parcialmente uma
arquitetura para aplicações baseadas em serviços Web. Entretanto, embora estejamos discutindo
nossa abordagem no contexto do Processo Unificado, esta pode se aplicada considerando difer-
entes estilos de especificação arquitetural [11, 16, 21].
No desenho da aplicação, são levados em conta aspectos da plataforma de desenvolvimento
como por exemplo bibliotecas de interface de usuário e sistemas de gerenciamento de banco de
dados. A reutilização de módulos de sistemas legados e de frameworks também é considerada
no modelo de desenho. Para a construção do modelo de desenho são também especificados um
conjunto de classes e outros elementos, relacionamentos e colaborações. Enquanto no mod-
elo de análise os elementos definidos são conceituais, representando elementos do domı́nio da
aplicação, o modelo de desenho oferece um esboço do modelo de implementação, através de
elementos lógicos. Na Implementação são definidos todos os elementos necessários para a
obtenção do código executável da aplicação.
O uso de um serviço Web como solução para atendimento de requisitos de aplicações im-
plica na definição e descrição de sua interface na atividade de desenho. Para ilustrar a definição
dessas interfaces, utilizamos a realização do caso de uso Matrı́cula Externa do sistema de
matrı́culas. A Figura 2.a apresenta instâncias de classes de análise e suas colaborações para
a realização do caso de uso Matrı́cula Externa.
O modelo de análise no Processo Unificado estabelece uma categorização para classes se-
gundo os estereótipos entidade, controle e fronteira [8]. O estereótipo entidade categoriza
classes do domı́nio da aplicação que são persistentes na maioria dos casos. O estereótipo cont-
role é usado para categorizar classes que modelam o comportamento do sistema. O estereótipo
fronteira categoriza classes utilizadas para modelar as interações entre o sistema, seus usuários
e outros sistemas. Na Figura 2.a os objetos são representados conforme esses estereótipos.
1
Essa forma de especificação de casos de uso é apenas uma das possı́veis que encontra-se na literatura [5].
Utilizamos um exemplo de cada estereótipo para discutir aspectos de desenho relativos ao uso
interfaces de serviços. A Figura 2.b apresenta as classes de análise InterfaceMatrı́culaExterna
(fronteira), DisciplinaExterna (entidade) e FazMatrı́cula (controle), e as interfaces de serviço
necessárias para o seu desenho.
: FazMatrícula
: DisciplinaExterna
3: Recupera Dados Aluno IS Verifica IS Obtém IS Faz
: Aluno : BuscaAluno Disponibilidade Disciplinas Matrícula
Para a realização do caso de uso Matrı́cula Externa, cada instituição participante provê
um conjunto de serviços para os demais participantes. Considerando a sugestão de desenho
apresentada na Seção 2, para a realização do caso de uso Matrı́cula Externa, todas as inter-
faces de serviços providos pelas instituições consorciadas participam, na aplicação cliente, da
especificação das classes InterfaceMatrı́culaExterna, DisciplinaExterna e FazMatrı́cula. Nesta
seção apresentamos uma segunda abordagem para a utilização das interfaces de serviços. Uti-
lizaremos as mesmas classes de análise da seção anterior.
Disponibilidade
Matrícula
(a) Alternativa de Desenho para O caso de Uso Matrı́cula Externa (b) Elementos
para a invocação
dos serviços
A Figura 3.a apresenta uma alternativa de desenho para o caso de uso Matrı́cula Externa.
Nessa solução, o desenho das classes de análise requer a implementação das classes Monitor,
DisciplinaExterna e Matrı́culaExterna. Em nosso exemplo, para apresentar informação sobre
as instituições on-line, a interface de usuário deve invocar apenas a operação VerificaDisponi-
bilidade() da classe Monitor. Para obter as disciplinas externas disponı́veis para o aluno sele-
cionado, a classe de desenho DisciplinaExterna deve invocar a operação ObtémDisciplinas().
Por fim, para realizar a Matrı́cula Externa, a classe de controle FazMatrı́cula utiliza a operação
FazMatrı́culaExterna() da classe Matrı́culaExterna.
A solução de desenho proposta requer que a invocação dos serviços utilizados seja feita im-
plicitamente quando necessárias. Na especificação arquitetural dessa solução, essas invocações
são concentradas em um conjunto especı́fico de elementos. A Figura 3.b apresenta os elementos
responsáveis pela invocação dos serviços.
A especificação arquitetural proposta é aderente a idéia de separação de interesses do De-
senvolvimento Orientado a Aspectos. Programação Orientada a Aspectos - POA [9, 10, 22],
baseia-se na idéia de que sistemas são melhor programados especificando-se separadamente
os vários interesses e descrições de seus relacionamentos e, posteriormente, deixando-se para
aspect Disponibilidade {
pointcut EstaDisponı́vel(): aspect Disciplinas {
call(Monitor.ParticipantesDisponı́veis()) pointcut Externas():
before(): EstaDisponı́vel() { call(DisciplinaExterna.ObtémDisciplinas())
Monitor.Disp(ISVerificaDisponibilidade_1()); before(): Externas() {
Monitor.Disp(ISVerificaDisponibilidade_2()); DisciplinaExterna.Atualiza(ISObtémDisciplinas_1());
DisciplinaExterna.Atualiza(ISObtémDisciplinas_2());
.. ..
Monitor.Disp(ISVerificaDisponibilidade_n()); DisciplinaExterna.Atualiza(ISObtémDisciplinas_n());
} }
} }
aspect Matrı́cula {
pointcut FazMatrı́cula():
call(Matrı́culaExterna.FazMatrı́culaExterna())
After(): FazMatrı́cula() {
ISFazMatrı́cula_1();
ISFazMatrı́cula_2();
..
ISFazMatrı́cula_n();
}
}
(c) Matrı́cula
5. Conclusão
Referências
[1] Ali Arsanjani, Joanne Martin, Peri Tarr, and Brent Hailpern. Web services: Promises and
Compromises. Queue, 1(1):48–58, 2003.
[2] M. A. Cibrán B. Verheecke and V. Jonckers. AOP for Dynamic Configuration and Man-
agement of Web Services. In Proceedings of the 3rd International Conference on Web
Services, (ICWS-Europe’03), September 2003.
[3] Lucia R. D. Bastos and Jaelson Castro. Integration between Organizational Requirements
and architecture. In Proceedings of WER’03, 2003.
[4] Boualem Benatallah, Marlon Dumas, Liangzhao Zeng, and A. Ngu. Declarative Com-
position and Peer-to-Peer Provisioning of Dynamic Web Services. In Proceedings of the
18th International Conference on Data Engineering (ICDE’02), pages 297–308. IEEE
Computer Society, 2002.
[5] Alistair Cockburn. Writing Effective Use Cases. Addison Wesley, 2001.
[6] Francisco Curbera, Rania Khalaf, Nirmal Mukhi, Stefan Tai, and Sanjiva Weerawarana.
Service-Oriented Computing: The Next Step in Web Services. Communications of the
ACM, 46(10):29–34, October 2003.
[7] Ivar Jacobson, Grady Booch, and James Rumbaugh. The Unified Software Development
Process. Addison Wesley, 1998.
[8] Ivar Jacobson, M. Christerson, P. Jonsson, and G. Övergaard. Object-Oriented Software
Engineering: A Use Case Driven Approach. Addison-Wesley, 1992.
[9] G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J-M. Loingtier, and J. Ir-
win. Aspect-Oriented Programming. In Proceedings of the European Conference on
Object-Oriented Programming, volume 1241, pages 220–242. Springer-Verlag, Berlin,
Heidelberg and New York, 1997.
[10] Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William
Griswold. Getting Started with ASPECTJ. Communications of the ACM, 44(10):59–65,
2001.
[11] Philippe B. Kruchten. The 4+1 View Model of Architecture. IEEE Software, November,
1995.
[12] B. Verheecke M. A. Cibrán and V. Jonckers. Modularizing Client-Side Web Service
Management Aspects. In Proceedings of the 2nd Nordic Conference on Web Services
(NCWS’03), 2003.
[13] S. McIlraith, T. C. Son T. C., and H. Zeng. Semantic Web Services. IEEE Inteligent
Systems, 16(2):46–53, March./Apr. 2001. Special Issue on the Semantic Web.
[14] B. Medjahed et al. Business-to-Business Interactions: Issues and Enabling Technologies.
The VLDB Journal, 12(1):59–85, 2003.
[15] M. P. Papazoglou and D. Georgakopoulos. Service-Oriented Computing: Introduction.
Communications of the ACM, 46(10):24–28, October 2003.
[16] Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Dis-
cipline. Prentice Hall Publishing, 1996.
[17] D. Trastour, C. Bartolini, and C. Preist. Semantic Web Support for the E-Commerce
B2B Life Cycle. In Proceedings of the 11th International World Wide Web Conference
(WWW’02). ACM, May 2002.
[18] W3C. Web Services Description Language - W3C Note, Mar. 2001. [Online] Available:
http://www.w3.org/TR/2001/NOTE-wsdl-20010315.
[19] W3C. Web Services Architecture: W3C working draft, Nov. 2002. [Online] Available:
http://www.w3.org/TR/2002/WD-ws-arch-20021114/.
[20] W3C. Web services glossary: W3C Working Draft 14, May 2003. [Online] Available:
http://www.w3.org/TR/2003/WD-ws-gloss-20030514/.
[21] Kim Waldén and Jean-Marc Nerson. Seamless object-oriented software architecture.
Prentice Hall Publishing, 1995.
[22] Robert J. Walker, Elisa L. A. Baniassad, and Gail C. Murphy. An Initial Assessment of
Aspect-Oriented Programming. In Proceedings of the 21st International Conference on
Software Engineering (ICSE’99), pages 120–130. IEEE Computer Society Press, 1999.
[23] J. Yang and Mike P. Papazoglou. Web Component: A Substrate for Web Service Reuse
and Composition. In Proceedings of the 14th International Conference on Advanced In-
formation Systems Engineering (CAISE’02).
[24] Liangzhao Zeng, Boualem Benatallah, and Marlon Dumas. Quality Driven Web Ser-
vices Composition. In Proceedings of the 12th International World Wide Web Conference
(WWW’03). ACM, May 2003.