Let’s face it – We are spoilt as consumers!
That is true for almost everything we buy, use and own. We like what we want and will not settle for second best. We want things where we want it, and in ways that we want. And as consumers, we enjoy many benefits from a world where Competition is often fierce among many parties trying to compete for the same buck.
Now, in our careers many of us are providers of those Goods and Services and we suffer the consequence of the luxury we enjoy as consumers. Our products and services that we provide must be the best to attract any sort of market. And if you think convincing someone to change a habit is easy, try handing out free brochures in a busy high street on a Saturday Morning!
Moving on to Technology – For us to provide a technology Product or Service that is acceptable to our clientele, chances are almost certain that we offer the same service across multiple platforms. Cross Platform is a term that has grown in popularity over the last few years. Seems even if you do not provide a pure technology solution – you end up having at least a mobile app at some point (or one of your competitors has one!) Look at Auto manufacturers, Heating Thermostats etc.
The Technology Problem:
The point therefore is really that Technology providers must offer solutions across a multitude of different technology platforms – which often results in Source Code written in different Languages. Arguably there are some Cross-platform development environments, but they tend to focus on only a subset of the Cross-Platform spectrum, such as Mobile only.
When one looks at how these Software Offerings are developed, one often finds that a product or Service has some sort of an Object Model – a set of Classes which describes the Entities on which the solution is built. An ERP system for example may have Classes representing Products / Invoices / Customers / the GL etc.
Problem is this: How does one ensure consistency between these business objects across multiple platforms, given the code in which the same classes must be represented is different? Furthermore, there are very often Rules Governing what deems to be valid inputs into these object models.
It would therefore make sense that we as technology providers should start looking at abstracting key elements of our offerings (such as business objects) out of our individual code bases and have a master representation of these which can somehow emit to all the different development environments we make use of.
This is what CDL attempts to improve. The abstraction of the Object model and associated business rules lives in a Master XML document, which can be maintained by any text editor available. An example of such an object is listed here:
This example shows a Location class with Latitude and Longitude attributes. There are also rules around what makes the information in a Location instance valid.
These which will be adhered to in the object model classes, regardless of the Language it emits. Examples of the Code created by CDL can be seen here:
Example of the CDL Emitted to c#. This would therefore Cover Windows based UI Development, as well as .NET Backend infrastructures.
Java Example of the Same Location Class. This can be used ServerSide by many of the Java server based technology sets, as well as mobile development on Android.
And of course Typescript – So there we have the Web part of you Offering covered – with the same rules being applied. this means that there are no trips to the server before users are notified of issues.
Last, but not least – Swift is also covered: iOS and Unix based implementations covered.
Technology providers have to provide the same offerings across multiple platforms in order to stay competitive. This often results in the same logic being coded in different Languages and environment, which makes the issue of a common object model tricky to maintain.
CDL is an Open Source Cross Platform tool aimed at abstracting these business classes and associated rules out of the different code bases and allows for central maintenance and Administration of some really important parts of your Application.
The next post will deal with the way that CDL easily integrates into different development environments.
If you are interested in learning more, let us know and we will be in touch.