Download: PDF.

“Ownership in Design Patterns” by Stefan Nägeli. Mar. 2006. Master's thesis.


Ownership is the concept of structuring the object store into different contexts by enabling objects to be the owner of other objects. All objects with the same owner are said to be in the same context. Restricting aliasing of objects in other contexts enables local reasoning about code correctness and simplifies comprehension and maintenance of program code. So far, different ownership type systems have been proposed and proved to be sound. While many of them look very promising on small examples, the question of practical usage for large and complicated applications remains unanswered.

One approach to answer the question of practical usage of ownership type systems is to review the concept of ownership when applied to design patterns. Design patterns are of great importance and widely used in practice. They structure core ideas of an application's design and we therefore believe that revealing problems and showing the benefits of ownership in connection with design patterns is essential for an evaluation of practical usage.

After a short introduction to three major ownership type systems, this thesis identifies beneficial ownership structures for all design patterns, covered in Design Patterns: Elements of Reusable Object-Oriented Software, and discusses feasibility under each reviewed ownership type system. After discussing all patterns separately, possible pattern combinations are reviewed in terms of ownership through a small Java GUI application and the Swing GUI toolkit.

We show that the concept of ownership succeeds to enhance many pattern implementations. However, the reviewed ownership type systems still lack the necessary flexibility to successfully tackle all posed design scenarios. As a result, the main problems are identified and listed.

Download: PDF.

BibTeX entry:

   author = {Stefan N{"a}geli},
   title = {{Ownership in Design Patterns}},
   month = mar,
   note = {Master's thesis}

Back to the student projects sorted by date or by category.

(This webpage was created with bibtex2web.)