AlphaSimple: Easier repository browsing

27th August, 2010 - Posted by AlphaSimple Team - 1 Comment

Earlier this week we deployed a great new feature: project browsing mode. You can now open any of the shared projects, and view prototype and model side-by-side:

It is now much easier to learn how a model relates to the prototype. If you are logged in, and you like a project, you can clone it and start working on your own version right away. Try now!

Read More

AlphaSimple gets a REST API

23rd August, 2010 - Posted by AlphaSimple Team - No Comments

AlphaSimple just got a REST API. For any shared projects, you can get the project model (which includes access to source and XMI files) with a URI in the form “http://alphasimple.com/mdd/publisher/{userid}-{projectid}/”. For example, for:
http://alphasimple.com/mdd/publisher/rafael-26/

you get: (more…)

Read More

AlphaSimple: Doors wide open

14th August, 2010 - Posted by AlphaSimple Team - No Comments

During the beta period registered users have access to the full service for free. The advantage of signing up is that your files are stored on the site and you can always come back and continue from where you’ve left off.

Sign up now and let us know what you think.

Read More

AlphaSimple: Syntax highlighting is back!

12th August, 2010 - Posted by AlphaSimple Team - No Comments

We have turned syntax highlighting back on. It looks a lot nicer to prototype. Also, you can use Ctrl+S for saving, and the file list can be collapsed.

There are also some improvements for IE although we still recommend using Firefox, Chrome or Safari.

Go ahead, try it out and tell us what you think!

Read More

Model interpretation vs. code generation? Both.

7th August, 2010 - Posted by rafael.chaves - 4 Comments

Model interpretation vs. code generation? There were recently two interesting posts on this topic, both generating interesting discussions. I am not going to try to define or do an analysis of pros and cons of each approach as those two articles already do a good job at that. What I have to add is that if you use model-driven development, even if you have decided for code generation to take an application to production, it still makes a lot of sense to adopt model interpretation during development time.

For one, model interpretation allows you to execute a model with the fastest turnaround. If the model is valid, it is ready to run. Model interpretation allows you to:

  • play with your model as you go (for instance, using a dynamically generated UI, like AlphaSimple does)
  • run automated tests against it
  • debug it

All without having to generate code to some target platform, which often involves multiple steps of transformation (generating source code, compiling source code to object code, linking with static libraries, regenerating the database schema, redeploying to the application server/emulator, etc).

But it is not just a matter of turnaround. It really makes a lot more sense:

  • you and other stakeholders can play with the model on day 1. No need to commit to a specific target platform, or develop or buy code generators, when all you want to validate is the model itself and whether it satisfies the requirements from the point of view of the domain. Heck, you might not even know yet your target platform!
  • failures during automated model testing expose problems that are clearly in the model, not in the code generation. And there is no need to try to trace back from the generated artifact where the failure occurred back to model element that originated it, which is often hard (and is a common drawback raised against model-driven development);
  • debugging the model itself prevents the debugging context from being littered with runtime information related to implementation concerns. Anyone debugging Java code in enterprise applications will relate to that, where most of the frames on the execution stack belong to 3rd-party middleware code for things such as remoting, security, concurrency etc, making it really hard to find a stack frame with your own code.

Model-driven development is really all about separation of concerns, obviously with a strong focus on models. Forcing one to generate code all the way to the target platform before models can be tried, tested or debugged misses that important point. Not only it is inefficient in terms of turnaround, it also adds a lot of clutter that gets in the way of how one understands the models.

In summary, regardless what strategy you choose for building and deploying your application, I strongly believe model interpretation provides a much more natural and efficient way for developing the models themselves.

What are your thoughts?

Read More

TextUML Toolkit 1.6 declared!

5th August, 2010 - Posted by rafael.chaves - 7 Comments

The TextUML Toolkit version 1.6 has been released. It is the same RC1 build mentioned here a week ago. The listing on the Eclipse Marketplace has been updated, so in addition to the regular update site (http://abstratt.com/update/), if you are using Eclipse 3.6, you can get it even more conveniently using the brand new Eclipse Marketplace Client.

Take a look at the new notation features:

  • preconditions on operations
operation withdraw(amount : Real);
precondition { amount > 0 and amount < self.balance }
begin
    self.balance := self.balance - amount;
end;
  • derived properties
reference employees : Employee[*]

/* calculated field */
derived attribute employeeCount : Integer := ():Integer { return self->employees.size() };
  • initial values on properties
attribute available : Boolean := true;

You can also try these new features online on AlphaSimple. Sign up or start a guest session to create, validate and run your models on the spot, there is nothing to install!

Read More