CSE 503: Software Engineering

Homework Assignment #2

Due Monday February 1, 1999

Part I

The second Parnas paper (on layering) discusses the differences between the calls (or invokes) and uses relationships. 

  1. Provide two examples of situations where A invokes B but A does not use B.

  2. Provide two examples of situations where A uses B but A does not invoke B.

(Please do not use any examples discussed in the paper or in class.)

Part II

An information hiding module provides a set of operations.  A virtual machine also provides a set of operations.  Does this make them essentially identical structuring techniques?  Argue this question carefully in a page or less.

Part III

Read the following two papers with care:

  1. E. Gamma, R. Helm, R. Johnson, J. Vlissides.  Design Patterns: Abstraction and Reuse of Object-Oriented Design. In Proceedings of ECOOP '93, 1993.

  2. K.J. Sullivan and D. Notkin.  Reconciling Environment Integration and Component Independence, In Proceedings of the SIGSOFT '90 Fourth Symposium on Software Development Environments, December, 1990.

Answer the following questions:

  1. One Gang-of-Four behavioral pattern is the mediator pattern.   (You can find details of this pattern in the GoF book.  I also found the following brief description of it on the web, and I'm sure there are other such descriptions available.) Sullivan and Notkin also use the term mediator.  In two or three paragraphs, compare and contrast these two design structures.

  2. Object-oriented languages (and some others) support indirect invocation.   That is, a client sends a message and does not know which method will actually be invoked (the specific method chosen depends on the semantics of the programming language).   In two or three paragraphs, compare and contrast this style of invocation to the implicit invocation style discussed in both the Garlan/Shaw architecture paper and the Sullivan/Notkin mediators paper.