Software Engineering (Software Methodology 1)

CIS 422/522, Fall 2005
Instructor: Michal Young [mail]
GTF: Xiaofang Zhang [mail]

Tuesday/Thursday 10:00-11:20am
Volcanology 307


Overview | FAQ | Project Grading | Lecture Notes | Readings

News

3 December 2006. Here is a copy of Xiaofang's lecture notes on Java annotation.

3 December 2006. Here are old exams from 2002 and excerpts from 1999. Here is an (optional) midterm from Spring 2004, and here is the final (weighted as a second midterm) for that term (particularly brief because I had only one day to grade it.) I think this is enough to give you an idea of my question-asking style. Since the exam will be a sit-down, two-hour affair, I'm trying to craft questions that are not too long, and for which the answers are not too long, although of course they can still take a long time to answer if you haven't already been thinking about the material. I almost never ask a question that you can just look up in your notes, but I often ask questions that will be hard to answer if you weren't taking notes (at least mentally) in lecture.

1 December 2005: Group member evaluations for project 2 are due at the final exam.
The final exam is Monday, 8am-10am, in our regular room.
Please make arrangements for an "install session" of project 2 with Xiaofang as soon as possible. It may not be a bad idea to do this even if you already know we have installed and used it.

What about that final exam? It is open-book, open-notes (but not open-neighbor). I attempt to make it not a race against the clock by keeping the number of questions small, but one question can take a long time if you don't remember much about the topic. I plan to include at least one question based on each of the two guest lectures, as well as questions based on some of my lectures. Watch this space for some examples of old exams, which I'll try to post no later than Saturday (but I'm aiming for Friday).

16 November 2005: Tomorrow (Thursday) Xiaofang will give a guest lecture on programming with annotations. He will focus on the new Java annotation facility, but it's an interesting approach to language extension that may be applicable to other languages as well. Next Tuesday, Kevin Kenan of Symantec will give a guest lecture on developing secure software, including both techniques and overall methdology. I will definitely include something from both guest lectures on the final exam.

I have invited other undergraduates both to Kevin Kenin's guest lecture next Tuesday and to project presentations in dead week.

7 November 2005: Reminder - Group progress/status presentations Tuesday. Also, please send me team rosters and a short description of your project --- the requirements summary you are going to include in your project will do, so this isn't extra work.

1 November 2005: Please read (and think about) The Koala Component Model for Consumer Electronics Software by Tuesday of next week. The "theme" I want you to think about is how we exploit commonality across a class of applications. What are the different kinds of commonality we might exploit? What gains might we hope to obtain in "factoring out" the common parts? What are some of the technical approaches we can use to exploit commonality? What role do non-technical factors (e.g., software process, organization) play? Koala represents one partial answer to these questions (and a very good one, I think), but far from the only answer. I want you to really think about this and be ready to discuss it.

25 October 2005: Be sure to set up a meeting of at least one team member with Xiaofang for an "install and test" session. Also, if you haven't turned in a Group Member Evaluation form yet, do that right away.

I would like project proposals from teams by the end of this week. If you haven't selected a project and joined a team yet, you need to do that right away; you don't have much time to lose.

There will be no lecture on Thursday, October 27, but please meet initially in the classroom anyway --- that will make it easier for groups who still need members to collide with people looking for groups, if things are not completely settled by that time. I will be in Washington DC, but I will ask Xiaofang to be there to moderate.

19 October 2005: It was pointed out to me that I neglected to specify a time of day for the deadline. That being the case, though I really hate to do it, I will accept turn-in any time before midnight. Nonetheless I really encourage you to avoid last-minute panic hacking mode --- the changes you make at 11:53pm are much more likely to damage your project than to improve it.

6 October 2005: Here's the story on subversion and Tomcat, from David Sullivan and Paul Bloch of CIS systems staff.

Subversion is installed. Put put /local/apps/Devel/subversion/bin in
your PATH. This appears to be a fairly recent version (in particular, it appears to work with NFS, unlike previous versions).

You need to install your own copy of Tomcat (only if you are using it, of course), but this has been made easy for you. Basic installation instructions are at http://systems.cs.uoregon.edu/Solaris/QStomcat.php. You will need two port numbers, between 9300 and 9399. To prevent collision, please ask Xiaofang to assign you a pair n, n+1 of port numbers. Let us know whether this version of Tomcat is sufficiently new to support your project.

Many thanks to systems staff for a very rapid response to our query.

6 October 2005: Presentations again on Monday ... no, I mean Tuesday. Same basic format, but I'm expecting there will be a bit more to report on status, problems you've encountered, and how you are handling them.

[Old news]

Overview

This is a project-oriented course on software engineering. You will work as teams to construct software systems, including not only programs but also end-user documentation, maintenance guides, etc. You will also be expected to think about principles and issues in software engineering, to read and respond to papers, and to participate in class discussions.

No university course can substitute for years of real-world experience, and that is not the objective of this course. Rather, the objective is to prepare you to learn from that experience. Thus our focus is first on broad principles and issues that pervade software engineering. Because these principles and issues are fundamental, they appear again and again even as popular methods and tools shift. Yesterday we had structured development, today we have object-oriented development, tomorrow we can expect something else ... but the fundamental challenges of teamwork, complexity, change and variation have been with us from the beginning and will be with us for the forseeable future.

Rough Schedule

Project 1 (4 weeks): The first project is assigned by the instructor, and teams are also assigned by the instructor. There are two candidate projects, and we will choose one of them on the first day of class.

Note: Because Thanksgiving eats half of week 9, we are going to have to cut the schedule a bit for both projects, and instead of four full weeks, you will have only about 3.5 weeks for this first project. It will be due on Wednesday, October 19.

Project 2 (5 weeks): The second project is selected by each student team, and the teams are also self-chosen. Projects are due at the end of week 9, but since that is the week of Thanksgiving, projects will be due Wednesday of that week (23 November) at noon. The final week of classes is used for in-class demonstrations and discussions.

I will be out of town (serving on an NSF panel) October 26-28, the Wednesday through Friday of the first full week of project 2. This will make it important to have a good solid proposal and team early, preferably before you have even finished the first project.

Here is a more complete schedule.

Here are a few ideas for 2nd projects:

There will be a midterm and a final exam, largely on lecture topics and readings.

Lecture Notes

Currently these are lecture notes from an earlier class. They may be replaced or augmented with new versions as the term progresses.

CVS rough guide | Notes on Teamwork | Introduction to Design

User Interface | User Manuals| Performance | Koala (Component Architecture)

Textbook and Readings

Texbook (of sorts)

Rather than a conventional software engineering text, we're going to read:

Joel Spolksy, Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity. APress, 2004.

This is a bunch of essays by someone who runs a software company, which may seem like a pretty odd choice for a textbook. It's an experiment --- by the end of the term I'll know whether I want to use it again. It is not a comprehensive overview of the subject, but it does touch on many of the same topics you'd find in an SE textbook, and is a whole lot more fun. In some ways, J on S resembles Brooks' classic Mythical Man Month (also well worth reading), but with anecdotes drawn from the modern packaged software industry, whereas Brooks drew from his experience building the OS 360 operating system for IBM. I think it will serve as a good discussion starter. I will fill in material in other ways, including lectures and additional readings.

Readings

With a non-textbook textbook, additional readings from the research literature will be important to fill in the holes, and in some cases to provide perspective for discussion. Often I'll assign an essay from Joel paired with a research paper on roughly the same topic.

A Spiral Model of Software Development and Enhancement, Barry Boehm.

The Koala Component Model for Consumer Electronics Software, Rob van Ommering, Frank van der Linden, Jeff Kramer, and Jeff Magee. IEEE Computer, March 2000.

A newer paper on this project, with a good discussion of product populations, is Building Product Populations with Software Components; unfortunately the PDF file is a bitmap, and it may be slow to download and print. It's a bit denser as well as more up-to-date, and for grad students in particular I recommend the newer paper (from ICSE 2002) instead of, or in addition to, the IEEE Computer paper above. You may also find van Ommering's slides from a recent talk useful.


Last edit: Sat, 3 December, 2005 / Version identifier: $Id: index.html,v 1.21 2005/12/04 00:59:53 michal Exp $