| Week |
Day |
Date |
Discussion Topic |
Reading* |
Projects |
Slides |
| 1 |
T | 09/04 |
Introduction |
McC 1-2
Kessler: Why Projects Fail
Brooks: No Silver Bullet
Wiki: Legacy System
|
P1a: teams and concepts |
pdf
Q&A |
| R | 09/06 |
Basic Project Skills |
McC 28.2
Spolsky: 12 steps to better code
Kampe: Reproducibility and Control
Wingerd: SCM Best Practices
Kampe: Surviving Larger Projects
Kampe: What is a Post-Mortem?
|
pdf
Q&A |
| 2 |
T | 09/11 |
S/W Process Models |
McC 3-3.2
Kampe: S/W Process Models
Wiki: Waterfall Model
Wiki: Iterative Models(defn, life cycle)
Boehm: Spiral Development
Wiki: Rational Unified Process
|
P1a: proposal development |
pdf
Q&A |
| R | 09/13 |
Requirements |
McC 3.3-4, 4
Wiki: Requirements Analysis
Kampe: User Requirements
Wiegers: Requirements Traps
Wiegers: Prioritizing Requirements
| pdf
Q&A
|
| 3 |
T | 09/18 |
Users, Roles, and Use Cases |
Sisson: User Characterization
usabilitynet: Task Analysis
Wiegers: Developing Use cases
Wells: User Story Cards
UML use case diagrams
|
P1a - draft requirements |
pdf
Q&A |
| R | 09/20 |
DEMONSTRATION |
|
Requirements Elicitation |
|
| 4 |
T | 09/25 |
Quality
Quality Assurance
|
McC 20
Rakitin: What is Quality?
Spolsky: Five Worlds
Rakitin: What is Software Quality Assurance?
Boehm: S/W Defect Reduction
Wieger: Peer Reviews
|
P1a - elicitation & writeup |
pdf
Q&A |
| R | 09/27 |
Agile Process |
McC 34.2, 34.9
Big Requirements up Front
Wiki: Agile Process
Wiki: eXtreme Programming
|
pdf
Q&A |
| 5 |
T | 10/02 |
Principles of Architecture |
SEI: S/W Architecture
Garlan: S/W Architecture (ch 1-2)
McC 3.5-6, 5-5.2
Wiki: Mechanism/Policy Separation
Kampe: Software Testability
Kampe: Interface Stability
|
P1b - architecture development |
pdf
Q&A |
| R | 10/04 |
Evolving an Architecture |
McC 5.3-4, 34.1, 34.6
Garlan: S/W Architecture (ch 3-4)
Foote: Big Ball of Mud (Intro - "Keep it Working")
|
pdf
Q&A |
| 6 |
T | 10/09 |
System Models
& Modeling |
Wiki: UML introduction
UML activity diagrams
UML component diagrams
Kampe: Why we model
Ambler: Agile Modeling Principles
|
P1b - architecture refinement |
pdf
Q&A
|
| R | 10/11 |
Component, Class Designs |
McC 6, 34.4
Spolsky: What are specs?
Gabriel: Objects Have Failed
Steele: Objects have not failed
UML class diagrams
UML package diagrams
UML object diagrams
Wikipedia: Design Patterns
selected Class patterns
|
pdf
Q&A |
| 7 |
T | 10/16 |
Routine, Algorithm Design |
McC 7, 9, 18
UML interaction diagrams
UML state diagrams
selected algorithmic patterns
|
P1b - write-up |
pdf
Q&A |
| R | 10/18 |
MID-TERM EXAM |
all the above |
info |
| 8 |
T | 10/23 |
SPRING BREAK |
| R | 10/25 |
Design Reviews |
McC 21.3-4
Wieger: Inspections
Wieger: 7 Deadly Sins
|
P1c - Review preparation |
pdf
Q&A |
9 |
T | 10/30 |
Robustness |
McC 8
Kampe: HA taxonomy
Kampe: S/W HA
|
P1c - Design Reviews |
pdf
Q&A |
| R | 11/01 |
DEMONSTRATION |
Architectural Review |
|
| 10 |
T | 11/06 |
U/I Design |
usability.net: User Centered Design
Talin: U/I Design Principles
Nielsen: Web U/Is are different from GUIs
Butler: Web U/Is aren't different from GUIs
Wiki: Usability Testing
Kampe: Content Architecture
Kampe: CLI Design
|
P1c - Write-up & Revision |
pdf
Q&A |
| R | 11/08 |
Maintainability |
Much but easy Reading
McC 11, 30.2, 31, 32, 34.3, 34.5
JavaDoc
|
pdf
Q&A |
| 11 |
T | 11/13 |
Productivity & Collaboration |
McC 21.1-2, 28.1, 28.5, 33
Wiki: XP practices
Williams: Pair Programming
Rosenberg: Problems w/Pair Programming
Global Software Development(PW=kampe121)
|
P2a - spec development |
pdf
Q&A |
|
| R | 11/15 |
Testability & Test Cases |
McC 19.6, 22
Wiki: Software Testing
Kampe: Introduction to S/W Test Cases
Cornett: Code Coverage
(review)
Kampe: Software Testability
|
pdf
Q&A |
| 12 |
T | 11/20 |
Integration Strategy
Testing Methodology
|
McC 29
Kampe: Integration Strategy
Fowler: Continuous Integration
Kampe: The Train Model
Wiki: Test Driven Development
Kampe: Test Harnesses
CUnit - a unit testing framework (just skim)
|
P2b - concept development |
pdf
Q&A |
| R | 11/22 |
THANKSGIVING |
|
|
| 13 |
T | 11/27 |
Bugs & Debugging |
McC 23
Kampe: Forensic Debugging
Kampe: Root Cause Analysis
Wiki: Defect Tracking
Black: writing a bug report
Bugzilla Manual (skim sections 5.3-5.13)
|
P2c - design |
pdf
Q&A |
| R | 11/29 |
System Testing
Performance |
McC 24-26
Wiki: System Testing
Kaner: Scenario Based Testing
Kampe: Load & Stress Testing
Kampe: Testing and Bug Discovery
Kampe: Release Phases & Criteria
Gnu: Gprof (just skim)
|
pdf
Q&A |
| 14 |
T | 12/04 |
Task Estimation and Risk Assessment |
McC 27, 28.3
Kampe: S/W Estimation Principles
Wiki: COnstructive COst MOdel
Peters: S/W Project Estimation
Wiegers: Risk Assessment & Management
|
P2d - design review |
pdf
Q&A |
| R | 12/06 |
Project Scheduling and Tracking |
McC 34.7
Brooks: Mythical Man Month (digest)
Kampe: Project Milestones
Wiki: Gantt Charts
Wiki: PERT Charts
Wiki: Work Breakdown Structure
Kampe: Putnam Norden Rayleigh curves
Wiki: Earned Value Analysis
Idiot's Guide to Open Workbench (just skim)
Wiegers: Successful Project Management
Junk: Cost, Schedule, Features & Quality
|
pdf
Q&A |
| 15 |
T | 12/11 |
Metrics and
Process Improvement |
McC 28.4, 34.8
Wiki: Process Improvement
Spolsky: Stealth Process Improvement
Wiki: Best Practices Benchmarking
Wiki: Capability Maturity Models
Wiki: Six Sigma
Wiki: ISO 9000
Wiki: Software Metrics
Kaner: SWE metrics
|
P2e - test plan |
pdf
Q&A |
| 16 |
W | 12/19 |
FINAL EXAM |
everything since midterm |
P2f - EXTRA CREDIT |
info |
The primary text for this course (McConnell, Code Complete) actually
has several excellent chapters on coding and programming issues. The
only reasons I do not assign them are: