SCOUG-Programming Mailing List Archives
Return to [ 10 |
August |
2003 ]
<< Previous Message <<
Content Type: text/plain
"I've used enough BOM systems to think there's gotta be a
better way...like plain-text files! (programmable parametric
BOMs, you might say) It's pretty typical to have 20 variations
of a part on one drawing, but the clumsy database requires 20
separate nearly identical BOMs with nothing to indicate their
similarity. As programmers we already have plain-text source
code with a well-defined syntax, so it shouldn't be that
hard to write a simplified parser to create BOMs and Where
Used lists. I haven't felt the need yet, but it might be
worthwhile for something huge like a Linux kernel."
Tom,
You have to ask yourself why manufacturing adopted the
database over the file system (your text files) which
previously existed. Pick your favorite database technology:
network, hierarchical, relational. Each of these have been
chosen over file systems.
Surely one of the reasons lies in the fact that source is not
replicated as it is in file systems. Not replicated means only
one source exists, one named source for each raw material,
one named source for each assembly. Every high level
assembly, the BOM, contains only the names of its
components: their logical presence. This means that
maintenance occurs only on a single source, not each
replication.
You bring up the matter of pattern recognition, in fact of
"near-pattern" recognition. In a database implementation
where an assembly is a structured list of names, the ability
exists to find patterns exact or fuzzy on the basis of content
(names only) or context (ordered list of names).
You need also to consider issues surrounding homonyms (same
name, different referents) and synonyms (different names,
same referent). In the case of homonyms you want to
associate a unique name to each instance. This means you
need something in addition the the name itself, e.g. an index
suffix. This index, maintained by the data
repository/directory, does not appear in the source, but only
in "internal" source references, e.g. list of names in an
assembly.
Your welcome to write software that extracts all the names
used. It takes a bit more effort to determine the homonyms
and the synonyms. It takes a bit more then to provide a
unique name for each homonym, substituting it for each of its
instances in the source. Then you can decide about which of
the set of synonym names gets to survive, which you can then
substitute each one of its use instances in the different files.
Then you can hammer home to some poor dumb idiot that
picks the same name as an existing one for something
different or a different name from an existing one for
something that is the same. You can keep on doing this from
time to time to keep them in sync.
Or you can drop a file system of multiple directories and
source files for a database system with only one directory and
zero source files. Instead every source statement exists as a
row in the "source table", given a content-based,
system-assigned unique name. Every source assembly, that
which corresponds to your source files, exists as named set of
rows representing a list of names. Again maintained entirely
by the software. Thus they are logically, not physically
stored in the database, the repository.
You can then write an SQL query to do a pattern search on
the stored source, either on the actual source or its name. If
you find that two or more are actually synonyms, you can
select one to be the remaining source with the names of the
others relegated to the "alias" table. Or if you want to
eliminate as many uses of synonyms as possible, you can have
all the others use instances in assemblies replaced and the
replaced source deleted.
Note what control this gives the enterprise over the use of
names and source written by the programmer. It becomes
fairly easy to, one, monitor all programmer activity, and, two,
to enforce enterprise naming rules. You can in effect maintain
all source and enforce all rules for all data within the
enterprise.
I'm not saying that you cannot do this with file systems. I'm
only noting that so-called "librarian" software which
maintains files systems doesn't do it. No one participating in
this list can afford the software for what it does do.
You are correct. For something like Linux or OS/2 you need
something to allow maintenance of source code and text for
all assemblies at all levels. When you also have your scope of
compilation equal to the scope defined by your input source,
up to and including all the source of an OS, you will find that
such is a single unique name in the data directory. That name
gives rise to all the other names necessary. So you end up
not using an "include" statement in source as all source is
included by name. Therefore all source is "included" source.
Patterns occur on either content alone or context, which is
the content along with its structure. The degree of pattern
matching depends on overlap, in whole or in part, in either
content or context. When you either find or define a pattern
you will find its replication in all use instances more akin to a
database than a file system. File systems don't come with an
SQL.
=====================================================
To unsubscribe from this list, send an email message
to "steward@scoug.com". In the body of the message,
put the command "unsubscribe scoug-programming".
For problems, contact the list owner at
"rollin@scoug.com".
=====================================================
<< Previous Message <<
Return to [ 10 |
August |
2003 ]
The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA 92799-6904, USA
Copyright 2001 the Southern California OS/2 User Group. ALL RIGHTS
RESERVED.
SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group.
OS/2, Workplace Shell, and IBM are registered trademarks of International
Business Machines Corporation.
All other trademarks remain the property of their respective owners.
|