Sitting down outside the general library in the Malaga´s University. Alvaro wanted to know how I started to design an application. I guess he came to me because I was doing my degree and supposedly I had got some sort of secret knowledge. By that time, I had built my first product. A web catalog focused on real estate agencies implemented in PHP with all the spaghetti code I could get. As you see I was a referent.
The answer was clear to me, start modeling the database. Apply normal forms and then denormalize up to make it fit with the code which we were going to cover it, a great feast.
This is what I learned in the University and those were my beginnings. Nowadays, I have a deep distaste for tables, mix concerns, infect my domain or model everything like a CRUD. The databases influence is so big that application user cannot make an offer for a client but rather they have to CREATE the client, READ the options, CREATE options, CREATE an offer, READ the option, UPDATE the offer. Take this metaphor to the user interface, redefine the language and domain rule by this way. And what happens when the app grows in complexity? It depends, I have done and viewed everything, move all to the database, move all to the controller or why not? Move all to the interface. Sadly not everybody shares my views, and although they believe they do, is easy to find them thinking of adding an id property on every entity. Neither Frameworks like rails and the overhead of model meaning have helped too much. Nor University is doing its job. It is known that University is not the only place to get knowledge and frequently not even the best.
Anyway, I need your help. I am going to write a post series about how I design software and I would like to know how you are doing it.
Finally, if during the drawing of a sequence diagram you listen “here we can put a table”, fly you fools!