CSE584, Assignment #2, 29 April 1997, due 6 May 1997

This assignment covers material for the evolution 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. (10 points) In one or two paragraphs, critique the following hypothesis: Anticipating change is not a good idea for design. Instead, one should wait until an actual change is needed, and only then should one capture the change by restructuring the design. There are two underlying premises of this hypothesis: (a) designing for anticipated change that does not occur is costly; and (b) changing a decision once makes it more likely that it will change again.

  2. (10 points) Characterize the most common changes you encounter in the software systems you work on. Characterize them both in terms of whether they are corrective, adaptive, or perfective, but also in some more detail (such as, "Changing internal representations"). Briefly discuss whether the software is designed in a way that makes these most common changes easier.

  3. (10 points) In a couple of paragraphs, discuss the influence of the choice of programming language on ease of change.

  4. (20 points) Read and critique two of the following articles in terms of their implications on software change (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.

    1. The Open Implementations work by Kiczales et al.

    2. The more recent work by Kiczales et al. on "Aspect Oriented Programming" (see their web page).

    3. Von-Mayrhauser-A, Vans-A-M. Program comprehension during software maintenance and evolution. IEEE Computer 28,8, pp. 44-55 (August 1995).

    4. Lieberherr-K-J, Xiao-C. Object-oriented software evolution. IEEE Transactions on Software Engineering SE-19,4, pp. 313-43 (April 1993).

    5. Griswold-W-G, Notkin-D. Architectural tradeoffs for a meaning-preserving restructuring tool. IEEE Transactions on Software Engineering SE-21,4, pp. 275-87 (April 1995).

    6. Any change-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.