CS446 - Tools and Processes for Software

Fall 1999    Monday, Wednesday: 3:15 - 4:30,  Building 260, Room 113

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
Anca-Juliana Stoica
Gates 433 
Gates 418
Gates 443
Office Hours
By appointment through
Marianne Siroker (siroker@cs). 
Wednesday 1:00 to 2:00
Friday 2:00 to 3:00 (most Fridays)
Monday, Wednesday: 4:45 to 6 pm, or by appointment

Course Description

CS446 course has the goal to give you an overview of the most important elements of software engineering. We will not be able to expand on all 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 as software engineers. Topics that we will cover more in depth are modeling software systems with UML, software development processes, software cost estimation, component oriented software development, and software reuse. To some of the topics there will be additional reading and assignments.


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, some 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 lectures (they will be distributed in the class):



The assignments differ heavily in the amount of time required. 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

Tools for Software

  • Assignment 5 (to work on in week 9, 10 and 11):Use an existing tool for implementing software cost estimation techniques or build a tool implementing sofware risk management techniques. You can choose between solving 5a or 5b.
  • Due date:  Friday, Dec.3 at 3:15 pm (assignments handed in after Dec. 3, 3:15, cannot be considered for the final grade!). Hand in the assignment to Anca-Juliana Stoica.
  • Please address questions about this assignment to Anca-Juliana Stoica, and not to Dorothea Beringer.
  • 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.


    Optional Reading