CSE584, Assignment #1, 1 April 1997, due 8 April 1997

This assignment covers basic introductory material in software engineering. The intent of the assignment is four-fold: one, to get us on the same page with respect to fundamental questions in software engineering; two, to start to look more deeply at the relationship between the state-of-the-art and the state-of-the-practice; three, to identify some of our underlying biases about the potential benefits of various approaches that might improve our ability to engineer software; and four, to start introspecting about how we engineer software.

You may work in pairs (for experience questions, you may provide one answer as long as you identify who had the experience), and the assignment is worth 5% 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. (20 points)
    1. Crisply identify a situation in which you let implementation bias creep into your (formal or informal) requirements specification.
    2. Crisply identify a situation in which a more formal method would have improved your engineering of any aspect of a software system.
    3. Crisply identify a situation in which an unanticipated change to a system you worked on arose caused costs that were significantly higher than one might have hoped.
    4. Crisply identify a situation in which, due to deadline pressures, you chose to use an ostensibly less appropriate software engineering technique than you would have given more time. Were there any identifiable downstream consequences of this decision?
  2. (20 points) Critique, in about one page, Steve McConnell's list of Software's Ten Essentials (from Best Practices, IEEE Software, Vol. 14, No. 2, March / April 1997 ). In particular, identify whether your list would be identical (and why) or whether you would replace several of his items with others (listing which you would replace, what you would replace them with, and why you prefer yours).
  3. (10 points) In our readings, on the Web, or in other software engineering literature, identify at least three costs of that each account for about 50% or more of total lifecycle costs. (Yes, this doesn't make sense, but there are numerous such claims.) For example, I always say that software maintenance accounts for over 50% of the cost of the software lifecycle, citing (among others) Lientz and Swanson.
  4. (10 points) Find an anecdote about a problem we always hear complaints about with respect to software, but that arose in a different domain. For an example, see a discussion of a salvage problem.