In reading Philosophy 101, about Truth with a capital "T", and the non-traditional logics that use new notions of truth, we of course arrive at Fuzzy Logic with its departure from simple binary true/false values, and embrace of an arbitrarily wide range of values in between.
Contemplating this gave me a small AHA moment: Unit Testing is an area where there is an implicit assumption that "Test Passes" has either a true or false value. How about Fuzzy Unit Testing where there is some numeric value in the 0...1 range which reports a degree of pass/fail-ness? i.e. a percentage pass/fail for each test. For example, testing algorithms that predict something could be given a percentage pass/fail based on how well the prediction matched the actual value. Stock market predictions, bank customer credit default prediction, etc come to mind. This sort of testing of predictions about future defaults (i.e. credit grades) is just the sort of thing that the BASEL II accords are forcing banks to start doing.
Another great idea (if I do say so myself) that I had a few years ago was the notion that there is extra meta-data that could/should be gathered as a part of running unit test suites; specifically, the performance characteristics of each test run. The fact that a test still passes, but is 10 times slower than the previous test run, is a very important piece of information that we don't usually get. Archiving and reporting on this meta-data about each test run can give very interesting metrics on how the code changes are improving/degrading performance on various application features/behavior over time. I can now see that this comparative performance data would be a form of fuzzy testing.
Friday, August 31, 2007
Subscribe to:
Post Comments (Atom)
MOTTO
Philosophy: Design Patterns for ThinkingTM
"Philosophical Programming" is a style of computer software development that explicitly seeks inspiration for new techniques from Western Philosophy (with a capital P).
- Bruce Wallace, 2006
Recommended Threads
Tags
abstraction
accidental/essential
bank
case study
components
database
definitions
disclaimer
elevator
epiphanies
equals
existential programming
frameworks
fuzzy
history
holes
humor
identity
integration
introduction
knowledge
language
logic
mathematics
mind-body
moral philosophy
movies
namespaces
ontologies
origins
parts
philosopher's toolkit
philosophy
polymorphism
POSTSCRIPT
primary/secondary
programmers_teach_philosophers
programming
project
properties
quantum
rant
roles
rose
savant
schema mediation
semantic network
space
species
taxonomy
test driven
testing
time
tools
types
vector space
views
PolyGlot, Inc.
- Bruce Wallace
- As Principal Consultant of PolyGlot Inc since 1980, Bruce Wallace has provided computer software development, consulting, and contract programming services around the world. Projects have been completed in San Francisco, Juan-les-Pins France, Sydney Australia, Perth West Australia, "Silicon Valley" CA, "Route 128" MA, Austin TX, Charlotte NC, Atlanta GA.
No comments:
Post a Comment