Resources
- One and a half minute
video by Steve Jobs.
- The "QA" little language from lecture 2
(tar file).
- Some advice from Derek Bickerton.
- The Victorian Ombudsman, in consultation with the Victorian
Auditor-General, issued an
investigation into ICT-enabled projects in November 2011.
This is a must read.
- A local copy of the
Common Weaknesses Enumeration,
a >1200 page PDF document from MITRE listing common software
mistakes. This version was current in September 2011.
- Ulrich Drepper's 114-page
“What Every Programmer Should Know About Memory”.
That article was written a few yearsago, but the information is
still current and very important for understanding performance.
- The slides from Mike Williams' talk from the 2011 Erlang Factory, which has some interesting software engineering advice.
- NASA Formal Inspections Standard (PDF)
- NASA Formal Inspections Guidebook (PDF)
- The 1985 FTP standard (69 pages)
- An old list of standards in various areas (40 pages)
- templates.tar.gz (source
code from lecture 20 handouts)
- For profilers and coverage tools (lecture 16), there's documentation for
- gcov, for producing
coverage reports for native executables compiled by GCC using
-fprofile-args -ftest-coverage
- gprof, for
native executables compiled using the
-pg
option
- dprofpp, for
Perl run using the
-d:DProf
option.
- ruby-prof
(overview,
man page,
flat profile — like prof — and
graph profile — like gprof).
- For static checking (lecture 17) there are
- If you are writing Java and you aren't using the
open source FindBugs
program, the prosecution lawyers will want to know why not. If you
can find a better lint checker for Java, use it; until then, it is
unprofessional to write Java without using this tool.
- The flawfinder 1.27 release
copied from David Wheeler's
web site and converted to ZIP format. On Windows, you will need to
unpack it with
unzip -a
or equivalent. It's a Python program
so should work OK under Windows. The ZIP-file includes documentation.
- ITS4 static checker (178 kB gzipped tar)
- SPlint 3.1.2 static checker
(2.3 MB gzipped tar)
- Ellemtel style guide for C++ (PDF)
- slides.c, the file that
translates lectures from SGML to LaTeX.
- Lint output from
the Solaris version of Lint, applied to that file.
- rules for Smalltalk which
an AWK program turns into an AWK program.
- some problems found
and fixed using those rules (not up to date).
- For simple software metrics (lecture 18), there are
- metrics.c, a little program of mine
that handles C and Java (which tells you that it knows practically
nothing about either of them)
- metrics.tar, a tar(1) archive that
unpacks into a metrics.d directory, giving you simple sizes +
Halstead complexity measures +
McCabe cyclomatic complexity.
- metre.tar, a tar(1) archive that
unpacks into a metre.d directory, giving you a bunch of things
including call trees. Beware: this code needs serious work.
It doesn't handle // comments, and its method of creating a
call graph is ad hoc to the point of bogosity.
- The 2000 edition
of the COCOMO II cost estimation model (90 pages, PDF)
relates to lecture 19.
- For lecture 20, we have Henry Spencer's “How To Steal Code
or Inventing The Wheel Only Once” (1989) and a
templates.tar file with a
modernised version of his templates. There is also a
compressed tar file with my
example showing how to generate Java classes from a truly generic
template with M4.
- HARRY READ ME (compressed)
- In 2010 we ran an experiment about identifiers and readability.
The resources we put together for that may still be of some interest.
- Here are four old papers about program readability and experiments.
I'm sure you can find lots of others.
Read-Ex-1
Read-Ex-2
Read-Ex-3
Read-Ex-4
- The experiment used a rather nice (but unimplemented) programming
language designed for readability experiments, called Chatterton.
The Chatterton reference manual
is about 35 pages and tells you everything you need to know.
The three dialects used in the experiment were
Chatterton-P (names_are_like_this), Chatterton-S (namesAreLikeThis),
and Chatterton-U (namesarelikethis).
- There are three programs, Gen, Cracker, and k-means.
Each has a Chatterton-P version, a Chatterton-S version, and a
Chatterton-U version. Each student got one version
of each program, with no two students getting exactly the same
triple of versions. Each program version came with its own
questions; answers had to be written on the question sheets
and handed in at the office.
- An interesting article on service companies. Does a software company
produce goods or services?