| Week |
Day |
Date |
Discussion Topic |
Reading* |
Projects |
Slides |
| 1 |
T | 09/04 |
Introduction |
McC 1-2
Kessler: Why Projects Fail
Brooks: No Silver Bullet
|
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
Kampe: Surviving Larger Projects
Kampe: What is a Post-Mortem?
Schaefer: Diablo Postmortem
Project 1 Description
|
pdf
Q&A |
| 2 |
T | 09/11 |
S/W Process Models |
McC 3-3.2
Kampe: S/W Process Models
Boehm: Spiral Development
Big Requirements up Front
|
P1a: proposal development |
pdf
Q&A |
| R | 09/13 |
Requirements |
McC 3.3-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
Rouse: What Players Want
Wiegers: Developing Use cases
Wells: User Story Cards
Wiki: UML introduction
Agile: UML use case diagrams
Agile: UML activity diagrams
Agile: UML state diagrams
|
P1b - requirements planning |
pdf
Q&A |
| R | 09/20 |
DEMONSTRATION |
|
P1c 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
|
P1d - Final Requirements |
pdf
Q&A |
| R | 09/27 |
System Models
& Modeling |
Kampe: Why we model
Ambler: Agile Modeling Principles
Ambler: UML component diagrams
Ambler: UML deployment diagrams
Gabler: Game Prototyping
|
pdf
Q&A
|
| 5 |
T | 10/02 |
Principles of Architecture |
McC 3.5-6, 5.2
SEI: S/W Architecture
Garlan: S/W Architecture (ch 1-2)
Foote: Big Ball of Mud (digest)
Wiki: Mechanism/Policy Separation
Kampe: Software Testability
Kampe: Interface Stability
|
P2a - architecture, prototyping |
pdf
Q&A |
| R | 10/04 |
Evolving an Architecture |
McC 5.1, 5.3-4, 34.1, 34.6
Kampe: Architecture Does All That?
|
pdf
Q&A |
| 6 |
T | 10/09 |
Formal Reviews |
McC 21.3-4
Wieger: Inspections
Wieger: 7 Deadly Sins
|
P2a - architecture, prototyping |
pdf
Q&A |
| R | 10/11 |
U/I Design |
usability.net: User Centered Design
Talin: U/I Design Principles
Wiki: Usability Testing
Thompson: Halo 3 Usability
Bay: Designing Games that Don't Suck
Nielsen: Web U/Is are different from GUIs
Kampe: Content Architecture
Kampe: CLI Design
|
pdf
Q&A |
| 7 |
T | 10/16 |
DEMONSTRATION |
Floridex architecture
SQL component analysis
Phone UI component analysis
U/I mock-up
|
P2b Architectural Review |
|
| R | 10/18 |
MID-TERM EXAM |
all the above |
|
info |
| 8 |
T | 10/23 |
FALL BREAK |
| R | 10/25 |
Component, Class Designs |
McC 6, 34.4
Object Mentor: Packaging Principles
Spolsky: What are specs?
Agile: UML class diagrams
Agile: UML package diagrams
Agile: UML object diagrams
|
P2c Finalize Architecture |
pdf
Q&A |
9 |
T | 10/30 |
Routine, Algorithm Design |
McC 7-7.2 (skim 7.3-7.7), 9-9.3, 18
Agile: UML Sequence diagrams
|
P3a Component Specifications |
pdf
Q&A |
| R | 11/01 |
Design Patterns |
McC section 5.3 (review design patterns)
Garlan: S/W Architecture (ch 3)
Wiki: Client/Server Model
Creational:
singleton,
object-pool
Behavioral:
iterator,
observer,
strategy,
visitor
Structural:
adapter,
bridge,
proxy
Synchronization:
events,
locking,
leases,
transactions,
|
pdf
Q&A |
| 10 |
T | 11/06 |
Testability & Test Cases |
McC 19.5-6, 22
(review)
Kampe: Software Testability
Kampe: Introduction to S/W Test Cases
Cornett: Code Coverage
sample: testing strategy
sample: list of test cases
sample: test case
|
P3b - Component Design |
pdf
Q&A |
| R | 11/08 |
Robustness |
McC 8
Kampe: HA taxonomy
Kampe: S/W HA
|
pdf
Q&A |
| 11 |
T | 11/13 |
Bugs & Debugging |
McC 23
Kampe: Forensic Debugging
Kampe: Root Cause Analysis
Wiki: Defect Tracking
Black: writing a bug report
Kampe: Severity and Priority
Bugzilla Manual (sections 5.3-5.4)
|
P3b/c - Design/Test Plan |
pdf
Q&A |
| R | 11/15 |
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)
|
pdf
Q&A |
| 12 |
T | 11/20 |
System Testing
Performance |
McC 25
Wiki: System Testing
Kampe: Load & Stress Testing
Kampe: Testing and Bug Discovery
Kampe: Scenario Based Testing
Kampe: Release Phases & Criteria
Gnu: Gprof (just skim)
|
P3d - Design Review |
pdf
Q&A |
|
| R | 11/22 |
THANKSGIVING |
|
|
| 13 |
T | 11/27 |
Maintainability |
Much but easy Reading
McC 30.2, 31, 32.1-4, 34.3, 34.5
Wiki: Doxygen
(documentation generation)
|
P3e - Finalize Design |
pdf
Q&A |
| R | 11/29 |
Agile Process |
McC 34.2, 34.9
Wiki: Agile S/W Development
Wiki: Scrum (Roles, Sprint, Meetings, Artifacts)
|
pdf
Q&A |
| 14 |
T | 12/04 |
Productivity & Collaboration |
McC 21.1-2, 28.1, 28.5, 33
XP: Project Activities
XP: Rules
XP: Values
XP: Collective Ownership
Williams: Pair Programming
Rosenberg: Problems w/Pair Programming
Global Software Development
|
P4 - Implementation and Final Report |
pdf
Q&A |
| R | 12/06 |
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
Scrum backlog grooming
|
pdf
Q&A |
| 15 |
T | 12/11 |
Project Scheduling and Tracking |
McC 34.7
Wiegers: Successful Project Management
Brooks: Mythical Man Month (digest)
Kampe: Project Management Concepts
Kampe: Project Milestones
Kampe: Putnam Norden Rayleigh curves
Scrum points and velocity
Wiki: Earned Value Analysis
|
pdf
Q&A |
| 16 |
W | 12/19 |
FINAL EXAM |
everything since midterm |
|
info |
| F | 12/21 |
EXTRA CREDIT |
syllabus and assigned reading
lectures and class activities
assigned projects
|
Course Post Mortem Review |
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:
This book by Gamma, Helm, Johnson and Vlissides (the Gang of Four) is
considered by many to be one of the foundations of object oriented design.
Design patterns will not solve all of your problems, but studying and
using them will make you a better programmer. I did not make it required
reading for this class because it would have taken us too deeply into
programming, but if you have not already read it, I strongly encourge
you to do so.