Are you using MDA / MDD / MDSD, any model based approach? Will it be the future?

Programming languages ​​have had several (r) evolutionary steps in their history. Some people argue that model-based approaches will be The Next Big Thing. There are tools such as openArchitectureWare, AndroMDA, Sculptor / Fornax Platform, etc., which promise incredible performance. However, I made the experience that from the very beginning it was quite easy to start, but also to get stuck at some point when you are trying something unexpected or it is quite difficult to find enough information that will tell you how to start your A project may have many things to consider.

I think that an important understanding that you can get something from a model is to understand that a model is not necessarily a collection of good pictures or a tree model or UML, but it can also be a textual description (for example, a state machine, a business rules, etc.).

What do you think and what does your experience say? Is there a future for model-based development (or what would you name)?

Update: There seems to be little interest in this topic. Please let me know if you have (good or bad) experience with model-based approaches, or why you think this is not interesting at all.

+7
paradigms model-driven
source share
9 answers

I think it will take time until the tools become more sophisticated, more people will gain experience with MDD. At the moment, if you want to get something from MDD, you need to invest quite a lot, so its use remains limited.

Looking at openArchitectureWare, for example: Although it is fairly reliable and basic documentation exists, there is no internal documentation, and there are still scalability issues that are undocumented - perhaps this will improve when Xtext and Xpand are overwritten.

But despise these limitations, that generation itself is pretty simple with oAW, you can orient your models like charm in Xtend and Xpand, and by combining several workflows into larger workflows, you can also do very complex things. If necessary, you can resort to Java, so you have very great flexibility in what you can do with your models. Writing your own DSL using Xtext in oAW is also fast, but you get a free metamodel, parser and a very good editor. You can also get your models mainly from different countries, for example. a component that can transform the database into a metamodel, and the corresponding models can be written without much effort.

So, I would say MDD is still growing as the tools and experience with it grow. It can already be used successfully if you have the necessary experience and you can click it inside your company. In the end, I think this is very good, because a lot of glue code (aka copy paste) can and should be created. Doing it with MDD is a very good and structured way to do this, which makes reuse easier in my opinion.

+3
source share

Disclaimer: I am a business application developer. The following opinion is certainly determined by my experience in corporate IT trenches. I know that there are other areas of software development. In particular, in the development of industrial and / or embedded systems, the world may look different.

I think MDSD is still too attached to code generation.

Code generation is only useful when your code contains a lot of noise and / or is very repetitive. In other words, when your code cannot mainly focus on substantial complexity, but it is contaminated with random complexity.

In my opinion, the trend in current platforms and platforms is precisely to eliminate random complexity and allow the application code to focus on significant complexity.

Thus, these new platforms / frameworks take up a lot of winds from the sails of the MDSD movement.

DSL (textual) is another trend that allows you to fully focus on significant complexity. While DSLs can be used as a source for code generation, they are not primarily associated with code generation. DSLs (especially internal DSLs) basically allow it to be opened for interpretation / execution at runtime. [runtime code generation is somewhere in the middle].

Therefore, even if DSLs are often referred to along with MDSD, I think they are indeed an alternative to MDSD. And given the current hype, they are also taking momentum from the MDSD movement.

If you have achieved the goal of ultimately removing random complexity from your code (I know this is fictitious), then you have come to a textual model of your business problem. It is impossible to simplify!

Good boxes and diagrams do not offer another simplification or increase in the level of abstraction! They may be good for visualization, but even this is doubtful. Image is not always the best view to understand complexity!

In addition, the current state of the tools used in MDSD adds another level of random complexity (I think: synchronization, difference / merge, refactoring ...), which basically negates the ultimate goal of simplification!

Take a look at the following ActiveRecord model to illustrate my theory:

class Firm < ActiveRecord::Base has_many :clients has_one :account belongs_to :conglomorate end 

I do not think this can be simplified. Also, any graphical representation with boxes and lines will not be a simplification and will not offer more convenience (think about layout, refactoring, searching, great ...).

+6
source share

Model Driven has been around for a very long time.

The most successful of the early attempts was James Martins' integrated engineering complex, which is still on the market and sold by CA under the serious Coolgen brand.

So why didn't he take over the world if it was so good?

It’s good that these tools are good at simplifying simple things, but they don’t make things easier and in many cases complicate the difficulty!

You can spend hours trying to convince the 4GL graphical modeling language to “do the right thing” when you know that coding the right thing in Java / C / SQL or something would be trivial.

+5
source share

I think that perhaps there is no final answer - hence the lack of "interest" in this matter.

But I personally had mixed experience with MDA. The only time it was a good experience were great tools - I used TogetherSoft (I think they somehow ended up on borland) - they were one of the first to introduce editing that was not “code generation”, but actually edited the code / (so you can edit the code or model, that was the only one). They also had refactoring (this was the first time I remember that it was located in small environments).

Since then, I have not seen MDA becoming more and more popular, at least in the mainstream, so from the point of view of popularity, this does not seem to be the future (so these are the answers to it).

Of course, popularity is not everything, and everything tends to return, but so far I believe that many MDA + tools are seen as master-based code generation tools (no matter what it is), so I think that it will be for some time or perhaps never that he will really take off.

+3
source share

One of the problems with MDD is that since it works at a higher level of abstraction, it requires developers who can also rise at the level of abstraction. This greatly reduces the ability of developers who can understand and use such methodologies.

+2
source share

Please let me know if you have (good or bad) experience with model-based approaches, or why you think this is not interesting at all.

I think the participants here are participating in the "No Silver Bullet" camp (I definitely). If the MDA worked (equal to "huge savings"), we would know that, that's for sure. The question is, how far can the meta go while keeping your system manageable? This was a turning point in UML 2.0 when they introduced a more formal meta-meta-model. So far, I have not seen the real use of the power of modeling UML 2.0 (but my world is quite limited). In addition, you have only two options with a model-based approach: generate code or have a runtime environment using your model. The final code generator is called “human” without restrictions, while the finite time intervals when they are in 4GL (what is the current number at the moment?). Maybe this will explain the lack of enthusiasm.

+1
source share

We, at itemis (www.itemis.com), use software-oriented software development. So far we have had a really good experience. Shure is not a silver bullet, but it helps to improve the quality of software, therefore, more benefit for our customers.

+1
source share

Model Driven Development will be the future if and only if the models that it uses can be as flexible as writing the code that it needs to generate. I think the reason this is not so good right now is because you find it difficult to do the same “round-trip” that text-based programming languages ​​have worked for decades.

With text-based programming languages, changing a model is as simple as changing a few lines of code. With a graphical programming language (such as an MDL diagram like UML) you should find a way to translate this model all the way back to its text-based equivalent (which was already expressively effective in the first place) and it can be very, very messy.

IMHO, the only way that MDD can ever be useful if it is built from the ground up to be as expressive and flexible as its textual counterpart. Trying to use existing top-down graphic design languages ​​(such as UML) for tools that are essentially built using bottom-up using multilevel abstractions (like programming languages) creates a huge impedance mismatch. I can’t put my finger on it, but there is still something in MDD that would make it useful, as people claim it ...

+1
source share

This is a very late answer, but I'm currently looking for MDD tools to replace Rose RT, which unfortunately is being superseded by Rhapsody. We are in real-time space, embedded and distributed with C ++, and we get LOT from MDD. We are trying to move to a better tool and use this tool more widely in our very large company. This is a tough battle due to some of the wonderful reasons mentioned here.

I think that MDD is just one level above the compiler, just like the compiler is above the assembly. I want a tool that allows me, as an architect, to develop an application infrastructure and widely edit code generations (scripts) to use this structure and any middleware that we use to send messages. I want developers to compile complete UML classes and state diagrams that include all the code needed to build the application and / or library.

It is true that you can do anything with code, but I would roughly generalize the benefits of MDD like this:

  • Several people make the application environment, middleware adapters, and stick to the MDD tool. They are building a "house."
  • Other people create complete classes, diagrams, and state machine transition code. This allows them to focus on the application instead of "home."
  • It is easy to see when peopel has a simple construction, because a diagram is a code. We do not have all the expert developers, and it is good to attract younger people in this way.
  • Basically this is an unpleasant state machine code that can happen in something like a mobile robotic project. I want people to make state diagrams that I can understand, criticize and work on.
  • You can also have good refactoring, such as a drag operation and attributes of inheritance chains or other classes, etc. I’m better than digging in files.

Even when I print this, I understand that you can do everything in code. I like the thin jsut tool on top of the code to ensure consistency, document design and simplify refactoring a bit.

The main problem I am facing, I do not have a good answer - there is no standard set of functionality and file format for such models. People worry that the seller leaves and then gets stuck. (We usually did this with Rose RT.) You do not have this with the source code. However, you will have the latest version of the tool and the course code that you created last :). I bet the advantage outweighs the risk.

I have yet to find such an instrument, but I am trying to get several sellers to listen to me and maybe accept the money to make this happen.

0
source share

All Articles