Extracting dynamic dependencies between web services using vector clocks

Service Oriented Architecture (SOA) enables organizations to react to requirement changes in an agile manner and to foster the reuse of existing services. However, the dynamic nature of service oriented systems and their agility bear the challenge of properly understanding such systems. In particular, understanding the dependencies among services is a non trivial task, especially if service oriented systems are distributed over several hosts belonging to different departments of an organization. In this paper, we propose an approach to extract dynamic dependencies among web services. The approach is based on the vector clocks, originally conceived and used to order events in a distributed environment. We use the vector clocks to order service executions and to infer causal dependencies among services. We show the feasibility of the approach by implementing it into the Apache CXF framework and instrumenting the SOAP messages. We designed and executed two experiments to investigate the impact of the approach on the response time. The results show a slight increase that is deemed to be low in typical industrial service oriented systems.

[1]  Daniele Romano,et al.  Using vector clocks to monitor dependencies among services at runtime , 2011, QASBA '11.

[2]  Daniele Romano,et al.  Using source code metrics to predict change-prone Java interfaces , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[3]  Alexander Schill,et al.  Analysing Dependencies in Service Compositions , 2009, ICSOC/ServiceWave Workshops.

[4]  Christian Werner,et al.  Compressing SOAP messages by using differential encoding , 2004, Proceedings. IEEE International Conference on Web Services, 2004..

[5]  Keith Frampton,et al.  Towards the Definition and Validation of Coupling Metrics for Predicting Maintainability in Service-Oriented Designs , 2006, OTM Workshops.

[6]  Zahir Tari,et al.  The Impact of Service Cohesion on the Analyzability of Service-Oriented Software , 2010, IEEE Transactions on Services Computing.

[7]  Gregor Hohpe,et al.  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions , 2003 .

[8]  Caspar Ryan,et al.  A Controlled Experiment for Evaluating the Impact of Coupling on the Maintainability of Service-Oriented Software , 2011, IEEE Transactions on Software Engineering.

[9]  Fabio Casati,et al.  Toward Web Service Dependency Discovery for SOA Management , 2008, 2008 IEEE International Conference on Services Computing.

[10]  Robert S. Arnold,et al.  Software Change Impact Analysis , 1996 .

[11]  Zahir Tari,et al.  Optimizing Web Services Performance by Using Similarity-Based Multicast Protocol , 2006, 2006 European Conference on Web Services (ECOWS'06).

[12]  Friedemann Mattern,et al.  Virtual Time and Global States of Distributed Systems , 2002 .

[13]  Keith Frampton,et al.  Cohesion Metrics for Predicting Maintainability of Service-Oriented Software , 2007, Seventh International Conference on Quality Software (QSIC 2007).

[14]  Michiaki Tatsubori,et al.  Optimizing Web services performance by differential deserialization , 2005, IEEE International Conference on Web Services (ICWS'05).

[15]  C. Murray Woodside,et al.  Logical Clock Requirements for Reverse Engineering Scenarios from a Distributed System , 2002, IEEE Trans. Software Eng..

[16]  Miriam A. M. Capretz,et al.  A Dependency Impact Analysis Model for Web Services Evolution , 2009, 2009 IEEE International Conference on Web Services.

[17]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[18]  S.A. Bohner,et al.  Software change impacts-an evolving perspective , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[19]  Colin J. Fidge,et al.  Timestamps in Message-Passing Systems That Preserve the Partial Ordering , 1988 .

[20]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.