5

I was reading Towards Architecture-based Self-Healing Systems, and came upon the term first-class connectors. What are they?

Searching some more finds this paper Systematic Construction of Software Architecture Supported by Enhanced First-Class Connectors, which looks like it might have an answer, and I might read it in detail later, but regardless, it would be useful to have the question up here with an answer shorter than that paper. :)

An example of why having a connector being first class might also be relevant.

user50849
  • 296
  • 1
  • 7
  • http://en.wikipedia.org/wiki/First-class_object – Robert Harvey Jul 31 '13 at 15:45
  • @RobertHarvey That's essentially a complete answer in there. :) To make some kind of distinction between "any first class citizen" and connectors, I added a request for an example of when it's useful to the question. – user50849 Jul 31 '13 at 16:01
  • First-class in this context means the same thing as first-class anywhere else. I would imagine that the answer to why connectors in this paper are specifically first-class becomes evident after reading the entire paper; they have capabilities that help achieve the objectives. I don't have time to read the entire paper right now. ;) But, rest assured, there's no hidden meaning here. – Robert Harvey Jul 31 '13 at 16:02
  • Sorry, not quite sure I understand that comment. :) – user50849 Jul 31 '13 at 16:05
  • In other words, after reading the paper, it should be apparent why the connectors are first-class. – Robert Harvey Jul 31 '13 at 17:14
  • @karl: You really want me to read that paper, don't you? :) – Robert Harvey Aug 13 '13 at 17:14
  • @The phrase "first-class" appears only once in the whole thing. – Tulains Córdova Aug 13 '13 at 18:13
  • @user61852: Which is why I don't think there's any hidden meaning. Everyone in the programming world more or less knows what "first-class" anything means. – Robert Harvey Aug 13 '13 at 19:39

1 Answers1

6

I feel I must be missing something in the question, since a pretty good answer looks like it appears in the first paper linked in the question (Towards Architecture-based Self-Healing Systems). Still, I'll try to answer here...

Short version: a "connector" is a communications channel between "components", where "components" are independently-deployable parts of an application. A "first-class connector" is a connector that can be easily manipulated by a tool, such as an architecture manipulation engine. An application where "first-class connectors" might be useful is, to choose an example perhaps not quite at random, let's say, an Architecture-based Self-Healing System.

I'll get into the details below. First, you asked:

What is a first-class connector?

I think this is best answered in two parts:

  1. What is a connector?
  2. What does it mean for the connector to be "first-class"?

What is a connector?

A "connector", in this case, is a communications channel between system "components", where a "component" is an independently deploy-able part of the system that communicates with other components via connectors. To put that another way, if you consider that you can break down an application into independently deploy-able entities, which can communicate via some mechanisms, then the independently deploy-able entities can be called "components", while the communications mechanisms would be "connectors".

This is a bit outside of my comfort zone (I work in embedded systems), so I have a hard time going into detail in presenting examples, but consider EJB. Every "bean" is independently deployable, and can be considered a "component". If two beans communicate via CORBA, then CORBA would be considered a connector.

What does it mean for the connector to be "first-class"?

First of all, something can be considered first-class only in the context of some (broadly-defined) tool. In other words, the entities that are considered first-class are a function of the tool that works with those entities. When these authors suggest defining first-class connectors, they are actually advocating the creation or use of tools specifically designed to enable manipulating connectors. (If it unnatural to manipulate connectors with the tool, then connectors would not be "first-class" entities for that tool.)

I think this will become more clear when we address the next part of your question:

Why would first-class connectors be useful?

For example, you may want to insert a tap between two components connected by a uni-directional channel. A first-class connector could facilitate this by allowing you to identify the end-points of the existing connector, create one new connector from the old connector's source port to the tap's input port, another new connector from the tap's output port to the old connector's destination port, and destroy the old connector. A tool designed to support operations like this could be said to have first-class connectors.

An Architecture-based Self-Healing System might require that connectors be first class in order to perform actions like:

  • Analyze the data flowing through certain connectors, to ensure that some level of service is being met;
  • Replace connections to failing components with their redundant back-ups;
  • Test the load that a component can handle, by adjusting the rate of comms through the connector;
  • Identify communications bottlenecks;
  • Et cetera.

I haven't read through either paper, entirely, and this is a bit outside of my wheelhouse, so take this with some caution. Still, I hope it's helpful.

Aidan Cully
  • 3,516