CSE584, Assignment #2, 8 April 1997, due 22 April 1997

This assignment covers material for the design portion of the course.

You may work in pairs, and the assignment is worth 10% of the grade in the course (see introductory handout). I prefer it if you submit your assignment electronically, although it's your call. Ideally, you could send me a URL to a web page with the solutions.

  1. (Brownie points only) How can we effectively and efficiently teach software design to undergraduates? (Don't turn this one in. Instead, post answers to the mailing list---remember, it's archived.) Be practical in terms of constraints that are impossible to avoid (such as the quarter system, etc.).

  2. (10 points) In what ways will software design change given the drive to compose systems from components (as opposed to decomposing systems into components)? If you are familiar with COM or CORBA, discuss this question in that context in particular. (No more than one page.)

  3. (10 points) Discuss the mediator-based designs from class (I can point you at a paper with more details, if you need it) in terms of coupling, cohesion, and correspondence (from Bergland). (No more than one page.)

  4. (20 points) Read and critique two of the following articles in terms of their implications on design (no more than one page on each). (You may want to use UWIN's INSPEC service to find abstracts, etc.) I am happy to make suggestions if you have some basic theme you wish to explore. If you choose one of the two Microsoft books (don't pick both), you needn't read it all (Code Complete, for example, is over 800 pages).

    1. VanHilst-M. Notkin-D. Decoupling change from design. SIGSOFT '96. Proceedings of the Fourth ACM SIGSOFT Symposium on the Foundations of Software Engineering. pp. 58-69. 16-18 Oct. 1996.

    2. Parnas-D-L. Clements-P-C. A rational design process: how and why to fake it. IEEE Transactions on Software Engineering. vol.SE-12, no.2. pp. 251-7. Feb. 1986.

    3. Parnas-D-L. Clements-P-C. Weiss-D-M. The modular structure of complex systems. IEEE Transactions on Software Engineering. vol.SE-11, no.3. pp. 259-66. March 1985.

    4. Maguire-Steve. Writing Solid Code. Microsoft Press. 1993.

    5. McConnell-Steve. Code Complete. Microsoft Press. 1995.

    6. Any design-related article from IEEE Transactions on Software Engineering, ACM Transactions on Software Engineering and Methodology, the International Conferences on Software Engineering, the ACM SIGSOFT Symposia on the Foundations of Software Engineering, or OOPSLA.