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
Instructors
|
Gio Wiederhold
|
Dorothea
Beringer
|
mail |
gio@cs.stanford.edu
|
beringer@db.stanford.edu
|
Office |
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.
Prerequisites
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).
Credits
-
Three units for the whole course.
-
One unit for the classes about UML and software development methodologies,
reading about UML, and the assignments about UML and Reverse Engineering.
-
There will be no final. The grades will be based on the assignments (assignments
1-3 is one third, assignment 4 is one third, assignment 5 and 6 is one
third) and class participation
Mandatory Reading
The following two books are mandatory for taking this class:
-
"UML distilled", by Martin Fowler, 1997 (contains just the essentials,
good introduction), "UML Toolkit", by Eriksson and Penker, 1998 (more in
depth), "Using UML", by R. Pooley and P.Stevens, 1999, or another UML book
covering the basic UML notations and preferably also the Unified Process
-
"Design Patterns", by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
1994 (this is a high quality and the classic book about design patterns),
or "Patterns in Java, Volume 1" by Mark Grand, 1998 (contains all of the
GoF design patterns and applies them to Java)
The following papers have to be read as preparation for certain classes:
-
"No Silver Bullet: Essence and Accidents of Software Engineering", for
Sept. 27
-
"The Mythical Man-Month", "Software Engineering Project Management",
for Oct. 13
-
"Software Cost Estimation", "COCOMO 2.0", for lecture on software cost
estimation
-
"A Spiral Model of Software Development and Enhancement", for Oct.
4 (rb) ???
-
"Risk Management for Software Development", for lecture on Risk Management
-
more to come.....
Optional Reading
-
The Mythical Man Month, by Brooks: a short and very entertaining book containing
many lessons still true nowadays about a large, complex software project
- a classic book every computer scientist should have read
-
Software Architecture : Perspectives on an Emerging Discipline, by Mary
Shaw, Garlan David, David Garlan
-
Pattern Oriented Software Architecture : A System of Patterns, by Frank
Buschmann et. al
-
Software Engineering - A Holistic View, by Bruce I. Blum
-
Software Engineering - A Practitioner's Approach, by Roger S. Pressman
-
Software Engineering, by Ian Sommerville
Assignments
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.
Reading
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
-
Assignment 1: Actors and Use
Cases, Domain Model, week 2 (due Oct. 4, 3:15pm)
-
Assignment 2: Design Model and
Interaction diagrams, week 4 (due Oct. 18, 3:15pm)
Reverse Engineering
-
Assignment 3: Given a small
software package and an incomplete use case model, make the interaction
diagrams, the class diagram, a state chart, and try to model two additional
features, week 5 (due Oct. 25, 3:15 pm)
Design Patterns
-
Assignment 4:
-
Reading credit card information: use design patterns
-
EBook: redesign by applying design patterns
-
Minesweeper: model the minesweeper and detect what design patterns you
have used
-
week 6 to 8 (due Nov. 15, 3:15 pm)
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", ....
-
Project Description (Assignment 5): a short note (maximum half a
page) describing which papers you have chosen, why you have chosen these
papers, and what results you expect (what you expect to discover or learn
or find out, what correlations you hope to make), week 3 to 7, has
to be turned in Nov. 8, 3:15 pm
-
Project Results (Assignment 6): a two-page summary of the results
(your findings, your conclusions) or a talk (will depend on class size),
week 8 to 10, has to be turned in Nov. 29, 3:15 pm
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.