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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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

 

<<image002.jpg>>

============================================================
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

Reply via email to