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

Week

Description

Readings

Classroom Activities

1

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

None

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

2

Software Quality: Capers Jones' View (handout)

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

Discuss Function point analysis

3

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

4

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


5

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>

6

Error Handling (handouts), Java Exceptions (handouts)

[Error handling in javamail's IMAPFolder code]

Today's Notices

Interim Course Evaluation

SM2: Chapter 8

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

For reference:
IMAP RFC 3501


Study error handling in IMAPFolder.java

7

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


8

Finish Error Handling discussion

Code design with assertions and invariants


Review Programming With Assertions

Look at Hermes

9

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

10

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



11

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

12

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

TBD

TBD

13

Concurrent Java Programming, continued



14

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




/FONT>




nForm.doc">Wideband Delphi exercise




/FONT>