CS 6300/4320
Software Development Process

Administrivia

Class

Tuesdays and Thursdays, 1:30 - 3:00pm, College of Computing Building, room 17

Professor:

Spencer Rugaber

Klaus 2404, 404.894.8450

Office Hours:  Tuesdays 12:30-1:30; Thursdays 3:00-5:00

Personal teaching philosophy

TA:

Ogechi Nnadi (ogechi.nnadi@gatech.edu)

Office Hours: Tuesdays and Thursdays, 3 - 4pm

Location: Klaus 2405

Class Newsgroup: news:git.cc.class.cs6300
Class Swiki: http://swiki.cc.gatech.edu/cs6300-fa08

Catalog Description

The process of developing software systems. Includes development and assessment of processes, their instantiation in actual product development, and techniques ensuring quality of developed products.

Prerequisites

Text

There is no required text for the course. Students should have access to a Software Engineering introductory text such as Pressman or Sommerville. Outside readings are specified in the Readings column of the class  schedule. References for outside reading are in the Syllabus References section at the end of this web page.

Learning Objectives

Grading

Projects

60%

Exam

30%

Class Participation

10%

 

Schedule (tentative)

Date

Subject

Readings

Assignments

8/19

Introduction


Assignment 1

8/21

Waterfall
(PDF

McConnell Chapter 7

Project 1 (Waterfall)
Program Description

8/26

Requirements
(PDF)

Davis 13-31; 177-194

Assignment 1 (due)
Project 1 Process Plan (due)

8/28

Capabilitity Maturity Model (PDF)

Paulk
CMM Appendix A

 

9/2

Data flow diagrams (PDF)

 

 

9/4

Specifications (PDF)
Text Fill problem (PDF)
Sort problem (PDF)

SRS Template

Project 1 deliverables (due)

9/9

Personal Software Process
(PSP)  (PDF)

Humphrey

Project 1 Process Assessment (due)
Project 2 (PSP/TSP)
Program Description

9/11

Estimation (PDF)

Personal Software Process Technical Report

 

9/16

Reviews (PDF)

 

Project 2 Process Plan (due)

9/18

Team Software Process (TSP) (PDF)

Team Software Process Technical Report

 

9/23

Project 1 debriefing (spreadsheet)
Metrics (PDF)

 

Project 2 deliverables (due)

9/25

Unified Software Process
Object-oriented analysis (PDF)

USP Chapter 1

Project 2 Process Assessment (due)

Project 3 (USP)
Program Description

9/30

Object-oriented analysis
UML
Class-model diagrams
Dr. Orso's slides (PDF)

 

Project 3 Process Plan (due)

10/2

Library exercise
Use cases
   

10/7

No class

Garlan and Shaw

 

10/9

Software architecture (PDF)
Architectural Views (PDF)
KWIC Exercise (PDF)


Project 3 deliverables (due)

10/14

Fall break - no class

 


10/16

Cleanroom Software Engineering
(PDF)

Linger

Project 3 Process Assessment (due)

Project 4 (Cleanroom)
Program Description

10/21

Reliability based testing (PDF)

Formal Methods (PDF)

Whittaker

Project 4 Process Plan (due)

10/23

OCL (PDF)

OCL (reference)

 

10/28

Cleanroom verification (PDF)

Dyer, Chapter 5

 

10/30

Program Proofs (PDF)
Formal proof example (PDF)

 

 


11/4

Complete proof example
Testing (PDF)

 



11/6

Mutation Testing (PDF)


Project 4 deliverables (due)

11/11

Extreme programming
Agile Manifesto (PDF)

Agile Manifesto
XP Installed, TOC. Chapter 1

Project 4 Process Assessment (due)
Project 5 (XP)
Project Description

11/13

XP Rules (PDF)

XP Rules


11/18

Guest Lecture on SCRUM (PDF)


Project 5 Process Plan (due)

11/20

Refactoring (PDF)

Mens paper
Video Store Example


11/25

Process Design (PDF)
Risks (PDF)

Williams (IEEE Software)
Boehm and Turner


11/27

Thanksgiving - No class




12/2

Process Improvement (PDF)
Software engineering process groups (PDF)
Process programming languages (PDF)
Productivity and Quality (PDF)

MacCormack, et al.

Project 5 deliverables (due)

12/4

Project 5 Demos


Project 5 Process Assessment (due)

Syllabus References

Waterfall

Steve McConnell.
Rapid Development.
Microsoft Press, 1993.


Alan M. Davis.
Software Requirements / Revision.
Prentice Hall, 1993.

Capability Maturity Model

Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, and Charles V. Weber.
"Capability Maturity Model, Version 1.1."
IEEE Software, 10(4):18-27, July 1993.

Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, and Charles V. Weber.
"Capability Maturity Model for Software, Version 1.1."
Software Engineering Institute, CMU/SEI-93-TR-24, DTIC Number ADA263403, February 1993.

Mark Paulk, Charlie Weber, Suzanne Garcia, Mary Beth Chrissis, and Marilyn Bush.
"Key Practices of the Capability Maturity Model / Version 1.1. "
Software Engineering Institute Technical Report, CMU/SEI-93-TR-025, ESC-TR-93-178, February, 1993.

Mark C. Paulk, Dennis Goldenson, and David M. White.
"The 1999 Survey of High Maturity Organizations. "
Software Engineering Institute, Carnegie Mellon University, CMU/SEI-2000-SR-002, February 2000.

CMM key practices

Personal/Team Software Process

Watts S. Humphrey.
A Discipline for Software Engineering.
Addison-Wesley, 1995.

Watts S. Humphrey.
Introduction to the Personal Software Process.
Addison Wesley, 1997.

Watts S. Humphrey.
Introduction to the Team Software Process.
Addison Wesley, 2000.

SEI TSP Web Site.

Watts S. Humphrey.
"Using a Defined and Measured Personal Software Process. "
IEEE Software, 13(3):77-88, May 1996.

Process Dashboard Tool.

Watts S. Humphrey.
"The Personal Software Process."
CMU/SEI Technical Report 2000-TR-022, November 2000.

Watts S. Humphrey.
"The Team Software Process (TSP). "
Technical Report CMU/SEI-2000-TR-023, ESC-TR-2000-023, December 2000.

PSP Scripts  (Note: all subordinate links within scripts are broken)

Unified Software Process

Ivar Jacobson, Grady Booch, and James Rumbaugh.
The Unified Software Development Process.
Addison-Wesley, 1999.

Grady Booch, James Rumbaugh, and Ivar Jacobson.
The Unified Modeling Language User Guide.
Addison-Wesley, 1999.

James Rumbaugh, Ivar Jacobson, and Grady Booch.
Unified Modeling Language Reference Manual, 2nd Edition.
Addison-Wesley, 2004.

Martin Fowler.
UML Distilled: Applying the Standard Object Modeling Language (2nd Edition).
Addison Wesley, 1997.

David Garlan and Mary Shaw.
"An Introduction to Software Architecture."
Advances in Software Engineering and Knowledge Engineering, Volume 1, World Scientific Publishing Company,1993.

David Garlan and Mary Shaw.
Software Architecture:  Perspectives on an Emerging Discipline.
Prentice Hall, 1995.

D. Parnas.
"On the Criteria to be Used in Decomposing Systems into Modules."
Communications of the ACM, 15(12):1053-1058, December, 1972.

Philippe B. Kruchten.
"The 4+1 View Model of Architecture."
IEEE Software, 12(6):42-50, November, 1995.

Cleanroom Software Engineering

Stacy J. Prowell, Carmen J. Trammell, Richard C. Linger, and Jesse H. Poore.
Cleanroom Software Engineering.
Addison Wesley, 1999.

Allan M. Stavely.
Toward Zero-Defect Programming.
Addison Wesley, 1999.

Michael G. Dyer.
The Cleanroom Approach to Quality Software Development.
Wiley Series in Software Engineering Practice, 1992.

Shirley A. Becker, James A. Whittaker.
Cleanroom Software Engineering Practices.
Series in Software Engineering Management, 1996.

James A. Whittaker and J. H. Poore.
"Markov Analysis of Software Specifications."
ACM Transactions on Software Engineering and Methodology, 2(1):93-106, January 1993.

Richard C. Linger.
"Cleanroom Process Model."
IEEE Software, 11(2):50-58, March 1994.

Object Management Group.
"Object Constraint Language."
OMG Available Specification, Version 2.0, #formal/06-05-01.

Extreme Programming Resources

Kent Beck.
Extreme Programming Explained: Embrace Change.
Addison Wesley, 2000.

Ron Jeffries, Ann Anderson, and Chet Hendrickson.
Extreme Programming Installed.
Addison Wesley, 2001.
PDF.

Martin Fowler.
Refactoring: Improving the Design of Existing Code.
Addison Wesley, 1999.

William C. Wake.
Refactoring Workbook.
Addison-Wesley Professional; 1st edition, August 22, 2003.

Andy Hunt and Dave Thomas.
Pragmatic Unit Testing in Java with JUnit.
The Pragmatic Programmers, September 2003.

Alistair Cockburn and Laurie Williams.
"The Costs and Benefits of Pair Programming."
Humans and Technology technical report 2000.01, January 2000.

Laurie Williams and Robert R. Kessler.
"All I Really Need to Know about Pair Programming I Learned in Kindergarten."
Communications of the ACM, 43(5):108-114, May 2000.

Laurie Williams, Robert R. Kessler, Ward Cunningham, and Ron Jeffries.
"Strengthening the Case for Pair Programming."
IEEE Software, 17(4):19-25, July/August 2000.

Alistair Cockburn.
"Learning From Agile Software Development."
 (Part 1; Part 2), October, November 2002.

Tom Mens and Tom Tourwe.
"A Survey of Software Refactoring."
IEEE Transactions on Software Engineering, 30(2):126-139, February, 2004.

Web Resources for XP

Extreme Programming.org
XProgramming.com
JUnit.org
Refactoring.com
Extreme Programming Roadmap
Catalog of refactorings
From Smells To Refactorings

Video Store Example

Code listing
doc file

Miscellaneous

Alan MacCormack, Chris F. Kemerer, Michael Cusumano and Bill Crandall.
"Trade-offs between Productivity and Quality in Selecting Software Development Practices."
IEEE Software, 20(5):78-85, September / October 2003.

Priscilla Fowler and Stan Rifkin.
"Software Engineering Process Group Guide."
Technical Report, CMU/SEI-90-TR-24, ESD-90-TR-225, September 1990.

SEI: Basic SPIN Information.
SEI: Frequently Asked Questions about SPINs.

P. Armenise, S. Bandinelli, C. Ghezzi and A. Morzenti.
"Software Processes Representation Languages: Survey and Assessment."
Proceedings of the Fourth International Conference on Software Engineering and Knowledge Engineering, Capri (Italy), June 1992.

Stanlye M. Sutton Jr., Barbara Staudt Lerner and Leon J. Osterweil.
"Experience using the JIL Process Programming Language to Specify Design Processes."
Technical Report 96-30. Comuter Science Department, University of Massachussets, 1995.

Victor R. Basili, Gianluigi Caldiera and H. Dieter Rombach.
"The Goal Question Metric Approach."
 In John J. Marciniak, editor, Encyclopedia of Software Engineering, volume 1, pages 469-476. John Wiley & Sons, 1994.

Michael A. Cusumano.
"Extreme Programming Compared with Microsoft-Style Iterative Development."
Communications of the ACM, ACM Press, 50(10):15-18, October, 2007.

Barry W. Boehm and Richard Turner.
"Observations on Balancing Discipline and Agility.."
Proceedings of the Agile Development Conference ADC'03, IEEE Computer Society, 2003.

Barry Boehm and Richard Turner.
Balancing Agility and Discipline.
Addison-Wesley, 2004.

Project Materials