The typical solution for deftly handling a large system design is to use modularity,
ie. the project must be amenable to being subdivided into reasonably-sized modules.
So the design is broken down into a hierarchy until the leaves of the tree are
considered to be the right size. The trade-off for the benefit of modularity is
the increased complexity of the interfaces between the levels of the hierarchy.
In ProtoCollum the Processing Entity (PE) objects, which do the message passing in
the protocol system, all exist as peers. In other words the PE objects all exist at
the same level. This gives a simple interface, each PE can send/receive messages from
any other PE. But without a PE hierarchy, how does the tool support working with large designs?
An important feature in ProtoCollum for working with large designs is the concept of Views.
All of the PE objects in a Binder (file) are part of the same system, and there is only one
PE object for each PE in the architecture. But, when a PE is displayed in an Edit sheet, one is
really seeing a view or display of the PE object. Think of it as a graphical
reflection of the one true PE object.
In other words, there may be 6 PE objects in the architecture, but only 2 may have a view
displayed on the current Edit sheet. Another Edit sheet could display any of the other
PE objects, including a PE shown on another sheet. Thus the View feature allows the user
to work with a subset of the design, providing the same benefit as modularity.
Another feature in ProtoCollum that supports development of large designs is
the ability to reuse parts of the architecture when the same behavior is required in
different parts of the design.
Through the use of Pin objects, it is possible to connect messages from multiple parts
of the system to the same piece of architecture. The actual origin or destination of a
message connected to a Pin is determined at runtime in the test scenario by looking at the context
(where the message came from or where it is being sent).
If all of the PE objects are organized as peers, then why exactly is there a window called
"PE Hierarchy" in the tool?!
Although all PE objects in the architecture are organized as peers, it is possible to create
a "cosmetic" PE hierarchy. This PE hierarchy is really a book-keeping device, it
is still possible to send messages to/from any PE. But the user can use the PE hierarchy
information as a reminder not to send messages except to those PE objects at the same level or
adjacent in the hierarchy.
These ProtoCollum mechanisms are currently being used to model the 802.11 Wireless LAN protocol.
The written specification for this protocol is a massive 528 pages.
|