Hostname: page-component-586b7cd67f-t7czq Total loading time: 0 Render date: 2024-11-21T11:11:18.188Z Has data issue: false hasContentIssue false

Engineering Software Correctness

Published online by Cambridge University Press:  01 November 2007

REX PAGE*
Affiliation:
School of Computer Science, University of Oklahoma, Norman, OK 73019, USA email: page@ou.edu
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Design and quality are fundamental themes in engineering education. Functionalprogramming builds software from small components, a central element of gooddesign, and facilitates reasoning about correctness, an important aspect ofquality. Software engineering courses that employ functional programming providea platform for educating students in the design of quality software. This pearldescribes experiments in the use of ACL2, a purely functional subset of CommonLisp with an embedded mechanical logic, to focus on design and correctness insoftware engineering courses. Students find the courses challenging andinteresting. A few acquire enough skill to use an automated theorem prover onthe job without additional training. Many students, but not quite a majority,find enough success to suggest that additional experience would make themeffective users of mechanized logic in commercial software development. Nearlyall gain a new perspective on what it means for software to be correct andacquire a good understanding of functional programming.

Type
Educational Pearl
Copyright
Copyright © Cambridge University Press 2007

References

Bjorner, D. (2006) Software Engineering 1: Abstraction and Modelling. Springer.Google Scholar
Boyer, R. S. & Moore, J. S. (1998) A Computational Logic Handbook, 2nd ed. Academic Press.Google Scholar
Claessen, K. & Hughes, J. (2000) QuickCheck: A lightweight tool for random testing of Haskell programs. Pages 268–279 of. Proc. 5th ACM SIGPLAN International Conference on Functional Programming. Pittsburgh: ACM Press.Google Scholar
De Millo, R. A., Lipton, R. J. & Perlis, A. J. (1979) Social processes and proofs of theorems and programs. Commun. ACM, 22 (5), 271280.CrossRefGoogle Scholar
Dillinger, P. C.Manolios, P., Moore, J. S. & Vroon, D. (2006) ACL2s: the ACL2 Sedan. User Interfaces for Theorem Provers Workshop, August 2006, Seattle, WA. To appear in: Electronic Notes in Theoretical Computer Science. Available at: http://www.cc.gatech.edu/~manolios/research/uitp-acl2s.htmlGoogle Scholar
Findler, R. B.Clements, J.Flanagan, C.Flatt, M.Krishnamurthi, S.Steckler, P. & Felleisen, M. (2002) DrScheme: A programming environment for Scheme. J. Funct. Program. 12 (2), 159182.CrossRefGoogle Scholar
Findler, R. B. & Felleisen, M. (2002) Contracts for higher-order functions. Pages of 48–59 of. Proc. 7th ACM SIGPLAN International Conference on Functional Programming. Pittsburgh: ACM Press.Google Scholar
Humphrey, W. S. (1995) A Discipline for Software Engineering. Addison Wesley.Google Scholar
IEEE Computer Society/ACM Joint Task Force on Computing Curricula. (2004) Software Engineering 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. Available at: http://sites.computer.org/ccse/SE2004Volume.pdfGoogle Scholar
Jackson, D. (2006) Software Abstractions: Logic, Language and Analysis. MIT Press.Google Scholar
Kaufmann, M., Manolios, P. & Moore, J. S. (2000a) Computer Aided Reasoning: An Approach. Kluwer Academic Publishers.Google Scholar
Kaufmann, M., Manolios, P. & Moore, J. S. (2000b) Computer Aided Reasoning: ACL2 Case Sudies. Kluwer Academic Publishers.Google Scholar
Michaelsen, L. K. (2002) Getting started with team based learning. Pages 27–29 of. Michaelsen, L. K.Knight, A. B. & Fink, L. D. (eds), Team-Based Learning: A Transformative Use of Small Groups, Westport, CT: Praeger.CrossRefGoogle Scholar
Page, R. L. (2005) Engineering software correctness. Pages 39–46 of. Findler, R.Hanus, M. & Thompson, S. (eds), Proc. 2005 Workshop on Functional and Declarative Programming in Education, 25 September 2005, Tallinn, Estonia. Pittsburgh: ACM Press.Google Scholar
Pressman, R. (2005) Software Engineering: A Practitioner's Approach, 6th ed.McGraw-Hill.Google Scholar
Sommerville, I. (2004) Software Engineering, 7th ed. Pearson.Google Scholar
Vaillancourt, D., Page, R. & Felleisen, M. (2006) ACL2 in DrScheme. Pages 107–116 of. Manolios, P. & Wilding, M. (eds), Proc. 6th International Workshop on the ACL2 Theorem Prover and Its Applications, 15–16 August 2006, Seattle, Washington. Ruben Gamboa.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.