Integrated Development Environments

Visualizations of system implementation source code, control flow, data flow, and so on, have long been used to help developers understand and debug their systems. One such common use of visual- izations is by the integrated development environment (IDE). PECAN [91] supports semantic views of a program expression trees, data type diagrams, flow graphs, and the symbol table. The Field environment [93] combines multiple views of the code itself. The Garden environment [92] allows combining graphical and code-based visualizations and supports customizations to the code visu- alizations to better align with the developer’s workflow. The Desert environment [95] allows in- tegrating multiple tools into one environment. Cacti [94] allows combining multiple data sources, such as static and dynamic analyses, into visualizations in an IDE. JIVE [97, 99] and JOVE [99] allow the developer to visualize dynamic analysis traces to quickly understand the implications of changes to code. BLOOM [96] provides a toolkit for data collection, data analysis, and data vi- sualization, again, to help developers understand particular aspects of their systems’ source code through static and dynamic analyses, aiding development and debugging. OverView [32] focuses specifically on visualizing distributed systems in the IDE, helping developers design distributed protocols by creating appropriate abstractions. While these IDEs and IDE components all help vi- sualize various aspects of software systems, they are each quite distinct from ShiViz and its goal of visualizing concurrency of actual executions via the partial ordering of events in a distributed

10 CONTRIBUTIONS

Logging is a common debugging technique, though the logs generated by distributed systems are often difficult to reason about manually. This article introduced a new method to help de- velopers reason about distributed system executions. This method consists of XVector, to auto- mate logging of concurrent behavior in distributed systems, and ShiViz, to visualize the logged executions.

Our method helps both novice and advanced developers to gain insight into the operation and design of their distributed systems. Our evaluation case studies suggest that ShiViz is effective at communicating execution information to the developers and that its visualization transformations and querying mechanisms are helpful. ShiViz helps developers detect issues with their systems and

In addition to developing this method for reasoning about distributed system executions, we implemented XVector as a suite of libraries to augment distributed system execution logs with partial ordering information and ShiViz as a browser-based tool. All our tools, experi- mental design, and data are available publicly. The XVector libraries source code is available at

ACM Transactions on Software Engineering and Methodology, Vol. 29, No. 2, Article 9. Pub. date: March

ACKNOWLEDGMENTS

We thank Jenny Abrahamson for developing the initial XVector and ShiViz prototypes and Vaastav Anand, who helped us evaluate ShiViz’ scalability and also helped with development of several XVector variants. We also thank Graham St-Laurent and Matheus Nunes for making numerous improvements to the ShiViz implementation. Further, we thank to Donald Acton and Colin Scott, who helped us evaluate ShiViz, as well as all the participants in our user studies.

REFERENCES

[

] Jenny Abrahamson, Iva

eschastnikh, Yuriy Brun,and Michae

Ernst.

Shedding lighton distributedsystem executions. In Proceedings of the International Conference on Software Engineering (ICSE Poster track) (

–

).

–

DOI:https://doi.org/

/

[

] Mithun Acharya, Tao Xie, Jian Pei, and Jun Xu.

Mining API patterns as partial orders from source code: From usage scenarios to specifications. In Proceedings of the European Software Engineering Conference and ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE’

). [

] Marcos K. Aguilera, Jeffrey C. Mogul, Janet L. Wiener, Patrick Reynolds, and Athicha Muthitacharoen.

Per- formance debugging for distributed systems of black boxes. SIGOPS OSR

,

(

),

–

[

] Paulo Sérgio Almeida, Carlos Baquero, and Victor Fonte.

Interval tree clocks. In Proceedings of the International Conference on Principles of Distributed Systems (OPODIS’

). Springer-Verlag,

–

DOI:https://doi.org/

/

-

-

-

-

_

[

] Paul Barham, Austin Donnelly, Rebecca Isaacs, and Richard Mortier.

Using Magpie for request extraction and workload modelling. In Proceedings of the Symposium on Operating Systems Design & Implementation (OSDI’

).

–

[

] Daniel Becker, Rolf Rabenseifner, Felix Wolf, and John C. Linford.

Scalable timestamp synchronization for event traces of message-passing applications. Parallel Comput.

,

(

),

–

[

] Omar Benomar, Houari Sahraoui, and Pierre Poulin.

Visualizing software dynamicities with heat maps. In Proceedings of the IEEE Working Conference on Software Visualization (VISSOFT’

). DOI:https://doi.org/

/ VISSOFT.

[

] Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman.

Concurrency Control and Recovery in Database Systems (Chapter

). Addison-Wesley Longman Publishing Co., Inc., Boston, MA. [

] Ivan Beschastnikh, Yuriy Brun, Jenny Abrahamson, Michael D. Ernst, and Arvind Krishnamurthy.

Using declarativespecificationtoimprovetheunderstanding,extensibility,andcomparisonofmodel-inferencealgorithms. IEEE Trans. Softw. Eng.

,

(Apr.

),

–

DOI:https://doi.org/

/TSE.

[

] Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, and Arvind Krishnamurthy.

Inferring models of concurrent systems from logs of their behavior with CSight. In Proceedings of the International Conference on Software Engineer- ing (ICSE’

).

–

[

] Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy, and Thomas E. Anderson.

Mining temporal invariants from partially ordered logs. SIGOPS Oper. Syst. Rev.

,

(Jan.

),

–