Category Archives: java

Model Driven Architecture live or dead?

In my wunderlist‘s “watch this” list I found this dinosaur movie to watch: MDA: A forlorn hope.¬†by Uncle Bob. It was posted over two years ago and it was viewed almost 55 thousand times.

MDA is easy isn’t it? The MDA Guid has only 62 pages. We need some modeling tools and another tool for model to code transformation. Sounds easy ūüôā

Few years ago, we’ve been using MDA approach in our project. We used MagicDraw for UML part and AndroMDA for UML to Java code generation (of course there are many other tools).¬†From my point of view it was great experience. I share with my opinion below:

  • (pros) Model and Factory for free.
  • (pros) Hibernate mapping for free.
  • (pros) Documentation is up to date – you have to modify it to generate changes.
  • (pros) We focused on design, before coding.
  • (pros) All you hibernate mapping/DAO/etc is similar ( standardized – we can modify template)
  • (pros/cons) We can/have to change templates to align to ours standards.
  • (cons) Lot of ¬†code you prefer to never read :/
  • (cons) Every time you change something, you have to regenerate code.
  • (cons) You have codebase divided into “read only” and “change here”.
  • (cons) If you forget to put additional metadata into model you’ll be doomed in future.
  • (cons) Once you change template, it is harder to upgrade tools and we have to regenerate code.

Nowadays I compare that experience to modern frameworks such as Rails or Django. I have to add comment here, what I really mean is that by using MDA approach I do not think about database mapping, DAO/repository object, I started at service level, and I have similar fillings when I’m using Rails or Django framework. I’m focusing on business logic, not how to get or save data into persistence storage.

Uncle Bob is talking about analyst as software creators, and this idea fortunately for my salary is impossible ;).

I totally agree, doing software is on much more detail level than model thinking, but … I think it wasn’t so bad to think about design on high level and then generate code and go deep in business logic details. How many times Java programers do the same job: create POJO, annotate or write XML descriptor, create DAO which looks more or less the same as another one, etc.

Let cite some smart guys from Uncle Bob post:

  • Uncle Bob: “Programmers are details managers – sorry MDA” ūüôā
  • Comment: “MDA is actually based on two grand ideas:
    – raising the level of abstraction above programming language.
    – satisfying everyone with universal set of *standard* abstractions.¬†Most of MDA failures is due to the the second idea, which is why MDA (not MDE in general) may be indeed a forlorn hope.”

I don’t want to force you to use MDA, just think about it and in …meantime … find the difference :).

Old times
Blog post before 1st May
Blog post after 1st May

Yep, posterous is dead. Is MDA dead? Please share your opinion in comments.


Big Data Predictions

I’ve read Forrester’s¬†Big Data Predictions for 2013. Mike gave four predictions:

First prediction: everyone must figure out that BigData is everywhere, surrounds us. We need to find ways of learning from that data. We need to build new tools and methods for easily decision taking based on many different sources of data simultaneously and what is pretty hard do it in real time. It is not easy, so 2nd & 3rd prediction emerge here.

Second prediction: “The algorithm wars will begin.” : machine learning, advanced analytics, natural language processing, business intelligence, predictive analytics etc.. Lots of things to discover and huge data has to be processed.

Third prediction: Real-time technology have to be highly available, scalable, and performant.

Fourth prediction: “Time magazine will name big data its 2013 person of the year”. We will see :).

Another four from me:

  • BigData Appstore:¬†If there is a lot of data we can sell it cheaply.
  • BigData Startups: figure out the “new way of dealing” and you may be the next Google.
  • BigData Consultancy:¬†…. so you want us to install complete BigData solution … Yes we can do this, just show us the money!
  • BigData Solutions: NewSQL, NoSQL, Polyglot Persistence, and probably some others ideas will show up.

I suggest you to design with openness and integration in mind, and be prepared Рcheck this free Datascience books list.

Wondering How Big is BigData Рthery funny ;)?

Engineering New Year’s Resolutions

For all engineers seeking what resolutions to choose. This presentation will help: Engineering Change.

Some ideas from presentation:

  • Continuous Deployment: make mistake quick, cheap failures,
  • Metric Driven Development: learning based on knowledge, know the project health, measure, measure and once again measure.
  • Learn new language: ¬†chosen from different programing paradigm.
  • NoSQL: choose NoSQL solution to evaluate or compare few of them (eg. Riak, Cassandra, MongoDB, etc.).
  • BigData: Everyone talks about that, so you have to know something about that. Start with Wiki than use google¬†or¬†twitter to find sources and read a lot.

In presentation you will find, how Etsy do the first two. Third one is obvious. 4th and 5th are¬†today’s future.

Choose at least three and I’m assure you won’t regret that.

In my resolutions I’m going to focus on BigData.