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.