[Tfug] Stored settings

Bexley Hall bexley401 at yahoo.com
Thu Dec 11 10:28:48 MST 2008


Hi, Rob,

> >> Minimally, you should have a formal specification of the data
> >> format, and, ideally, a robust set of tools for performing IO,
> >> validating, and transforming your data.
> 
> On Tue, Dec 09, 2008 at 12:54:48PM -0800, Bexley Hall
> wrote:
> 
> > Exactly!  That is the point of the question.  If I bundle ALL of
> > these issues together in the interface *to* the "config database",
> > then I achieve all of the goals in a manner that is maintainable
> > and far more usable (to the end user) than the traditional approach
> > of keeping them all as separate -- though logically linked --
> > entities.
> 
> You, more than anyone else, should know what is "the right thing
> to do".

<frown> Well, if I was 100% sure, I wouldn't ask!  :>  The problem
is anticipating how users will interact with devices.  I base my
approaches on how I *think* a "rational" user would want a device
to behave.  But, people always come up with unusual ways of using
things that aren't anticipated... :-/

> But since your question was phrased in general terms, my
> answer was, too.
> 
> > I.e., having a specification is only meaningful if the user has
> > access to it, if it is written in a form the user can easily
> > parse, *and* if it is kept in lock-step with the actual implementation!
> > If any of these get out of sync, then they are worse than useless
> > as they will only ADD to the user's confusion.
> 
> Once again, it is for you to decide what is best for yourself, so
> don't take this the wrong way.  But I maintain that any software that
> is destined for release should be documented in exacting detail,
> particularly the data that it accepts, and the data it produces.  Yes,
> this requires significant effort.  Yes, software updates may require
> documentation updates. Yes, failure to do so may be thoroughly
> misleading, and elicit a steady stream of bug reports and
> death threats.  Oh, well -- now you're in the big leagues!

You're preaching to the choir  :>   I start each project with a
Preliminary Specification.  Then, once that *seems* finished, I
write the User Manual.  This is usually the best way to flesh out
any details that may have been omitted in the Prelim Spec.  I.e.,
"Well, what happens if I *don't* 'Answer YES or NO'?", etc.
Once the manual is done, I go back and "fix" the Specification
so that it covers all of these contingencies.

This puts a *huge* up-front load on the project but, thereafter,
the implementation is usually a piece of cake -- all of the
"thinking" has already been done!

I'd estimate that I spend almost 50% of my time "up front" on
paperwork; 30% writing code (assuming the hardware is already
designed) and 20% on validation.  The 20% number sounds bad
but having detailed specs to work from means I can often do
much of the traditional "testing" during the code writing phase.

Having documents up front is also a win for marketing droids,
etc.  They can't later claim they didn't know a certain capability
or feature was "missing", etc.  And, they can start positioning
for product introduction, support, etc.

> Allow me clarify my point in relation to your original
> post: Other than aesthetics, I don't think it matters if you say...
> 
> "EraseBootDriveOnPowerUp = Never"
> 
> or
> 
> "EraseBootDriveOnPowerUp = 3"
> 
> or
> 
> "ButterScotchCookies = HidyHo"
> 
> or even
> 
> "ConfigurationOption612365 =
> 24.32.16.hike.hike.hike"
> 
> ...so long as somewhere there is something written to the
> effect of:
> 
> EraseBootDriveOnPowerUp: this option will perform an
> "erase" operation on the "boot" drive that is reported by the OS
> using the PEZIX-compliant frobnitz (2) function.  Valid values for
> this option are *foo*, *bar*, and *stickygumboots* These options are
> further explained in the following section...

Understood.  Obviously, the point of the "values" I chose was to
illustrate to the user (who rarely consults supplementary docs)
what the current choice "means".  For most settings in most
applications, I think you can come up with setting "names" and
"choices" that give the user a pretty good idea of how the
application will behave *with* those choices in place.  I don't
worry about the guy who doesn't even know how the application
is intended to work -- presumably, he won't be dicking around
"under the hood" with settings for an application he hasn't *tried*
to use, etc.

But, of course, users are users... :-/

Thx,
--don



      




More information about the tfug mailing list