William,
See my comments in-line, prepended by '>>'.
andy
-----Original Message-----
From: William McKee [mailto:william@...]
Sent: Wednesday, November 17, 2004 8:56 AM
To: Andy Carver
Cc: jcm@yahoogroups.com
Subject: Re: [JCM] Modeling software options with CSDP
On Tue, Nov 16, 2004 at 11:45:59AM -0700, Andy Carver wrote:
> I've never modeled this before, but hey, so what? With ORM any domain
> is doable!
Thanks for taking on the challenge.
> I'd say first that we must be clear on what the scope of this model
> is: Is it, as I'd suppose, the configuration options for only one
> instance
> (installation) of only one software product?
Yes, you are correct. I'm not managing configuration for multiple
installations, computers, etc.
> If so, I'd guess we're just saying something like
> "ConfigurationOption(Code) has global- OptionSetting(Code)" and
> "ConfigurationOption(Code) for Person(Id) has OptionSetting(Code)".
> There may be subtleties involved that I've not realized, but for the
> scope I've assumed, this seems the basic information needed.
OK, that makes sense. So to write this out as a conceptual schema would
look something like the following:
Reference schemes: ConfigurationOption(Code), OptionSetting(Code),
Person(Id)
Base fact types: F1 ConfigurationOption has OptionSetting
F2 ConfigurationOption for Person has
OptionSetting
Constraints: C1
Derivation Rules: none
>> Yes, that's about right, although for F1 I'd probably say
"ConfigurationOption has global- OptionSetting" to be clear that it is
the global setting (the hyphen is necessary for correct verbalization by
Visio, to attach the adjective to its noun (object type name)).
Next I'm going to need to allow some of the ConfigurationOption's to be
only set globally. I've tried to specify that in the following
conceptual schema. Does it make sense?
Reference schemes: OptionSetting(Code), SettingLevel(Code)
Base fact types: F1 OptionSetting has setting
F2 OptionSetting has SettingLevel
Constraints: C1
Derivation Rules: none
Reference schemes: SettingLevel(Code)
Base fact types: F1 SettingLevel has level
Constraints: C1
Derivation Rules: none
>> I'm not quite clear on what you mean by "setting", in "OptionSetting
has setting" -- I had been conceiving of OptionSetting itself as being
the setting(s) given to some ConfigurationOption. Likewise I'm not
clear about "SettingLevel has level". And I'm not clear how these
relate to your "need to allow some of the ConfigurationOption's to be
only set globally". The latter inspired me rather to think of a subtype
of ConfigurationOption, called PersonallyConfigurableOption, which would
then take the place of the former in the ternary:
"PersonallyConfigurableOption for Person has OptionSetting". That would
enforce the constraint that only personally configurable options get
personal settings.
Do you use conceptual schemas when defining elementray facts in step 1
of CDSP? Or do you just write out the facts? I find that I have to put
some effort into thinking in higher level abstractions like Person
instead of User/Administrator/Customer/Agent. Is this typical for
newcomers to ORM?
>> Oh yes. In fact, the first part of step 3 is to make you think about
what generalizations like this you might need.
Thanks,
William
--
Knowmad Services Inc.
http://www.knowmad.com