I prepared the following slides for my Eclipse DemoCamp presentation on AlphaSimple but ended up not having time to cover them. The goal was not to try to convert the audience, but to make them understand where we are coming from, and why AlphaSimple is the way it is.
And here they are again for the sake of searchability:
I – Enterprise Software is much harder than it should be, lack of separation of concerns is to blame.
II – Domain and architectural/implementation concerns are completely different beasts and should be addressed separately and differently.
III – What makes a language good for implementation makes it suboptimal for modeling, and vice-versa.
IV – Domain concerns can and should be fully addressed during modeling, implementation should be a trivial mapping.
V – A model that fully addresses domain concerns will expose gaps in requirements much earlier.
VI – A model that fully addresses domain concerns allows the solution to be validated much earlier.
VII – No modeling language is more understandable to end-users than a running application (or prototype).
VIII – A single architecture can potentially serve applications of completely unrelated domains.
IX – A same application can potentially be implemented according to many different architectures.
X – Implementation decisions are based on known guidelines applied consistently throughout the application, and beg for automation.
XI – The target platform should not dictate the development tools, and vice-versa.
I truly believe in those principles, and feel frustrated when I realize how far the software industry is from abiding by them.
So, what do you think? Do you agree these are important principles and values? Would you call B.S. on any of them? What are your principles and values that drive your vision of what software development should look like?