Tue Jan 17 16:55:13 CET 2017
Kinds of errors
In order of difficulty to resolve, most problematic first.
Architectural problems are those that occur when a secondiary or
sometimes (when it's really bad) a primary requirement is not
reflected properly in the architecture. Structural limitations turn
seemingly simple problems into huge issues that require big changes.
Or logic errors. Often, in data-structure intensive code, not
everything can be encoded explicitly in a way that correctnes is easy
to verify through code inspection. I.e. the problem is encoded in
data structures that are subjet to _implicit_ invariants. To expose
the latter as explicit code, it helps to make an effort to encode more
in the data structures - e.g. make it impossible to represent illegal
states, and to further make other assumptions explicit as functions
that evaluate properties, to be used in a (property-based) test or
- protocol / type errors / representation bugs
Usually minor "brain farts" that lead to obviously incorrect behavior,
but can linger due to lack of type or test coverage. Testing and/or
static analysis can usually find these.