Wednesday, January 7, 2009

Declarative application development

I first heard of declarative programming was from the Workday few years back, which gave me the idea of business application can be developed without real programming.

In late 2007, I need to get my team to migrate our 10 years old full blown accounting and business management suite from PowerBuilder/Sybase to IBM technology that comply to SOA. With very limited resources, budget and short timeline, I needed to think outside the box, and the declarative programming came to my mind. I was thinking that if I can build an engine that takes in object definition files that are simple to define and instantiates from  few object classes and change their behavior according to the definition files in runtime, I can convert my 20+ business analysts and testers to become application developers. Out of sudden, my resources become double. What a brilliant thought!

I developed the first prototype in PowerBuilder and called it Definition-based Dynamic Engine (DDE), and chose XML as the definition file format. The DDE has 3 factories and their associated object classes, i.e. Business Object (BO) Factory, BO Manager Factory, Service Object (SO) Factory. It works as expected. It was not difficult to convince my boss and staff about using DDE to complete the migration job too.

With the SmartTeam, the full DDE was developed in EJB, SDO, JavaScript and AJAX that also complied to IBM SOA standard, and at the same time the PowerBuilder prototype was also being built for laptop users. The business analysts and testers were successfully converted to application developers using a new Application Development Life Cycle methodology. To help the team, we also developed a set of Do-It-Yourself (DIY) toolset such as DIY-GUI for screen and report painting and customization; DIY-Configuration for user to configure where and how each component appears and navigates in the application, and their display label in menu and sidebar; DDE Script Editor to orchestrate the components, set business rules, perform computation and so on. As all the business components were defined in XML, it can be used in both EJB and PowerBuilder environment at the same time.

We managed to "migrate" the client/server 4th GL accounting and business management suite to a web-based, on-demand, SOA compliant, EJB, declarative application running on IBM middleware in much shorter timeframe. There born the dynamic business application platform - Ubikwiti.

I then went to San Francisco for 5 months in mid 2008 looking for fund injection. There I fall in love with Apple store, iPhone, iTunes App Store, Mac OS X, Steve Jobs, Google and so on. I became a full convert from Microsoft world that with me for 17 years to Apple world. After I came back, I introduced an App Store like business component marketplace for Ubikwiti, and it is now called U-KwikShop.

So now, the Ubikwiti user can start with very simple application by choosing a closest template such as personal finance management or sole proprietor, and then add more business components from the U-KwikShop whenever the needs arrived. User can also customize the components added from the shop. I think this is the real on-demand business application, and Forrester Research called this as Dynamic Business Applications.

BTW, Jeff Nolan and some other readers like the idea too.

The Application Development Kits (ADK) is coming soon too.



5 comments:

  1. Great start...my dear...keep it UP!!!

    ReplyDelete
  2. I like the ideas on your first Blog - keep them coming.

    ReplyDelete
  3. Thanks for your support, Christian.

    ReplyDelete
  4. Anywhere I can see the DDE in action?
    I've sign-up with Ubikwiti but I am sure it is hidden behind the business functionality. My guess is that when the ADK is out, I can have a better feel of the DDE?

    ReplyDelete
  5. Thanks again, Interested. When you are using the Ubikwiti application, you are already seeing the DDE in action. Every components (such as Customer, Sales invoice, reports) you use in the application are all definition files in native XML format hosted in our server. Every time when you access the component, the DDE will pick up the definition files, inform the factories to instantiate the objects, paste it to HTML, Javascript, CSS and render by your web browser.

    The ADK is still in pre-alpha stage. Maybe you should register as potential Ubikwiti developer at http://www.ubikwiti.com/developers/developers.html?type=nav_dev.

    ReplyDelete