The prerequisites are included for
the material they covered as well as for the maturity in programming and software issues
that are important for this course. This course has one primary learning
objective: to learn that engineering high-quality software products is not a mere matter
of programming. There are many secondary learning objectives, which we will discuss
explicitly over the quarter.
As mentioned in the catalog
description and as described on the project page, the central vehicle for the primary
learning objective is a group project that spans activities from requirements
specification through implementation. The lecture schedule is heavily
structured in terms of just-in-time lecturing, where we present material before you need
it for the project (but not much before, in many cases). We will use several of the class
sections and perhaps some lectures for reviews by the project groups. In general, we expect each
group to make approximately three review presentations during the quarter.
The final two weeks of lecture will
cover a variety of general topics, with some of them presented by guest lecturers.
If you have suggestions for topics, please let us know early in the quarter.
Reading Material
In a strict
sense, there is no textbook for the course. That is, we have chosen not to use one
of the commonly used software engineering textbooks for the course. The reason is
that, overall, we are dissatisfied with these texts; to be fair, we don't have an idea
about how to write a better one, however.
Instead, we'll use a set of papers
(and one book, not a text) from the literature. These don't cover, in any sense, the
full discipline of software engineering. I'll try to augment these readings with
lectures, lecture notes, and a set of pointers to resources on the web. The reading
schedule is found on the class schedule.
- F. Brooks, Jr., The Mythical Man Month.
- B.W. Boehm, A Spiral Model of Software Development and
Enhancement, Computer, 21(5), May 1988.
- D.L. Parnas, On the Criteria To Be Used in Decomposing
Systems into Modules, Communications of the ACM, 15 (12), December 1972.
- E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design
Patterns: Abstractions and Reuse of Object-Oriented Design, Proceedings of ECOOP '93,
1993.
- B.W. Boehm. Software Engineering. IEEE
Transactions on Computers C-25,12, December 1975.
- D. L. Parnas. On the design and development of
program families. IEEE Transactions on Software Engineering, SE-2,1, March
1976.
- D.L. Parnas. Software Aging. In Proceedings
of the 16th International Conference on Software Engineering, Sorrento,
Italy, 1994, pp. 279-287.
- G.D. Bergland. A Guided Tour of Program Design
Methodologies. Computer, October 1981, p. 18-37.
The readings are required with two
objectives in mind. First, they provide the best descriptions and discussions
available of some basic principles and notions of software engineering. Second, they
will provide some insights about how to proceed with your project.