CS4320 - Software Processes

Instructor: Bob Waters , CoC Room 120, Send Email, Office Hours by appointment.  Normally available Tue/Thursday anytime, drop by.

TA: Giovanni Iachello, Send Email, Office Hours MWF 1100-1200 Student Commons Area

Textbooks:

Managing the Software Process
Watts Humphrey
ISBN: 0-201-18095-2
Addison-Wesley

Rapid Development: Taming Wild Software Schedules
Steve McConnell
ISBN 1-55615-900-5
Microsoft Press

Objectives

This course provides students with an overall context in which software systems are developed from the viewpoint of processes that support the development. Software engineering is described as the set of activities developers engage in to create high-quality products within schedule and budget constraints.

Learning Objectives:

Topics

This course has six major parts which we will examine:
  1. Total Quality Management (TQM): The basis of all process improvement methodologies
  2. Process Modeling: How do we specify and model processes?
  3. Personal Software Process (PSP): Process Improvement at the individual level
  4. Team Software Process (TSP): Process Improvement at the team level
  5. Capability Maturity Model (CMM): Process Improvement at the organizational level
  6. Extereme Programming (XP): The quintessential minimalist process
Interspersed throughout these topics we will look at industry best practices and how they relate to process improvement.

Grading

Midterm Exam 15%
Final Exam 25%
Final Project 35%
Homeworks 25%

Homeworks

Each homework counts 5% and will be an exercise illustrating issues with various levels of software process improvement efforts.

HW 1: TQM Statistical Process Control Exercise
HW 2: PSP Exercise
HW 3: TSP Exercise
HW 4: CMM Exercise
HW 5: XP Exercise

Final Project Suggestions

The final project is designed to allow you to examine process improvement in more detail in a specific area that you are interested in.  It may be a group or individual project.  The size of the group determines the level of detail expected.  Some potential suggestions:

(Individual) Read a non-CS book on process improvement and then apply it to software engineering.  THIS IS NOT A BOOK REPORT!!!! It is an analysis of the author's theory, followed by your application to software engineering.  Some books that might be used are:
The Fifth Discipline, Peter Senge
Out of the Crisis, Edward Deming
Reengineering the Corporation, Michael Hammer

(Individual or Group) Do a CMM evaluation of a project being conducted in Real World Lab. This is especially effective if you currently (or in the recent past have) worked on a specific process in RWL.  Write up the results of the evaluation, and give specific recommendations for improvements.

(Individual) Complete the entire PSP and write up an analysis of your opinion of its effectiveness.

(Individual) For foreign students, you might look at alternatives to CMM (like SPICE or SPIRE), ISO 9000, and write a comparative analysis between that methodology and the CMM.

(Individual or Group) Design and Prototype a software tool to support either process improvement or a specific process element.

Syllabus