|
|
DESIGNING YOUR APPLICATION INTERFACE FOR INTEGRATION |
Author: John Burrows
Director
InfoToday Consulting
Published – 18/08/2004
This paper discusses the direction of software development for the future and how we can embrace it.
I have a delivery company. I have a great software application which looks after my delivery routing and stock management. I have another great application which looks after my debtors system and invoicing. And I have another great application that looks after my quoting. All are best of breed applications in their fields. When the company was small, running these three applications side by side was not an issue, but now that it’s big, this is becoming un-manageable. The issues are;
Common data between the applications such as customer name, address and phone numbers are becoming out of sync as they are maintained manually.
My Customer Service staff need to switch between all these applications when customers call in order to get a total view of all the customers information and be able to answer all the customers questions (invoicing and delivery status etc). Doing so often leaves the customer waiting on the other end of the phone and talking about the weather just isn’t cracking it anymore.
1. Buy a single application which looks after all my business areas!
Single data store for reporting
Single Interface for users
Very hard, if not impossible to find one which covers all your needs. If you did, you would no longer have best of breed applications in the different fields and hence would have to accept loss in functionality and have to change your business to suit the software.
Unlikely that this single application would keep up with advances in technology and work practices in all three areas of my business
The client licence for such a solution is very expensive and although my delivery guys don’t need access to the invoicing information they are paying for it in the client license and similarly with regard to my sales staff not needing delivery routing information.
2. Get a single solution developed
It’s customised to my needs
Single data store
Single Interface
Usually expensive and over budget
No longer have best of breed applications in the different fields and hence would have to accept loss in functionality
Unlikely that this single application would keep up with advances in technology and work practices in all three areas of my business
Expensive maintenance
Hooked into the platform it’s developed in
Held to ransom by the developers once it’s in
I have developed a best of breed routing and delivery system for delivery companies.
My customers keep approaching me asking if I could develop and integrate an invoicing and debtors system and a quoting system. However this would cost me large amounts of money to develop and I have no experience in developing applications in these fields.
If I don’t do this though I fear that another software company which has a good invoicing system will integrate a routing and delivery system into their application and then my customers would all move over in a flood.
My customers may even approach another developer to build them an all in one application and use my application as a template.
1 Develop an invoicing module and a quoting module for my application
I now have an all in one application
I have one data store
I need to spend a lot more money on development
I need to spend a lot more time investigating what people need in a debtors and quoting system and what competing products have
I may not do a good job and the customers will still be unhappy which could drive me out of business as I would need to invest large amounts money in development.
By the time I finish, the technology I have used may start being out of date and I now have a huge product to maintain
I will need to employ more full time staff for the on-going maintenance
This spread in focus may result in my routing and delivery module no longer ranking as best of breed
First of all let’s get the gods honest truth!
The ideal solution is an all in one application which;
Is best of breed in all it’s modules
Will remain best of breed in all it’s modules
Provides expert support on all it’s modules by support staff that understand all it’s modules
Allows me to pay for just the modules I need on each client
Doesn’t cost an arm and a leg,
Will be developed by a company which will never go out of business
Doesn’t involve me paying HUGE amounts of money for customisation
If anyone knows of an application that does all that please let me know!
Nature itself tells us that great centralised systems are doomed. I know this may sound a stretch and a bit airy fairy but the same mechanisms of failure lie at the heart of all Empires. Eventually they go past the critical mass where by they cannot manage themselves efficiently and cannot maintain quick and accurate communication throughout itself and it falls over. It becomes a sluggish beast, lazy with confidence and burgeoning with internal costs due to replicated internal resources from the building of internal mini empires and pure heedlessness.
Companies try using applications such as SAP to obtain the perfect solution. It’s not impossible and I’m not saying SAP is a bad product. It’s just that I consider them very expensive and out of the reach of small to medium companies. And it’s unlikely that modules they develop will ever be best of breed in their field and if they are they won’t stay that way for long. They will just get accepted because they have the big name which makes big companies feel safe.
The perfect storm
How can a storm be perfect? It’s perfect if it is made of all the best building blocks that come together to make an overall success of a storm. Well without scaring people with the whole storm thing, that’s how I see the perfect software solution. The ideal solution is one whereby you can easily integrate applications within themselves. Going back to my original company scenario, one where I can integrate a quote form from my quoting application seamlessly into my debtors and invoicing system, where the invoice status of a customer can be viewed as if it were part of my delivery system. Thereby, the developers of each application can get on with developing their best of breed solutions in the fields they know best and the customer can just plug the bits that they want from each into the other.
This sounds messy
In some part this is why I chose the storm analogy. It all sounds a bit out of control.
In the past this sort of solution has made IT managers and company managers start to shake and with good reason. The idea of data flowing around and integrating applications from different vendors has never been a comfortable OR successful one. Trying to get the vendors of each application to work together and stop blaming the other for issues that arise and so on and networks not being fast enough or wide enough. But like the majority of great ideas in technology, they come ahead of the infrastructure which make them feasible. Ideas always come up and then die away because in practice they were just too hard at the time. Well it’s time to re-visit this solution because now the infrastructure is here! With the advent of the WEB, Object Orientated Programming, Business objects, COM, API’s, Web Services and fast, always online network communication, this solution raring to go. The problem is, the people who make the decisions about whether to adopt this kind of approach may be a little out of date when it comes to where software development is at today, or, have been stung in the past when it wasn’t quite viable. What’s more, it’s only been in the last few years that developers themselves have been designing their applications for this approach. Nevertheless it is what we should be aiming for and I believe where we are headed.
We need to accept that we will not have an all in one solution!
Our final goal will be a collection of applications which are best of breed. A solution where I can unplug one of my applications should I decide that it’s no longer best of breed in its area and plug in a new one.
One where each of these applications is designed with a common, open interface, one which gives other applications access to BOTH its data layer AND it presentation layer (visual forms) such that they can be easily integrated into each other.
One where the business rules of each application are built into this interface so that the consuming application need not worry about them.
What does this mean to the developers? Smart developers are already well on their way to achieving this. The following are the ways this can and is being achieved;
1. Use Object Orientated Programming (OOP)
This has been around for many years now but some developers are still not using it. Most common languages such as C in all its varieties, Java, VB and FoxPro all support OOP so use a language that does. I won’t go into what this is all about but the advantages in this method of programming are simple.
It forces a well structured approach to program design. This has many benefits but two that are beneficial to both the customer and developer are:
Code is easy to pickup if developers are replaced on a project
Code is easy to change and maintain
It greatly reduces the amount of code required in an application
It is easily kept updated with the latest advances in technology
And I could go on and on…
2. Use a Framework
This is something developers tend to shy away from as they feel it’s too inhibiting. Well that’s true if you use an inhibiting framework. Choose one that allows you to separate the data side of the framework and the presentation side of the framework. This way you can even mix frameworks. The benefits of a framework are also simple and huge. A lot of an applications code deals with things which are common to all applications such as form layout and functionality eg resizing of controls on forms menu design etc. The annoying thing is, that without a framework you need to look after all this yourself and it can be the significant amount of your development time and costs. Frameworks let you get on with the functional side of your application and let the framework look after the rest. In fact Microsoft has seen the benefit and future of frameworks which is why they made .NET, a framework.
3. Use Tiered design
Again this is a huge topic but I’ll summarise. It means separating the data side of your application from the presentation side. Approach it such that other applications can access your data in the same way that your presentation layer does. This makes your data layer open for other applications to access. ALSO, don’t forget your presentation layer when making things open. Often in an application there is a form which deals with a complex scenario which is specific to the function of the software. For example, a routing application which allows the redesign of a route. Obviously this is not something that another developer is going to want to replicate in order to integrate your application into theirs. However if you design your forms such that each one is self contained and can operate separately, for example as a visual COM object. Then other applications can just plug your form into their application. Powerful stuff! What’s more this makes your application design modular and easily transported to web services.
4. Use Business Objects
This really belongs to the tiered design section. Essentially, put your business rules where they belong and not every where else. Associate your business rules with your data objects and integrate them so that they are one.
5. Think about implementing synchronisation
This is tricky as we are fast approaching an always on line situation. Allowing for synchronisation of data to local data stores on offline PC’s can be a very costly business but if you can do it then great. If not then hopefully soon you won’t have to worry about it but as I said, this is a tricky one. Also keep mind that there are lots of tools that you can integrate with your solution which will look after this for you.
6. Use COM
A lot of people will say COM is dead and indeed one day it may be but right now it certainly isn’t. COM is around and is very useful. Hence design your application so that it’s open to COM for BOTH your data tier and your presentation layer.
7. Provide an API
Provide an API interface (essentially COM interface) to your application with good documentation. This allows other developers of applications to plug yours into theirs and vice versa. Allowing this means the marketing power of your software greatly increases as you can bindle it with others
8. WEB Services
Essentially if you do all the above it is a simple matter of transporting you application across to WEB services and hence provide them to other applications.
1. Choose software that complies to as much of the above as possible
2. Setup a good infrastructure
Most companies have done this but the following is essential;
Most applications of the future and now are going to need good network access between client and server.
Don’t skimp on hardware. Too often you see companies trying to save pennies by cutting back on the quality of their servers. Don’t! Hardware costs, when compared to time saved by users are cheap! Get the servers with lots of hard drive space, RAM and quick hard drive access.
3. Clamp down on user PC customisation!
In the implementation of this papers “Ideal solution” the last thing you want is users installing their own software on PC’s along with all the crap that gets put on PC’s with it such as Spyware that can interfere with the collection of software you are integrating.
4. Clamp down on developer Server customisation!
Always lock down your production servers and implement a good process of staging server practices
5. Version control
Make sure that all production servers have the same version of each application it runs. If you’re integrating applications they will come tested for certain versions of the application they are integrating with. Don’t go against this unless you do thorough testing yourself. It may void warranty anyway so think before doing this.
6. Last but not least, be open to the idea
I think this approach it will save you lots of bucks and ensure the best of breed environment you’re looking for.
“You’ve worked hard for your information. Now make it work hard for you!”