The Future of Software Development
|27 July 2010|
And what do you think evolution of the model-driven market is going to be? Will we witness a wider adoption of MDD by big companies?
I gave him this answer:
There will be a growing adoption of MDD but people won’t call it MDD. It’s more a movement that includes, what I see as the three main trends in the evolution of software development: cloud (avoiding infrastructure issues), MDD, and app stores (in a broad sense: not building an application from scratch but by combining pre-built components from other sources).
As I stated I see three important elements in the future of software development: Cloud, Model-Driven Development, and App Store's. Let's examine each element in more detail.
CloudThe word Cloud is used a lot nowadays. It is, however, a rather broad term. I recently wrote an article explaining the different layers of cloud computing and more details about Platform-as-a-Service (PaaS). The main essence of cloud computing is that it abstracts away from infrastructure and, in case of Software-as-a-Service, from all platform related elements. A well-known example of Software-as-a-Service is the Google Apps suite. E-mail, documents, spreadsheets, calendar, drawings, etc. in the cloud instead of installed on your local computer. You don't have to think about storage, backups, patches, etc. Just use the software from every device with an internet connection. Quite some big companies already have made the move from Microsoft Office to Google Apps.
Model Driven Development
The second important element in the future of software development is Model-Driven Development. There has always been a quest for higher-level and more productive languages. The advantages of Model-Driven Development (MDD) are unavoidable in my opinion. The question, however, is what kinds of MDD will remain in the future? Visual languages used by domain experts, like in the Mendix Platform? Smaller abstractions for developer productivity like Ruby-on-Rails? Self-made Domain-Specific Languages (DSLs) with use of Xtext or MetaEdit+?
The third important element I see is the App Store. The first thing you think about is of course the successful Apple App Store to download apps for your iPhone, iPod, or iPad. In the slipstream of Apple's success other App Stores have seen the light. These App Stores are not limited to the field of mobile computing. Google launched an App Store with add-ons for Google Apps, there's a Java Store (beta version) available to download and share Java applications, and Microsoft has planned to launch an App Store together with Windows 8. Recently, we at Mendix did launch the Mendix App Store, fully integrated with our Modeling environment to share and download template models, widgets, or full-fledged business components.
You start by creating a new application model in your modeling environment. The modeling environment is connected to an App Store and you search for a template for web shops. Once you found one, you download it into your modeling environment and you start adapting it for your specific needs. You create and change graphical user interface elements by adapting the models. You also specify your product details in the domain model. After the changes you deploy and run the model on your own computer to see and click-through the working application.
unfortunately your example relies on other devs being able to make decent apis which most devs are horrible at doing.
steven () - 28 07 10 - 03:58
If Rails is MDD, then MDD is doomed.
Giorgio () (URL) - 28 07 10 - 10:48
We should first figure out who are the future software developers.
SR - 28 07 10 - 17:58
> Unfortunately your example relies on other devs being able to make decent apis which most devs are horrible at doing.
Good point. Using third-party components is indeed the same old problem which SOA tried to solve too. If we look in practice we don’t see much service reuse in SOA landscapes.
However, looking at web applications like Twitter we see extensive use of APIs by third parties… Maybe we can learn something there…?
Johan den Haan () (URL) - 28 07 10 - 18:52
> If Rails is MDD, then MDD is doomed.
Rails is just an example of trying to define an application on a higher abstraction level (with some kind of DSL). I am not very familiar with Rails so I don’t know the quality of the Rails DSL (if I may call it that way). But, do remember Rails != MDD ;)
Rails can probably be seen as a way to do MDD, but MDD is a much broader concept and a lot of different approaches exist. The future will learn us which approach will be the most successful one.
Johan den Haan () (URL) - 28 07 10 - 18:58
> We should first figure out who are the future software developers.
That probably depends on the kind of work you need to do to build software in the future. In the scenario I sketched I think the future Software Developer will be less skilled in programming languages and more skilled in translating a business problem into a formal model.
Johan den Haan () (URL) - 28 07 10 - 19:00
Nice view on the future of software development!
SOA is another step forward for reusable functionality (OO -> CBD -> SOA). And the webservices platform made this all possible.
I agree that with SOA and SAAS its all about interface design, so hope we can make steps there.
And what about the semantic web movement?
Roger () (URL) - 29 07 10 - 14:25
Descriptive content! I got many information from your article, thanks for sharing the article.
data recovery () (URL) - 14 08 10 - 13:21
I largely agree, especially about MDD becoming more and more important. By automating much of the lower-level programming systems can be made less prone to human error thus more reliable and secure. Also, development time can be reduced greatly.
However there are still quite some challenges. IMO, MDD needs to become more generic to succeed. Current approaches seem pretty narrow. If you have to develop (or buy) a new model/language for each specific application, it costs more time and resources instead of less.
Also, with respect to efficiency, going from a high level description of the system to a lower level still has a lot of optimization oppertunities that human programmers can spot but code generators (especially templates) don’t. Model translation needs more intelligence.
Wladimir () - 20 09 10 - 15:19
Be nice. Keep it clean. Stay on topic. No spam.