CS446 - Tools and Processes for Software

Autumn 1999 Monday, Wednesday:    3:15 - 4:30,   place not yet known

This page is under construction and subject to changes!

Schedule (plus slides for some of the talks)

Sign up

If you want to participate in this class, please send an email to cs446@db.stanford.edu with your name as subject and with the body containing your email address, your department, degree pursuing, if you take the class for credits and for how many credits. If you have prior knowledge or experience with UML, other modeling techniques or design patterns, or have taken other classes about software engineering, please note that down as well.

News about CS446


Gio Wiederhold
Dorothea Beringer
Gates 433 
Gates 418
Office Hours
By appointment through
Marianne Siroker (siroker@cs). 
Tuesday 4:00 to 5:00
Friday 11:00 to 12:00

Course Description

CS446 course has a two-fold goal. Our first goal is to give you an overview of the most important elements of software engineering. We will not be able to expand on the various topics in depth, but we will give you the necessary foundation for further studies in specific topics of software engineering during your career in software engineering. In the first part of the course we will talk about what makes up the discipline of software engineering and how the various elements relate to each other, we will give an overview on life-cycle models, the basic phases in a software development project, the use of quality assurance and metrics, software cost estimation, risk management, reuse, component oriented software development.

The second goal is to introduce you to the  modeling technique UML and to the use of design patterns.


This course is primarily for graduate students and it requires some prior experience in developing software in order to facilitate the understanding why processes and tools are needed in larger software projects. Knowing object-oriented programming and either Java or C++ is strongly encouraged, the assignments require the knowledge of the basic object-oriented concepts (classes, objects, inheritance, polymorphism, encapsulation, composition).


Mandatory Reading

The following two books are mandatory for taking this class: The following papers have to be read as preparation for certain classes:

Optional Reading



The assignments differ heavily in the amount of time required, and some of the assignments (e.g. reading project) have to be started early in the course and in parallel to the other assignments in order to get a good result. It is up to you to plan your assignment work so you can finish them in time.

Put your assignments either into the box in front of the office Gates 418 before 3pm, or bring them to the class.


see Mandatory Reading, you need the reading for the other assignments, so I recommend you to read the UML book in week 2 and 3, and to read the Design Pattern book in week 5 and 6.

Modeling with UML

Reverse Engineering

Design Patterns

Reading project

In this project you choose yourselves 3 papers about a specific topic (each paper at least five pages long, or have two shorter papers in place of one over 5 pages). You can get ideas about papers by looking into magazines like IEEE Software, IEEE Computer, IEEE Transactions on Software Engineering, JOOPS (Journal of Object-Oriented Programming), collections of papers like "Software Engineering" or "Software Engineering and Project Management", both by M. Dorfman and R. H. Thayer, or by looking at Gio's list of references (look for the ones marked with SW).  The topic has to be closely related to CS446. It can but needs not to explore one of the lecture topics more in-depth, it can also address another topic about how to develop software. Examples of topics: "Modeling and determining the architecture of a system", "Problems in determining the requirements for a system", "Process models for software development", "Managing the risks of a software project", "Getting reuse going in an organization", "Issues in  modeling real-time systems", "Design patterns: papers from conferences and design patterns and architecture patterns", .... Assignment 5 and 6 can be turned in by email, in case the email only contains plain text and no attachments. Otherwise turn in a printout.

Late policy

The due dates given are the latest possible date for turning in the assignments.  The assignments are given well in advance, and I recommend you to start early and to hand them in the Friday before they are due. So you have three more days in case something does not work out as planned.