Saturday, July 23, 2005

[notes] minimal interface requirements

minimal interface requirements are not exhaustive -- in virtue of the fact that there is no way to know everything everyone will ever try to make every interface do; thus minimal interface requirements need not include completeness (broken links in a web page are acceptable if they are recognizable as such); one ought, however, be given a way to discern (by explicit declaration or by the consistent implementation of contextual cues) which elements of the interface are complete and which are not (the code should be well-trapped (well-trapped means if one designs a good interface one has thoroughly (to a reasonable approximation (given what is knowable())) exhaustively) examined the logical consequences of the code to effectively constrain the operations a user will be able to perform, and to thereby diminish the probability that the execution of the code will be halted unexpectedly (in summary, therefore, if you make a program, either make it so simple and so observable in its operation that doesn't crash, or make sure it crashes elegantly by giving the user an acceptable way out)).