[FRIAM] Fwd: ABM
Robert Howard
rob at symmetricobjects.com
Mon Jun 4 15:12:59 EDT 2007
Maybe we're thinking differently on the definition of bi-directionality. I'm
using the term as similar to circular logic. One of the fundamental
principles of programming discipline is to remove cycles in the dependencies
between objects. It's called the Acyclic
<http://ifacethoughts.net/2006/03/24/design-principles/> Dependency
Principle (ADP). Compilers work more efficiently. Components can be
unit-tested in isolation.
When modeling a dynamic system, finite state
<http://en.wikipedia.org/wiki/Finite_state_machine> transition diagrams are
used. It is important to understand (1) why cycles are a bad thing; and (2)
why they initially seem to make intuitive sense. First, cycles are bad
because they cause paradoxes. When a paradox occurs (i.e. a cycle), it's
almost always a result of using the wrong model, or not thinking hard enough
about a problem. Cycles prevent formal causal analysis; i.e. scientific
analysis. For example, "Which came first, the chicken or the egg?" This
sounds like a paradox because we often use the wrong model; i.e. "chickens
cause eggs, and eggs cause chickens." But the correct model is: "All
chickens come from eggs. But not all eggs come from chickens." And this
resolves the paradox. The egg came first!
So when you see something like Figure 1 appear in a design, you can get rid
of the long-term adverse affects in the system by restructuring it to Figure
2.
Black arrows represent direct composition or "has a" relationships, where
white arrows represent inheritance or "is a" relationships. In short, Figure
1 says A calls B directly and B calls A directly. Figure 2 says A calls the
interface IB, and B calls the interface of IA. And A implements IA and B
implements IB. There are no cycles in Figure B. Figure B works exactly like
Figure A, but Figure A will cause more bug, have more errors, cost more, and
take longer to evolve than Figure B-at least in software architecture.
Robert Howard
Phoenix, Arizona
-----Original Message-----
From: friam-bounces at redfish.com [mailto:friam-bounces at redfish.com] On Behalf
Of Marcus G. Daniels
Sent: Sunday, June 03, 2007 9:13 PM
To: The Friday Morning Applied Complexity Coffee Group
Subject: Re: [FRIAM] Fwd: ABM
Tom Johnson wrote:
> It seems to me that there is usually (always?) bi-directionality
> involved in a dynamic system
i.e. http://en.wikipedia.org/wiki/Stigmergy
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070604/c078e089/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 6245 bytes
Desc: not available
Url : http://redfish.com/pipermail/friam_redfish.com/attachments/20070604/c078e089/attachment.jpe
More information about the Friam
mailing list