CIS 422 - Software Methodology I
Winter 1999
Lecture Slides and Readings


[CIS 422 Home Page] [CIS 422 Schedule] [UO Computer Science Dept.]

Lecture slides will be posted here week-by-week, in PDF (Adobe Acrobat) format. I'll try to post them before I actually give the lecture, but I may fall behind.

Week 1 - Jan 4

[Course Overview] [Group Dynamics]

[Project 1 Overview] (this is a handout in html, not slides)

Week 2 - Jan 11

[Software Development Processes] (I will use only a subset of these and try to cover it in one lecture.)

Reading: Chapter 1 (Introduction) in Sommerville, especially sections 1.2 through 1.4. Chapter 3, sections 3.2 and 3.3 are also useful; section 3.4 will be more useful to you in project 2.

[Architectural Design]

Reading: Sommerville Chapters 12 and 13.

Week 3 - Jan 18

[Basic Project Hygiene] This is a hodge-podge lecture that combines some notes on revision control, some on documentation and coding, some on testing, and other stuff that I think might be useful. Each of the topics deserves a more in-depth and systematic consideration, but I throw together these little scraps of information here as a kind of "survival guide." In addition to the usual PDF version, here's an [HTML version].

Reading: Sommerville Chapters 19 (Programming for Reliabilty) and 33 (Configuration Management).

I think 19.1.1 is superficial to the point of being silly. The general idea of avoiding error-prone code is good, but it should be applied at the level of design approaches and not just programming language constructs. You can skip 19.2 on fault tolerance unless it interests you. When you read 19.4 on fault recovery, think about the fault recovery in your project --- if the power goes out in the middle of running your program, or if your program has a bug that makes a hash of his or her html files, what is the recovery procedure?

Chapter 33 is more detailed than you really need for project 1, and a lot more detailed than my lecture, but it's not too long so you might as well read the whole thing now.

Week 4 - Jan 25

[Human Factors and User Interface Design]

Required reading: Sommerville Chapter 17 (User Interface Design).

Recommended readings:

The Design of Everyday Things. Donald A. Norman. Doubleday 1990. (Previously published in 1988 as The Psychology of Everyday Things.)

Programming as if People Mattered: Friendly Programs, Software Engineering, and other Noble Delusions. Nathaniel S. Borenstein. Princeton University Press, 1991.

[More on Design] An exercise that was in my earlier architectural design slides, that we didn't get to in class, plus some thoughts and heuristics about how the creative, technical problem-solving part of design is related to the discipline of architectural design.

Week 5 - Feb 1

[Requirements Elicitation] as distinguished from requirements specification. I covered only a few of these slides. I'll cover more later, but I don't intend to spend much more time on organizational context. (Sommerville touches on that subject.)

Reading: Sommerville chapters 4,5,7. Chapter 6 is optional for now, but I may require it later.

On Wednesday I intend to return (again) to architectural design, to try to make the idea of [information hiding] clearer. This lecture has more diagrams; hopefully they will help.

Week 6 - Feb 8

[Project documents], particularly internal documents (requirements, design, etc.) as distinguished from documents produced for the end user.

Reading: Sommerville chapter 6,14, as well as some of the previously assigned chapters: 4,5,7,12,13.

Week 7 - Feb 15

Monday: [Concurrency Control]. This is a topic I don't normally cover in CIS 422, but it seems appropriate this term because several teams will be writing multi-threaded applications of some kind. As with some other topics, concurrent programming and concurrency control could easily be a full class or a two-term sequence by itself. To try to do something useful in a single lecture, I'm focusing on one approach to dealing with concurrency --- using locking protocols (particularly 2-phase locking) together with resource ordering to maintain global consistency and avoid circular waits (deadlock). Models of concurrency (Petri nets, process algebra) which might be useful for designing the details of process interactions are mentioned only in passing, and alternative concurrency control techniques are likewise only mentioned. This choice of focus reflects my opinion about the best way to design a concurrent application: As much as possible, we design the concurrency such that we can ignore it and design as if there were only one thread of control. The choice also reflects the tools you have available: Lock-oriented concurrency control is what Java supports best, and it's a reasonable fit with Unix processes (twisted a little to use remote procedures sometimes as monitors).

There are a few extra slides at the end of the lecture giving a very brief introduction to alternative concurrency control approaches; these are likely to be useless by themselves but might help you decide that you want to read more about a particular topic such as priority ceiling protocols or time-stamp concurrency control.

Wednesday: The schedule says I should talk about maintenance and evolution this week and testing next week, but I think I'll reverse it because testing is going to (or at least should) have an impact on your design and schedule soon.

Friday we will have design presentations and discussions again --- which means I'll be asking for volunteers on Monday and, if necessary, making assignments.

Week 8 - Feb 22

Not yet

Week 9 - Mar 1

Not yet

Week 10 - Mar 8

No lectures this week - project presentations instead.

Week 11 - Mar 15

No lectures this week - final examinations instead.

PDF format and troubleshooting

*PDF (portable document format) version 2, which requires Acrobat Reader or Acrobat Exchange version 3. The Reader is available for several platforms (Solaris Sparc and x86, Linux, Mac OS, Windows 3.1, 95 and NT, HPUX, etc.) free from Adobe, http://www.adobe.com. See also [troubleshooting notes].


Last update: 14 April 1998
Please report broken links and other problems to Michal Young