Hostname: page-component-78c5997874-xbtfd Total loading time: 0 Render date: 2024-11-05T10:33:49.818Z Has data issue: false hasContentIssue false

Logic Programming and Software engineering—implications for Software design

Published online by Cambridge University Press:  07 July 2009

Leon Sterling
Affiliation:
Department of Computer Engineering and Science, Case Western Reserve University, Cleveland, OH 44106, USA
Ümit Yalçinalp
Affiliation:
Department of Computer Engineering and Science, Case Western Reserve University, Cleveland, OH 44106, USA

Abstract

Logic programming is a programming paradigm with potential to contribute to software engineering. This paper is concerned with one dimension of that potential, the impact that experience with developing logic programs can have on software design. We present a logic programming perspective on programming patterns, systematic program development, design for provability, and the paradigm of meta-programming.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1996

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

Abelson, H and Sussman, GJ, 1985. Structure and Interpretation of Computer Programs MIT Press.Google Scholar
Abramson, H and Rogers, M (eds), 1989. Meta-Programming in Logic Programming MIT Press.Google Scholar
Bowen, KA and Kowalski, R, 1982. “Amalgamating language and metalanguage in logic programming” In Clark, KL and Tarnlund, S-A, eds, Logic Programming Academic Press.Google Scholar
Brooks, FP Jr., 1987. “No silver bullet: essence and accidents of software engineeringIEEE Computer 20(4) 1019.CrossRefGoogle Scholar
Bugliesi, M, Lamma, E and Mello, P, 1994. “Modularity in logic programmingJournal of Logic Programming 19/20 443502.CrossRefGoogle Scholar
Ciancarini, P and Levi, G, 1992. “What is logic programming good for in software engineering?” In Ambriola, V and Tortora, G, eds, Advances in Software Engineering and Knowledge Engineering World Scientific, pp109–134.Google Scholar
Ciancarini, P and Sterling, LS. (eds), 1996. “Applications of logic programming in software engineeringInternational Journal on Software Engineering and Knowledge Engineering 6(1).Google Scholar
Cohen, J and Hickey, T, 1987. “Parsing and compiling using PrologACM Trans. Programming Languages and Systems 9 125163.CrossRefGoogle Scholar
Dauchy, P and Marre, B, 1991. “Test data selection from algebraic specifications” Proc. 3rd European Soft. Eng. Conf, LNCS 550, 80100, Springer-Verlag.Google Scholar
Deville, Y, 1990. Logic Programming: Systematic Program Development Addison Wesley.Google Scholar
Floyd, RW, 1987. “The paradigm of programming” In ACM Turing Award Lectures–The First Twenty Years–1966–1985 ACM Press, pp131142.Google Scholar
Foster, I and Taylor, S, 1989. Strand: New Concepts in Parallel Processing Prentice Hall.Google Scholar
Fuchs, N and Fromherz, M, 1991. “Schema-based transformations of logic programs” In Proietti, M, ed, Proc. 5th International Workshop on Logic Program Synthesis and Transformation Springer-Verlag, pp111125.Google Scholar
Gamma, E, Helm, R, Johnson, R and Vlissides, J, 1995. Design Patterns Addison-Wesley.Google Scholar
Gegg-Harrison, T, 1991. “Learning Prolog in a schema-based environmentInstructional Science 20 173192.CrossRefGoogle Scholar
Gegg-Harrison, T, 1995. “Representing logic program schemata in λProlog” In Sterling, L, ed, Proc. 12th International Logic Programming Conference MIT Press, pp467481.Google Scholar
Harel, D, 1992. “Biting the silver bullet: towards a brighter future for system development” IEEE Computer.CrossRefGoogle Scholar
Jaffar, J, Michaylov, S, Stuckey, P and Yap, R, 1992. “The CLP(R) language and systemACM Trans. Programming Languages and Systems 14(3) 339395.CrossRefGoogle Scholar
Kirschenbaum, M, Sterling, LS and Jain, A, 1993. “Relating logic programs via program mapsAnnals of Mathematics and Artificial Intelligence 8 229245.CrossRefGoogle Scholar
Kirschenbaum, M, Michaylov, S and Sterling, LS, 1996. “Skeletons and techniques as a normative approach to program development in logic-based languages” Proc. 19th Australian Computer Science Conference Melboure.Google Scholar
Kowalski, R, 1979. Logic for Problem Solving Elsevier-North Holland.Google Scholar
Lakhotia, A, 1989. “Incorporating programming techniques into Prolog programs” In Lusk, E and Overbeek, R, eds, Proc. 1989 North American Conference on Logic Programming MIT Press, pp426440.Google Scholar
Lakhotia, A, Sterling, L and Bojantchev, D, 1995. “Development of a Prolog tracer by stepwise enhancement” Proc. Third International Conference on Practical Applications of Prolog Paris, pp371393.Google Scholar
Naish, L, 1996. “Higher Order Logic Programming in Prolog” Computer Science Technical Report, University of Melbourne.Google Scholar
Nadathur, G and Miller, D, 1988. “An overview of λ-Prolog” In Kowalski, R and Bowen, K, eds, Proc. 5th International Conference and Symposium on Logic Programming MIT Press, pp810827.Google Scholar
O'Keefe, R, 1990. The Craft of Prolog MIT Press.Google Scholar
Parnas, D, 1985. “Software aspects of strategic defense systemsComm. ACM 28 13261335.CrossRefGoogle Scholar
Reps, T, 1990. “Algebraic properties of program integration” Proc. European Symposium on Programming, LNCS 432 326340, Springer-Verlag.Google Scholar
Schachte, P and Saab, G, 1994. “Efficient object-oriented programming in Prolog” Proc. Second International Conf. on Practical Applications of Prolog London, pp471496.Google Scholar
Shapiro, E (ed), 1987. Concurrent Prolog MIT Press.Google Scholar
Somogyi, Z, Henderson, F and Conway, T, 1996. “The execution algorithm of Mercury: an efficient purely declarative logic programming language” Journal of Logic Programming.CrossRefGoogle Scholar
Sterling, L, Harous, S, Kirschenbaum, M, Leis, B and White, L, 1992. “Developing software testing programs using stepwise enhancement” Proc. Int. Conf Software Engineering Melbourne.Google Scholar
Sterling, L and Kirschenbaum, M, 1993. “Applying techniques to skeletons” In Jacquet, JM, ed, Constructing Logic Programs pp127140, Wiley.Google Scholar
Sterling, L, Ciancarini, P and Turnidge, T, 1996. “On the animation of ‘non executable’ specifications by PrologInternational Journal on Software Engineering and Knowledge Engineering 6(1) 6387.CrossRefGoogle Scholar
Sterling, LS and Sitt, Sen, Chok, , 1993. “A tool to support stepwise enhancement in Prolog” Workshop on Logic Programming Environments Vancouver, pp2126.Google Scholar
Sterling, LS and Shapiro, EY, 1994. The Art of Prolog, 2nd ed MIT Press.Google Scholar
Tamaki, H and Sato, T, 1984. “Unfold/Fold transformation of logic programs” Proc. Second International Conf on Logic Programming Uppsala, Sweden, pp127134.Google Scholar
Vasconcelos, WW and Fuchs, NE, 1996. “An opportunistic approach for logic program analysis and optimization using enhanced schema-based transformations” Proc. Logic Program Synthesis and Transformation, LNCS, pp174188.CrossRefGoogle Scholar
Yalçinalp, , 1991. “Meta-Programming for Knowledge-Based Systems in Prolog” PhD Thesis, Case Western Reserve University.Google Scholar