CSci 435/535: Software Engineering

Syllabus

Where and When

Instructor

Web Page

Description

Prerequisites

Some Topics

Books

Required

Suggested (Required for CSci 535)

Anyone who knows anything about software engineering has read this book. I strongly advise you to get it if you expect to write software for a living.

Course Structure

Classes

This course is about learning "book knowledge" along with "experiential knowledge". Mondays and Wednesdays will be traditional lectures on SE topics. Friday class meetings will be related to the particular software project which we will be working on. (Details are in the document "Project Description" which will be handed out this Friday.) Friday meetings may involve short informational presentations, inter-group communication and status reports, and elevation of issues.

Project

Unlike many group software classes in which groups of students all implement the same software, we will be working as one large team to develop a sizeable software system. The system will be developed incrementally as a series of milestones. Each student will receive a grade at the end of each milestone based on the points they have earned by resolving issues. (Details are in the document "Project Grading".)

If the work for a milestone is not met, this will obviously affect student grades for that milestone. However, this should not necessarily penalize students in the next milestone. To address this issue, managers will have to negotiate with the customer (i.e. the professor) to narrow the set of features or extend the milestone deadlines.

Management Organization

The class structure is as follows. The professor serves as the infrastructure manager, and head project manager. Project managers consist of the CSci 535 students and perhaps some CSci 435 students. Project managers report weekly to the professor. At the next level are team leaders, chosen by the project managers from the 435 students. The remainder of the 435 students are developers, performing a wide range of activities. This management heirarchy is mainly meant to reduce communication and management overhead, and not to restrict people from working with the people they want.

The customer's principal responsibilities are:

  1. To help identify key requirements
  2. To negotiate time and requirement tradeoffs
  3. To validate key design decisions
  4. To evaluate the resulting product
The project manager's principal responsibilities are:
  1. Motivate team leaders to perform their tasks
  2. Negotiate milestones with the client
  3. Plan weekly goals for each team leader
  4. Plan development activities
  5. Provide technical assistance to developers when necessary
  6. Resolve personnel issues
  7. Attend weekly manager-only planning meetings
  8. Attend weekly status report meetings with the professor (and get weekly status reports from team leaders)
  9. Run the Friday project meetings
  10. Manage tasks on the issue tracker: create new tasks as necessary, assign points for tasks, sign off on completed tasks
  11. Monitor the status of project risks and outstanding issues
  12. Manage distribution of project responsibilities to team leaders
  13. Manage the documentation (perhaps by delegation): the requirements specification, the high-level design, the detailed design, user documentation, etc.
  14. Lead the teams in producing the development strategy.
  15. Verify that quality assurance methods are adequate
The team leader's principal responsibilities are:
  1. Serve as principal point-of-contact between the team and the manager(s).
  2. Manage assigned software modules and other responsibilities
  3. Motivate the team members to perform their tasks.
  4. Identify the tasks to be accomplished in the next week and by whom.
  5. Verify the satisfactory completion of tasks, promoting to the managers for final signoff.
  6. Each week, report team status (via e-mail) to the project managers.
  7. Lead the team in implementing the modules for which the team is responsible
  8. Develop and maintain the high level design (with the other team leaders)
  9. Design and implement quality assurance methods
  10. Run all weekly team meetings, acting as facilitator
The developer's principal responsibilities are:
  1. Implement the portions of the software assigned by the team leader.
  2. Integrate modules of the system.
  3. Develop and implement both unit-level and system-level tests.
  4. Develop requirements, test plans, and other project documentation.
  5. Attend all team meetings.
[Modeled after Introduction to the Team Software Process by Watts S. Humphrey, Addison-Wesley]

Tracking Work

The work to be done will be managed using an issue tracking system. Both managers and developers can add issues to the tracking system, which can be anything: bugs, feature enhancements, development tasks, etc. After an issue is added, developers add themselves to the issue to indicate that they are working on it. Once an issue is resolved, any developer which "owns" it can set its status to "Waiting for Manager". At this time the manager assigned to the task will review the work and certify it as complete by changing its status to "Closed".

While the majority of issues will be resolved by one developer or a small group of developers, from time to time tasks will be given to everyone in the class as homework assignments. This gives everyone a chance to learn a particularly important topic. For example, every group will develop a requirements document as a homework assignment. The managers will select the best one for the project, or merge several of the best ones. In contrast, the implementation phase will have each group working on a different part of the overall system.

Generally speaking, managers will not complete any of the tasks for the project. Instead, they will create tasks to be completed by the undergraduate developers. They will also review and certify completed work. Because points are assigned to tasks, the project managers will ultimately determine the project grade for each student in the class. In addition to these responsibilities, graduate students will provide technical assistance, and will provide weekly updates to the professor. In the case when a manager must step in and complete the work for a task, the scoring methods will penalize the developers. (This is described in the document "Project Grading".)

Managers will have their own task list which they (and the professor) will use to track management related issues.

Grading

Point Distribution (CSci 435 Developers)

Point Distribution (CSci 435 Managers)

Point Distribution (CSci 535)

The "No BS" Rule

Letter Grade

Late Work Policy

Make-up Policy

Students Who Need Accommodation

Guidelines for Class Assignments

Back Back to CSci 435/535 Homepage.

Last changed February 03 2006 10:00:52. David Coppit, coppit@cs.wm.edu

There have been 1221262 hits since Thu Jun 9 14:49:55 2005

Valid CSS!
Valid HTML 4.01!