Producing Production Quality Software

Prof. Arthur P. Goldberg

NYU Computer Science Department

Fall 2005 Syllabus

Update history: 8/31, 9/6, 9/7, 9/14, 9/21, 9/28, 10/5, 10/8, 10/10, 10/12, 10/17, 11/2, 11/16, 11/21, 12/14, 12/16




Classroom Activities


Course overview
Examples of bad code
Practice recognizing problems with other people’s code and Software Quality Guidelines; their rationale


Review this Syllabus
Review Software Quality Guidelines
Students do Example X from
Examples of bad code


Software Quality: Capers Jones' View (handout)

GG: Chapter 3: Overview of Software Inspections, especially 3.1

Discuss Function point analysis


An Approach to Writing Good Code
Pseudocode/PDL approach to design and implementation

OO Design (handout)

SM 2nd edition (SM2): 3.4, 3.5 and 9.1 to 9.3

Do an OO design problem, ViaNet Bank


More OO Design

Discuss the Trilogy review

McGroddy and Lin, Editors, A Review of the FBI's Trilogy Information Technology Modernization Program, pp. 1 – 39, also, optionally, read IEEE Spectrum's article about the human side of this disaster, Harry Goldstein, Who Killed the Virtual Case File?

Code inspection
Blank inspection form

Example Web server to inspect

Completed inspection form


Testing (handout), Limitations of Testing (handout)
Glass box’ testing; unit testing; JUnit; coverage testing: structured basis testing ; QA; independent testing; etc.
Black box, or functional, testing; its limitations; Blackbox Testing Handout

An Example of Good Code-My SMTP Answer

SM2: Requirements Prerequisite. Requirements Checklist. Amount of Time to Spend on Prerequisites

SM2: Chapters 5, 6 and 22
Gamma and Beck, JUnitTest Infected: Programmers Love Writing Tests

Demo Eclipse and JUnit
Demo some How To Break Software examples
Demo Canned HEAT
<Review examples of bad code that survived functional testing of IMAP web servers>


Error Handling (handouts), Java Exceptions (handouts)

[Error handling in javamail's IMAPFolder code]

Today's Notices

Interim Course Evaluation

SM2: Chapter 8

My annotated
(search for “possible error handling bug”)

For reference:

Study error handling in


Guest lecture: An ASP/SaaS software company's experiences with local and off-shore development, traditional and agile processes, and other issues, Paulo Kaiser - VP Development & Operations Riskclick and NYU MBA and MSIS alumnus

Look at publications by the “Agile Alliance


Finish Error Handling discussion

Code design with assertions and invariants

Review Programming With Assertions

Look at Hermes


System Design in Java
Design Principles

Notes on Java system design
SM2: Chapters 3, 5, and 6

Demo Canned HEAT again
Binary search invariants answer
Design DBMS architecture


Guest lecture: Software Development in a Ten Person Software Vendor, Rick Hall, Senior Developer and Architect, ChoiceMaker Technologies


Concurrent and Distributed Programming (handout)

CHAPTER 17, Threads and Locks, of the Java Language Specification
Java API:
Thread (especially scheduling methods), Object (especially wait(), notify() and notifyAll())

Review a single-writer, multiple reader lock implementation

Review Java Threading Questions


Guest Lecture: Trading Technology Architecture by Chris Cryan, Chief Architect, Global Markets Trading Technology, Bank of America Securities




Concurrent Java Programming, continued


Group Programming Practices: Capers Jones, SEI's CMM, Software Effort Estimation

Wideband Delphi Form

DBMS design
Data handout

SM2: Chapters 21, 28, and 30
[Some Weinberg writing TBD]

rm.doc">Wideband Delphi exercise


nForm.doc">Wideband Delphi exercise