Srinivas Reddy’s Weblog

My Tech Rants

Inside Platforms

leave a comment »

At a very high level any platform offers a design time(DT) and a run time(RT).  The key components of a design time environment include  Integarted development environment (IDE),  Source code mangement tools (SCM), Life Cycle management tools,  Programming models (with controls, services, components, …) .  The key components of a run time environment include  client runtime (be it in a desktop, pda, smart phone,……)  and  server runtimes (be it webservers, mail servers, databases, application servers, document management systems,  directory servers, message brokers,….).  Its possible that clients and servers at times interact  in a peer2peer manner (in tech jargon refered to as machine to machine interactions) .

As creators of Software its good to understand things we are doing at a high level.  I like to  take the view of the software stack (from UI layer, Process layer, Service/Business layer, Data Access layer and with a lot of across stack system coding)  There exists a metamodel for each layer of the stack (for example be it ASP.NET controls or JDBC dataaccess layer).  Different platforms offer different levels of support (be it in the form of  tool support, library’s,  api openness,…) in the design & runtime layers.  The richness being a factor of width & depth of the metamodel’s manifesting themselves in the form of  rapid application development (RAD) tools allowing application developement with minimum amount of coding.  Developers on Microsoft platform (especially VB developers) get frustrated working with Java or opensource platforms due to lack of such RAD tools.  Under the hoods what this means is that in the design time no uniform UI controls exist,  no standard  & simple programming models exist, and in the runtime a performant, easily maintaineable, highly usable, secure, easily configurable……… features do not exist.  A good platform abstracts a lot of work and provides the developers with simple tools to do the rest of the work.  

To put in my favourite Model driven architecutre (MDA) perspective the platform needs meta models which abstract domain specfic entities and offer metadata driven auto code generation and management tools. 

I like the equation below for software development 

Software Development = datastructures +  design patters + algorithms

In the design time when we decide on the screens (with controls & behaviours), processes(workflow++), services/entites (business objects++) & data access models (datamodels) we are deciding on the datastructures we plan to use.  RAD tools apply different design patters on the datastructrures (be it a typical ModelViewController (MVC)  pattern or one of the many other standard patterns).  The runtimes generated/coded manifest the algorithms needed.   Even as the different platforms move towards managed runtimes (virtual machines!!) and RAD tool based design times, the process of automation of software construction is being accelerated.  Just as tools raise the abstaction levels its important for the developers to upgrade themselves from coding to design & architecture.  Its helpful to think in terms of  model repositories with its constituent entities and interactions and its lifecyle management.

A natural novice developer dilemma is which platforms to focus on? Is it .NET, Java(J2ME, J2SE,J2EE), Open Source (LAMP++), SAP NetWeaver, Orace Fusion middleware, Mainframes, …….

While different factors affect this choice (ranging from Job market prospects to passion for a language/technology………….),  its important to get a outside view on the inside of different platforms ( I am sure Dilbert will like that ;o).  The key industry trend as I see it is a move towards a service oriented architectures. A paradigm platform shift know in industry circles as Web 2.0 is happening.  Check link for details (http://www.oreillynet.com/lpt/a/6228) .  What this means is that in future software will be delivered as a service (just like email/ google search/……) and packaged software as such will not exist. While backend servers will be delivering services over the web, how different clients (desktops, mobile phones,…..) consume these services (offline/ online /occassionally connected mode) will drive the direction of this platform.  Even as software  becomes pervasive a lot of smart (client) devices will exist (developements in RFID and other wireless technologies drive this).  Even as different IT vendors are in the process of ‘mobilizing’ their platforms its important for developers to understand platforms for what they are and plan their careers accordingly.

Hopefully you will find this short overview inside platforms helpful.  Even as the vendors try to push their platforms, winning the developers hearts and minds are the key to the success!!.  As you would expect the stakes are very high!!!  Expect me to get into more details later. 

original

Advertisements

Written by srinivasreddy

October 10, 2005 at 5:16 pm

Posted in Technology

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: