News

Data models, repositories and applications

On Enrique Almeida's blog.

Data models, repositories and applications

I'm reading this book called The Data Model Resource Book: Universal Patterns for Data Modeling (Volume 3) .

The same author has published two more reference books; in the first one he shows data models that can be adapted and combined to solve different problems, and in volume 2 he adapts them to different industries.
They are lengthy, but they are useful references when it comes to modeling a reality with which we are not very familiar.

In the third book, he tries to explain the general patterns that appear in data modeling and also when it is convenient to apply them. It also shows several implementation options and levels of detail which seem perfect for the implementation of GeneXus Patterns. Some of the patterns described in the book are Hierarchies, Categories, Clarification, Status, etc. but I haven't finished reading it and that's why I'm now going to write about it.

While I was reading the book, I invented this wonderful wheel:

Today I got up feeling that software development could be made faster if we applied patterns that have already been tried by other developers. My idea (which is not mine) is that we could apply patterns to a lot more things than we do now, or that we are doing and I don't know about.

What steps would be involved in application development?

1) Choose the entities that are part of my application.
2) Choose the attributes that make up each entity.
3) Choose patterns of categories, hierarchies, etc.
3) Choose/adapt the existing domains.
4) Choose the design patterns to apply.

· WorkWith
· SummBy
· ExportToExcel
· ReportesPDF
· CrossTable
· .... many more..

5) Choose the graphic design pattern (Theme).
6) Load data (program that generates test data).
7) Program missing objects.
8) Delete everything that is not used (KBDoctor!).
9) Prototype and adjust parameters of the patterns.
10) Declare security and auditing.
11) Functional test of the application.
12) Acceptance test and load.
13) Deployment of the application.
14) Adjustments to the application and database.

Missing items


a) Entity repository

We need a repository from which we can download "structures" of CLIENTS, COUNTRIES, COMPANIES, etc. I'm thinking of a Wizard to choose the name of the first level entity and that shows the entities related to them.
There, the attributes of each entity are displayed. We choose the ones we need and with this the necessary transactions are "created", as well as the necessary objects for the entities to work correctly. The objects that can be used from outside would be marked as public and the others would be marked as private (this would imply the use of modules).

b) Generation of test data

All Entities should have the programs to generate data automatically.

c) Theme repository

It would be nice to have several themes to choose from and an easy way to view our application in action with different themes.

d) Declarative security and auditing in the applications

e) Unitary Testing tools

f) Functional testing and load tools

g) Deployment assistance tools

h) Tools to fine-tune applications and databases

i) Help to integrate different patterns

For example, the WorkWith pattern should be able to tell the graphic design pattern (Theme) that it's missing a certain class.

Patterns should be able to interact well among them; there should be an API for all patterns to interact.

I think we should start by having a repository of entities, domains and attributes. This would be a very important step towards faster application development.

*Desarrollando desde la trinchera.