[Edu-sig] Design patterns

Scott David Daniels Scott.Daniels at Acm.Org
Tue Aug 23 19:13:27 CEST 2005

Arthur wrote:
> If I am understanding "properties" mostly correctly, and in fact their
> reason for being is to allow for a fundamental midstream redesign of a
> program without alteration of that program's API, I am thinking something to
> the effect that it is only possible to do the impossible in half-measures,
> and half-measures are only half-measures and who wants to work in an
> environment of half-measures.  
> I don't think mathematical notation, for example, includes the concept of
> the half-measure.

OK, how about this explanation.  If I am providing software support to a
group of scientists running experiments, I can give them an API and the
fastest-to-write code that passes tests.  Once I've done that, they can
get to work using the software while I go about the work of making the
software more reasonably designed and responding to efficiency problems
that they actually encounter.  We use the API as a "treaty point" --
they stick to using it, and I stick to providing it.  This structure
can also be used to provide the "for free work-alike" and the "pricey
efficient" versions.

Properties allows me to determine later (perhaps after watching how
they actually use the API) whether I should precalculate the triangle
angles, recalculate them each time, or find an even fancier version
where I compute them each the first time on demand and re-use those
results, invalidating the angles whenever a side is changed.  If I
have to make those design decisions up front, I have to assume a
pattern of use.  If I wait until I have actual users, I can get
real statistics on how the use the API.  We decouple our work this way.

--Scott David Daniels
Scott.Daniels at Acm.Org

More information about the Edu-sig mailing list