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.
- (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.
- (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.
- (10 points) In a couple of paragraphs, discuss the influence
of the choice of programming language on ease of change.
- (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.
- The Open Implementations work by Kiczales et al.
- The more recent work by Kiczales et al. on "Aspect Oriented
Programming" (see their web page).
- Von-Mayrhauser-A, Vans-A-M. Program comprehension during
software maintenance and evolution. IEEE Computer 28,8,
pp. 44-55 (August 1995).
- Lieberherr-K-J, Xiao-C. Object-oriented software evolution.
IEEE Transactions on Software Engineering SE-19,4, pp. 313-43 (April
1993).
- 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).
-
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.