Debugging of RxJS-based applications

RxJS is a popular library to implement data-flow-oriented applications with JavaScript using reactive programming principles. This way of programming bears new challenges for traditional debuggers: Their focus on imperative programming limits their applicability to problems originated in the declarative programming paradigm. The goals of this paper are: (i) to understand how software engineers debug RxJS-based applications, what tools do they use, what techniques they apply; (ii) to understand what are the most prevalent challenges they face while doing so; and (iii) to provide a course of action to resolve these challenges in a future iteration on the topic. We learned about the debugging habits of ten professionals using interviews, and hands-on war story reports. Based on this data, we designed and executed an observational study with four subjects to verify that engineers predominantly augment source code with manual trace logs instead of using specialized debugging utilities. In the end, we identified the lack of fully integrated RxJS-specific debugging solutions in existing development environments as the most significant reason why engineers do not make use of such tools. We decided to elaborate on how to resolve this situation in our future work.

[1]  Robert O'Callahan,et al.  Engineering Record and Replay for Deployability , 2017, USENIX Annual Technical Conference.

[2]  Éric Tanter,et al.  Back to the Future: Omniscient Debugging , 2009, IEEE Software.

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  Mira Mezini,et al.  Debugging for Reactive Programming , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[5]  Wolfgang De Meuter,et al.  A survey on reactive programming , 2013, CSUR.

[6]  Robert O'Callahan,et al.  Engineering Record And Replay For Deployability: Extended Technical Report , 2017, ArXiv.

[7]  Mira Mezini,et al.  REScala: bridging between object-oriented and functional style in reactive applications , 2014, MODULARITY.

[8]  Georgios Gousios,et al.  Debugging data flows in reactive programs , 2018, ICSE.

[9]  Janice Singer,et al.  Debugging Revisited: Toward Understanding the Debugging Needs of Contemporary Software Developers , 2013, 2013 ACM / IEEE International Symposium on Empirical Software Engineering and Measurement.

[10]  Mengchen Liu,et al.  StoryFlow: Tracking the Evolution of Stories , 2013, IEEE Transactions on Visualization and Computer Graphics.