Skip to main content
Log in

A formal nethod (a networked formal method)

  • Original Paper
  • Published:
Innovations in Systems and Software Engineering Aims and scope Submit manuscript

Abstract

A year-long trial has seen a large lightweight verification problem treated by an ad hoc distributed network of identical solvers. The trialled problem is the semantic analysis of the C code in the Linux kernel to exclude a common deadlock possibility. The aim of the programme behind the experiment is to develop a viable loosely coupled distributed formal method which a community of interested part-time helpers on the net can lend their computing cycles to as they will, or send their own verification problems to for solving.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Abujarad F, Bonakdarpour B, Kulkarni S (2009) Parallelizing deadlock resolution in symbolic synthesis of distributed programs. In: Proceedings of PDMC 2009: 8th international workshop on parallel and distributed methods in verifixation, November 4, 2009, Eindhoven, The Netherlands (with Formal Methods 2009, November 2–6, 2009)

  2. American National Standard for Information Systems—Programming Language C, ANSI X3.159-1989. American National Standards Institute (1989)

  3. Anderson DP (2004) BOINC: a system for public-resource computing and storage. In: Proceedings of the 5th IEEE/ACM international workshop on grid computing, November 8, 2004, Pittsburgh, USA

  4. Anderson DP, Korpela E, Walton R (2005) High-performance task distribution for volunteer computing. In: Proceedings of the first IEEE international conference on e-science and grid technologies, December 5–8, 2005, Melbourne, Australia

  5. Ball T, Rajamani SK (2002) The SLAM project: debugging system software via static analysis. In: Proceedings of the POPL ’02: proceedings of the ACM SIGPLAN-SIGACT conference on principles of programming languages

  6. Bobko PK (2001) Open-source software and the demise of copyright. Rutgers Comput Technol Law J 27: 51–92

    Google Scholar 

  7. Barnett M, Rustan K, Leino M, Schulte W (2004) The Spec# programming system: an overview, CASSIS 2004. Lecture notes in computer science, vol 362. Springer, Berlin

  8. Beck K (1999) Extreme programming explained: embrace change. Addison-Wesley, Reading

    Google Scholar 

  9. Breuer PT, García Valls M (2004) Static deadlock detection in the Linux Kernel. In: Llamosí A, Strohmeier A (eds) Reliable software technologies—Ada-Europe 2004, 9th Ada-Europe international conference on reliable software technologies, Palma de Mallorca, Spain, June 14–18, 2004. ISBN 3-540-22011-9. Lecture notes in computer science, vol 3063. Springer, Berlin, pp 52–64

  10. Breuer PT, Pickin S (2006) One million (LOC) and counting: static analysis for errors and vulnerabilities in the Linux Kernel source code. In: Pinho LM, Harbour MG (eds) Proceedings of reliable software technologies—Ada-Europe 2006, 11th Ada-Europe international conference on reliable software technologies, June 2006, Oporto, Portugal. Lecture notes in computer science, vol 4006. Springer, Berlin, pp 56–70

  11. Breuer PT, Pickin S (2006) Symbolic approximation: an approach to verification in the large innovations in systems and software engineering—a NASA journal, October 2006. Springer, London

    Google Scholar 

  12. Clarke E, Emerson E, Sistla A (1986) Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans Program Lang Syst 8(2): 244–253

    Article  MATH  Google Scholar 

  13. Cousot P, Cousot R (1977) Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Proceedings of the 4th ACM symposium on the principles of programming languages, pp 238–252

  14. Engler D, Chelf B, Chou A, Hallem S (2000) Checking system rules using system-specific, programmer-written compiler extensions. In: Proceedings of the 4th symposium on operating system design and implementation (OSDI 2000), October 2000, pp 1–16

  15. Evans D, Larochelle D (2002) Improving security using extensible lightweight static analysis. IEEE Software, New York, Jan/Feb 2002

  16. Foster JS, Terauchi T, Aiken A (2002) Flow-sensitive type qualifiers. In: Proceedings of the ACM SIGPLAN conference on programming language design and implementation (PLDI’02), Berlin, Germany, June 2002, pp 1–12

  17. Gomulkiewicz RW (1999) How copyleft uses license rights to succeed in the open source software revolution and the implications for article 2B. Houston Law Rev 36: 179–194

    Google Scholar 

  18. Guttag JV, Horning JJ (1991) A tutorial on Larch and LCL, a Larch/C interface language. VDM ’91 Formal Software Development Methods. Lecture notes in computer science, vol 552. Springer, Berlin, pp 1–78

  19. Griffith A (2002) GCC: the complete reference. McGraw-Hill/ Osborne, New York

    Google Scholar 

  20. Hoare CAR (1969) An axiomatic basis for computer programming. Commun ACM 12(10): 576–580, 583

    Article  MATH  Google Scholar 

  21. Holzmann GJ (2003) The SPIN MODEL CHECKER: primer and reference manual. Addison-Wesley, Reading

    Google Scholar 

  22. Holzmann GJ, Joshi R, Groce A (2008) Swarm verification. In: Proceedings of the ASE 2008, 23rd IEEE/ACM international conference on automated software engineering. l’Aquila, Italy, September 2008

  23. Holzmann GJ, Joshi R, Groce A (2008) Model driven code checking. Autom Softw Eng 15(3–4): 283–297

    Article  Google Scholar 

  24. ISO/IEC 9899-1999, Programming Languages—C. International Standards Organisation (1999)

  25. Johnson R, Wagner D (2004) Finding user/kernel pointer bugs with type inference. In: Proceedings of the 13th USENIX security symposium, Aug 9–13, 2004, San Diego, CA, USA

  26. Kernighan B, Ritchie D (1988) The C language, 2nd edn. Prentice-Hall, Englewood Cliffs

    Google Scholar 

  27. Kroah-Hartman G (2006) Linux kernel development: how fast is it going, who is doing it, what they are doing, and who is sponsoring it. In: Proceedings of the OLS ’06: the 2006 Ottawa Linux Symposium, July 2006, Ottawa, Canada, pp 239–244

  28. Schrijver A (1998) Theory of linear and integer programming. Wiley, New York

    MATH  Google Scholar 

  29. Wagner D, Foster JS, Brewer EA, Aiken A (2000) A first step towards automated detection of buffer overrun vulnerabilities. In: Proceedings of the network and distributed system security (NDSS) symposium 2000, February 2–4, San Diego, CA, USA

  30. Watanabe S (2009) Solaris ZFS essentials. Prentice-Hall, Englewood Cliffs

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Peter T. Breuer.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Breuer, P.T., Pickin, S. A formal nethod (a networked formal method). Innovations Syst Softw Eng 6, 255–268 (2010). https://doi.org/10.1007/s11334-009-0121-4

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11334-009-0121-4

Keywords

Navigation