
This entry is one of many entries that I’m writing for a journal assignment in my Systems Integration course through Carnegie Mellon. The idea is to answer the question “Why is this particular concept important?” I decided to bring some Web 2.0 to this assignment and leverage my blog. Besides … journaling is for filesystems.
So far in our lectures there has been on fundamental assumption that the class makes when integrating a set of systems; that assumption is the systems integrator always has access to the sub-components, or in most cases the source code, of the systems he/she is integrating. It is quite puzzling to me because there could be situations where a person integrating a set of applications does not have access to the inner workings of each application; essentially he/she sees each system or application as black boxes — a systems that is just viewed solely on its inputs and outputs and not its inner workings.
When thinking about black box integration, it always seems to fallback upon the importance of middleware or some kind of intermediary.
What do you do when you have a set of black box systems you need to integrate? Though not explicitly described discussed, some of the techniques that were discussed in previously lectures still hold. One of the techniques we discussed before was presentation integration, the idea being you take the output of all the systems you are interested in together and format it into a single presentation of the information. In fact, in one of the few instances where my experiences is not academic, I encountered this type of integration when I wanted to integrate both my Twitter timeline and my Facebook news feed. All I had access to at the time was the public API of both sites. I certainly couldn’t of just emailed both Twitter and Facebook asking to refactor both their sites so that they would place nice with each other. What I ended up doing was writing a python script, an intermediary in this case that access the public APIs of both site, grabbed the information, and presented it in a single timeline.
The other type of technique we discussed included the use of middleware. The idea here is that there is whole ‘nother application layer that is brokering and facilitating communication between applications. In the context of black box integration, you only have access to the outputs of a system, and in many cases one systems spits out Martian while the other spits out French. Again I had a situation where I had to deal with this type of black box integration. I had to connect a system that outputted files in CSV to another system who’s ecosystem ranentirely on XML. Thankfully, we had some middleware that could take the CSV formatted output and SOAPatize it and use it as input into the XML system.
The point I am trying to make here with this post is that you shouldn’t assume that you will have access to the “guts” or inner workings of the systems you are are trying to integrate. However, it is also good to know that it is still feasible to integrate a set of black box systems.
Note to Dr. Butler: Feel free to leave my feedback and grade via the commenting system below. Good or bad, I don’t mind.

Its impressive when you are able to integrate simple systems together. For example, in my Twobile application, I aggregate Twitter feeds of all sorts, but have also been given the ability to translate tweets using Google Translate. I don’t know how they work other than I call their webservices with certain parameters and receive specific data back, but essentially my program blends the two together to provide some sort of functionality.
Open APIs FTW!
Sean Payne
October 13th, 2008
Shawn A. Butler, Ph.D.
October 15th, 2008