eunice

introhow it workscase studieslanguagesissuesblog

stacks

In Eunice, items are stacked and intentional dependencies point downwards.

Diagram of a stack

When its intended that items are independent they can be in the same level.

Diagram of a level

Multiple dependencies on the same item are modelled by combining the two previous two rules.

Diagram of independent dependencies

Eunice uses these rules to help you find circular dependencies, including indirect dependencies.

Diagram a circular dependency

dependencies

Representing dependencies with lines can be hard to follow, so instead Eunice counts dependencies into the following categories:

matches stack
green down arrow
does not match stack
red up arrow
is not independent
red horizontal arrow

Dependency counts appear for both sides of the dependency, the dependent item and the item depended on.

upper depends on lower
Diagram of a stack where the upper item depends upon the lower item
lower depends on upper
Diagram of a stack where the lower item depends upon the upper item

independent
Diagram of two independent items
first depends
on second
Diagram of a level where the first item depends on the second

Clicking on an arrow will list the dependencies counted in it.

Complex Systems

hierarchy of stacks

To model everything, in systems of any size, Eunice uses a hierarchy of nested stacks.

Stacks can be inferred from:

Eunice does this by nesting groups of items, each with its own stack, creating a hierarchy.

Diagrams of how dependencies cross the boundaries of different scopes and groups

Items that have uni-directional dependencies between each other, but are in groups that create a circular dependency, are automatically detected.

Diagram of how circular group dependencies are detected

Dependencies within an item are summarized and shown inside the item box, below the identifier text.

parent
depends on
item
Diagram of a parent dependent on one of its child items
item
depends on
parent
Diagram of a parent where one of its child items depends on the parent
first item
depends on
second item
(not stacked)
Diagram of a parent where one its child items depends on another child item in the same level

Clicking on an item will open it and show its child items and their dependency counts.

When an item's opened its:

Eunice showing breadcrumb links and contents of an opened item containing a stack of child items
Eunice showing parent outer dependencies
Eunice showing parent outer dependencies

Cohesion and Coupling

In Eunice, hierarchical structure and unidirectional dependencies come together to encourage less coupling across inter-group dependencies, replacing them with intra-group dependencies and more cohesion.

In the following example the 4 items and 3 dependencies stay the same, but re-structuring the groups reduces the number of dependencies across the groups from two to one.

Diagram of how coupling is lower and cohesion is higher when dependencies are in uni-directional hierarchies

advanced

For information on how Eunice uses YAML, is implemented and can be extended, see the advanced page.