Recently, I blogged about:
In that real project, I applied what I say it’s “ajgenetizing” an application. What does it mean?
The basic idea is:
– Start writing a working application, that resolves your tech problems, like persistence, security, distribution, etc..
– Begin to discover the repetetive and/or “bored” parts: configuration files, project and solution files, directories, data access classes, logic classes, domain classes, other text files, etc…
– Extract an initial model: maybe, entities description with some tech parameters, like database to use, etc…
– Write tasks and templates to generate a similar application, automatically.
– Specify clearly, what text artifacts
– are re-generated each time the model changes
– are generated once, and then, it’s evolve manually
– are created manually
– Alter the model, and regenerate: all is still working.
– Write another model, to produce another application, but using the adquired knowledge (about logic implementation, and used technology).
– Another “litmus test”: change once of the selected technologies (data access to ORM, manual validation rules to validation framework, no IoC to IoC container, etc…), and test the “new” application
I could begin to write a serie of posts, adopting such approach. But I guess, a more “tutorial” approach is needed, for the current state of AjGenesis (lack of supporters, bloggers, etc..). The approach I will follow is: start with a minimal model, generate few files, and then iterate, commenting in detail the taken decisions.