As always, today’s development world is all about applications – packages apps, SaaS, web apps, mobile apps, tablet apps… the list can go on and on. With the growth of mobile devices and the demand for mobile applications you see an explosion in new platforms, development frameworks and technical skill requirements. With the plethora of platform choices for mobile apps I find we are being lead dangerously close to the Dark Ages of Development. I speak, of course, about client-server.
The bane of developers and IT shops alike in the late 80s and early 90s, client-server lives up to its name: applications exist not only on a core server but also on every device using the application. The dispersed nature of this model means that updates are nightmarish endeavours, requiring code pushes to not only the core server, but also to every single device using said application. Let that sink in for a minute – if you’re updating an enterprise-scale payroll application using the client-server model, you’re looking at hundreds, if not thousands, of individual updates. Frightening stuff.
Now, look at the native mobile application environment that we’ve built for ourselves today – mobile apps are everywhere. While client-server is never mentioned, and even with the improved distribution model that AppStores provide, it’s highly likely that we’ll run into some of the model’s challenges in the near future as the demand for mobility in the enterprise grows. What’s not being said in the hype surrounding mobility is that we don’t necessarily need the cost and complexity of delivering native mobile apps. What we need is one set of application functionality that can support EVERY platform; essentially, a universal application.
So what is a universal application? Here are three primary characteristics.
- It is web based. By nature, this makes a universal application cross-platform, easily deployed and easily updated, thus less expensive to build and maintain.
- It is built from core components that provide different skins to support different web devices. In practice, the same business functionality is exposed for a web browser, a mobile device and a tablet, taking advantage of each device’s user interface and features like mouse or touch screen support.
- A true universal application is built with technology that is built for change, allowing the business to switch direction quickly without technology slowing down innovation.
With the proliferation of thin (web based) clients, high-speed broadband and efficient-yet-powerful browsers and web languages (like HTML5), the universal application is ready to move out of pipe-dream-land and into cold, hard reality. But developing a universal application requires a different approach than most standard development practices, not only from a tools perspective but also the general mind set of developers and end users.
So what do developers need to know before tackling a universal application?
Build to Change
Universal applications need to be built as well as changed in an iterative manner, so by embracing a build to change mentality, both the business and IT teams benefit. Essentially build to change means the application development team delivers working code in short delivery cycles constantly tuning feedback, refactoring common code and reacting the end user feedback. When coupled with good agile management practices the end result is a very lean, fit to purpose, business application that can easily adapt to various device form factors giving the IT team application flexibility and portability needed to meet today’s demanding business needs.
Architect for the Universal Application
Experience shows that to deliver a universal application you need to think big but start small. This means focusing on delivering the needed business functionality for one form factor but applying good, pragmatic, SOA principles, making it easier to address different devices down the line by reusing business components. The other key is to embrace thin client architectures so change and deployment is simplified. While this concept is not new, experience shows that when coupled with a build to change mentality it becomes very powerful as you start to address different device form factors for the same business functions previously served.
Use the Right Development Tools
The build to change mentality should be supported by development tools, which assist with change and reinforce good architectural. As far as specifics, look for tools that focus on thin client architecture and automate as much of the application development life cycle as possible – not only the build part, but also integration, monitoring, and, of course, change. These new class of development platforms tend to be model driven hiding the complexities of different target devices and making development fast and change equally fast. Beyond this, it’s vital to have support for delivering on all of the various device form factors (browser, smartphones, tablets, etc.) with the appropriate user interface capabilities to deliver highly usable applications.
Lose the Weight, Keep it Thin
Embracing thin client architecture is really the only efficient way to successfully deliver on the promise of the universal application because it supports a myriad of devices while taking advantage of business logic housed on a common server. This simplifies and streamlines application updates and code revisions, providing speed to change and deployment across varying platforms.
The universal application is no longer a pipe dream – it’s a legitimate development goal that will become mainstream as the demand for applications across heterogeneous platforms continues to grow. Developers need to start applying the concepts of the universal application now, because building applications is only going to become more complex in the future.
And really, wouldn’t it just be cool to access the same application from your iPhone, iPad and laptop… at exactly the same time?