Using Automatic Process Clustering for Design Recovery and Distributed Debugging

Distributed applications written in Hermes typically consist of a large number of sequential processes. The use of a hierarchy of process clusters can facilitate the debugging of such applications. Ideally, such a hierarchy should be derived automatically. This paper discusses two approaches to automatic process clustering, one analyzing runtime information with a statistical approach and one utilizing additional semantic information. Tools realizing these approaches were developed and a quantitative measure to evaluate process clusters is proposed. The results obtained under both approaches are compared, and indicate that the additional semantic information improves the cluster hierarchies derived. We demonstrate the value of automatic process clustering with an example. It is shown how appropriate process clusters reduce the complexity of the understanding process, facilitating program maintenance activities such as debugging. >

[1]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[2]  Rajiv D. Banker,et al.  Software complexity and maintenance costs , 1993, CACM.

[3]  Gregory R. Andrews,et al.  An overview of the SR language and implementation , 1988, TOPL.

[4]  M. Aldenderfer,et al.  Cluster Analysis. Sage University Paper Series On Quantitative Applications in the Social Sciences 07-044 , 1984 .

[5]  E. Barnes An algorithm for partitioning the nodes of a graph , 1981, 1981 20th IEEE Conference on Decision and Control including the Symposium on Adaptive Processes.

[6]  William C. Chu,et al.  A measure for composite module cohesion , 1992, International Conference on Software Engineering.

[7]  Gail E. Kaiser,et al.  Data path debugging: data-oriented debugging for a concurrent programming language , 1988, PADD '88.

[8]  John Elder,et al.  Concurrent program structures , 1988 .

[9]  Robert Chi Tau Lai Ada task taxonomy support for concurrent programming , 1991, SOEN.

[10]  Naranker Dulay,et al.  Structuring parallel and distributed programs , 1993, Softw. Eng. J..

[11]  Thomas A. Corbi,et al.  Program Understanding: Challenge for the 1990s , 1989, IBM Syst. J..

[12]  Dan C. Marinescu,et al.  Specification and identification of events for debugging and performance monitoring of distributed multiprocessor systems , 1990, Proceedings.,10th International Conference on Distributed Computing Systems.

[13]  D. R. Fulkerson,et al.  Flows in Networks. , 1964 .

[14]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[15]  Richard E. Fairley,et al.  Software engineering concepts , 1985, McGraw-Hill series in software engineering and technology.

[16]  Nicholas Carriero,et al.  How to write parallel programs: a guide to the perplexed , 1989, CSUR.

[17]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[18]  Eric J. Byrne Software reverse engineering: A case study , 1991, Softw. Pract. Exp..

[19]  Thomas Kunz Process clustering for distributed debugging , 1993, PADD '93.

[20]  Peter C. Bates,et al.  Distributed debugging tools for heterogeneous distributed systems , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[21]  David Taylor A prototype debugger for Hermes , 1992, CASCON.

[22]  Charles M. Fiduccia,et al.  A linear-time heuristic for improving network partitions , 1988, 25 years of DAC.

[23]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[24]  Aniello Cimitile,et al.  A reverse engineering methodology to reconstruct hierarchical data flow diagrams for software maintenance , 1989, Proceedings. Conference on Software Maintenance - 1989.

[25]  Margaret M. Burnett,et al.  Operational versus definitional: a perspective on programming paradigms , 1992, Computer.

[26]  Thomas Kunz,et al.  Abstract Debugging of Distributed Applications , 1994 .

[27]  David J. Taylor The use of process clustering in distributed-system event displays , 1993, CASCON.

[28]  M. J. Noruésis,et al.  SPSS-X advanced statistics guide , 1985 .

[29]  Morris Sloman,et al.  Configuring object-based distributed programs in REX , 1992, Softw. Eng. J..

[30]  Aniello Cimitile,et al.  Reverse engineering: Algorithms for program graph production , 1991, Softw. Pract. Exp..