GENIO seems to be really powerful and rather generic about the type of applications that can be produced but how does that affect the performance of the resulting application? When we think about generalizing something it usually comes with some kind of performance trade-offs and usually, to achieve the best performance it might be better to just write specific code for that specific goal. How does this factor affect GENIO?
The models of Genio specify what you want and not how you want it. This makes the generator implementation free to optimize the code as much as any coder can, in the same way that a compiler can optimize the high level code into CPU registers because the programming language requires nothing of low level specifications.
This turns out to provide better optimization more often than not. Not every programmer is going to be an expert at optimizing code, so if you have a team of 10 people all collaborating on a big project the probability of having un-optimized parts of your application is rather large. If fact you will be lucky to even have development time allocated for that task.
In model driven development we template solutions and reuse them. When a better solution comes up we just replace the old template with a new one using the improved code. This ensures the whole team is using code as optimized as it was possible to produce by all the developers.
Generalization also does not need to imply one size fits all. If relevant parameters are discovered there is nothing stopping the generator from using one solution when a certain parameter value is used and another solution with another value. Basically in model driven development you are already writing specific code for specific goals from the get go, the only difference is that you are also trying to make them reusable in as many combinations as possible.
When graphic engines came along all the guys that coded custom polygon triangulation assembly routines scoffed at the performance. But the reality was that those engines were just a collection of all those optimized routines ready to use and with parameters that helped the engine select the best option for each task. This proves to be a better development strategy every time: don't develop the problem, develop the engine to solve a class of problems.
About This Community
|Asked: 2/14/19, 5:10 PM|
|Seen: 283 times|
|Last updated: 9/26/19, 5:03 PM|