* remember: presentation reflections
(counting as the rest of Homework 8)
due by 11:59 pm TONIGHT
* and final versions of Homework 7 files are
due by 11:59 pm FRIDAY, November 11
* maybe a few postings from MMM Ch 10-11
* there are a "core" set of documents
that can serve as critical pivots in a project;
(and for its management, in Brooks' view)
* preparing each "core" document focuses thought
and crystallizes discussion;
* writing REQUIRES "hundreds of mini-decisions"
* Parnas' chapter in "Software Fundamentals" --
"A Rational Design Process: How and Why to Fake it"
^ the preparation and writing improve your thought process
enough to help the whole project;
* back to Jalote Ch. 7 -
some additional metrics for software size and for software complexity...
* for size?
* lines-of-code, 1000s-lines-of-code
LOC, KLOC
Jalote: non-commented, non-blank lines is a standard
definition;
generally, only new or modified lines are counted?!
* Halstead's Volume: how about counting
operators and operands?
* n1 - number of distinct operators
n2 - number of distinct operands
* N1 - total occurrences of operators
N2 - total occurrences of operands
* Vocabulary n of a program
n = n1 + n2
* Length N of a program
N = N1 + N2
* Volume V of a program
V = N log2 (n)
^ volume? represents the minimum number of
bits to represent the program?!
log2(n) is the number of bits to
represent each operand, operator
uniquely,
multiply by N for the total number of
occurrences...
...ANOTHER way of viewing program
size besides lines of code;
* Complexity metrics
* cyclomatic complexity
* maybe one of the more widely used...?
* starts with a control flow graph!
V(G) = e - n + p
edges minus nodes plus connected components
...which, Jalote says, can be shown to be the same
as the number of decisions plus 1
for the example in the chapter,
that's
10 - 7 + 1 = 4
or 3 (while, while, if) + 1 = 4