The guys at backnetwork did a great job by providing a full social network for the London Hackday 2007 event. You are encouraged to participate by creating your own profile and linking to friends and acquaintances that you might have.
They also opened their application to outside users by providing a very simple API where you can perform several tasks. You need, of course, to be registered to do that.
So I registered myself and started using the API immediately. I created a small PHP script that gets all the people that are signed up and then finds the relationships between them. The script simply outputs data in the DOT language that is consumed by graphviz.
Some people might say that there’s no practical use for this network graph but I really enjoy exploring visually all the connections between people and see how the network grows over time.
Anyway, can’t wait for the next weekend. The fun is just beginning…
Software complexity is increasing as time goes by and is now becoming a nightmare for every developer. To begin with, let’s find out what complexity is:
A complex system is a system for which it is difficult, if not impossible to restrict its description to a limited number of parameters or characterising variables without losing its essential global functional properties.
So, it’s getting more and more difficult to restrict software’s description to a limited number of parameters without losing its global functional properties. What that means is that it’s getting harder to come up with a piece of software that does exactly what was requested, not more nor less.
Regarding this fact, José Luiz Fiadeiro came up with the notion of two kinds of software complexity:
- Physiological complexity
- Social complexity
Quoting José Luiz Fiadeiro :
Social complexity arises not from the size of applications but the number and intricacy of interactions. Its dynamic nature demands that we treat it differently, and to do that we must understand how it differs from physiological complexity.
What, then, is physiological complexity? According to the author it can be measured by the amount of decompositions a system must have so that every part (or module) becomes easy to implement by a single programmer.
On the other hand, social complexity is related to the amount of connections that exist between modules of an application or, on a SOA based environment, between software services within an organization.
- José Luiz Fiadeiro, “Designing for Software’s Social Complexity,” Computer , vol. 40, no. 1, pp. 34-39, January, 2007.
They call these black boxes infotrons. An application can then be built connecting two or more infotrons together. These connections can be represented graphically through the use of what they call blueprints:
This blueprint will implement the display of a “Hello World” message 1 second after startup. Infotrons can be local components or even remote Web Services.
This approach to software development and component reuse looks really promising. If you’d like to know more you can read the entire paper (pdf) written by Seung Chan Lim and Peter Lucas.