This morning I was reading the latest edition of The Architecture Journal and was intrigued by the opening article “The Internet Service Bus”. In this article Don Ferguson, Dennis Pilarinos and John Shewchuk discuss different development processes, namely opportunistic and systematic development. The former represents applications that are organically grown within an organisation typically around line of business applications, for example a spreadsheet application to calculate end of month figures or a simple sharepoint site to facilitate document collaboration. Systematic development on the other hand is representative of applications/products that are designed, modelled, coded, tested – ie there is a life cycle approach to their development, hence being referred to a systematic.
If you look at the trend around web 2.0 versus more traditional application development there is a clear tend towards opportunistic development. As can be seen with large websites such as Facebook where applications and/or features are frequently unavailable, presumably due to an issue introduced through adhoc style development. If developments were thoroughly tested and a proper deployment plan followed their should be close to zero downtime for these services.
On the flip side of the coin the issue with systematic development is that it typically takes way too long to get from user requirements through the design and development process, to the point where the user gets to use the end product. The end product usually misses the mark, the end user gets frustrated and goes back to their spreadsheet and does a bit of opportunistic development to get the results they want. Eventually their input gets fed back to the development team and in a few lucky cases affects future releases.
Interestingly this is where the application model that [Intilecta] have built over the last year comes in. Unlike normal rich client applications that have an updater model that updates the entire application, the Intilecta product supports an synchronisation model that allows parts of the application to be dynamically added, removed and even updated while the application is running. How does this help the end user? Well it means that their requirements can be fed into a much simpler development process. Their requirements can be designed, built and implemented with almost zero impact on the rest of the application. This significantly reduces the time required to test the new functionality and it can be immediately rolled out to either individual users, groups of users or the entire organisation, all controlled from an administrative console.
In the title of this post I mention “Occasionally Connected” which, if you regularly read my blog, you will appreciate is one of my areas of interest. Web applications (or applications that require an always-on connection) are BAD. I’ll repeat that, they are BAD and you should NOT invest in these applications just because they claim to be Web 2.0, SaaS or some other new acronym. This is not to say that we should stop building web applications – they definitely have their place. Further we should definitely build as much of our application as services as possible. But the reality of a lot of people is that they don’t always have a connection available – they might be in a plane, in a network black spot, an office without a connection, or worse just in a location where there is no free wireless (like where I’m sitting at the moment in North Sydney). This means that we should be building rich applications that are capable of working when we are offline or occasionally connected.
With this thought in mind, the Intilecta product is built around the concept of synchronising not only functionality but also data to support that functionality. When functionality is added it is typically done by specifying the data and the visualisation of that data (and in the case of data entry the layout of the data capture screen). With appropriate data integration this functionality can then tap into any existing data within the organisation whether they be represented as a service, and enterprise data store or even unstructured data.
In summary the technology behind the Intilecta product suite is an Occasionally Connected Rapid Application Development Framework.