Towards verified cloud computing environments

As the usage of the cloud becomes pervasive in our lives, it is needed to ensure the reliability, safety and security of cloud environments. In this paper we study a usual software stack of a cloud environment from the perspective of formal verification. This software stack ranges from applications to the hypervisor. We argue that most of the layers could be practically formally verified, even if the work to verify all levels is huge.

[1]  Frédéric Loulergue,et al.  Développement d'applications avec Objective CAML by E. Chailloux, P. Manoury and B. Pagano, O'Reilley, 2003 , 2004, Journal of functional programming.

[2]  Jean Fortin,et al.  BSP-WHY: an intermediate language for deductive verification of BSP programs , 2010, HLPP '10.

[3]  Pierre Letouzey Extraction in Coq: An Overview , 2008, CiE.

[4]  Xavier Leroy,et al.  A Formally Verified Compiler Back-end , 2009, Journal of Automated Reasoning.

[5]  Claude Marché,et al.  A Certified Multi-prover Verification Condition Generator , 2012, VSTTE.

[6]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.

[7]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[8]  Wolfgang J. Paul,et al.  Pervasive Verification of an OS Microkernel - Inline Assembly, Memory Consumption, Concurrent Devices , 2010, VSTTE.

[9]  Frédéric Loulergue,et al.  Bulk synchronous parallel ML with exceptions , 2006, Future Gener. Comput. Syst..

[10]  Jerome H. Saltzer,et al.  Protection and the control of information sharing in multics , 1974, CACM.

[11]  Graham Hutton,et al.  Programming in Haskell , 2007 .

[12]  Magnus O. Myreen Verified just-in-time compiler on x86 , 2010, POPL '10.

[13]  Aart J. C. Bik,et al.  Pregel: a system for large-scale graph processing , 2010, SIGMOD Conference.

[14]  Xavier Leroy,et al.  Formal verification of a realistic compiler , 2009, CACM.

[15]  Zhenjiang Hu,et al.  Generate, Test, and Aggregate - A Calculation-based Framework for Systematic Parallel Programming with MapReduce , 2012, ESOP.

[16]  Yu Liu,et al.  Towards Systematic Parallel Programming over MapReduce , 2011, Euro-Par.

[17]  Mark A. Hillebrand,et al.  VCC: A Practical System for Verifying Concurrent C , 2009, TPHOLs.

[18]  Tom White,et al.  Hadoop: The Definitive Guide , 2009 .

[19]  Ralf Lämmel,et al.  Google's MapReduce programming model - Revisited , 2007, Sci. Comput. Program..

[20]  Richard S. Bird,et al.  Algebra of programming , 1997, Prentice Hall International series in computer science.

[21]  Zhenjiang Hu,et al.  A library of constructive skeletons for sequential style of parallel programming , 2006, InfoScale '06.

[22]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[23]  Mark A. Hillebrand,et al.  Automated Verification of a Small Hypervisor , 2010, VSTTE.

[24]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[25]  Richard S. Bird Functional Pearl: A program to solve Sudoku , 2006, J. Funct. Program..

[26]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[27]  Frédéric Loulergue,et al.  Parallel programming and performance predictability with Orléans Skeleton Library , 2011, 2011 International Conference on High Performance Computing & Simulation.

[28]  Philippe Altherr A typed intermediate language and algorithms for compiling scala by successive rewritings , 2006 .

[29]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[30]  Frédéric Loulergue,et al.  Bulk Synchronous Parallel ML: Modular Implementation and Performance Prediction , 2005, International Conference on Computational Science.

[31]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[32]  Martin S. Feather,et al.  A survey and classification of some program transformation approaches and techniques , 1987 .

[33]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[34]  Murray Cole,et al.  Parallel Programming with List Homomorphisms , 1995, Parallel Process. Lett..

[35]  Frédéric Loulergue,et al.  Systematic Development of Correct Bulk Synchronous Parallel Programs , 2010, 2010 International Conference on Parallel and Distributed Computing, Applications and Technologies.

[36]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[37]  J. Filliâtre,et al.  ACSL: ANSI/ISO C Specification Language , 2008 .

[38]  Michael Norrish,et al.  seL4: formal verification of an OS kernel , 2009, SOSP '09.

[39]  Jin-Soo Kim,et al.  HAMA: An Efficient Matrix Computation with the MapReduce Framework , 2010, 2010 IEEE Second International Conference on Cloud Computing Technology and Science.

[40]  Marcin Paprzycki Structured development of parallel programs , 1999, IEEE Concurr..

[41]  Claude Marché,et al.  The Why/Krakatoa/Caduceus Platform for Deductive Program Verification , 2007, CAV.

[42]  Xavier Leroy,et al.  Mechanized Semantics for the Clight Subset of the C Language , 2009, Journal of Automated Reasoning.

[43]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[44]  Horacio González-Vélez,et al.  A survey of algorithmic skeleton frameworks: high‐level structured parallel programming enablers , 2010, Softw. Pract. Exp..

[45]  Richard S. Bird,et al.  Lectures on Constructive Functional Programming , 1989 .

[46]  Mathieu Jan,et al.  Method and Tools for Mixed-Criticality Real-Time Applications within PharOS , 2011, 2011 14th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing Workshops.

[47]  Xavier Leroy,et al.  Verified squared: does critical software deserve verified tools? , 2011, POPL '11.

[48]  Xavier Leroy,et al.  Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations , 2008, Journal of Automated Reasoning.

[49]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[50]  Frank Waters,et al.  The B Book , 1971 .

[51]  B M Boghosian,et al.  Parallel Scientific Computation , 1993, Science.

[52]  Masami Hagiya,et al.  Using Coq in Specification and Program Extraction of Hadoop MapReduce Applications , 2011, SEFM.

[53]  Xavier Leroy The objective caml system release 3 , 2001 .

[54]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[55]  Johan Jeuring Theories for Algorithm Calculation , 1993 .

[56]  Frédéric Gava,et al.  Formal Proofs of Functional BSP Programs , 2003, Parallel Process. Lett..

[57]  Wei-Ngan Chin,et al.  Parallelization in calculational forms , 1998, POPL '98.

[58]  Lars Birkedal,et al.  Local reasoning about a copying garbage collector , 2004, POPL '04.

[59]  Matthieu Lemerre,et al.  A communication mechanism for resource isolation , 2009, IIES '09.

[60]  Julien Tesson,et al.  Environnement pour le développement et la preuve de correction systèmatiques de programmes parallèles fonctionnels. (Environment for the systematic development and proof of correction of functional parallel programs) , 2011 .

[61]  Richard S. Bird,et al.  An introduction to the theory of lists , 1987 .

[62]  Sylvain Conchon,et al.  CC(X): Semantic Combination of Congruence Closure with Solvable Theories , 2008, Electron. Notes Theor. Comput. Sci..

[63]  Akimasa Morihata,et al.  The third homomorphism theorem on trees: downward & upward lead to divide-and-conquer , 2009, POPL '09.

[64]  Jean-Christophe Filliâtre,et al.  Verifying Two Lines of C with Why3: An Exercise in Program Verification , 2012, VSTTE.