Advertisement

Specifying reusable components using contracts

  • Ian M. Holland
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 615)

Abstract

Contracts were introduced by Helm et al. as a high level construct for explicitly specifying interactions among groups of objects. This paper describes further developments and application of the Contract construct. We show how Contracts can be used to represent classic algorithms as large grained reusable object oriented abstractions, how these algorithms can be customized through Contract refinement and how they are reused through Contract conformance. The example algorithm used throughout is the classic graph depth first traversal algorithm. This algorithm is represented as a Contract which is then refined to specify algorithms which number connected regions of graphs and which check graphs for cycles. Changes to the Contract language are introduced and we discuss some new problems resulting from the simultaneous reuse of related contracts.

Keywords

Related Contract Contract Form Instance Variable Reusable Component Application Class 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [1]
    Constantin Arapis. Specifying Object Life-Cycles. In Dennis Tsichritzis, editor, Object Management, pages 133–195. Centre Universitaire D'Informatique, Genève, 1990.Google Scholar
  2. [2]
    Kent Beck and Ward Cunningham. A laboratory for teaching object oriented thinking. In Object-Oriented Programming Systems, Languages and Applications Conference, in Special Issue of SIGPLAN Notices, pages 1–6, New Orleans, LA, 1989. ACM.Google Scholar
  3. [3]
    Lucy Berlin. When objects collide: Experiences with reusing multiple class heirarchies. In Object-Oriented Programming Systems, Languages and Applications Conference/European Conference on Object-Oriented Programming, in Special Issue of SIGPLAN Notices, pages 181–211, Ottatwa, Canada, 1990. ACM.Google Scholar
  4. [4]
    Ted Biggerstaff and Charles Richter. Reusability framework, assesment and directions. IEEE Software, pages 41–49, July 1987.Google Scholar
  5. [5]
    Judy Bishop. The Effect of Data Abstraction on Loop Programming Techniques. IEEE Transactions on Software Engineering, 16(4):389–402, April 1990.CrossRefGoogle Scholar
  6. [6]
    Grady Booch. Object-Oriented Design With Applications. Benjamin/Cummings Publishing Company, Inc., 1991.Google Scholar
  7. [7]
    Peter Deutsch. Reusability in the Smalltalk-80 Programming System. In ITT Proc. Workshop on Reusability in Programming, pages 72–82, Newport, RI, 1983.Google Scholar
  8. [8]
    B. Hailpern and H. Ossher. Extending Objects to Support Multiple Interfaces and Access Control. IEEE Transactions on Software Engineering, 16(11), November 1990.Google Scholar
  9. [9]
    A. Richard Helm, Ian M. Holland, and Dipayan Gangopadhyay. Contracts: Specifying Behavioral Compositions in Object-Oriented Systems. In Object-Oriented Programming Systems, Languages and Applications Conference, in Special Issue of SIGPLAN Notices, pages 169–180, Ottowa, 1990. ACM Press. joint conference ECOOP/OOPSLA.Google Scholar
  10. [10]
    Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22–35, June/July 1988.Google Scholar
  11. [11]
    W. L. Johnson and E. Soloway. PROUST: Knowledge-based program understanding. IEEE Transactions on Software Engineering, 11:267–275, 1985. reprinted in: C. Rich and R.C. Waters, eds., Readings in Artificial Intelligence and Software Engineering (Morgan Kaufmann, Los Altos, CA. 1986).Google Scholar
  12. [12]
    T. Capers Jones. Reusability in Programming: A Survey of the State of the Art. IEEE Transactions on Software Engineering, 10(5):488–494, September 1984.CrossRefGoogle Scholar
  13. [13]
    Gail E. Kaiser and David Garlan. MELDing Data Flow and Object-Oriented Programming. In Object-Oriented Programming Systems, Languages and Applications Conference, in Special Issue of SIGPLAN Notices, volume 22, pages 254–267, Orlando, Florida, 1987. ACM SIGPLAN Notices.Google Scholar
  14. [14]
    Shmuel Katz, Charles A. Richter, and Khe-Sing The. PARIS: A System for Reusing Partially Interpreted Schemas. In International Conference on Software Engineering, pages 377–385, 1987.Google Scholar
  15. [15]
    Charles Krueger. Models of reuse in software engineering. Technical Report CMS-CS-89-188, Department of Computer Science, Carnegie Mellon University, December 1989.Google Scholar
  16. [16]
    Karl Lieberherr. Object-oriented programming with class dictionaries. Journal on Lisp and Symbolic Computation, 1(2):185–212, 1988.CrossRefGoogle Scholar
  17. [17]
    Mark A. Linton, John M. Vlissides, and Paul R. Calder. Composing User Interfaces using Interviews. IEEE Computer Magazine, pages 8–22, February 1989.Google Scholar
  18. [18]
    Bertrand Meyer. Tools for the new culture: Lessons from the design of the Eiffel libraries. Communications of the ACM, 33(9):68–88, September 1990.CrossRefGoogle Scholar
  19. [19]
    Jens Palsberg and Michael I. Schwartzbach. Type substitution for objectoriented programming. In Object-Oriented Programming Systems, Languages and Applications Conference/European Conference on Object-Oriented Programming, in Special Issue of SIGPLAN Notices, pages 151–159, Ottatwa, Canada, 1989. ACM.Google Scholar
  20. [20]
    Barbara Pernici. Class Design and Meta-Design. In Dennis Tsichritzis, editor, Object Management, pages 133–195. Centre Universitaire D'Informatique, Genève, 1990.Google Scholar
  21. [21]
    Ruben Prieto-Diaz and James M. Neighbors. Module interconnection languages. Journal of Systems and Software, 6(4):307–334, November 1986.CrossRefGoogle Scholar
  22. [22]
    Ramana Rao. Implementation Reflection in Silica. In European Conference on Object-Oriented Programming. Springer Verlag, 1991.Google Scholar
  23. [23]
    T. Reenskaug and E. Nordhagen. The Description of Complex Object-Oriented Systems: Version 1. Technical report, Senter for Industriforskning, Oslo, Norway., 1989.Google Scholar
  24. [24]
    C. Rich and H. E. Shrobe. Initial report on a Lisp programmer's apprentice. In D. R. Barstow, H. E. Shrobe, and E. Sandewall, editors, Interactive Programming Environments, pages 443–463. McGraw-Hill, 1984.Google Scholar
  25. [25]
    Charles Rich and Richard C. Waters. The Programmers Apprentice. Frontier Series. ACM Press, 1990.Google Scholar
  26. [26]
    Rebecca Wirfs-Brock and Brian Wilkerson. Object-oriented design: A responsibility-driven approach. In Object-Oriented Programming Systems, Languages and Applications Conference, in Special Issue of SIGPLAN Notices, pages 71–76, New Orleans, LA, 1989. ACM.Google Scholar
  27. [27]
    Rebecca J. Wirfs-Brock and Ralph E. Johnson. A survey of current research in object-oriented design. Communications of the ACM, 33(9): 104–124, September 1990.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Ian M. Holland
    • 1
  1. 1.College of Computer ScienceNortheastern UniversityBoston

Personalised recommendations