The OpenCPU System: Towards a Universal Interface for Scientific Computing through Separation of Concerns

Applications integrating analysis components require a programmable interface which defines statistical operations independently of any programming language. By separating concerns of scientific computing from application and implementation details we can derive an interoperable API for data analysis. But what exactly are the concerns of scientific computing? To answer this question, the paper starts with an exploration of the purpose, problems, characteristics, struggles, culture, and community of this unique branch of computing. By mapping out the domain logic, we try to unveil the fundamental principles and concepts behind statistical software. Along the way we highlight important problems and bottlenecks that need to be addressed by the system in order to facilitate reliable and scalable analysis units. Finally, the OpenCPU software is introduced as an example implementation that builds on HTTP and R to expose a simple, abstracted interface for scientific computing.

[1]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[2]  Peter Dalgaard,et al.  R Development Core Team (2010): R: A language and environment for statistical computing , 2010 .

[3]  Roy Fielding,et al.  Architectural Styles and the Design of Network-based Software Architectures"; Doctoral dissertation , 2000 .

[4]  Erich Neuwirth,et al.  R Through Excel , 2009 .

[5]  Stef van Buuren,et al.  Stage line diagram: An age‐conditional reference diagram for tracking development , 2009, Statistics in medicine.

[6]  Max Kuhn CRAN Task View: Reproducible Research , 2015 .

[7]  R Core Team,et al.  R: A language and environment for statistical computing. , 2014 .

[8]  Michi Henning,et al.  The Rise and Fall of CORBA , 2006, ACM Queue.

[9]  Evans,et al.  Domain-driven design , 2003 .

[10]  Duncan Temple Lang,et al.  Distributed Computing with Data: A CORBA-Based Approach , 1998 .

[11]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.1 , 1997, RFC.

[12]  Peter G. Harrison,et al.  Functional Programming , 1988 .

[13]  David B. Dahl,et al.  RinRuby: Accessing the R Interpreter from Pure Ruby , 2009 .

[14]  Christina Gloeckner,et al.  Modern Applied Statistics With S , 2003 .

[15]  Erich Neuwirth,et al.  R Through Excel: A Spreadsheet Interface for Statistics, Data Analysis, and Graphics , 2009 .

[16]  Lawrence C. Stewart,et al.  HTTP Authentication: Basic and Digest Access Authentication , 1999 .

[17]  Dirk Eddelbuettel,et al.  Rcpp: Seamless R and C++ Integration , 2011 .

[18]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[19]  Victoria Stodden,et al.  Reproducible Research , 2019, The New Statistics with R.

[20]  Olaf Chitil,et al.  Functional Programming , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[21]  Duncan Temple Lang The Omegahat Environment: New Possibilities for Statistical Computing , 2000 .

[22]  Dick Hardt,et al.  The OAuth 2.0 Authorization Framework , 2012, RFC.

[23]  Chris Reade,et al.  Elements of functional programming , 1989, International computer science series.