miércoles, 16 de marzo de 2011

Smart Devices era and Model Driven Development

Yesterday we released the Beta 2 of Genexus for Smart Devices, the focus of the previous beta was give away the posibility to create simple native applications, taking into account internally the main stones of the architecture.

In this post I'm not going to talk about the features in Beta 2, I want to talk about something that happens each time we create a new generator.

Look this,

After the beta 1, there were 40 ideas in our team to create samples using the beta, only 7 applied to be developed using the beta.

In Beta 2, 33 applied, we still have to work in terms of aesthetics but this will be the focus for the next iteration.

Why in Beta 1 even simple things couldn't be created? Why in Beta 2 we still have some missing features that seems to be esencial an easy to implement ?
Because our way to develop software is different, we focus on the model first and after we generate code.

In the Windows era, in the Web era and now in the Smart Devices era, the same thing happens, there is a clash between two models of development, Model Driven vs Manual Programming.

In this new era we are again using a Model Driven approach.

In the smart devices era in order to create a full application you need to create a data access layer, a service layer (usually REST), a integrated security layer, a service layer on the device (I mean data services, notifications, caching, etc) and finally a native user interface layer.

Even looking a just one of this layer creating the layer many times it's difficult.

I think that creating this kind of applications in one or many third generation languages give developers a lot of power and it's possible to create an application and probably you could handle 1-10 projects with the same team, but handle thousands of projects it's almost impossible.

There are many tools focused on simplify the task of writing code in different languages, so you can write code in JavaScript or C# instead of programming Objective-C or Java. These tools can be very useful in the short term, but at the end of the day you are at the same abstraction level than in a third generation language.

How all this code is connected with the reality, where is the knowledge? The knowledge is the code, this is a bad thing.

We as developers know that the complexity of building software is growing and growing and we still are discusing in terms of Java vs C# or Objective-C vs Java or whatever.

Grady Booch said:

"The Entire history of software engineering is one of Rising Levels of abstraction (abstraction is the primary way we as Humans deal with Complexity)"

We in Artech in each technology wave tried to raise the abstraction level, and this process take a while, in each wave sometimes it takes more time to see results, but our goals are clear:

We will have productivity applications as people want, but we are not thinking in 1-10 applications we are going to give away a tool and language to create thousands.

The first results are here with Beta 2, but stay tunned and wait more.

1 comentario:

  1. Gaston;
    You do have the right aproach and indeed we do think the same way.
    And remember that I'm here for you, 'cause your success is our success.

    Good job, man!