Course Structure
This is a project course. You will work in teams of 2-4. In
the first week, you will
choose among several potential projects proposed by clients here at
CMU and at open source organizations (
more
information for open source clients is available). You will
gather
requirements from your client, plan
your efforts, and then architect and design your project. You will
build the project using an iterative process, gathering feedback from
your client after each iteration. You will be responsible for
ensuring your project is of high quality and meets the client's needs.
At
the end of the course you will deliver the project to the client, along
with all necessary documentation. You will also reflect on your
experience and what you have learned through the project.
You can write code in any project course. The goal of
this course, therefore, is to give
you a chance to follow software engineering process
right. This is a luxury you
may never get in industry, where pressures to deliver are so great that
corners get cut, often with disasterous long-term results. With
the experience of this course under your belt, you will be able to
choose the elements of process that are essential for an effectively
working team, and the background to effectively resist pressures to
meet a short-term deadline at high long-term cost.
In this course it is recommended that you follow a
Scrum process, which you may
adapt to your
needs (with instructor approval). You will
meet weekly with the instructor, sometimes with your team and sometimes
with the entire class for presentation sessions. There will be
very few lectures, and only when necessary
to introduce a new process element you will be using in your course.
Project and Process Requirements
- All code and all documents must be under source control
- You must track defects
- You must meet weekly with clients (possibly virtually)
- Over the course of the semester, you must formally inspect a
requirements document, formally inspect a design document, and formally
inspect a critical section of code. You may front-load these
inspections (e.g. do them all in iteration 1), but you may not
back-load them--each iteration must have at least one inspection until
you've done all three. Other than this, you are free to choose
any inspection process you like.
- You must have a set of regression tests, automated if possible,
and the tests must run at or near 100% at all times.
Lecture Topics
Course Schedule
This schedule is subject to modification as needed to accomodate the
project, as negotiated by each team and the instructor. Planned
dates are as follows:
Evaluation
- 1/2 of your grade will be project deliverables and presentations.
- 1/3 of your grade will be determined by your client--are they
satisfied with the product you deliver, and the way you interact with
them? The instructor will gather feedback directly from your
client halfway through the course (1/9), and at the end of the course
(2/9).
- 1/6 of your grade will be based on how well you follow software
engineering process. This grade will be the average of a grade
for each week, based on your weekly meeting with the instructor.
- Thresholds are:
- 90-100: A
- 80-89: B
- 70-79: C
- 60-69: D
- 0-59: F
- Grades will be given as a team, except for the individual
reflection
- In the event that individual contributions within the team
differ substantially, as determined by peer evaluations and the
instructor's perception, the instructor reserves the right to make
grade corrections to reflect individual contributions. These
corrections will not be greater, percentage-wise, than the differences
in contribution as measured by the peer evaluations; they may be less
if the instructor believes the peer evaluations are exaggerated.
So keep a good working relationship with your team-mates if at all
possible.