Also, what kind of repository and search engine are you visualizing?
Are you thinking of a relational database, or something more
text-oriented? There was an IBM product back in the 70s called STAIRS,
which would have been perfect :-) It supported a set of structured
documents, plus a powerful search facility - I believe it was developed
to bring some order to the mass of documents that were developed during
the IBM antitrust suit...
In JavaFBP (C#FBP is very similar), components (both elementary and
subnet) have annotations that give descriptions, specify some
attributes, and give the port names and attributes. These can of course
be accessed from outside the components, and we have been using them to
do both: a) run-time checking in JavaFBP to make sure that packets being
sent or received contain data of permitted classes (a recent addition to
JavaFBP), and b) checking in the diagramming tool (DrawFBP) that
required ports are connected. I am attaching a sample component
attributes display from DrawFBP.
Now the annotations are pure Java, and therefore textual, e.g.
@ComponentDescription("Generates stream of packets under control of
a counter")
@OutPort(value = "OUT", description = "Generated stream", type =
String.class)
@InPort(value = "COUNT", description = "Count of packets to be
generated", type = String.class)
and so could be stored on a text-based repository, but how do you keep
them in step with the values in the code? Does Java have an imbed
function? Actually, how do you make sure that programmers keep them up
to date - even when they are in the code?
Lastly, DrawFBP is really language-agnostic, even though it is written
in Java, so is there a way it can access C# annotations in DLLs?
I'd appreciate getting people's thoughts on this.
PS Just a point about IIPs - in JavaFBP and C#FBP they are thought of as
passive, non-triggering, so a component whose only inputs are IIPs is
therefore treated as having no input connections, and therefor
self-starting. Usually the first thing it will do then is "receive" the
IIP(s). JavaFBP and C#FBP have been like that for years - and it seems
to work :-)
The bigger problem IMO is the component repository, which has got to be highly language- and FBP implementation-dependent, and maybe even IDE-dependent. E.g. In Java (at least Eclipse) we are working with directories of class files. For C# as far as I can see, it's dlls or pdbs. So I am not sure how to manage components in a language-independent way. However, if you are building everything on a C base, I guess everything could be dll-based, although it would be a shame if we had to give up on Java or C# annotations.
Re your IDE idea,we pretty much have that in DrawFBP - if you are working in Java - as you can click on a block, and can navigate through directories of components. Clicking on one of these components will bring up a description and port attributes, so you can try out a number of likely components, checking their descriptions. I just don't show stubs visually to represent ports - that is beyond my artistic capabilities :-) Not to mention the problem of how best to represent array ports. However I would like to stress that IMO this facility is most useful during later stages of design, when you are down to the elementary component level in your design, or are thinking about doing so.
DrawFBP also doesn't have a search facility - which I do feel is essential!
Sent from Samsung Galaxy Tab (tm) on Rogers