Design Process

Jason Marshall
Sat, 15 Jan 2000 19:17:42 PST

>On Tue, Jan 11, 2000 at 10:28:02PM -0800, Jason Marshall wrote:
>> I'm curious what design processes one uses on large functional
>> projects, and, more to the point,
>> how might one work within a 'metaprogramming' framework?
>> How do you divide and conquer?  Unit test?  Debug?
>> Interface to legacy code?
>I can't say, because I don't have that much experience yet.
>I guess it's almost like with other systems, except that
>in your design iterations, you also modify your development tools
>so as to adapt them to your needs.
>I think that language developers already do that kind of things;
>but in presence of non-reflective languages, they are "privileged" 

I think it's a little too early then to dismiss such a strong design 
Refactoring isn't just about spackling over the warts of OOD.  It's the 
admission that you can't reasonably have a complete project design
set in stone before line 1 of the code is written.  It's just not going 
happen on many non-trivial projects.  There's too much ignorance about
what we really require to get a project done.  To some extent, among 
developers, but to a greater extent among management.  And even 
were that not the case, in any R&D project, you're going to be flying
by the seat of the pants anyway.  You won't necessarily know upfront
if something is really possible or not.  If it isn't, you may have to 
away from some prior assumptions, throw away or gloss over some
code intended to utilize the technique.

Alternately, most code is written because it doesn't currently exist in 
APIs.  If it was there already, it wouldn't be needed.  Certainly you 
expect TUNES 1.0 to be the final form of the APIs (or perhaps more 
appropriately, the standard metamodel library).  So you're going to 
people developing their own models in parallel with other developers,
both in-house and through the standardization process  People will
come up with many similar-but-not-equal patterns, idioms, ideas.  And 
at some point they'll have to rearrange the rest of their code, in 
to use this new, standardized variation on their old theme, because
complimentary ideas prop each other up, and if you change one, the
other may suffer.  

In short, you're going to have lots of code with evolving models.  And 
the model evolves, then that means the metadata has as well.  TUNES
TUNES hopes to address by automating the process of any resulting 
code changes created by such modifications, but this automation still
requires something or someone more creative 'behind the wheel' to
keep everything on track.

Jason Marshall